-
Notifications
You must be signed in to change notification settings - Fork 10.4k
feat: add Netherlands RGS Standard Chart of Accounts #52588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
feat: add Netherlands RGS Standard Chart of Accounts #52588
Conversation
- Add new RGS (Referentie Grootboekschema) compliant chart of accounts with proper 5-digit account numbers for Dutch regulatory compliance - Add comprehensive tax setup for Netherlands including: - Tax categories (NL-Domestic, EU-B2B, EU-B2C, Non-EU, etc.) - Sales tax templates (BTW 21%, 9%, 0% Export, ICP, Verlegd) - Purchase tax templates with reverse charge handling - Item tax templates for various VAT scenarios
📝 WalkthroughWalkthroughThis pull request adds Dutch financial accounting and taxation support to ERPNext. The changes introduce a complete Netherlands RGS Standard chart of accounts structure (768 lines) with hierarchical account groupings including fixed assets, current assets, equity, liabilities, income, and expense categories. Additionally, the Netherlands tax configuration is expanded with seven tax categories (NL-Domestic, EU-B2B, EU-B2C, Non-EU, NL-RC-Construction, and Exempt), comprehensive VAT template sets for sales and purchases covering multiple rates (21%, 9%, 0%), and handling for reverse charge scenarios. The configuration replaces the VAT 6% entry with a VAT 9% entry. All changes are data file additions with no executable logic modifications. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In
`@erpnext/accounts/doctype/account/chart_of_accounts/verified/nl_rgs_standard.json`:
- Around line 5-8: The root group account_number values use inconsistent digit
lengths: change the "account_number" for "VASTE ACTIVA" from "0" to a 5-digit
value (e.g., "00000") and for "VLOTTENDE ACTIVA" from "1" to a 5-digit value
(e.g., "10000") to match the 5-digit convention used by other root groups (like
"EIGEN VERMOGEN" → "05000" and "NETTO-OMZET" → "80000"); apply the same 5-digit
normalization for the other occurrences noted (lines 112-115) so all root group
keys use consistent 5-digit account_number formatting.
In `@erpnext/setup/setup_wizard/data/country_wise_tax.json`:
- Around line 4378-4386: The tax category entries in "tax_categories" are never
referenced by templates; update every template in "sales_tax_templates" and
"purchase_tax_templates" to include a "tax_category" field that matches the
appropriate category title (e.g., "NL-Domestic", "EU-B2B", "Non-EU", etc.) so
templates auto-select based on customer/supplier tax category; locate the
"tax_categories" array and then add "tax_category": "<matching title>" to each
template object (follow the pattern used in the France config where templates
include "tax_category": "Vente Domestique") and apply this to all templates
between the noted ranges.
🧹 Nitpick comments (1)
erpnext/setup/setup_wizard/data/country_wise_tax.json (1)
4709-4730: Duplicate item tax templates with identical configurations.Multiple item tax template pairs have the exact same account references and rates:
Template A Template B Accounts BTW Inkoop EU 21% (verleggingsregeling)(Line 4709)BTW Inkoop ICP Goederen 21%(Line 4778)15130 +21, 15310 -21 BTW Inkoop EU 9% (verleggingsregeling)(Line 4732)BTW Inkoop ICP Goederen 9%(Line 4801)15130 +9, 15310 -9 BTW Inkoop Verlegd 21%(Line 4755)BTW Inkoop Verlegd Non-EU 21%(Line 4824)15120 +21, 15300 -21 If the distinction is intentional for reporting, please add a comment or differentiate the accounting treatment. Otherwise, consolidate these to reduce user confusion.
Also applies to: 4778-4799
| "VASTE ACTIVA": { | ||
| "root_type": "Asset", | ||
| "is_group": 1, | ||
| "account_number": "0", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inconsistent root group account_number format: single-digit vs. 5-digit.
VASTE ACTIVA uses "0" and VLOTTENDE ACTIVA uses "1", while all other root groups (e.g., EIGEN VERMOGEN → "05000", NETTO-OMZET → "80000") use 5-digit numbers. This breaks the "5-digit formatting" convention stated in the PR description and may cause unexpected sorting behavior in account listings.
Consider using consistent 5-digit root group numbers such as "00000" and "10000" (or appropriate RGS-aligned numbers).
Also applies to: 112-115
🤖 Prompt for AI Agents
In
`@erpnext/accounts/doctype/account/chart_of_accounts/verified/nl_rgs_standard.json`
around lines 5 - 8, The root group account_number values use inconsistent digit
lengths: change the "account_number" for "VASTE ACTIVA" from "0" to a 5-digit
value (e.g., "00000") and for "VLOTTENDE ACTIVA" from "1" to a 5-digit value
(e.g., "10000") to match the 5-digit convention used by other root groups (like
"EIGEN VERMOGEN" → "05000" and "NETTO-OMZET" → "80000"); apply the same 5-digit
normalization for the other occurrences noted (lines 112-115) so all root group
keys use consistent 5-digit account_number formatting.
| "tax_categories": [ | ||
| {"title": "NL-Domestic"}, | ||
| {"title": "NL-Domestic-Reduced"}, | ||
| {"title": "EU-B2B"}, | ||
| {"title": "EU-B2C"}, | ||
| {"title": "Non-EU"}, | ||
| {"title": "NL-RC-Construction"}, | ||
| {"title": "Exempt"} | ||
| ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tax categories defined but never referenced by any template.
Seven tax categories are declared (e.g., NL-Domestic, EU-B2B, Non-EU), but none of the sales_tax_templates or purchase_tax_templates include a "tax_category" field linking them. Compare with the France configuration (e.g., Line 602: "tax_category": "Vente Domestique"), where templates are explicitly associated with categories.
Without the tax_category linkage, these categories won't auto-select templates based on customer/supplier tax category, defeating the purpose of defining them.
Example fix for the first sales template
"sales_tax_templates": [
{
"title": "NL BTW Verkoop 21%",
"is_default": 1,
+ "tax_category": "NL-Domestic",
"taxes": [Apply similar tax_category associations to all sales and purchase templates.
Also applies to: 4389-4466
🤖 Prompt for AI Agents
In `@erpnext/setup/setup_wizard/data/country_wise_tax.json` around lines 4378 -
4386, The tax category entries in "tax_categories" are never referenced by
templates; update every template in "sales_tax_templates" and
"purchase_tax_templates" to include a "tax_category" field that matches the
appropriate category title (e.g., "NL-Domestic", "EU-B2B", "Non-EU", etc.) so
templates auto-select based on customer/supplier tax category; locate the
"tax_categories" array and then add "tax_category": "<matching title>" to each
template object (follow the pattern used in the France config where templates
include "tax_category": "Vente Domestique") and apply this to all templates
between the noted ranges.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #52588 +/- ##
===========================================
+ Coverage 79.25% 79.39% +0.13%
===========================================
Files 1168 1168
Lines 122725 123321 +596
===========================================
+ Hits 97266 97905 +639
+ Misses 25459 25416 -43 🚀 New features to boost your workflow:
|
Summary
Changes
nl_rgs_standard.json- Netherlands RGS Standard COA with account numbers following Dutch accounting standardscountry_wise_tax.json- Added Netherlands tax configuration:Test Plan