EU-compliance-first, agent-native, open source accounting and tax filing.
A Clawnify template app. React + Hono + D1 on Cloudflare Workers. AGPL-3.0.
Status: early — Phase 1 in progress. Invoicing, double-entry bookkeeping, EU VAT logic, RGS chart of accounts, Peppol BIS Billing 3.0 UBL export, and visual PDFs work end-to-end. SBR/iXBRL for Dutch tax filing and country plugins (BE/FR/DE/IT) come in later phases.
Mandatory e-invoicing is sweeping the EU. Belgium is mandatory now. France is rolling out. Germany from 2025. Italy has had FatturaPA since 2019. The Netherlands has had SBR since 2018 and from fiscal year 2025 large companies can no longer file annual accounts in PDF — they must use SBR/iXBRL via Digipoort.
Every SMB needs compliant accounting software. The existing open-source options are PHP/Laravel-shaped, feature-thin, or buried inside a giant ERP. open-books is fresh code on a modern stack, designed agent-native from day one, with EU-compliance as the wedge into mid-market.
- Customers, suppliers, products & services with EU-relevant fields (VAT number, KVK/CoC, country, currency, IBAN).
- RGS chart of accounts (Referentie Grootboekschema) — starter dataset of top-level rubrieken and principal level-2 groepen, schema designed for the canonical ~4000-row dataset.
- Invoices, credit notes, quotes with gap-free yearly numbering sequences (
INV-2026-0001,CN-2026-0001). - EU VAT logic — domestic standard rates (NL/BE/FR/DE/IT/ES/PT/AT/IE/...), cross-border B2B reverse charge (Art. 196 EU VAT Directive), export-outside-EU zero-rating.
- Editable invoice editor with inline line CRUD, product picker, RGS account assignment, server-side recompute on every change.
- HTML preview + PDF download + Peppol BIS Billing 3.0 UBL export — including correct
AEtax category andVATEX-EU-AEexemption code for reverse charge invoices. - Pluggable PDF backends — Clawnify-managed (Browser Rendering proxy), direct
BROWSERbinding, or a Gotenberg sidecar.
Roughly in order:
- CI XSD validation of generated UBL via
libxml2-wasmagainst the Peppol BIS Billing 3.0 schema. - Settings page to fill in company name / VAT / KVK / IBAN (currently API-only).
- Double-entry bookkeeping engine — journals, period close, P&L, balance sheet (Phase 2).
- VAT returns + iXBRL — BTW-aangifte and ICP, generated against the Nederlandse Taxonomie (Phase 3).
- Country plugins as separate repos:
open-books-fr,open-books-de,open-books-it. - FatturaPA XML for IT.
- Hybrid Factur-X / ZUGFeRD PDFs for FR / DE (PDF/A-3 + embedded CII XML — Node-side service).
The Digipoort submission step (filing tax returns to the Dutch government via the SBR gateway) is deliberately not in scope for the open-source repo — that requires a PKIoverheid services certificate and is offered as a Clawnify-managed service.
| Layer | Choice |
|---|---|
| Server | Hono on Cloudflare Workers |
| Database | Cloudflare D1 (SQLite) |
| File storage | Cloudflare R2 |
| Client | React 19 + Vite 6 + Tailwind CSS 4 |
| Dev tooling | clawnify CLI |
git clone https://github.com/<org>/open-books.git
cd open-books
pnpm install
pnpm devThe app runs at http://localhost:5173. The API is at http://localhost:8787.
Requires Node.js ≥ 22.
PDF generation works through one of three backends, picked up automatically from env:
| Backend | Env var | Notes |
|---|---|---|
| Clawnify-managed | CLAWNIFY_TOKEN |
services.clawnify.com/pdf/render. Token issued by Clawnify on deploy. |
| Cloudflare Browser Rendering | BROWSER binding |
Direct Browser Rendering. Requires Workers Paid plan. |
| Gotenberg sidecar | PDF_RENDERER_URL |
docker run -p 3000:3000 gotenberg/gotenberg:8 then set PDF_RENDERER_URL=http://localhost:3000. |
Without any of the three configured, the HTML preview at /api/invoices/:id/preview always works (browser-viewable, "Save as PDF" via the browser is a manual fallback).
Designed to deploy as a Clawnify app:
pnpm deployThis provisions D1, R2, and any Clawnify-managed services declared in clawnify.json (e.g., services.pdf — auto-injects CLAWNIFY_TOKEN).
Self-hosting on your own Cloudflare account is also supported — clawnify.json translates cleanly to a hand-written wrangler.toml if you prefer.
AGPL-3.0 — same as Bigcapital, Akaunting, Invoice Ninja, Crater, Firefly III. Forks must remain AGPL.
This is early. The structural moves (schema shape, RGS taxonomy, country VAT logic) are still in flux. Issues and discussion welcome; PRs that touch the schema should come with a short rationale.