ERPNext for Dutch businesses, the way Dutch businesses actually run. BTW return, XAF audit file, SEPA payments, RGS chart of accounts — standard, not an integration.
Quarterly Dutch VAT return generated directly from your invoices. Box mappings configurable per tax account.
XAF audit file
Belastingdienst-ready XAF 3.2 export of your ledger, in the schema the tax authority asks for during audits.
RGS chart of accounts
Reference (Referentie GrootboekSchema) account mapping, so your books speak the language Dutch accountants and banks expect.
SEPA payment files
Generate pain.001 SEPA Credit Transfer XML directly from Payment Orders. Upload to your bank, done.
ICP & Intrastat (via erpnext_europe)
Intra-EU reporting (ICP) and statistical declarations live in the sibling erpnext_europe app — same patterns, EU-wide.
Lifecycle validations
Sales/purchase invoices, orders, and quotations get Dutch-specific validation hooks at submit time. Catch issues before they hit the books.
ERPNext is global. Dutch tax law is not.
Out of the box, ERPNext doesn’t know about BTW boxes, RGS, or the schema the Belastingdienst wants for audits. Without localization, your accountant exports CSVs and rebuilds the picture every quarter. With this app, the right format comes straight out of ERPNext.
What you get
Dutch compliance, baked in.
BTW return (OB Aangifte)
Generate the quarterly VAT return directly from your invoices. Tax accounts map to BTW boxes via NL Tax Account Settings.
XAF audit file
Export your general ledger as a Belastingdienst-compliant XAF 3.2 file. Validated against the official XSD before download.
RGS chart of accounts
Map every account to the Dutch reference scheme. Optional, but most accountants will thank you and banks understand the codes.
SEPA payment files
Generate pain.001 SEPA XML straight from Payment Orders. One click, valid XML, upload to your bank.
Invoice-level validation
Sales and purchase invoice validate hooks check Dutch requirements before the document submits. Errors block submission with a clear message.
Plays well with Dutch banks
ING, Rabobank, ABN AMRO, bunq — SEPA XML is standardised so every Dutch bank accepts the same file.
How a Dutch quarter closes
Invoices in, BTW return out. Nothing in between.
01
Invoices logged
Your Sales Invoices and Purchase Invoices accumulate as usual. Tax codes already point at the right BTW boxes.
02
Quarter ends
Open a new NL VAT Return document. Period and company auto-populate.
03
BTW return computed
Boxes 1, 2, 3, 4, 5 fill in from your tax accounts. Submit when reviewed.
04
Files & pays
XAF available for the Belastingdienst if asked. Payment Order → SEPA XML → uploaded to your bank.
Built for
Who actually needs this.
Dutch SMEs running ERPNext
You file BTW quarterly, you talk to an accountant who expects RGS, your bank wants SEPA. This is the integration that ends the CSV exports.
Accountants and bookkeepers
If your client is on ERPNext, this app means the closing process is the same as any other Dutch system: BTW report out, audit file out, done.
EU subsidiaries with NL entity
A Dutch BV inside a multi-entity ERPNext rollout. Localization stays at the NL company level — no impact on the other companies.
Under the hood
Just custom fields and validators on standard ERPNext.
No parallel data model. Localization is custom fields on standard ERPNext doctypes plus validate hooks on Sales/Purchase Invoices, Orders, and Quotations. XAF generation uses xsdata against the official Belastingdienst schema; SEPA uses the SEPA pain.001 standard. The code is open source — auditable end-to-end.
Ready to fix your systems?
30-minute call. No pitch deck. Just an honest conversation about what you need.