Render German tax ID as unbroken USt-IdNr. - #139
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Updates how German VAT IDs (USt-IdNr.) are labeled and formatted in rendered documents so the DE prefix is included in the identifier (no parenthesized country), improving clarity and copy/paste usability.
Changes:
- Render German tax IDs with the label
USt-IdNr.instead of the genericTIN. - Introduce a
tax_id_no_countryi18n format string and ataxIDCodeIncludesCountryhelper to drop the parenthesized country when the prefix is part of the code. - Regenerate templ output and update example HTML outputs to reflect the new formatting.
Reviewed changes
Copilot reviewed 16 out of 20 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| locales/ar/app.yml | Adds tax_id_no_country translation format. |
| locales/ca/app.yml | Adds tax_id_no_country translation format. |
| locales/da/app.yml | Adds tax_id_no_country translation format. |
| locales/de/app.yml | Adds tax_id_no_country translation format. |
| locales/el/app.yml | Adds tax_id_no_country translation format. |
| locales/en/app.yml | Adds tax_id_no_country translation format. |
| locales/es/app.yml | Adds tax_id_no_country translation format. |
| locales/eu/app.yml | Adds tax_id_no_country translation format. |
| locales/fr/app.yml | Adds tax_id_no_country translation format. |
| locales/gl/app.yml | Adds tax_id_no_country translation format. |
| locales/it/app.yml | Adds tax_id_no_country translation format. |
| locales/nl/app.yml | Adds tax_id_no_country translation format. |
| locales/no/app.yml | Adds tax_id_no_country translation format. |
| locales/pl/app.yml | Adds tax_id_no_country translation format. |
| locales/pt/app.yml | Adds tax_id_no_country translation format. |
| components/org/party.templ | Adjusts tax ID label/formatting logic and adds DE → USt-IdNr. mapping + helper. |
| components/org/party_templ.go | Regenerated templ output reflecting the updated tax ID rendering logic. |
| examples/out/de-invoice.html | Updates example output to show USt-IdNr.: DE… formatting. |
| examples/out/de-choruspro-invoice.html | Updates example output to show USt-IdNr.: DE… formatting. |
| examples/out/fr-ctc-invoice-b2bint.html | Updates example output to show USt-IdNr.: DE… formatting. |
Files not reviewed (1)
- components/org/party_templ.go: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
pedrorfdez
approved these changes
Aug 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
German VAT identification numbers were rendered as
TIN: (DE) 111111125, which has two problems:DEprefix is an integral part of the USt-IdNr. — the canonical form isDE111111125, and the split/parenthesized rendering breaks copy-paste into VIES or other validation lookups.TIN/Umsatzsteuer) is ambiguous for German recipients, who could mistake the value for the Finanzamt-issued Steuernummer.German tax IDs now render as
USt-IdNr.: DE111111125.Changes
DE→USt-IdNr.to thetaxIDLabelswitch incomponents/org/party.templ.taxIDCodeIncludesCountryhelper: when the country prefix is part of the identifier, it is prepended to the code and the parenthesized country is dropped. Currently only enabled forDE, but easy to extend to other EU VAT IDs.tax_id_no_countryformat string to all locales.🤖 Generated with Claude Code