Quick Start
Get up and running with SpeyBooks in under five minutes.
This guide walks through creating an account, generating an API key, and issuing your first invoice via the API.
1. Create an account
Sign up at app.speybooks.com/register. Your account is provisioned with:
- A pre-configured UK chart of accounts
- The current UK financial period
- A default bank account ready for imports
The first 50 users get a 90-day free trial. Card required to start, but you won't be charged during the trial.
2. Generate an API key
Once logged in:
- Navigate to Settings > API Keys
- Click Generate API Key
- Choose a name and select scopes (or grant full access)
- Copy the key immediately - it will not be shown again
Your API key will look like:
sk_live_a1b2c3d4e5f6g7h8i9j0...
API keys support 17 granular scopes. For this quick start, grant full access. In production, scope keys to only the permissions they need - a reporting key shouldn't be able to delete contacts.
export SPEYBOOKS_API_KEY="sk_live_..."
3. Verify authentication
Test your API key by fetching your organisation details:
curl https://api.speybooks.com/v1/organisation \
-H "Authorization: Bearer $SPEYBOOKS_API_KEY"
A successful response returns your organisation profile with entity type, VAT scheme, and fiscal year configuration. If you see "success": true, authentication is working.
4. Create a contact
Before creating an invoice, you need a contact to bill:
curl -X POST https://api.speybooks.com/v1/contacts \
-H "Authorization: Bearer $SPEYBOOKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corporation",
"contactType": "customer",
"email": "accounts@acme.com"
}'
Note the id in the response (e.g. cont_1) - you'll need it for the invoice.
5. Create your first invoice
Create a draft invoice with a single line item:
curl -X POST https://api.speybooks.com/v1/invoices \
-H "Authorization: Bearer $SPEYBOOKS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: qs-first-invoice" \
-d '{
"contactId": "cont_1",
"currency": "GBP",
"items": [{
"description": "Consulting services - January 2026",
"quantity": 1,
"unitPrice": 150000,
"vatRate": "standard"
}],
"dueDays": 30
}'
The response includes the calculated totals: subtotal (150000), VAT at 20% (30000), and total (180000). All values are in minor units (pence).
The Idempotency-Key header ensures this request is safe to retry - if the network drops and you resend, you'll get the same invoice back instead of a duplicate. Keys expire after 24 hours.
For GBP: 150000 = £1,500.00, 30000 = £300.00
This avoids floating-point ambiguity and matches Stripe's convention. Divide by 100 for display.
6. Explore with the Developer Shell
If you're logged into the web portal, press Ctrl+J to open the Developer Shell. It's a terminal built into every page with:
- Tab autocomplete across all 197 endpoints
- Ghost text suggestions from your command history
- Clickable entity IDs in responses (click
inv_1to fetch that invoice) - Route filtering: type
routes invoiceto see all invoice endpoints
Try GET /invoices in the shell to see your new invoice, or routes to browse everything available.
Next steps
You've successfully:
- Created an account and generated a scoped API key
- Authenticated against the API
- Created a contact and a draft invoice
- Seen the response envelope (
success,data,meta)
Continue with:
- Your First Invoice - full lifecycle: draft, send, record payment
- Authentication - scopes, rotation, and test keys
- Developer Shell - interactive terminal reference
- Bank Reconciliation - import and categorise bank transactions
- API Reference - all 197 endpoints across 37 resources