Skip to content

Add Norway (NO) tax regime#738

Closed
0xjgv wants to merge 6 commits intoinvopop:mainfrom
0xjgv:feat/norway-tax-regime
Closed

Add Norway (NO) tax regime#738
0xjgv wants to merge 6 commits intoinvopop:mainfrom
0xjgv:feat/norway-tax-regime

Conversation

@0xjgv
Copy link
Copy Markdown
Contributor

@0xjgv 0xjgv commented Feb 25, 2026

Summary

Adds Norway (NO) as a first-class tax regime in GOBL:

  • Norwegian VAT category with four rates (standard 25%, reduced 15%, super-reduced 12%, zero 0%) including historical values
  • Tax identity normalization/validation (mod-11 check for organisasjonsnummer)
  • Invoice validation rules (supplier requirements, preceding refs for credit/debit notes)
  • Simplified invoice support
  • Example documents and test coverage

Continues from #728 (accidentally closed). All prior review comments and discussion are preserved there.

Outstanding review feedback from #728

Per @samlown's last review — the PR was nearly ready to merge with one remaining change:

  • Relax the customer not-present check for simplified invoices (allow optional customer)

Test plan

  • Unit tests for tax identity normalization and mod-11 validation
  • Invoice validation tests (standard + simplified)
  • Example YAML documents with calculated JSON snapshots
  • Address remaining review comment above

Implements complete support for Norway's VAT tax regime with:
- VAT categories and rates (standard 25%, reduced 15%, super-reduced 12%, special 11.11%)
- Organisasjonsnummer (org.Identity type ON) with mod-11 validation
- Tax identity normalization stripping NO prefix and MVA suffix
- Support for reverse-charge and foretaksregisteret tagging with legal notes
- Invoice validation requiring supplier name/address/tax ID and customer name
- Credit note and debit note correction types with preceding doc reference
- Norwegian (nb) translation support alongside English
- Comprehensive tests with edge case coverage
- Example fixtures: standard invoice, credit note, debit note, reverse-charge

Sources:
- Skatteetaten VAT rates: https://www.skatteetaten.no/en/rates/vat/
- Brønnøysundregistrene org.nr: https://www.brreg.no/en/about-us-2/our-registers/
- Merverdiavgiftsloven: https://lovdata.no/dokument/NL/lov/2009-06-19-58
Add bilingual descriptions to general rate and foretaksregisteret tag,
historical super-reduced rate values (COVID reduction, 2012 increase),
fix special rate Since date to 2009, and add standard and multi-rate
example invoices.
Fix super-reduced rate history (wrong dates, missing intermediate rates)
and add pre-2005 history for general and reduced rates based on
Stortinget resolutions and NOU 2019:11. Add calculation verification
tests for standard, tax-inclusive, and multi-rate invoices, plus
reverse-charge exempt scenario test.
- Add simplified invoice support: TagSimplified check, customer Empty,
  relaxed supplier validation
- Relax supplier TaxID requirement: optional for non-VAT-registered
  companies below NOK 50,000 turnover
- Conditional supplier address: required for standard, optional for
  simplified invoices
- Remove TestInvoiceCalculation and redundant calculation assertions
- Add Description field to regime definition using here.Doc
- Remove foretaksregisteret tag, constant, scenario, TagSet, and all
  related tests and examples
- Add simplified invoice example and dedicated test cases
- Update README.md and CHANGELOG.md to reflect changes
- Change invoiceScenarios from func to var for FR/DE/IT consistency
- Regenerate data/regimes/no.json
@0xjgv
Copy link
Copy Markdown
Contributor Author

0xjgv commented Feb 25, 2026

Superseded by #728 (reopened)

@0xjgv 0xjgv closed this Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant