VAT Returns

Generate MTD-ready VAT return data derived entirely from the SpeyBooks ledger.

VAT returns are computed views over posted transactions. SpeyBooks does not store or edit VAT figures manually - the nine-box return is calculated from the ledger every time you request it.

MTD compatibility

From April 2022, all VAT-registered UK businesses must submit VAT returns using MTD-compatible software.

SpeyBooks generates MTD-compliant VAT return data in the standard nine-box format. The figures can be used for submission through your existing MTD filing process.

MTD direct submission Direct submission to HMRC from within SpeyBooks is on the roadmap. Currently, SpeyBooks generates the VAT report data which you can use with your preferred filing method. The nine-box figures are calculated to HMRC's specification and ready for submission.

Prerequisites

Before generating a VAT return, you need:

  • A VAT-registered organisation in SpeyBooks
  • Complete and accurate ledger data for the reporting period
  • All bank transactions for the period imported and categorised

VAT returns are calculated from posted transactions only. Draft or unposted transactions are excluded.


Generate a VAT report

Request the nine-box VAT return for a date range:

curl "https://api.speybooks.com/v1/reports/vat?from=2026-01-01&to=2026-03-31" \
  -H "Authorization: Bearer sk_live_..."

The report is recomputed from the ledger on every request. Running it multiple times for the same period always produces the same result (assuming no new transactions have been posted).

Notes

  • All monetary values are in minor units (pence)
  • status: "draft" indicates the figures have not been finalised
  • The report covers all posted transactions within the specified date range

VAT box meanings

BoxDescriptionExample
1VAT due on sales100000
2VAT due on EU acquisitions0
3Total VAT due (Box 1 + Box 2)100000
4VAT reclaimed on purchases25000
5Net VAT to pay or reclaim (Box 3 - Box 4)75000
6Total sales (excl. VAT)500000
7Total purchases (excl. VAT)125000
8Total EU supplies0
9Total EU acquisitions0

All values are in minor units. Box 5 value of 75000 = GBP 750.00 net VAT to pay.


How VAT is captured

SpeyBooks captures VAT at the point of transaction, not at submission time.

When you create an invoice with "vatRate": "standard", SpeyBooks automatically splits the amount into net and VAT components and posts them to the correct accounts. When you categorise a bank transaction as an expense with a VAT rate, the same split happens.

The VAT return report simply aggregates these already-posted amounts across the period.

VAT on sales (Box 1)

Sum of all VAT amounts on posted sales invoices and revenue transactions within the period. This comes from the VAT Output account (2200).

VAT on purchases (Box 4)

Sum of all VAT amounts on posted bills, expenses, and purchase transactions within the period. This comes from the VAT Input account (2201).

Net position (Box 5)

Box 3 minus Box 4. A positive number means you owe HMRC. A negative number means HMRC owes you a refund.


Deadlines

VAT returns are due:

FrequencyDeadline
Quarterly1 month and 7 days after period end
Monthly1 month and 7 days after period end

SpeyBooks does not currently track or surface VAT deadlines automatically.


Flat Rate Scheme

If your organisation uses the VAT Flat Rate Scheme, the VAT return calculation applies the flat rate percentage to gross turnover rather than computing input/output VAT separately. Set your VAT scheme in Settings > Organisation or via the Organisation API.


VAT computation invariants

SpeyBooks enforces the following:

  • VAT reports are derived solely from posted transactions
  • No VAT figures are manually editable
  • Running the report for the same period and ledger state always produces identical figures
  • VAT rates are applied at transaction time and stored, never retrospectively recalculated

Error codes

CodeHTTPDescription
validation_error400Missing or invalid date range
unprocessable_entity422Ledger data incomplete for period

Amount format

All monetary values are in minor units (pence for GBP):

100000 = GBP 1,000.00
75000  = GBP 750.00

Divide by 100 for display.

Related endpoints