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).

RuleWhat it checks
BR-DE-1Payment instructions (BG-16) are missing. XRechnung requires them.
BR-DE-2Seller contact details (BG-6) are missing. XRechnung requires a contact person or department.
BR-DE-3Seller city (BT-37) is missing.
BR-DE-4Seller postal code (BT-38) is missing.
BR-DE-5Seller contact name (BT-41) is missing.
BR-DE-6Seller contact phone number (BT-42) is missing.
BR-DE-7Seller contact email (BT-43) is missing.
BR-DE-8Buyer city (BT-52) is missing.
BR-DE-9Buyer postal code (BT-53) is missing.
BR-DE-10A deliver-to address (BG-15) is present but its city (BT-77) is missing — XRechnung requires it.
BR-DE-11A deliver-to address (BG-15) is present but its post code (BT-78) is missing — XRechnung requires it.
BR-DE-14A 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-15Buyer reference (BT-10) is missing. XRechnung requires it; public-sector buyers in Germany use their Leitweg-ID here.
BR-DE-16Seller VAT identifier (BT-31) or tax registration number (BT-32) is required.
BR-DE-17This invoice type code is not recommended in XRechnung.
BR-DE-18A 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-19The payment account identifier (BT-84) does not look like a valid IBAN — for SEPA credit transfers (means code 58) XRechnung expects one.
BR-DE-20The debited account identifier (BT-91) does not look like a valid IBAN — for SEPA direct debits (means code 59) XRechnung expects one.
BR-DE-21The specification identifier (BT-24) is not syntactically an XRechnung customization id.
BR-DE-22Two embedded attachments share the same filename — every attached document's filename must be unique within the invoice.
BR-DE-23-aPayment means is a credit transfer (code 30/58) but no payment account (IBAN, BT-84) is given.
BR-DE-23-bPayment means is a credit transfer (code 30/58), so direct-debit information (BG-19) must not be present.
BR-DE-24-aThe payment means is a card payment (code 48, 54 or 55), so card information (BG-18) is required.
BR-DE-24-bThe 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-aPayment means is a SEPA direct debit (code 49/59) but direct-debit information (BG-19) is missing.
BR-DE-25-bPayment means is a SEPA direct debit (code 49/59), so a payee account (BG-17) must not be present.
BR-DE-26A corrected invoice (type_code 384) should reference the invoice it corrects (BT-25).
BR-DE-27The seller contact phone number (BT-42) should contain at least three digits.
BR-DE-28The 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-30Direct-debit information (BG-19) is present but the creditor identifier (BT-90) is missing.
BR-DE-31Direct-debit information (BG-19) is present but the debited account identifier (BT-91) is missing.
BR-DE-CVD-01A CVD invoice must carry the contract reference (BT-12).
BR-DE-CVD-02A CVD invoice must carry the tender or lot reference (BT-17).
BR-DE-CVD-03A 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-04A CVD item classification (BT-158, scheme 'CVD') must use one of the permitted vehicle category codes.
BR-DE-CVD-05A CVD item attribute named 'cva' (BT-160) must carry one of the permitted values (BT-161).
BR-DE-CVD-06-aA line classified with the CVD scheme (BT-158) must carry exactly one item attribute named 'cva' (BT-160).
BR-DE-CVD-06-bA line with the item attribute 'cva' (BT-160) must carry exactly one CVD-scheme item classification (BT-158).
BR-DE-TMP-32The 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.

