Skip to main content

VAT Categories

The VAT tab configures the VAT classification carried in every line and in the document-level VAT subtotals — BT-118 (line VAT category) / BT-151 (item VAT category) and BT-121 (VAT exemption reason code). It exposes a default VAT category, a zero-rate code, a category mapping and an exemption mapping.

The override mechanism is described in the Overview. All four sections of this tab are governed by a single override toggle — toggling it pulls the entire group into the document file, and removing it deletes the entire override block.


Default VAT category

FieldDescription
Default categoryUBL VAT category code emitted when the source code has no mapping row. Free-form text — typically a single letter (S standard, Z zero-rated, E exempt, K intra-community, G export, AE reverse charge, O not subject to VAT).
Zero rateUBL VAT category code used when the line's VAT amount is zero. Useful to distinguish a genuinely zero-rated line (Z) from an exempt one (E) when the source XML only carries the percentage.

VAT category code mapping

A two-column editor maps the source's VAT category codes to the UBL VAT codes defined by the vat-categories reference list.

ColumnDescription
Source codeFree-form text — the code that appears in the upstream XML (e.g. a JDE category, a SAP tax code, a custom alphanumeric value).
VAT category codeUBL value picked from the vat-categories reference list (S, Z, E, K, G, AE, O).

How the category mapping resolves

source XML VAT code

├─ has a mapping row? ────► UBL category from the row

└─ no mapping row? ────► Default category

The zero-rate setting takes precedence when the line's computed VAT amount is zero — it overrides the mapping for that case.


VATEX exemption-code mapping

The second mapping table covers BT-121 — the VAT exemption reason code (VATEX-EU-79-C, VATEX-EU-IC, VATEX-FR-FRANCHISE, etc.). Each row associates a UBL category (the source column here is the VAT category, not a free-form code) with the VATEX-* code that explains the exemption in the UBL output.

ColumnDescription
VAT category codeUBL category that requires a VATEX code (typically E, K, G, AE, OS and Z are filtered out because standard and zero-rated categories never carry an exemption reason).
VATEX codeThe exemption code from the vatex-codes reference list.

When NomaUBL emits a category needing an exemption reason, it looks up the corresponding VATEX-* code from this mapping. Without a row for a non-standard category, the receiving Plateforme Agréée typically rejects the document with a Schematron rule failure.


Tips & best practices

  • Cover every non-standard category at least once. S (standard) and Z (zero rate) are exempt from the VATEX requirement. Every other category (E, K, G, AE, O) must have a VATEX row, otherwise BR-FR / BR-CO Schematron rules reject the document.
  • AE is the right code for reverse-charge invoicing. Pair it with VATEX-EU-AE in the VATEX mapping. The line's tax amount and VAT rate must be zero; the buyer accounts for the VAT.
  • K (intra-community) is for cross-border B2B inside the EU. Pair it with VATEX-EU-IC. The seller VAT identifier (BT-31) and buyer VAT identifier (BT-48) must both be present in the UBL output.
  • VATEX-FR-FRANCHISE is for the French micro-entrepreneur exemption (article 293B CGI). Use it on the E (exempt) category for invoices below the franchise threshold; the standard mention "TVA non applicable, art. 293 B du CGI" should also appear in French Legal Notes.
  • Use the zero-rate setting only when the source cannot distinguish. When the upstream XML reliably emits the right category, leave the zero-rate field blank — relying on it is a fallback, not a primary mechanism.
  • Add codes to the reference lists, not here. Missing target codes go into the vat-categories or vatex-codes reference lists; the dropdowns pick them up on next reload.