Validation rules
Validation rule reference
Every EN 16931, XRechnung, Peppol and UBL rule normbill can report — 389 in total — grouped by family. Each rule links to its own page with the mapped field in your request JSON, a plain-language message and a concrete fix.
Alle Validierungsregeln, die normbill meldet, nach Familie gruppiert. Jede Regel führt zu einer eigenen Seite mit dem zugeordneten JSON-Feld, einer verständlichen Erklärung und einer konkreten Lösung — auf Deutsch und Englisch.
German rules (BR-DE)
XRechnung's national CIUS — the German-specific requirements KoSIT enforces on top of EN 16931 (Leitweg-ID, seller contact, payment details).
| Rule | What it checks |
|---|---|
BR-DE-1 | Payment instructions (BG-16) are missing. XRechnung requires them. |
BR-DE-2 | Seller contact details (BG-6) are missing. XRechnung requires a contact person or department. |
BR-DE-3 | Seller city (BT-37) is missing. |
BR-DE-4 | Seller postal code (BT-38) is missing. |
BR-DE-5 | Seller contact name (BT-41) is missing. |
BR-DE-6 | Seller contact phone number (BT-42) is missing. |
BR-DE-7 | Seller contact email (BT-43) is missing. |
BR-DE-8 | Buyer city (BT-52) is missing. |
BR-DE-9 | Buyer postal code (BT-53) is missing. |
BR-DE-10 | A deliver-to address (BG-15) is present but its city (BT-77) is missing — XRechnung requires it. |
BR-DE-11 | A deliver-to address (BG-15) is present but its post code (BT-78) is missing — XRechnung requires it. |
BR-DE-14 | A VAT breakdown is missing its category rate (BT-119) — XRechnung requires cbc:Percent in every tax subtotal, including category O (where it is 0). |
BR-DE-15 | Buyer reference (BT-10) is missing. XRechnung requires it; public-sector buyers in Germany use their Leitweg-ID here. |
BR-DE-16 | Seller VAT identifier (BT-31) or tax registration number (BT-32) is required. |
BR-DE-17 | This invoice type code is not recommended in XRechnung. |
BR-DE-18 | A payment-terms line starting with # is not a valid Skonto segment — XRechnung requires the exact format #SKONTO#TAGE=n#PROZENT=n.nn# (optionally #BASISBETRAG=n.nn#), one per line. |
BR-DE-19 | The payment account identifier (BT-84) does not look like a valid IBAN — for SEPA credit transfers (means code 58) XRechnung expects one. |
BR-DE-20 | The debited account identifier (BT-91) does not look like a valid IBAN — for SEPA direct debits (means code 59) XRechnung expects one. |
BR-DE-21 | The specification identifier (BT-24) is not syntactically an XRechnung customization id. |
BR-DE-22 | Two embedded attachments share the same filename — every attached document's filename must be unique within the invoice. |
BR-DE-23-a | Payment means is a credit transfer (code 30/58) but no payment account (IBAN, BT-84) is given. |
BR-DE-23-b | Payment means is a credit transfer (code 30/58), so direct-debit information (BG-19) must not be present. |
BR-DE-24-a | The payment means is a card payment (code 48, 54 or 55), so card information (BG-18) is required. |
BR-DE-24-b | The payment means is a card payment (code 48, 54 or 55), so account (BG-17) and direct-debit (BG-19) groups must not be present. |
BR-DE-25-a | Payment means is a SEPA direct debit (code 49/59) but direct-debit information (BG-19) is missing. |
BR-DE-25-b | Payment means is a SEPA direct debit (code 49/59), so a payee account (BG-17) must not be present. |
BR-DE-26 | A corrected invoice (type_code 384) should reference the invoice it corrects (BT-25). |
BR-DE-27 | The seller contact phone number (BT-42) should contain at least three digits. |
BR-DE-28 | The seller contact email (BT-43) does not look like an email address — exactly one @, at least two characters on each side, no leading/trailing dot. |
BR-DE-30 | Direct-debit information (BG-19) is present but the creditor identifier (BT-90) is missing. |
BR-DE-31 | Direct-debit information (BG-19) is present but the debited account identifier (BT-91) is missing. |
BR-DE-CVD-01 | A CVD invoice must carry the contract reference (BT-12). |
BR-DE-CVD-02 | A CVD invoice must carry the tender or lot reference (BT-17). |
BR-DE-CVD-03 | A CVD invoice must contain at least one line whose item classification (BT-158) uses scheme 'CVD' together with the vehicle item attribute. |
BR-DE-CVD-04 | A CVD item classification (BT-158, scheme 'CVD') must use one of the permitted vehicle category codes. |
BR-DE-CVD-05 | A CVD item attribute named 'cva' (BT-160) must carry one of the permitted values (BT-161). |
BR-DE-CVD-06-a | A line classified with the CVD scheme (BT-158) must carry exactly one item attribute named 'cva' (BT-160). |
BR-DE-CVD-06-b | A line with the item attribute 'cva' (BT-160) must carry exactly one CVD-scheme item classification (BT-158). |
BR-DE-TMP-32 | The invoice states no delivery/service date — provide the actual delivery date (BT-72), an invoicing period (BG-14), or a period on every line (BG-26). |
Calculations & conditions (BR-CO)
EN 16931 arithmetic and conditional rules: line, VAT and document totals must add up, and dependent fields must be present together.
| Rule | What it checks |
|---|---|
BR-CO-03 | The VAT point date (BT-7) and the VAT point date code (BT-8) are mutually exclusive — an invoice may carry one of them, never both. |
BR-CO-04 | An invoice line is not categorized with a VAT category code (BT-151). |
BR-CO-05 | The document-level allowance reason code (BT-98) and reason text (BT-97) should describe the same type of allowance. |
BR-CO-06 | The document-level charge reason code (BT-105) and reason text (BT-104) should describe the same type of charge. |
BR-CO-07 | An invoice line allowance reason code (BT-140) and reason text (BT-139) should describe the same type of allowance. |
BR-CO-08 | An invoice line charge reason code (BT-145) and reason text (BT-144) should describe the same type of charge. |
BR-CO-09 | A VAT identifier (seller BT-31, buyer BT-48, or tax representative BT-63) does not start with an ISO 3166-1 country prefix (Greece uses EL). |
BR-CO-10 | The sum of line net amounts (BT-106) does not match the invoice lines. |
BR-CO-11 | The sum of document-level allowances (BT-107) does not equal the sum of the individual allowance amounts (BT-92). |
BR-CO-12 | The sum of document-level charges (BT-108) does not equal the sum of the individual charge amounts (BT-99). |
BR-CO-13 | Supplied totals.net does not equal the sum of line nets minus document allowances plus document charges. |
BR-CO-14 | Supplied totals.tax does not match the computed VAT breakdown. |
BR-CO-15 | Supplied totals.gross does not equal net + tax. |
BR-CO-16 | The amount due (BT-115) would be negative: paid_amount (BT-113) exceeds the invoice total with VAT (BT-112). |
BR-CO-17 | A VAT breakdown's tax amount (BT-117) does not equal its taxable amount (BT-116) multiplied by the category rate (BT-119), allowing for rounding. |
BR-CO-18 | The invoice has no VAT breakdown (BG-23) — at least one is required. |
BR-CO-19 | An invoicing period (BG-14) is present but carries neither a start date (BT-73) nor an end date (BT-74). |
BR-CO-20 | An invoice line period (BG-26) is present but carries neither a start date (BT-134) nor an end date (BT-135). |
BR-CO-21 | A document-level allowance (BG-20) carries neither a reason text (BT-97) nor a reason code (BT-98) — at least one is required. |
BR-CO-22 | A document-level charge (BG-21) carries neither a reason text (BT-104) nor a reason code (BT-105) — at least one is required. |
BR-CO-23 | An invoice line allowance (BG-27) carries neither a reason text (BT-139) nor a reason code (BT-140) — at least one is required. |
BR-CO-24 | An invoice line charge (BG-28) carries neither a reason text (BT-144) nor a reason code (BT-145) — at least one is required. |
BR-CO-25 | An amount is due but neither a due date (BT-9) nor payment terms (BT-20) are present. |
BR-CO-26 | The seller carries none of: VAT identifier (BT-31), legal registration identifier (BT-30) or seller identifier (BT-29) — at least one is required so the buyer can identify the supplier. The German tax number (BT-32) alone does NOT satisfy this rule. |
Decimal precision (BR-DEC)
Amount fields are limited to at most two decimal places by EN 16931.
| Rule | What it checks |
|---|---|
BR-DEC-01 | A document-level allowance amount (BT-92) has more than 2 decimal places. |
BR-DEC-02 | A document-level allowance base amount (BT-93) has more than 2 decimal places. |
BR-DEC-05 | A document-level charge amount (BT-99) has more than 2 decimal places. |
BR-DEC-06 | A document-level charge base amount (BT-100) has more than 2 decimal places. |
BR-DEC-09 | The sum of line net amounts (BT-106) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-10 | The sum of document-level allowances (BT-107) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-11 | The sum of document-level charges (BT-108) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-12 | totals.net (BT-109) has more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-13 | totals.tax (BT-110) has more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-14 | totals.gross (BT-112) has more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-15 | The invoice total VAT amount in the accounting currency (BT-111, the second cac:TaxTotal/cbc:TaxAmount carrying the tax currency) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-16 | The paid amount (BT-113) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-17 | The rounding amount (BT-114) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-18 | The amount due for payment (BT-115) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-19 | A VAT category taxable amount (BT-116) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-20 | A VAT category tax amount (BT-117) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-23 | An invoice line net amount (BT-131) uses more than 2 decimal places — EN 16931 allows at most 2. |
BR-DEC-24 | A line-level allowance amount (BT-136) has more than 2 decimal places. |
BR-DEC-25 | A line-level allowance base amount (BT-137) has more than 2 decimal places. |
BR-DEC-27 | A line-level charge amount (BT-141) has more than 2 decimal places. |
BR-DEC-28 | A line-level charge base amount (BT-142) has more than 2 decimal places. |
Code lists (BR-CL)
Values that must come from an official code list — currencies, countries, payment means, VAT categories, allowance/charge reasons, electronic-address schemes.
| Rule | What it checks |
|---|---|
BR-CL-01 | The document type code (BT-3) is not an invoice-type code from UNTDID 1001 — in the UBL Invoice syntax, credit-note codes such as 381 are not allowed. |
BR-CL-03 | An amount carries a currencyID attribute that is not an ISO 4217 currency code. |
BR-CL-04 | The invoice currency code (BT-5) is not part of ISO 4217. |
BR-CL-05 | The VAT accounting currency code (BT-6) is not part of ISO 4217. |
BR-CL-06 | The VAT point date code (BT-8) is not one of the UNTDID 2005 codes EN 16931 permits (3, 35 or 432). |
BR-CL-07 | The scheme of an invoiced-object identifier (BT-18 schemeID) is not a UNTDID 1153 code. |
BR-CL-08 | An invoice note (BT-22) starts with a #...# prefix whose subject code (BT-21) is not part of UNTDID 4451. |
BR-CL-10 | The scheme of a party identifier (BT-29/BT-46 schemeID) is not part of the ISO/IEC 6523 ICD list. |
BR-CL-11 | The scheme of a legal registration identifier (BT-30/BT-47 schemeID) is not part of the ISO/IEC 6523 ICD list. |
BR-CL-13 | The list identifier of an item classification (BT-158 listID) is not a UNTDID 7143 code. |
BR-CL-14 | A country code in the invoice is not an ISO 3166-1 alpha-2 code. |
BR-CL-15 | The item country of origin (BT-159) is not an ISO 3166-1 alpha-2 code. |
BR-CL-16 | The payment means code (BT-81) is not a UNTDID 4461 code. |
BR-CL-17 | A VAT category code at document level (BT-95, BT-102 or BT-118) is not one of the UNCL 5305 values EN 16931 permits (AE, L, M, E, S, Z, G, O, K, B). |
BR-CL-18 | A line VAT category code (BT-151) is not one of the UNCL 5305 values EN 16931 permits (AE, L, M, E, S, Z, G, O, K, B). |
BR-CL-19 | An allowance reason code (BT-98 document level, BT-140 line level) is not part of the UNCL 5189 subset EN 16931 permits. |
BR-CL-20 | A charge reason code (BT-105 document level, BT-145 line level) is not a UNTDID 7161 code. |
BR-CL-21 | The scheme of an item standard identifier (BT-157 schemeID) is not part of the ISO/IEC 6523 ICD list. |
BR-CL-22 | A VAT exemption reason code (BT-121) is not part of the VATEX code list. |
BR-CL-23 | A unit code (BT-130 invoiced quantity, BT-150 price base quantity) is not part of UN/ECE Recommendation 20/21; the document is still accepted. |
BR-CL-24 | The MIME type of an embedded attachment (BT-125 mimeCode) is not one of the types EN 16931 permits (PDF, PNG, JPEG, CSV, XLSX or ODS). |
BR-CL-25 | An electronic address scheme (BT-34 seller, BT-49 buyer — the schemeID on cbc:EndpointID) is not part of the EAS code list. |
BR-CL-26 | The scheme of a delivery location identifier (BT-71 schemeID) is not part of the ISO/IEC 6523 ICD list. |
VAT category rules (BR-S / Z / E / AE / IC / G / O)
Per-VAT-category rules: standard, zero-rated, exempt, reverse charge, intra-community supply, export, and not-subject-to-VAT.
| Rule | What it checks |
|---|---|
BR-AE-01 | Lines or document-level allowances/charges use VAT category "AE" (reverse charge), so the VAT breakdown (BG-23) must contain exactly one reverse-charge entry. |
BR-AE-02 | Reverse charge (AE) requires a seller VAT identifier (BT-31) or tax registration number (BT-32), and the buyer VAT identifier (BT-48). |
BR-AE-03 | A document-level allowance uses VAT category "AE" (reverse charge), which requires a seller VAT identifier (BT-31) or tax registration number (BT-32) plus the buyer VAT identifier (BT-48). |
BR-AE-04 | A document-level charge uses VAT category "AE" (reverse charge), which requires a seller VAT identifier (BT-31) or tax registration number (BT-32) plus the buyer VAT identifier (BT-48). |
BR-AE-05 | A reverse-charge (AE) line must have a VAT rate of 0. |
BR-AE-06 | A document-level allowance with VAT category "AE" (reverse charge) must have a VAT rate of 0. |
BR-AE-07 | A document-level charge with VAT category "AE" (reverse charge) must have a VAT rate of 0. |
BR-AE-08 | The taxable amount (BT-116) of the reverse-charge (AE) breakdown does not equal the sum of line net amounts minus allowances plus charges with category AE. |
BR-AE-09 | The tax amount (BT-117) of the reverse-charge (AE) breakdown must be 0. |
BR-AE-10 | Lines use VAT category "AE" (reverse charge) but no exemption reason (BT-120) or reason code (BT-121) is given. |
BR-AF-01 | Lines or document-level allowances/charges use VAT category "L" (IGIC, Canary Islands) but the VAT breakdown (BG-23) has no IGIC entry. |
BR-AF-02 | The invoice has IGIC (L) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AF-03 | A document-level allowance uses VAT category L (IGIC), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AF-04 | A document-level charge uses VAT category L (IGIC), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AF-05 | An IGIC (L) line must have a VAT rate (BT-152) of 0 or greater. |
BR-AF-06 | A document-level allowance with VAT category L (IGIC) must have a rate of 0 or greater. |
BR-AF-07 | A document-level charge with VAT category L (IGIC) must have a rate of 0 or greater. |
BR-AF-08 | For each IGIC (L) rate, the taxable amount (BT-116) of the breakdown must equal the sum of line net amounts minus allowances plus charges with category L and that rate. |
BR-AF-09 | The tax amount (BT-117) of an IGIC (L) breakdown must equal its taxable amount (BT-116) multiplied by its rate (BT-119). |
BR-AF-10 | An IGIC (L) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121). |
BR-AG-01 | Lines or document-level allowances/charges use VAT category "M" (IPSI, Ceuta/Melilla) but the VAT breakdown (BG-23) has no IPSI entry. |
BR-AG-02 | The invoice has IPSI (M) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AG-03 | A document-level allowance uses VAT category M (IPSI), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AG-04 | A document-level charge uses VAT category M (IPSI), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-AG-05 | An IPSI (M) line must have a VAT rate (BT-152) of 0 or greater. |
BR-AG-06 | A document-level allowance with VAT category M (IPSI) must have a rate of 0 or greater. |
BR-AG-07 | A document-level charge with VAT category M (IPSI) must have a rate of 0 or greater. |
BR-AG-08 | For each IPSI (M) rate, the taxable amount (BT-116) of the breakdown must equal the sum of line net amounts minus allowances plus charges with category M and that rate. |
BR-AG-09 | The tax amount (BT-117) of an IPSI (M) breakdown must equal its taxable amount (BT-116) multiplied by its rate (BT-119). |
BR-AG-10 | An IPSI (M) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121). |
BR-B-01 | VAT category "B" (Italian split payment) is only allowed on domestic Italian invoices — every country code in the document must be IT. |
BR-B-02 | VAT category "B" (Italian split payment) must not be combined with category "S" (standard rated) on the same invoice. |
BR-E-01 | Lines or document-level allowances/charges use VAT category "E" (exempt), so the VAT breakdown (BG-23) must contain exactly one exempt entry. |
BR-E-02 | The invoice has VAT-exempt (E) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-E-03 | A document-level allowance uses VAT category E (exempt), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-E-04 | A document-level charge uses VAT category E (exempt), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-E-05 | A VAT-exempt (E) line must have a VAT rate of 0. |
BR-E-06 | A document-level allowance with VAT category "E" (exempt) must have a VAT rate of 0. |
BR-E-07 | A document-level charge with VAT category "E" (exempt) must have a VAT rate of 0. |
BR-E-08 | The taxable amount (BT-116) of the exempt (E) breakdown does not equal the sum of line net amounts minus allowances plus charges with category E. |
BR-E-09 | The tax amount (BT-117) of the exempt (E) breakdown must be 0. |
BR-E-10 | Lines use VAT category "E" (exempt) but no exemption reason (BT-120) or reason code (BT-121) is given. |
BR-G-01 | Lines or document-level allowances/charges use VAT category "G" (export outside the EU), so the VAT breakdown (BG-23) must contain exactly one export entry. |
BR-G-02 | The invoice has export (G) lines, which require the seller VAT identifier (BT-31) — unlike most categories, the tax registration number (BT-32) is not accepted here. |
BR-G-03 | A document-level allowance uses VAT category G (export outside the EU), which requires the seller VAT identifier (BT-31); the tax registration number (BT-32) is not accepted here. |
BR-G-04 | A document-level charge uses VAT category G (export outside the EU), which requires the seller VAT identifier (BT-31); the tax registration number (BT-32) is not accepted here. |
BR-G-05 | An export (G) line must have a VAT rate of exactly 0. |
BR-G-06 | A document-level allowance with VAT category "G" (export outside the EU) must have a VAT rate of 0. |
BR-G-07 | A document-level charge with VAT category "G" (export outside the EU) must have a VAT rate of 0. |
BR-G-08 | The taxable amount (BT-116) of the export (G) breakdown does not equal the sum of line net amounts minus allowances plus charges with category G. |
BR-G-09 | The tax amount (BT-117) of the export (G) breakdown must be 0. |
BR-G-10 | Lines use VAT category "G" (export outside the EU) but no exemption reason (BT-120) or reason code (BT-121) is given. |
BR-IC-01 | Lines or document-level allowances/charges use VAT category "K" (intra-community supply), so the VAT breakdown (BG-23) must contain exactly one intra-community entry. |
BR-IC-02 | The invoice has intra-community supply (K) lines, which require both the seller VAT identifier (BT-31) and the buyer VAT identifier (BT-48); the seller tax registration number (BT-32) is not accepted here. |
BR-IC-03 | A document-level allowance uses VAT category K (intra-community supply), which requires both the seller VAT identifier (BT-31) and the buyer VAT identifier (BT-48). |
BR-IC-04 | A document-level charge uses VAT category K (intra-community supply), which requires both the seller VAT identifier (BT-31) and the buyer VAT identifier (BT-48). |
BR-IC-05 | An intra-community supply (K) line must have a VAT rate of exactly 0. |
BR-IC-06 | A document-level allowance with VAT category "K" (intra-community supply) must have a VAT rate of 0. |
BR-IC-07 | A document-level charge with VAT category "K" (intra-community supply) must have a VAT rate of 0. |
BR-IC-08 | The taxable amount (BT-116) of the intra-community (K) breakdown does not equal the sum of line net amounts minus allowances plus charges with category K. |
BR-IC-09 | The tax amount (BT-117) of the intra-community (K) breakdown must be 0. |
BR-IC-10 | Lines use VAT category "K" (intra-community supply) but no exemption reason (BT-120) or reason code (BT-121) is given. |
BR-IC-11 | An intra-community supply (VAT category K) must state the actual delivery date (BT-72) or an invoicing period (BG-14). |
BR-IC-12 | An intra-community supply (VAT category K) must state the deliver-to country (BT-80). |
BR-O-01 | Lines or document-level allowances/charges use VAT category "O" (not subject to VAT), so the VAT breakdown (BG-23) must contain exactly one such entry. |
BR-O-02 | The invoice has "not subject to VAT" (O) lines, which forbid a seller VAT identifier (BT-31) and a buyer VAT identifier (BT-48) on the invoice. |
BR-O-03 | A document-level allowance uses VAT category O ("not subject to VAT"), which forbids a seller VAT identifier (BT-31) and a buyer VAT identifier (BT-48) on the invoice. |
BR-O-04 | A document-level charge uses VAT category O ("not subject to VAT"), which forbids a seller VAT identifier (BT-31) and a buyer VAT identifier (BT-48) on the invoice. |
BR-O-05 | A line "not subject to VAT" (O) must not carry a VAT rate. |
BR-O-06 | A document-level allowance with VAT category "O" (not subject to VAT) must not carry a VAT rate (BT-96). |
BR-O-07 | A document-level charge with VAT category "O" (not subject to VAT) must not carry a VAT rate (BT-103). |
BR-O-08 | The taxable amount (BT-116) of the "not subject to VAT" (O) breakdown does not equal the sum of line net amounts minus allowances plus charges with category O. |
BR-O-09 | The tax amount (BT-117) of the "not subject to VAT" (O) breakdown must be 0. |
BR-O-10 | Lines use VAT category "O" (not subject to VAT) but no exemption reason (BT-120) or reason code (BT-121) is given. |
BR-O-11 | VAT category "O" (not subject to VAT) cannot be mixed with other VAT categories on the same invoice (BR-O-11..14). |
BR-O-12 | An invoice with a "not subject to VAT" (O) breakdown must not contain lines with any other VAT category (BR-O-11..14). |
BR-O-13 | An invoice with a "not subject to VAT" (O) breakdown must not contain document-level allowances with any other VAT category. |
BR-O-14 | An invoice with a "not subject to VAT" (O) breakdown must not contain document-level charges with any other VAT category. |
BR-S-01 | Lines or document-level allowances/charges use VAT category "S" (standard rated) but the VAT breakdown (BG-23) has no standard-rated entry. |
BR-S-02 | The invoice has standard-rated (S) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-S-03 | A document-level allowance uses VAT category S (standard rated), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-S-04 | A document-level charge uses VAT category S (standard rated), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-S-05 | A standard-rated (S) line must have a VAT rate greater than zero. |
BR-S-06 | A document-level allowance with VAT category "S" (standard rated) must have a VAT rate greater than zero. |
BR-S-07 | A document-level charge with VAT category "S" (standard rated) must have a VAT rate greater than zero. |
BR-S-08 | For each standard rate in use, the taxable amount (BT-116) of the S breakdown must equal the sum of line net amounts minus allowances plus charges with category S and that rate. |
BR-S-09 | The tax amount (BT-117) of a standard-rated (S) breakdown must equal its taxable amount (BT-116) multiplied by its rate (BT-119). |
BR-S-10 | A standard-rated (S) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121). |
BR-Z-01 | Lines or document-level allowances/charges use VAT category "Z" (zero rated), so the VAT breakdown (BG-23) must contain exactly one zero-rated entry. |
BR-Z-02 | The invoice has zero-rated (Z) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-Z-03 | A document-level allowance uses VAT category Z (zero rated), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-Z-04 | A document-level charge uses VAT category Z (zero rated), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32). |
BR-Z-05 | A zero-rated (Z) line must have a VAT rate of exactly 0. |
BR-Z-06 | A document-level allowance with VAT category "Z" (zero rated) must have a VAT rate of exactly 0. |
BR-Z-07 | A document-level charge with VAT category "Z" (zero rated) must have a VAT rate of exactly 0. |
BR-Z-08 | The taxable amount (BT-116) of the zero-rated (Z) breakdown does not equal the sum of line net amounts minus allowances plus charges with category Z. |
BR-Z-09 | The tax amount (BT-117) of the zero-rated (Z) breakdown must be 0. |
BR-Z-10 | A zero-rated (Z) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121). |
EN 16931 core (BR)
The core European semantic-model rules every compliant invoice must satisfy.
| Rule | What it checks |
|---|---|
BR-01 | The specification identifier (BT-24) is missing — the document does not say which e-invoicing specification it claims to follow. |
BR-02 | The invoice number (BT-1) is missing or empty. |
BR-03 | The issue date (BT-2) is missing or empty. |
BR-04 | The invoice type code (BT-3) is missing. |
BR-05 | The invoice currency code (BT-5) is missing. |
BR-06 | The seller name (BT-27) is missing or empty. |
BR-07 | The buyer name (BT-44) is missing or empty. |
BR-08 | The seller postal address (BG-5) is missing. |
BR-09 | The seller address has no country code (BT-40). |
BR-10 | The buyer postal address (BG-8) is missing. |
BR-11 | The buyer address has no country code (BT-55). |
BR-12 | The sum of invoice line net amounts (BT-106) is missing from the document totals. |
BR-13 | The invoice total without VAT (BT-109) is missing from the document totals. |
BR-14 | The invoice total with VAT (BT-112) is missing from the document totals. |
BR-15 | The amount due for payment (BT-115) is missing from the document totals. |
BR-16 | The invoice has no invoice lines (BG-25) — at least one is required. |
BR-17 | A payee (BG-10) that differs from the seller must state the payee name (BT-59). |
BR-18 | A seller tax representative (BG-11) must state the representative's name (BT-62). |
BR-19 | A seller tax representative (BG-11) must carry a postal address (BG-12). |
BR-20 | The tax representative's postal address must contain a country code (BT-69). |
BR-21 | An invoice line has no line identifier (BT-126). |
BR-22 | An invoice line has no invoiced quantity (BT-129). |
BR-23 | An invoiced quantity has no unit of measure code (BT-130). |
BR-24 | An invoice line has no line net amount (BT-131). |
BR-25 | An invoice line has no item name (BT-153). |
BR-26 | An invoice line has no item net price (BT-146). |
BR-27 | The item net price (BT-146) must not be negative. |
BR-28 | The item gross price (BT-148) must not be negative. |
BR-29 | The invoicing period end date (BT-74) must not be earlier than its start date (BT-73). |
BR-30 | An invoice line period end date (BT-135) must not be earlier than its start date (BT-134). |
BR-31 | A document-level allowance (BG-20) has no allowance amount (BT-92). |
BR-32 | A document-level allowance needs a VAT category (BT-95); it cannot be inherited because the lines use more than one VAT category/rate. |
BR-33 | A document-level allowance must state why it is granted (BT-97/BT-98). |
BR-36 | A document-level charge (BG-21) has no charge amount (BT-99). |
BR-37 | A document-level charge needs a VAT category (BT-102); it cannot be inherited because the lines use more than one VAT category/rate. |
BR-38 | A document-level charge must state what it is for (BT-104/BT-105). |
BR-41 | An invoice line allowance (BG-27) has no allowance amount (BT-136). |
BR-42 | A line-level allowance must state why it is granted (BT-139/BT-140). |
BR-43 | An invoice line charge (BG-28) has no charge amount (BT-141). |
BR-44 | A line-level charge must state what it is for (BT-144/BT-145). |
BR-45 | A VAT breakdown (BG-23) has no taxable amount (BT-116). |
BR-46 | A VAT breakdown (BG-23) has no tax amount (BT-117). |
BR-47 | A VAT breakdown (BG-23) has no VAT category code (BT-118). |
BR-48 | A VAT breakdown (BG-23) has no VAT category rate (BT-119); only category O (not subject to VAT) may omit it. |
BR-49 | Payment instructions (BG-16) are present but the payment means type code (BT-81) is missing. |
BR-50 | A credit-transfer payment account is present but its account identifier (IBAN, BT-84) is empty. |
BR-51 | A card payment must never carry the full primary account number (BT-87) — at most the first 6 and last 4 digits are allowed. |
BR-52 | An additional supporting document (BG-24) has no document reference (BT-122). |
BR-53 | A VAT accounting currency (BT-6) is given, so the VAT total in that currency (BT-111) must be present as well. |
BR-54 | An item attribute (BG-32) must carry both a name (BT-160) and a value (BT-161). |
BR-55 | A preceding-invoice reference (BG-3) is present but the preceding invoice number (BT-25) is missing. |
BR-56 | A seller tax representative (BG-11) must carry the representative's VAT identifier (BT-63). |
BR-57 | A deliver-to address (BG-15) must contain a country code (BT-80). |
BR-61 | The payment means is a credit transfer (code 30 or 58), so a payment account identifier (IBAN, BT-84) is required. |
BR-62 | The seller electronic address (BT-34) has no scheme identifier. |
BR-63 | The buyer electronic address (BT-49) has no scheme identifier. |
BR-64 | An item standard identifier (BT-157) has no scheme identifier. |
BR-65 | An item classification code (BT-158) has no scheme identifier. |
BR-DEX-01 | An attached document (BT-125) uses a MIME type outside the list the Extension permits (the CIUS list plus application/xml). |
BR-DEX-02 | The net amounts of a line's sub-invoice lines should sum to the parent line's net amount. |
BR-DEX-03 | A sub-invoice line must contain exactly one sub-line VAT information group. |
BR-DEX-04 | A scheme identifier in the Extension must come from the ISO 6523 ICD list. |
BR-DEX-05 | A scheme identifier in the Extension must come from the ISO 6523 ICD list. |
BR-DEX-06 | A scheme identifier in the Extension must come from the ISO 6523 ICD list. |
BR-DEX-07 | An endpoint identifier scheme in the Extension must come from the EAS code list (extended by the DiGA codes XR01/XR02/XR03). |
BR-DEX-08 | A delivery location identifier scheme in the Extension must come from the ISO 6523 ICD list. |
BR-DEX-09 | In the Extension, the amount due (BT-115) must equal total with VAT (BT-112) − paid (BT-113) + rounding (BT-114) + the sum of third-party payment amounts. |
BR-DEX-10 | A third-party payment group must state the payment type. |
BR-DEX-11 | A third-party payment group must state the payment amount. |
BR-DEX-12 | A third-party payment group must state the payment description. |
BR-DEX-13 | A third-party payment amount may carry at most 2 decimal places. |
BR-DEX-14 | A third-party payment amount must use the invoice currency (BT-5) as its currency. |
BR-DEX-15 | This CII document appears to use sub-invoice lines, which XRechnung does not support in this syntax. |
BR-TMP-2 | An external document location (BT-124) must be an absolute URL with a valid scheme (announced to become an error in a future XRechnung release). |
BR-TMP-3 | In a CII invoice, when the item price base quantity (BT-149) appears on both the gross and net price, the values (and their unit codes, BT-150) must be identical. |
BR-TMP-CVD-01 | In a CVD invoice, the item classification scheme (BT-158) must come from the UNTDID 7143 code list. |
Peppol BIS (PEPPOL-EN16931)
Peppol BIS Billing 3.0 CIUS rules layered on top of EN 16931.
| Rule | What it checks |
|---|---|
PEPPOL-EN16931-R001 | The business process (BT-23) must be provided. |
PEPPOL-EN16931-R005 | The VAT accounting currency (BT-6) must differ from the invoice currency (BT-5) when provided. |
PEPPOL-EN16931-R008 | The document must not contain empty elements. |
PEPPOL-EN16931-R010 | The buyer electronic address (BT-49) must be provided. |
PEPPOL-EN16931-R020 | The seller electronic address (BT-34) must be provided. |
PEPPOL-EN16931-R040 | An allowance/charge amount must equal base amount × percentage / 100 when both base amount and percentage are present. |
PEPPOL-EN16931-R041 | An allowance/charge percentage is present, so its base amount must be provided as well. |
PEPPOL-EN16931-R042 | An allowance/charge base amount is present, so its percentage must be provided as well. |
PEPPOL-EN16931-R043 | An allowance/charge indicator must be exactly 'true' or 'false'. |
PEPPOL-EN16931-R043-1 | A document-level allowance/charge indicator must be exactly 'true' or 'false'. |
PEPPOL-EN16931-R043-2 | A line-level allowance/charge indicator must be exactly 'true' or 'false'. |
PEPPOL-EN16931-R044 | A charge on price level is not allowed — only allowances (indicator 'false'). |
PEPPOL-EN16931-R046 | The item net price must equal the gross price minus the price allowance when a gross price is provided. |
PEPPOL-EN16931-R053 | Exactly one tax total with tax subtotals must be provided. |
PEPPOL-EN16931-R054 | When a tax accounting currency is used, exactly one additional tax total without subtotals must carry it. |
PEPPOL-EN16931-R055 | The invoice total VAT amount and its accounting-currency counterpart must have the same sign. |
PEPPOL-EN16931-R061 | A direct-debit payment (means code 49/59) must carry a mandate reference (BT-89). |
PEPPOL-EN16931-R101 | A line document reference may only be used for an invoice line object identifier. |
PEPPOL-EN16931-R110 | An invoice line period start date must lie within the document invoicing period. |
PEPPOL-EN16931-R111 | An invoice line period end date must lie within the document invoicing period. |
PEPPOL-EN16931-R120 | An invoice line net amount must equal quantity × (price / base quantity) plus line charges minus line allowances. |
PEPPOL-EN16931-R121 | An item price base quantity must be a positive number above zero. |
PEPPOL-EN16931-R130 | The unit code of an item price base quantity must equal the invoiced quantity's unit code. |
UBL 2.1 bindings (UBL-SR / CR / DT)
Syntax-binding rules for UBL 2.1 — elements and datatypes beyond the EN 16931 core model. normbill-generated documents never trigger these; they can only appear when you validate your own XML.
| Rule | What it checks |
|---|---|
UBL-CR-001 | The document contains ext:UBLExtensions. Extensions are valid UBL but not part of the EN 16931 core model — receivers are free to ignore their content (embedded signatures included). |
UBL-CR-002 | cbc:UBLVersionID is present with a value other than 2.1. EN 16931 invoices are UBL 2.1 — omit the element or set it to exactly 2.1. |
UBL-CR-006 | cbc:IssueTime is present. The EN 16931 core model works with dates only (BT-2) — a time of day is not part of it. |
UBL-CR-561 | An invoice line contains cac:TaxTotal. In EN 16931 VAT is broken down at document level only (BG-23) — lines state just their category and rate (BT-151/BT-152). |
UBL-CR-646 | An invoice line contains cac:SubInvoiceLine. XRechnung prohibits sub-invoice lines — the KoSIT validator raises this from a warning to an error, so the document is rejected. |
UBL-DT-01 | An amount carries more than two decimal places. Every UBL amount element is limited to two fraction digits — only the item net price (cac:Price/cbc:PriceAmount) and its price discount may be more precise. |
UBL-DT-06 | An embedded attachment (cbc:EmbeddedDocumentBinaryObject) is missing its mimeCode attribute — the receiver cannot tell what file type the binary data is. |
UBL-DT-07 | An embedded attachment (cbc:EmbeddedDocumentBinaryObject) is missing its filename attribute — EN 16931 requires a file name for every embedded document (BT-125). |
UBL-SR-01 | The contract reference (BT-12) appears more than once — only one cac:ContractDocumentReference with one cbc:ID is allowed. |
UBL-SR-02 | The receiving advice reference (BT-15) appears more than once — only one cac:ReceiptDocumentReference with one cbc:ID is allowed. |
UBL-SR-03 | The despatch advice reference (BT-16) appears more than once — only one cac:DespatchDocumentReference with one cbc:ID is allowed. |
UBL-SR-04 | The invoiced-object identifier (BT-18) appears more than once — only one cac:AdditionalDocumentReference with DocumentTypeCode 130 is allowed. |
UBL-SR-05 | Payment terms (BT-20) appear more than once — across all cac:PaymentTerms elements only a single cbc:Note is allowed. |
UBL-SR-06 | A cac:BillingReference contains more than one cac:InvoiceDocumentReference — each preceding-invoice reference (BG-3) holds exactly one. |
UBL-SR-07 | A cac:BillingReference is present but the preceding invoice number (BT-25, InvoiceDocumentReference/cbc:ID) is missing. |
UBL-SR-08 | The invoicing period (BG-14) appears more than once — only one document-level cac:InvoicePeriod is allowed. |
UBL-SR-09 | The seller name (BT-27) appears more than once — the supplier party may carry only one PartyLegalEntity/RegistrationName. |
UBL-SR-10 | The seller trading name (BT-28) appears more than once — the supplier party may carry only one PartyName/Name. |
UBL-SR-11 | The seller legal registration identifier (BT-30) appears more than once — only one PartyLegalEntity/CompanyID is allowed. |
UBL-SR-12 | The seller VAT identifier (BT-31) appears more than once — only one PartyTaxScheme with TaxScheme/ID 'VAT' may carry a CompanyID. |
UBL-SR-13 | The seller tax registration identifier (BT-32) appears more than once — only one non-VAT PartyTaxScheme may carry a CompanyID. |
UBL-SR-14 | The seller's additional legal information (BT-33) appears more than once — only one PartyLegalEntity/CompanyLegalForm is allowed. |
UBL-SR-15 | The buyer name (BT-44) appears more than once — the customer party may carry only one PartyLegalEntity/RegistrationName. |
UBL-SR-16 | The buyer identifier (BT-46) appears more than once — the customer party may carry only one PartyIdentification/ID. |
UBL-SR-17 | The buyer legal registration identifier (BT-47) appears more than once — only one PartyLegalEntity/CompanyID is allowed. |
UBL-SR-18 | The buyer VAT identifier (BT-48) appears more than once — only one PartyTaxScheme with TaxScheme/ID 'VAT' may carry a CompanyID. |
UBL-SR-19 | The payee name (BT-59) is invalid: cac:PayeeParty may carry at most one PartyName/Name, and it must differ from the seller name — state a payee only when it is not the seller. |
UBL-SR-20 | The payee identifier (BT-60) is invalid: cac:PayeeParty may carry at most one PartyIdentification/ID (SEPA scheme aside), and the payee must differ from the seller. |
UBL-SR-21 | The payee legal registration identifier (BT-61) is invalid: at most one PartyLegalEntity/CompanyID is allowed in cac:PayeeParty, and the payee must differ from the seller. |
UBL-SR-22 | The tax representative name (BT-62) appears more than once — cac:TaxRepresentativeParty may carry only one PartyName/Name. |
UBL-SR-23 | The tax representative VAT identifier (BT-63) appears more than once — only one PartyTaxScheme/CompanyID is allowed in the tax representative party. |
UBL-SR-24 | Delivery information (BG-13) appears more than once — only one cac:Delivery element is allowed. |
UBL-SR-25 | The deliver-to party name (BT-70) appears more than once — cac:Delivery may carry only one DeliveryParty/PartyName/Name. |
UBL-SR-26 | The payment reference (BT-83) appears more than once in a cac:PaymentMeans — only one cbc:PaymentID per payment means is allowed. |
UBL-SR-27 | A cac:PaymentMeans carries more than one cbc:PaymentMeansCode (BT-81) — each payment means states exactly one code. |
UBL-SR-28 | The direct-debit mandate reference (BT-89) appears more than once — only one PaymentMandate/cbc:ID per cac:PaymentMeans is allowed. |
UBL-SR-29 | The SEPA creditor identifier (BT-90) appears more than once — only one PartyIdentification/ID with schemeID 'SEPA' is allowed in the whole document. |
UBL-SR-30 | A document-level allowance carries more than one reason text (BT-97) — only one cbc:AllowanceChargeReason per allowance is allowed. |
UBL-SR-31 | A document-level charge carries more than one reason text (BT-104) — only one cbc:AllowanceChargeReason per charge is allowed. |
UBL-SR-32 | A VAT breakdown carries more than one exemption reason text (BT-120) — only one cbc:TaxExemptionReason per cac:TaxSubtotal is allowed. |
UBL-SR-33 | A supporting document (BG-24) carries more than one description (BT-123) — only one cbc:DocumentDescription per cac:AdditionalDocumentReference is allowed. |
UBL-SR-34 | An invoice line carries more than one note (BT-127) — only one cbc:Note per cac:InvoiceLine is allowed. |
UBL-SR-35 | An invoice line references more than one purchase order line (BT-132) — only one OrderLineReference/LineID per line is allowed. |
UBL-SR-36 | An invoice line carries more than one invoicing period (BG-26) — only one cac:InvoicePeriod per line is allowed. |
UBL-SR-37 | An item price discount (BT-147) appears more than once — only one cac:Price/cac:AllowanceCharge with one cbc:Amount per line is allowed. |
UBL-SR-39 | The project reference (BT-11) appears more than once — only one cac:ProjectReference with one cbc:ID is allowed. |
UBL-SR-40 | The buyer trading name (BT-45) appears more than once — the customer party may carry only one PartyName/Name. |
UBL-SR-42 | The supplier party carries more than two cac:PartyTaxScheme elements — at most two are allowed: the VAT identifier (BT-31) and the tax registration (BT-32). |
UBL-SR-43 | A schemeID attribute is set on an AdditionalDocumentReference/cbc:ID that is not an invoiced-object reference — the scheme is only allowed together with DocumentTypeCode 130 (or 50 in credit notes). |
UBL-SR-44 | The document carries more than one distinct cbc:PaymentID value — the payment reference (BT-83) must be unique; the same value may be repeated on multiple payment means. |
UBL-SR-45 | The payment due date inside cac:PaymentMeans appears more than once — cbc:PaymentDueDate is allowed at most once in the document. |
UBL-SR-46 | The payment means text (BT-82, the name attribute on cbc:PaymentMeansCode) appears more than once in the document. |
UBL-SR-47 | Several cac:PaymentMeans elements carry different cbc:PaymentMeansCode values — when the code (BT-81) is repeated it must be identical everywhere. |
UBL-SR-48 | An invoice line does not have exactly one cac:ClassifiedTaxCategory — every line states its VAT category (BT-151) exactly once. |
UBL-SR-49 | The tax point date code (BT-8) appears more than once — only one cac:InvoicePeriod/cbc:DescriptionCode is allowed. |
UBL-SR-50 | An item carries more than one description (BT-154) — only one cbc:Description per cac:Item is allowed. |
UBL-SR-51 | An address carries more than one cac:AddressLine — only one additional address line (line 3) is allowed per postal address. |
UBL-SR-52 | An invoice line carries more than one cac:DocumentReference — the line-level invoiced-object identifier (BT-128) is allowed at most once. |
UBL-SR-53 | A cac:PartyTaxScheme states a TaxScheme/ID but no cbc:CompanyID — the identifier itself (e.g. the VAT number) is missing from the tax scheme entry. |
UBL-SR-54 | More than one payment card account (BG-18) is present — cac:PaymentMeans/cac:CardAccount is allowed at most once. |
UBL-SR-55 | More than one direct-debit mandate (BG-19) is present — cac:PaymentMeans/cac:PaymentMandate is allowed at most once. |
XML schema (XSD)
Structural schema violations reported before business rules run — an element is missing, misplaced, or a value does not match its datatype.
| Rule | What it checks |
|---|---|
cvc-attribute.3 | An attribute value does not match the attribute's declared datatype — e.g. a non-numeric value where the schema expects a number, or a malformed code. |
cvc-complex-type.2.3 | Text appears directly inside an element that may only contain child elements — usually a stray character outside a tag or an accidentally unclosed element. |
cvc-complex-type.2.4.a | An element appears where the schema does not expect it — it is unknown, misspelled, or out of order. UBL is strictly order-sensitive; the validator names the element it found and the elements it expected instead. |
cvc-complex-type.2.4.b | An element's content is incomplete — a required child element is missing (e.g. an Invoice without any cac:InvoiceLine, or a line without cac:Item). |
cvc-complex-type.2.4.d | An element appears after the content model is already complete — the schema allows no further children at that position. |
cvc-complex-type.3.2.2 | An attribute is set on an element that does not declare it — a forbidden or misspelled attribute (e.g. currencyID on a non-amount element, or a typo like currencyId). |
cvc-complex-type.4 | A required attribute is missing — in UBL invoices this is almost always currencyID on an amount element (every cbc:*Amount needs it) or mimeCode on an embedded attachment. |
cvc-datatype-valid.1.2.1 | A value does not match its datatype's lexical rules — e.g. a date written as 15.06.2026 instead of 2026-06-15, a decimal with a comma, or broken base64 content. |
cvc-elt.1.a | The root element's declaration cannot be found — the document element has the wrong name or namespace, so it is not recognized as a UBL invoice at all. |
cvc-enumeration-valid | A value is not one of the fixed set of values the schema enumerates for this element or attribute. |
cvc-length-valid | A value violates an exact-length restriction of its datatype — it must have precisely the number of characters the schema fixes. |
cvc-maxLength-valid | A value is longer than the maximum length its datatype allows. |
cvc-minLength-valid | A value is shorter than the minimum length its datatype requires — often an empty element where content is mandatory. |
cvc-pattern-valid | A value does not match the regular-expression pattern its datatype enforces (the validator message shows the pattern). |
cvc-type.3.1.3 | An element's value is not valid against the element's declared type — the element-level companion of a datatype failure, usually reported together with cvc-datatype-valid.1.2.1. |
normbill pre-flight (NB)
normbill's own tier-1 checks — run before generation to catch problems early, where no single official rule id applies. The authoritative KoSIT validation still has the final word.
| Rule | What it checks |
|---|---|
NB-AC-MISMATCH | An allowance/charge amount does not equal base_amount × percent / 100 — the KoSIT validator rejects this (PEPPOL-EN16931-R040). |
NB-EADDR-BUYER | Buyer electronic address (BT-49) is missing — XRechnung requires one for both parties. |
NB-EADDR-SELLER | Seller electronic address (BT-34) is missing — XRechnung requires one for both parties. |
NB-IBAN-CHECKSUM | The IBAN fails its checksum — this is almost certainly a typo. |
NB-LEITWEG-FORMAT | buyer_reference does not look like a Leitweg-ID. German B2G platforms (ZRE/OZG-RE) reject malformed Leitweg-IDs. For B2B invoices any buyer reference is fine — ignore this warning then. |
NB-PAYMENT-MEANS-UNSUPPORTED | Card-payment means codes (48/54/55) need card information (BG-18) that normbill cannot express yet — KoSIT would reject the invoice (BR-DE-24-a). |
NB-VALIDATOR-REJECT | The official KoSIT validator rejected this document without a mappable rule finding — typically an XML schema (XSD) violation. |
NB-VAT-ID-FORMAT | A German VAT identifier (BT-31/BT-48) must be "DE" followed by exactly 9 digits. EN 16931 and the KoSIT validator only check the ISO country prefix, not the national length, so a German id with the wrong number of digits still passes tier 3 — normbill catches it here. |
NB-VAT-RATE | A line has neither a VAT rate nor a VAT category — the category cannot be determined. |
Every 422 the API returns links each finding to its rule page under /docs/rules/<rule-id>. Start from the docs overview for the full report format.