Skip to main content

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 TypeDebitCredit
AssetIncreaseDecrease
LiabilityDecreaseIncrease
EquityDecreaseIncrease
RevenueDecreaseIncrease
ExpenseIncreaseDecrease

Example: Recording a sale

You invoice a customer for £1,200 (£1,000 + £200 VAT):

AccountDebitCredit
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:

AccountDebitCredit
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.