RuleWhat it checks
BR-CO-03The 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-04An invoice line is not categorized with a VAT category code (BT-151).
BR-CO-05The document-level allowance reason code (BT-98) and reason text (BT-97) should describe the same type of allowance.
BR-CO-06The document-level charge reason code (BT-105) and reason text (BT-104) should describe the same type of charge.
BR-CO-07An invoice line allowance reason code (BT-140) and reason text (BT-139) should describe the same type of allowance.
BR-CO-08An invoice line charge reason code (BT-145) and reason text (BT-144) should describe the same type of charge.
BR-CO-09A 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-10The sum of line net amounts (BT-106) does not match the invoice lines.
BR-CO-11The sum of document-level allowances (BT-107) does not equal the sum of the individual allowance amounts (BT-92).
BR-CO-12The sum of document-level charges (BT-108) does not equal the sum of the individual charge amounts (BT-99).
BR-CO-13Supplied totals.net does not equal the sum of line nets minus document allowances plus document charges.
BR-CO-14Supplied totals.tax does not match the computed VAT breakdown.
BR-CO-15Supplied totals.gross does not equal net + tax.
BR-CO-16The amount due (BT-115) must equal the invoice total with VAT (BT-112) minus the paid amount (BT-113).
BR-CO-17A 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-18The invoice has no VAT breakdown (BG-23) — at least one is required.
BR-CO-19An invoicing period (BG-14) is present but carries neither a start date (BT-73) nor an end date (BT-74).
BR-CO-20An invoice line period (BG-26) is present but carries neither a start date (BT-134) nor an end date (BT-135).
BR-CO-21A 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-22A 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-23An 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-24An 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-25An amount is due but neither a due date (BT-9) nor payment terms (BT-20) are present.
BR-CO-26The 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.

RuleWhat it checks
BR-DEC-01A document-level allowance amount (BT-92) has more than 2 decimal places.
BR-DEC-02A document-level allowance base amount (BT-93) has more than 2 decimal places.
BR-DEC-05A document-level charge amount (BT-99) has more than 2 decimal places.
BR-DEC-06A document-level charge base amount (BT-100) has more than 2 decimal places.
BR-DEC-09The sum of line net amounts (BT-106) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-10The sum of document-level allowances (BT-107) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-11The sum of document-level charges (BT-108) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-12totals.net (BT-109) has more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-13totals.tax (BT-110) has more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-14totals.gross (BT-112) has more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-15The 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-16The paid amount (BT-113) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-17The rounding amount (BT-114) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-18The amount due for payment (BT-115) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-19A VAT category taxable amount (BT-116) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-20A VAT category tax amount (BT-117) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-23An invoice line net amount (BT-131) uses more than 2 decimal places — EN 16931 allows at most 2.
BR-DEC-24A line-level allowance amount (BT-136) has more than 2 decimal places.
BR-DEC-25A line-level allowance base amount (BT-137) has more than 2 decimal places.
BR-DEC-27A line-level charge amount (BT-141) has more than 2 decimal places.
BR-DEC-28A 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.

RuleWhat it checks
BR-CL-01Type code 381 (credit note) is not allowed in the UBL Invoice syntax — UNTDID 1001 lists 381 only for UBL CreditNote documents, so the KoSIT validator rejects it.
BR-CL-03An amount carries a currencyID attribute that is not an ISO 4217 currency code.
BR-CL-04The invoice currency code (BT-5) is not part of ISO 4217.
BR-CL-05The VAT accounting currency code (BT-6) is not part of ISO 4217.
BR-CL-06The VAT point date code (BT-8) is not one of the UNTDID 2005 codes EN 16931 permits (3, 35 or 432).
BR-CL-07The scheme of an invoiced-object identifier (BT-18 schemeID) is not a UNTDID 1153 code.
BR-CL-08An invoice note (BT-22) starts with a #...# prefix whose subject code (BT-21) is not part of UNTDID 4451.
BR-CL-10The scheme of a party identifier (BT-29/BT-46 schemeID) is not part of the ISO/IEC 6523 ICD list.
BR-CL-11The scheme of a legal registration identifier (BT-30/BT-47 schemeID) is not part of the ISO/IEC 6523 ICD list.
BR-CL-13The list identifier of an item classification (BT-158 listID) is not a UNTDID 7143 code.
BR-CL-14A country code in the invoice is not an ISO 3166-1 alpha-2 code.
BR-CL-15The item country of origin (BT-159) is not an ISO 3166-1 alpha-2 code.
BR-CL-16The payment means code (BT-81) is not a UNTDID 4461 code.
BR-CL-17A 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-18A 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-19An allowance reason code (BT-98 document level, BT-140 line level) is not part of the UNCL 5189 subset EN 16931 permits.
BR-CL-20A charge reason code (BT-105 document level, BT-145 line level) is not a UNTDID 7161 code.
BR-CL-21The scheme of an item standard identifier (BT-157 schemeID) is not part of the ISO/IEC 6523 ICD list.
BR-CL-22A VAT exemption reason code (BT-121) is not part of the VATEX code list.
BR-CL-23A 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-24The 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-25An electronic address scheme (BT-34 seller, BT-49 buyer — the schemeID on cbc:EndpointID) is not part of the EAS code list.
BR-CL-26The 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.

RuleWhat it checks
BR-AE-01Lines 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-02Reverse charge (AE) requires a seller VAT identifier (BT-31) or tax registration number (BT-32), and the buyer VAT identifier (BT-48).
BR-AE-03A 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-04A 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-05A reverse-charge (AE) line must have a VAT rate of 0.
BR-AE-06A document-level allowance with VAT category "AE" (reverse charge) must have a VAT rate of 0.
BR-AE-07A document-level charge with VAT category "AE" (reverse charge) must have a VAT rate of 0.
BR-AE-08The 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-09The tax amount (BT-117) of the reverse-charge (AE) breakdown must be 0.
BR-AE-10Lines use VAT category "AE" (reverse charge) but no exemption reason (BT-120) or reason code (BT-121) is given.
BR-AF-01Lines or document-level allowances/charges use VAT category "L" (IGIC, Canary Islands) but the VAT breakdown (BG-23) has no IGIC entry.
BR-AF-02The invoice has IGIC (L) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AF-03A document-level allowance uses VAT category L (IGIC), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AF-04A document-level charge uses VAT category L (IGIC), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AF-05An IGIC (L) line must have a VAT rate (BT-152) of 0 or greater.
BR-AF-06A document-level allowance with VAT category L (IGIC) must have a rate of 0 or greater.
BR-AF-07A document-level charge with VAT category L (IGIC) must have a rate of 0 or greater.
BR-AF-08For 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-09The tax amount (BT-117) of an IGIC (L) breakdown must equal its taxable amount (BT-116) multiplied by its rate (BT-119).
BR-AF-10An IGIC (L) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121).
BR-AG-01Lines or document-level allowances/charges use VAT category "M" (IPSI, Ceuta/Melilla) but the VAT breakdown (BG-23) has no IPSI entry.
BR-AG-02The invoice has IPSI (M) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AG-03A document-level allowance uses VAT category M (IPSI), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AG-04A document-level charge uses VAT category M (IPSI), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-AG-05An IPSI (M) line must have a VAT rate (BT-152) of 0 or greater.
BR-AG-06A document-level allowance with VAT category M (IPSI) must have a rate of 0 or greater.
BR-AG-07A document-level charge with VAT category M (IPSI) must have a rate of 0 or greater.
BR-AG-08For 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-09The tax amount (BT-117) of an IPSI (M) breakdown must equal its taxable amount (BT-116) multiplied by its rate (BT-119).
BR-AG-10An IPSI (M) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121).
BR-B-01VAT category "B" (Italian split payment) is only allowed on domestic Italian invoices — every country code in the document must be IT.
BR-B-02VAT category "B" (Italian split payment) must not be combined with category "S" (standard rated) on the same invoice.
BR-E-01Lines or document-level allowances/charges use VAT category "E" (exempt), so the VAT breakdown (BG-23) must contain exactly one exempt entry.
BR-E-02The invoice has VAT-exempt (E) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-E-03A document-level allowance uses VAT category E (exempt), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-E-04A document-level charge uses VAT category E (exempt), which requires the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-E-05A VAT-exempt (E) line must have a VAT rate of 0.
BR-E-06A document-level allowance with VAT category "E" (exempt) must have a VAT rate of 0.
BR-E-07A document-level charge with VAT category "E" (exempt) must have a VAT rate of 0.
BR-E-08The 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-09The tax amount (BT-117) of the exempt (E) breakdown must be 0.
BR-E-10Lines use VAT category "E" (exempt) but no exemption reason (BT-120) or reason code (BT-121) is given.
BR-G-01Lines 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-02The 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-03A 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-04A 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-05An export (G) line must have a VAT rate of exactly 0.
BR-G-06A document-level allowance with VAT category "G" (export outside the EU) must have a VAT rate of 0.
BR-G-07A document-level charge with VAT category "G" (export outside the EU) must have a VAT rate of 0.
BR-G-08The 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-09The tax amount (BT-117) of the export (G) breakdown must be 0.
BR-G-10Lines use VAT category "G" (export outside the EU) but no exemption reason (BT-120) or reason code (BT-121) is given.
BR-IC-01Lines 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-02The 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-03A 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-04A 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-05An intra-community supply (K) line must have a VAT rate of exactly 0.
BR-IC-06A document-level allowance with VAT category "K" (intra-community supply) must have a VAT rate of 0.
BR-IC-07A document-level charge with VAT category "K" (intra-community supply) must have a VAT rate of 0.
BR-IC-08The 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-09The tax amount (BT-117) of the intra-community (K) breakdown must be 0.
BR-IC-10Lines use VAT category "K" (intra-community supply) but no exemption reason (BT-120) or reason code (BT-121) is given.
BR-IC-11An intra-community supply (VAT category K) must state the actual delivery date (BT-72) or an invoicing period (BG-14).
BR-IC-12An intra-community supply (VAT category K) must state the deliver-to country (BT-80).
BR-O-01Lines 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-02The 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-03A 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-04A 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-05A line "not subject to VAT" (O) must not carry a VAT rate.
BR-O-06A document-level allowance with VAT category "O" (not subject to VAT) must not carry a VAT rate (BT-96).
BR-O-07A document-level charge with VAT category "O" (not subject to VAT) must not carry a VAT rate (BT-103).
BR-O-08The 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-09The tax amount (BT-117) of the "not subject to VAT" (O) breakdown must be 0.
BR-O-10Lines use VAT category "O" (not subject to VAT) but no exemption reason (BT-120) or reason code (BT-121) is given.
BR-O-11VAT category "O" (not subject to VAT) cannot be mixed with other VAT categories on the same invoice (BR-O-11..14).
BR-O-12An invoice with a "not subject to VAT" (O) breakdown must not contain lines with any other VAT category (BR-O-11..14).
BR-O-13An invoice with a "not subject to VAT" (O) breakdown must not contain document-level allowances with any other VAT category.
BR-O-14An invoice with a "not subject to VAT" (O) breakdown must not contain document-level charges with any other VAT category.
BR-S-01Lines or document-level allowances/charges use VAT category "S" (standard rated) but the VAT breakdown (BG-23) has no standard-rated entry.
BR-S-02The invoice has standard-rated (S) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-S-03A 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-04A 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-05A standard-rated (S) line must have a VAT rate greater than zero.
BR-S-06A document-level allowance with VAT category "S" (standard rated) must have a VAT rate greater than zero.
BR-S-07A document-level charge with VAT category "S" (standard rated) must have a VAT rate greater than zero.
BR-S-08For 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-09The 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-10A standard-rated (S) VAT breakdown must not carry a VAT exemption reason (BT-120) or reason code (BT-121).
BR-Z-01Lines 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-02The invoice has zero-rated (Z) lines, which require the seller VAT identifier (BT-31) or tax registration number (BT-32).
BR-Z-03A 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-04A 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-05A zero-rated (Z) line must have a VAT rate of exactly 0.
BR-Z-06A document-level allowance with VAT category "Z" (zero rated) must have a VAT rate of exactly 0.
BR-Z-07A document-level charge with VAT category "Z" (zero rated) must have a VAT rate of exactly 0.
BR-Z-08The 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-09The tax amount (BT-117) of the zero-rated (Z) breakdown must be 0.
BR-Z-10A 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.

RuleWhat it checks
BR-01The specification identifier (BT-24) is missing — the document does not say which e-invoicing specification it claims to follow.
BR-02The invoice number (BT-1) is missing or empty.
BR-03The issue date (BT-2) is missing or empty.
BR-04The invoice type code (BT-3) is missing.
BR-05The invoice currency code (BT-5) is missing.
BR-06The seller name (BT-27) is missing or empty.
BR-07The buyer name (BT-44) is missing or empty.
BR-08The seller postal address (BG-5) is missing.
BR-09The seller address has no country code (BT-40).
BR-10The buyer postal address (BG-8) is missing.
BR-11The buyer address has no country code (BT-55).
BR-12The sum of invoice line net amounts (BT-106) is missing from the document totals.
BR-13The invoice total without VAT (BT-109) is missing from the document totals.
BR-14The invoice total with VAT (BT-112) is missing from the document totals.
BR-15The amount due for payment (BT-115) is missing from the document totals.
BR-16The invoice has no invoice lines (BG-25) — at least one is required.
BR-17A payee (BG-10) that differs from the seller must state the payee name (BT-59).
BR-18A seller tax representative (BG-11) must state the representative's name (BT-62).
BR-19A seller tax representative (BG-11) must carry a postal address (BG-12).
BR-20The tax representative's postal address must contain a country code (BT-69).
BR-21An invoice line has no line identifier (BT-126).
BR-22An invoice line has no invoiced quantity (BT-129).
BR-23An invoiced quantity has no unit of measure code (BT-130).
BR-24An invoice line has no line net amount (BT-131).
BR-25An invoice line has no item name (BT-153).
BR-26An invoice line has no item net price (BT-146).
BR-27The item net price (BT-146) must not be negative.
BR-28The item gross price (BT-148) must not be negative.
BR-29The invoicing period end date (BT-74) must not be earlier than its start date (BT-73).
BR-30An invoice line period end date (BT-135) must not be earlier than its start date (BT-134).
BR-31A document-level allowance (BG-20) has no allowance amount (BT-92).
BR-32A document-level allowance needs a VAT category (BT-95); it cannot be inherited because the lines use more than one VAT category/rate.
BR-33A document-level allowance must state why it is granted (BT-97/BT-98).
BR-36A document-level charge (BG-21) has no charge amount (BT-99).
BR-37A document-level charge needs a VAT category (BT-102); it cannot be inherited because the lines use more than one VAT category/rate.
BR-38A document-level charge must state what it is for (BT-104/BT-105).
BR-41An invoice line allowance (BG-27) has no allowance amount (BT-136).
BR-42A line-level allowance must state why it is granted (BT-139/BT-140).
BR-43An invoice line charge (BG-28) has no charge amount (BT-141).
BR-44A line-level charge must state what it is for (BT-144/BT-145).
BR-45A VAT breakdown (BG-23) has no taxable amount (BT-116).
BR-46A VAT breakdown (BG-23) has no tax amount (BT-117).
BR-47A VAT breakdown (BG-23) has no VAT category code (BT-118).
BR-48A VAT breakdown (BG-23) has no VAT category rate (BT-119); only category O (not subject to VAT) may omit it.
BR-49Payment instructions (BG-16) are present but the payment means type code (BT-81) is missing.
BR-50A credit-transfer payment account is present but its account identifier (IBAN, BT-84) is empty.
BR-51A card payment must never carry the full primary account number (BT-87) — at most the first 6 and last 4 digits are allowed.
BR-52An additional supporting document (BG-24) has no document reference (BT-122).
BR-53A VAT accounting currency (BT-6) is given, so the VAT total in that currency (BT-111) must be present as well.
BR-54An item attribute (BG-32) must carry both a name (BT-160) and a value (BT-161).
BR-55A preceding-invoice reference (BG-3) is present but the preceding invoice number (BT-25) is missing.
BR-56A seller tax representative (BG-11) must carry the representative's VAT identifier (BT-63).
BR-57A deliver-to address (BG-15) must contain a country code (BT-80).
BR-61The payment means is a credit transfer (code 30 or 58), so a payment account identifier (IBAN, BT-84) is required.
BR-62The seller electronic address (BT-34) has no scheme identifier.
BR-63The buyer electronic address (BT-49) has no scheme identifier.
BR-64An item standard identifier (BT-157) has no scheme identifier.
BR-65An item classification code (BT-158) has no scheme identifier.
BR-DEX-01An attached document (BT-125) uses a MIME type outside the list the Extension permits (the CIUS list plus application/xml).
BR-DEX-02The net amounts of a line's sub-invoice lines should sum to the parent line's net amount.
BR-DEX-03A sub-invoice line must contain exactly one sub-line VAT information group.
BR-DEX-04A scheme identifier in the Extension must come from the ISO 6523 ICD list.
BR-DEX-05A scheme identifier in the Extension must come from the ISO 6523 ICD list.
BR-DEX-06A scheme identifier in the Extension must come from the ISO 6523 ICD list.
BR-DEX-07An endpoint identifier scheme in the Extension must come from the EAS code list (extended by the DiGA codes XR01/XR02/XR03).
BR-DEX-08A delivery location identifier scheme in the Extension must come from the ISO 6523 ICD list.
BR-DEX-09In 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-10A third-party payment group must state the payment type.
BR-DEX-11A third-party payment group must state the payment amount.
BR-DEX-12A third-party payment group must state the payment description.
BR-DEX-13A third-party payment amount may carry at most 2 decimal places.
BR-DEX-14A third-party payment amount must use the invoice currency (BT-5) as its currency.
BR-DEX-15This CII document appears to use sub-invoice lines, which XRechnung does not support in this syntax.
BR-TMP-2An 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-3In 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-01In 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.

RuleWhat it checks
PEPPOL-EN16931-R001The business process (BT-23) must be provided.
PEPPOL-EN16931-R005The VAT accounting currency (BT-6) must differ from the invoice currency (BT-5) when provided.
PEPPOL-EN16931-R008The document must not contain empty elements.
PEPPOL-EN16931-R010The buyer electronic address (BT-49) must be provided.
PEPPOL-EN16931-R020The seller electronic address (BT-34) must be provided.
PEPPOL-EN16931-R040An allowance/charge amount must equal base amount × percentage / 100 when both base amount and percentage are present.
PEPPOL-EN16931-R041An allowance/charge percentage is present, so its base amount must be provided as well.
PEPPOL-EN16931-R042An allowance/charge base amount is present, so its percentage must be provided as well.
PEPPOL-EN16931-R043An allowance/charge indicator must be exactly 'true' or 'false'.
PEPPOL-EN16931-R043-1A document-level allowance/charge indicator must be exactly 'true' or 'false'.
PEPPOL-EN16931-R043-2A line-level allowance/charge indicator must be exactly 'true' or 'false'.
PEPPOL-EN16931-R044A charge on price level is not allowed — only allowances (indicator 'false').
PEPPOL-EN16931-R046The item net price must equal the gross price minus the price allowance when a gross price is provided.
PEPPOL-EN16931-R053Exactly one tax total with tax subtotals must be provided.
PEPPOL-EN16931-R054When a tax accounting currency is used, exactly one additional tax total without subtotals must carry it.
PEPPOL-EN16931-R055The invoice total VAT amount and its accounting-currency counterpart must have the same sign.
PEPPOL-EN16931-R061A direct-debit payment (means code 49/59) must carry a mandate reference (BT-89).
PEPPOL-EN16931-R101A line document reference may only be used for an invoice line object identifier.
PEPPOL-EN16931-R110An invoice line period start date must lie within the document invoicing period.
PEPPOL-EN16931-R111An invoice line period end date must lie within the document invoicing period.
PEPPOL-EN16931-R120An invoice line net amount must equal quantity × (price / base quantity) plus line charges minus line allowances.
PEPPOL-EN16931-R121An item price base quantity must be a positive number above zero.
PEPPOL-EN16931-R130The 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.

RuleWhat it checks
UBL-CR-001The 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-002cbc: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-006cbc: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-561An 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-646An 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-01An 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-06An embedded attachment (cbc:EmbeddedDocumentBinaryObject) is missing its mimeCode attribute — the receiver cannot tell what file type the binary data is.
UBL-DT-07An embedded attachment (cbc:EmbeddedDocumentBinaryObject) is missing its filename attribute — EN 16931 requires a file name for every embedded document (BT-125).
UBL-SR-01The contract reference (BT-12) appears more than once — only one cac:ContractDocumentReference with one cbc:ID is allowed.
UBL-SR-02The receiving advice reference (BT-15) appears more than once — only one cac:ReceiptDocumentReference with one cbc:ID is allowed.
UBL-SR-03The despatch advice reference (BT-16) appears more than once — only one cac:DespatchDocumentReference with one cbc:ID is allowed.
UBL-SR-04The invoiced-object identifier (BT-18) appears more than once — only one cac:AdditionalDocumentReference with DocumentTypeCode 130 is allowed.
UBL-SR-05Payment terms (BT-20) appear more than once — across all cac:PaymentTerms elements only a single cbc:Note is allowed.
UBL-SR-06A cac:BillingReference contains more than one cac:InvoiceDocumentReference — each preceding-invoice reference (BG-3) holds exactly one.
UBL-SR-07A cac:BillingReference is present but the preceding invoice number (BT-25, InvoiceDocumentReference/cbc:ID) is missing.
UBL-SR-08The invoicing period (BG-14) appears more than once — only one document-level cac:InvoicePeriod is allowed.
UBL-SR-09The seller name (BT-27) appears more than once — the supplier party may carry only one PartyLegalEntity/RegistrationName.
UBL-SR-10The seller trading name (BT-28) appears more than once — the supplier party may carry only one PartyName/Name.
UBL-SR-11The seller legal registration identifier (BT-30) appears more than once — only one PartyLegalEntity/CompanyID is allowed.
UBL-SR-12The seller VAT identifier (BT-31) appears more than once — only one PartyTaxScheme with TaxScheme/ID 'VAT' may carry a CompanyID.
UBL-SR-13The seller tax registration identifier (BT-32) appears more than once — only one non-VAT PartyTaxScheme may carry a CompanyID.
UBL-SR-14The seller's additional legal information (BT-33) appears more than once — only one PartyLegalEntity/CompanyLegalForm is allowed.
UBL-SR-15The buyer name (BT-44) appears more than once — the customer party may carry only one PartyLegalEntity/RegistrationName.
UBL-SR-16The buyer identifier (BT-46) appears more than once — the customer party may carry only one PartyIdentification/ID.
UBL-SR-17The buyer legal registration identifier (BT-47) appears more than once — only one PartyLegalEntity/CompanyID is allowed.
UBL-SR-18The buyer VAT identifier (BT-48) appears more than once — only one PartyTaxScheme with TaxScheme/ID 'VAT' may carry a CompanyID.
UBL-SR-19The 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-20The 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-21The 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-22The tax representative name (BT-62) appears more than once — cac:TaxRepresentativeParty may carry only one PartyName/Name.
UBL-SR-23The tax representative VAT identifier (BT-63) appears more than once — only one PartyTaxScheme/CompanyID is allowed in the tax representative party.
UBL-SR-24Delivery information (BG-13) appears more than once — only one cac:Delivery element is allowed.
UBL-SR-25The deliver-to party name (BT-70) appears more than once — cac:Delivery may carry only one DeliveryParty/PartyName/Name.
UBL-SR-26The payment reference (BT-83) appears more than once in a cac:PaymentMeans — only one cbc:PaymentID per payment means is allowed.
UBL-SR-27A cac:PaymentMeans carries more than one cbc:PaymentMeansCode (BT-81) — each payment means states exactly one code.
UBL-SR-28The direct-debit mandate reference (BT-89) appears more than once — only one PaymentMandate/cbc:ID per cac:PaymentMeans is allowed.
UBL-SR-29The SEPA creditor identifier (BT-90) appears more than once — only one PartyIdentification/ID with schemeID 'SEPA' is allowed in the whole document.
UBL-SR-30A document-level allowance carries more than one reason text (BT-97) — only one cbc:AllowanceChargeReason per allowance is allowed.
UBL-SR-31A document-level charge carries more than one reason text (BT-104) — only one cbc:AllowanceChargeReason per charge is allowed.
UBL-SR-32A VAT breakdown carries more than one exemption reason text (BT-120) — only one cbc:TaxExemptionReason per cac:TaxSubtotal is allowed.
UBL-SR-33A supporting document (BG-24) carries more than one description (BT-123) — only one cbc:DocumentDescription per cac:AdditionalDocumentReference is allowed.
UBL-SR-34An invoice line carries more than one note (BT-127) — only one cbc:Note per cac:InvoiceLine is allowed.
UBL-SR-35An invoice line references more than one purchase order line (BT-132) — only one OrderLineReference/LineID per line is allowed.
UBL-SR-36An invoice line carries more than one invoicing period (BG-26) — only one cac:InvoicePeriod per line is allowed.
UBL-SR-37An 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-39The project reference (BT-11) appears more than once — only one cac:ProjectReference with one cbc:ID is allowed.
UBL-SR-40The buyer trading name (BT-45) appears more than once — the customer party may carry only one PartyName/Name.
UBL-SR-42The 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-43A 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-44The 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-45The payment due date inside cac:PaymentMeans appears more than once — cbc:PaymentDueDate is allowed at most once in the document.
UBL-SR-46The payment means text (BT-82, the name attribute on cbc:PaymentMeansCode) appears more than once in the document.
UBL-SR-47Several cac:PaymentMeans elements carry different cbc:PaymentMeansCode values — when the code (BT-81) is repeated it must be identical everywhere.
UBL-SR-48An invoice line does not have exactly one cac:ClassifiedTaxCategory — every line states its VAT category (BT-151) exactly once.
UBL-SR-49The tax point date code (BT-8) appears more than once — only one cac:InvoicePeriod/cbc:DescriptionCode is allowed.
UBL-SR-50An item carries more than one description (BT-154) — only one cbc:Description per cac:Item is allowed.
UBL-SR-51An address carries more than one cac:AddressLine — only one additional address line (line 3) is allowed per postal address.
UBL-SR-52An invoice line carries more than one cac:DocumentReference — the line-level invoiced-object identifier (BT-128) is allowed at most once.
UBL-SR-53A 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-54More than one payment card account (BG-18) is present — cac:PaymentMeans/cac:CardAccount is allowed at most once.
UBL-SR-55More 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.

RuleWhat it checks
cvc-attribute.3An 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.3Text 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.aAn 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.bAn 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.dAn element appears after the content model is already complete — the schema allows no further children at that position.
cvc-complex-type.3.2.2An 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.4A 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.1A 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.aThe 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-validA value is not one of the fixed set of values the schema enumerates for this element or attribute.
cvc-length-validA value violates an exact-length restriction of its datatype — it must have precisely the number of characters the schema fixes.
cvc-maxLength-validA value is longer than the maximum length its datatype allows.
cvc-minLength-validA value is shorter than the minimum length its datatype requires — often an empty element where content is mandatory.
cvc-pattern-validA value does not match the regular-expression pattern its datatype enforces (the validator message shows the pattern).
cvc-type.3.1.3An 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.

RuleWhat it checks
NB-AC-MISMATCHAn allowance/charge amount does not equal base_amount × percent / 100 — the KoSIT validator rejects this (PEPPOL-EN16931-R040).
NB-EADDR-BUYERBuyer electronic address (BT-49) is missing — XRechnung requires one for both parties.
NB-EADDR-SELLERSeller electronic address (BT-34) is missing — XRechnung requires one for both parties.
NB-IBAN-CHECKSUMThe IBAN fails its checksum — this is almost certainly a typo.
NB-LEITWEG-FORMATbuyer_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-UNSUPPORTEDCard-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-REJECTThe official KoSIT validator rejected this document without a mappable rule finding — typically an XML schema (XSD) violation.
NB-VAT-ID-FORMATA 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-RATEA 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.

Spotted something?

Bug, missing feature, wrong validation result — tell us. The page you're on is attached automatically; email optional.