Double-Entry Accounting
SpeyBooks uses proper double-entry bookkeeping. Every transaction affects at least two accounts, and debits always equal credits.
Why double-entry?
Single-entry bookkeeping (like a spreadsheet) tracks money in and out. Double-entry tracks where money comes from and where it goes.
Benefits:
- Accuracy — Errors are caught automatically (debits ≠ credits)
- Auditability — Complete trail of every pound
- Compliance — Required for UK limited companies
- Reports — Balance sheet and P&L generated automatically
The fundamental equation
Assets = Liabilities + Equity
Every transaction maintains this balance.
Debits and credits
| Account Type | Debit | Credit |
|---|---|---|
| Asset | Increase | Decrease |
| Liability | Decrease | Increase |
| Equity | Decrease | Increase |
| Revenue | Decrease | Increase |
| Expense | Increase | Decrease |
Example: Recording a sale
You invoice a customer for £1,200 (£1,000 + £200 VAT):
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable (Asset) | £1,200 | |
| Sales Revenue | £1,000 | |
| VAT Liability | £200 |
- Debits: £1,200
- Credits: £1,200
- ✅ Balanced
Example: Receiving payment
The customer pays £1,200:
| Account | Debit | Credit |
|---|---|---|
| Bank (Asset) | £1,200 | |
| Accounts Receivable (Asset) | £1,200 |
Money moves from "owed to us" to "in the bank".
How SpeyBooks handles this
When you create an invoice, SpeyBooks automatically generates the correct journal entries. You don't need to think in debits and credits — but you can if you want to.
# Create an invoice — journal entries generated automatically
curl -X POST https://api.speybooks.com/v1/invoices \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "cont_abc123",
"items": [
{
"description": "Consulting",
"quantity": 1,
"unit_price": 100000,
"vat_rate": "standard"
}
]
}'
The underlying transaction:
{
"entries": [
{ "account": "Accounts Receivable", "debit": 120000, "credit": 0 },
{ "account": "Sales", "debit": 0, "credit": 100000 },
{ "account": "VAT Output", "debit": 0, "credit": 20000 }
]
}
Immutability
Ledger entries are immutable. To correct an error, you create a reversing entry rather than editing the original. This maintains a complete audit trail.