UBLExplain

Check VAT in UBL invoices

Extracts VAT categories, percentages and amounts from cac:TaxTotal and compares declared VAT with calculated VAT.

Paste or load UBL XML

Common VAT errors in UBL

  • Wrong VAT percentage on a line (e.g. 19% instead of 21%).
  • VAT amount per category does not match TaxableAmount × Percent / 100.
  • Missing TaxCategory ID (e.g. S, AE, K, Z, E, O, G).
  • Mixed VAT rates without separate TaxSubtotal blocks.
  • Reverse charge (AE) used without the required text/note.
  • Exempt VAT (E) used without an exemption reason.

Инструменти

Frequently asked questions

Why does the calculated VAT differ from the declared VAT?

Most often this is rounding. UBL allows VAT to be rounded per category, and small differences (≤ 0.02) are usually acceptable.

What does category AE mean?

AE is the reverse-charge category code. With AE the supplier does not charge VAT; the buyer accounts for it. Other zero-VAT codes include K (intra-community), Z (zero rated), E (exempt), G (export), O (outside scope).

What this tool does

The UBL VAT checker walks through every TaxSubtotal and compares the declared TaxableAmount × Percent against the declared TaxAmount per VAT category.

Common UBL and Peppol problems it detects

  • Mismatch between declared and calculated VAT per category (S, Z, E, AE, K, G, O).
  • Missing TaxCategory/ID, Percent or TaxScheme.
  • Reverse-charge (AE) lines that still carry a non-zero VAT percentage.
  • Zero-rated lines that are missing the required exemption reason.

Why this matters

VAT errors are the single biggest reason invoices are rejected by tax authorities and Peppol access points. They also create costly reconciliation issues at month-end.

Example: reverse charge with VAT

An intra-EU B2B line uses TaxCategory/ID=AE (reverse charge) but Percent=21 and a non-zero TaxAmount. AE lines must declare Percent=0 and the appropriate TaxExemptionReason or TaxExemptionReasonCode.

How to fix the issue

  1. For category S (standard), make sure TaxAmount = round(TaxableAmount × Percent / 100).
  2. For category Z (zero-rated), E (exempt), AE (reverse charge), K (intra-EU) and G (export), set Percent=0 and provide a TaxExemptionReason or TaxExemptionReasonCode.
  3. Group lines by category and verify the per-category TaxSubtotal totals.
  4. Re-run the checker to confirm declared and calculated VAT match.

Frequently asked questions

Which VAT categories are supported?

All EN 16931 UNCL5305 categories: S, Z, E, AE, K, G, O and L/M for special regional schemes.

Does it cover reverse charge invoices?

Yes. The checker validates AE lines and flags them when they carry a non-zero VAT percentage or amount.