v4.0.0 8 February 2026
Sage UK Foundation
SpeyBooks 4.0.0 is a foundational release. The chart of accounts, security posture, and frontend performance have been rebuilt from the ground up. Every new signup now gets a Sage-aligned UK chart of accounts that any accountant will recognise.
This release consolidates 13 incremental versions (3.6.4–3.6.17) shipped in a single day of focused development.
Chart of Accounts — Sage UK Standard
The default chart of accounts has been completely replaced with 118 accounts aligned to the Sage UK convention — the de facto standard used by thousands of UK accountants.
- Plan-aware seeding — sole traders and limited companies receive the correct accounts at signup
- Sole trader: Capital, Capital Introduced, Drawings
- Limited company: Share Capital, Director Loan Account, Dividends, Corporation Tax
- Full VAT breakdown across four accounts (VAT on Sales, VAT on Purchases, VAT Liability, VAT Allocations) — ready for Making Tax Digital
- Fixed assets with depreciation pairs — property, plant and machinery, office equipment, fixtures, motor vehicles
- Control accounts with typed constraints — 30+ control types enforced at database level
- Opening Balances (9998) and Suspense (9999) — essential for data migration and reconciliation
- Granular overheads — premises, utilities, vehicle, travel, office, professional fees, each with correct default VAT rates (20% standard, 5% reduced, 0% exempt)
Security Hardening
Every item on the pre-launch security checklist has been completed.
- Automated daily database backups to S3 with verified restore and 90-day lifecycle
- PostgreSQL 15 → 17 upgrade with security improvements
- Auth rate limiting on all 7 authentication endpoints
- Session invalidation on password change — existing sessions revoked immediately
- Fail2ban with 4 jails protecting SSH, nginx, and application endpoints
- UFW firewall — only ports 22, 80, 443 open
- Content Security Policy on all 4 domains
- HSTS preload submitted to browser inclusion lists
- security.txt deployed on all domains with correct contact and policy URLs
- DNS CAA records restricting certificate issuance to Let’s Encrypt
- Database role separation — application connects with least-privilege role
- SSL Labs A+ rating — TLS 1.3, HSTS, EC 256-bit key
- robots.txt on app and API domains to prevent indexing of authenticated content
- Docker removed — direct process management, reduced attack surface
- OS-level updates applied
API Key Rotation
- New endpoint:
POST /api/v1/api-keys/:id/rotategenerates a replacement key with the same name and scopes - 24-hour grace period — the old key remains valid during transition, then auto-expires
- Double-rotation protection — cannot rotate a key that is already rotating
- Full audit trail — rotation events logged with key lineage tracking
- Frontend UI — rotate button, amber status indicator, grace period countdown, new key reveal
Performance
- Code splitting — 41 pages lazy-loaded on demand with vendor chunk separation
- Initial bundle reduced from 1,020 kB to 84 kB — users download only the JavaScript they need
- Vendor chunks cached independently: React, data layer, utilities, UI components
- Build time improved from 15s to 14s
Infrastructure
- Log retention aligned to GDPR and HMRC requirements (7-year financial, 2-year access, 30-day debug)
- Failed login monitoring with real-time alerting
- CORS configuration corrected for production domains
- Duplicate TLS certificates cleaned
- pg_hba.conf reviewed and hardened
- SEO fixes — favicon.ico, registration error hardening