SK EN

E-invoice Validation Error Codes

Complete reference of 41 validation errors from EN 16931, PEPPOL BIS Billing 3.0, and UBL 2.1. Each code includes cause and fix.

41Total codes
31Fatal
10Warnings
5Groups

EN 16931 — Calculation Rules (BR-CO)

BR-CO-10 VAT amount mismatch fatal
The sum of all TaxAmount values does not equal the calculated sum of (TaxableAmount × TaxRate). Usually a rounding error.
Fix: Recalculate TaxAmount = round(TaxableAmount × rate / 100, 2). Check every tax line.
BR-CO-13 Invoice total line net amount mismatch fatal
LegalMonetaryTotal/LineExtensionAmount must equal the sum of all InvoiceLine/LineExtensionAmount values.
Fix: Sum all line amounts and place the total in LegalMonetaryTotal/LineExtensionAmount.
BR-CO-15 Invoice total amount with VAT mismatch fatal
TaxInclusiveAmount must equal TaxExclusiveAmount + TaxAmount.
Fix: TaxInclusiveAmount = LineExtensionAmount − AllowanceAmount + ChargeAmount + TaxAmount.
BR-CO-16 Amount due mismatch fatal
PayableAmount must equal TaxInclusiveAmount − PrepaidAmount + RoundingAmount.
Fix: Recalculate PayableAmount = TaxInclusiveAmount − PrepaidAmount.
BR-CO-25 Allowance amount mismatch fatal
The allowance BaseAmount × Percent must equal the specified Amount.
Fix: Set Amount = round(BaseAmount × Percent / 100, 2).
BR-CO-3 Line net amount mismatch fatal
InvoiceLine/LineExtensionAmount must equal Price/PriceAmount × InvoicedQuantity.
Fix: LineExtensionAmount = PriceAmount × Quantity − LineAllowanceAmount.
BR-CO-18 Tax exclusive amount mismatch fatal
TaxExclusiveAmount must equal LineExtensionAmount − AllowanceAmount + ChargeAmount.
Fix: Sum all taxable amounts including charges and discounts.

EN 16931 — Structural Rules (BR)

BR-1 Invoice number missing fatal
Element cbc:ID (BT-1) is missing. Every invoice must have a unique identification number.
Fix: Add <cbc:ID>INV-2025-001</cbc:ID> inside the <Invoice> root element.
BR-2 Issue date missing fatal
Element cbc:IssueDate (BT-2) is missing. Format must be YYYY-MM-DD.
Fix: <cbc:IssueDate>2025-06-18</cbc:IssueDate>
BR-3 Invoice type code missing fatal
Element cbc:InvoiceTypeCode (BT-3) is missing. Use 380 for standard invoice, 381 for credit note.
Fix: <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
BR-4 Invoice currency missing fatal
Element cbc:DocumentCurrencyCode (BT-5) is missing. Use ISO 4217 three-letter currency code.
Fix: <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
BR-31 Supplier VAT number missing fatal
AccountingSupplierParty must have at least one identifier — either VAT number (BT-31) or tax registration number (BT-32).
Fix: Add <cbc:CompanyID schemeID="VAT">SK2020123456</cbc:CompanyID> in PartyTaxScheme.
BR-5 Supplier name missing fatal
AccountingSupplierParty/Party/PartyName/Name (BT-27) is required.
Fix: Add <cac:PartyName><cbc:Name>Company s.r.o.</cbc:Name></cac:PartyName>
BR-6 Buyer name missing fatal
AccountingCustomerParty/Party/PartyName/Name (BT-44) is required.
Fix: Add PartyName for the buyer, same structure as supplier.
BR-7 Payee bank account missing when payable fatal
If PaymentMeans/PaymentMeansCode is 30 (credit transfer), PayeeFinancialAccount/ID (IBAN) must be present.
Fix: Add <cbc:ID>SK8911000000002612345678</cbc:ID> in PayeeFinancialAccount.
BR-8 PayableAmount missing fatal
LegalMonetaryTotal/PayableAmount (BT-115) is required and must be ≥ 0.
Fix: <cbc:PayableAmount currencyID="EUR">119.00</cbc:PayableAmount>
BR-9 TaxInclusiveAmount missing fatal
LegalMonetaryTotal/TaxInclusiveAmount (BT-112) is required.
Fix: Set TaxInclusiveAmount = TaxExclusiveAmount + total VAT.
BR-S-1 Standard rate VAT breakdown missing fatal
When using TaxCategoryCode S (standard VAT), the TaxSubtotal breakdown must be present.
Fix: Add a TaxTotal/TaxSubtotal block with TaxCategory code S and the applicable rate.
BR-AF-1 Allowance/charge reason missing warning
AllowanceChargeReason (BT-97/BT-104) should be present when a discount or surcharge is applied.
Fix: Add <cbc:AllowanceChargeReason>Early payment discount</cbc:AllowanceChargeReason>
BR-DEC-1 Decimal precision too high warning
Monetary amounts should be rounded to 2 decimal places. Unit price (BT-146) may use up to 4 decimals.
Fix: Round all currency amounts to 2 decimal places; unit prices to max 4.

EN 16931 — Additional Rules

BR-AE-1 Reverse charge — buyer VAT number required fatal
When TaxCategoryCode is AE (reverse charge), the buyer must provide a VAT number (BT-48).
Fix: Add buyer's VAT number in AccountingCustomerParty/PartyTaxScheme.
BR-IC-1 Intra-community — buyer VAT number required fatal
When TaxCategoryCode is K (intra-community), the buyer must provide a VAT number.
Fix: Add the buyer's VAT registration number from their EU member state.
BR-Z-1 Zero-rated — no VAT exemption reason warning
When TaxCategoryCode is Z (zero-rated), a TaxExemptionReason or code should be included.
Fix: Add <cbc:TaxExemptionReasonCode>VATEX-EU-AE</cbc:TaxExemptionReasonCode>
BR-E-1 Exempt — no VAT exemption reason warning
When TaxCategoryCode is E (exempt), a TaxExemptionReason should be included.
Fix: Add <cbc:TaxExemptionReason>Exempt under §37a DPH</cbc:TaxExemptionReason>
BR-CO-5 TaxExclusiveAmount calculation warning warning
TaxExclusiveAmount rounded value deviates by more than 0.01 from the sum of TaxableAmounts.
Fix: Ensure consistent rounding — prefer round-half-up on each line before summing.
BR-CO-9 PaymentTerms note missing warning
When a due date is specified (BT-9), PaymentTerms/Note (BT-20) is recommended for clarity.
Fix: Add <cbc:Note>Due within 30 days</cbc:Note> in PaymentTerms.
BR-10 Buyer reference missing fatal
BT-10 (BuyerReference) or BT-13 (PurchaseOrderReference) is required by many national profiles.
Fix: Add <cbc:BuyerReference>PO-2025-001</cbc:BuyerReference> from the buyer's purchase order.
BR-12 Supplier address country missing fatal
PostalAddress/Country/IdentificationCode (BT-40) is mandatory for the supplier.
Fix: <cac:Country><cbc:IdentificationCode>SK</cbc:IdentificationCode></cac:Country>

PEPPOL BIS Billing 3.0 — R Rules

R003 Wrong CustomizationID fatal
CustomizationID or ProfileID has an incorrect value. This is the most common PEPPOL error.
Fix: Use exactly:
urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
R004 SpecificationIdentifier in profile must match fatal
The ProfileID value must match the declared PEPPOL billing profile identifier exactly.
Fix: ProfileID = urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
R005 Endpoint ID scheme wrong fatal
The EndpointID schemeID attribute must use a value from the PEPPOL participant identifier scheme list (e.g. 0196 for Slovak IČO).
Fix: <cbc:EndpointID schemeID="0196">12345678</cbc:EndpointID>
R006 PartyIdentification scheme wrong fatal
PartyIdentification/ID schemeID must use a valid ICD scheme code. For Slovakia use 0196.
Fix: <cbc:ID schemeID="0196">12345678</cbc:ID> in PartyIdentification.
R008 CreditNote must reference original invoice fatal
A CreditNote document (InvoiceTypeCode 381) must include a BillingReference pointing to the original invoice.
Fix: Add <cac:BillingReference><cac:InvoiceDocumentReference><cbc:ID>INV-001</cbc:ID></cac:InvoiceDocumentReference></cac:BillingReference>
R010 Buyer endpoint ID required fatal
AccountingCustomerParty must contain an EndpointID for PEPPOL network delivery.
Fix: Add <cbc:EndpointID schemeID="0196">87654321</cbc:EndpointID> for the buyer.
R053 Tax currency account mismatch fatal
When TaxCurrencyCode differs from DocumentCurrencyCode, a TaxTotal in each currency must be present.
Fix: Add a second TaxTotal block with TaxAmount in the tax currency.
R055 Allowance/charge tax category mismatch fatal
Every AllowanceCharge at header level must include a TaxCategory consistent with the rest of the invoice.
Fix: Add <cac:TaxCategory><cbc:ID>S</cbc:ID><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
R064 Tax scheme must be VAT fatal
TaxScheme/ID must be the literal value VAT in all tax-related elements.
Fix: <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
R066 Payment terms due date in past warning
PaymentDueDate (BT-9) is before the invoice IssueDate.
Fix: Check payment due date — it must be equal to or later than the issue date.
R080 Charge indicator must be boolean fatal
AllowanceCharge/ChargeIndicator must be exactly true (charge) or false (discount).
Fix: <cbc:ChargeIndicator>false</cbc:ChargeIndicator> for a discount.

PEPPOL BIS — Additional R Rules

R100 Item classification scheme not allowed fatal
The CommodityClassification/ItemClassificationCode schemeID used is not in the PEPPOL allowed list.
Fix: Use one of: STI, CV, 0160, 7161, TST, or CPV.
R050 Seller tax representative without VAT number warning
TaxRepresentativeParty must include a CompanyID with scheme VAT if present.
Fix: Add VAT number to TaxRepresentativeParty/PartyTaxScheme/CompanyID.

UBL 2.1 — Structural / Namespace Errors

UBL-SR-01 Wrong root element or namespace fatal
The file root element is not <Invoice> or <CreditNote>, or the namespace URIs are incorrect.
Fix: Declare namespaces: xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
UBL-SR-02 Invalid XML encoding fatal
The file is not valid UTF-8 or the XML declaration is missing/incorrect. Often caused by exporting with Windows-1250 encoding.
Fix: Save the file as UTF-8 without BOM. Add <?xml version="1.0" encoding="UTF-8"?> at the top.
UBL-SR-03 UBL version incorrect fatal
UBLVersionID must be exactly 2.1. UBL 2.0 or 2.3 are not accepted by PEPPOL.
Fix: <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
UBL-CR-001 Forbidden element used fatal
An element present in the UBL 2.1 schema is forbidden by EN 16931 or PEPPOL BIS (e.g. cbc:Note at line level).
Fix: Remove the element listed in the error. Check which BT elements are allowed at which level.
UBL-CR-295 TaxTotal must appear exactly once fatal
When only one currency is used, exactly one TaxTotal block is required. Multiple or zero TaxTotal blocks are not allowed.
Fix: Ensure exactly one <cac:TaxTotal> block in the invoice root. Merge multiple VAT lines into TaxSubtotal rows inside that block.
UBL-DT-01 Date format wrong fatal
Date values must follow ISO 8601: YYYY-MM-DD. Common errors: 18.06.2025 or 2025/06/18.
Fix: Use format 2025-06-18 for all date fields.
UBL-DT-19 Unit code not from allowed list warning
InvoiceLine/InvoicedQuantity unitCode must use UN/CEFACT Recommendation 20 codes.
Fix: Common codes: C62 (pieces), HUR (hours), DAY (days), MTK (m²), KGM (kg), LTR (litres).
UBL-DT-26 currencyID attribute missing on amount fatal
All monetary Amount elements require a currencyID attribute matching DocumentCurrencyCode.
Fix: <cbc:PayableAmount currencyID="EUR">119.00</cbc:PayableAmount>
UBL-CR-672 Country sub-entity not recognized warning
CountrySubentityCode (BT-39) should use ISO 3166-2 codes (e.g. SK-BL for Bratislava region).
Fix: Use the correct ISO 3166-2 code or omit the element if not required.

Quick reference: most common errors

  1. BR-CO-10 — VAT amount doesn't match calculated value
  2. R003 — wrong CustomizationID / ProfileID
  3. BR-31 — supplier VAT number missing
  4. UBL-SR-01 — wrong namespace or root element
  5. R008 — credit note missing BillingReference

Related Articles

What is PEPPOL?Network, 4-corner model, registration PEPPOL ID for SlovakiaFormat 0196:SK+IČO explained E-invoicing mandate 2027Who must comply and when Free PEPPOL ValidatorValidate your XML invoice online