# VAT category codes

Codes identifying VAT category / tax treatment for lines and totals.

## How these codes are used on invoices

VAT category codes is a standardized UNCL 5305 code list used in structured invoices. Instead of free-text values, buyers, suppliers, ERP systems, and validators expect normalized codes such as S (Standard rate), Z (Zero rated), E (Exempt from tax). This is a practical subset used in EN 16931 / XRechnung workflows.

> **UNCL 5305**: This is a practical subset used in EN 16931 / XRechnung workflows.

## How to use this code list in production

Use VAT category codes when you need stable values across ERP source data, generated XML, and validation checks. Lock the allowed values before go-live, map legacy values before export, and make sure finance teams know which business cases require manual review.

## VAT category codes

| Code | Meaning | Notes |
| --- | --- | --- |
| S | Standard rate | Used for standard VAT rate lines (e.g., 19% in Germany). |
| Z | Zero rated | — |
| E | Exempt from tax | Typically requires an exemption reason/legal reference depending on the profile. |
| AE | VAT reverse charge | — |
| K | Intra-community supply (VAT exempt) | — |
| G | Free export item | — |
| O | Services outside scope of tax | — |
| L | Canary Islands indirect tax | — |
| M | Ceuta and Melilla tax | — |

## Practical tips before you send an e-invoice

- Use the exact code from UNCL 5305 and keep the spelling and casing expected by the standard.
- Make sure the chosen VAT category codes value matches the business context and any related fields on the invoice.
- Validate the final XRechnung, ZUGFeRD/Factur-X, UBL, or CII file before sending it to the recipient.

## Common code-list mistakes

- Letting free-text values pass through the ERP export instead of mapping them to the official code list.
- Using a technically valid code without checking whether the recipient profile or country rule actually allows it.
- Fixing the XML output only, while leaving the upstream ERP source value inconsistent for the next invoice.

## Frequently asked questions

These are common end-user questions when choosing the right VAT category codes value for an invoice or ERP export.

### What is VAT category codes on an invoice?
VAT category codes is the standardized UNCL 5305 code list that tells the receiving system which business value was intended. Using the correct code improves interoperability across XRechnung, ZUGFeRD/Factur-X, UBL, CII, and PEPPOL workflows.

### Which VAT category codes codes are used most often?
Common examples on this page include S (Standard rate), Z (Zero rated), E (Exempt from tax). The right choice depends on your transaction, tax treatment, recipient requirements, and the invoice profile you are sending.

### Where do I enter a VAT category codes code in structured e-invoices?
Enter the code in the structured invoice field that matches its meaning, for example the currency field, VAT category field, payment means field, unit field, or invoice type field. The exact XML path depends on whether you send XRechnung, ZUGFeRD/Factur-X, UBL, or CII.

### How do I avoid validation errors with VAT category codes codes?
Use only values allowed by the relevant implementation guide, keep the code exactly as defined in UNCL 5305, and provide all related data required by that choice. Many validation errors happen when a code is correct in isolation but inconsistent with the rest of the invoice.

### Can I use codes outside this page?
Often yes, but recipients and national profiles frequently accept only a practical subset of the full UNCL 5305 list. This page focuses on common invoice values, so confirm buyer-specific or country-specific rules before sending production documents.

## Download

Use this code list in your systems or validation rules.

- [Download JSON](/resources/code-lists/vat-category-codes/data?format=json)
- [Download CSV](/resources/code-lists/vat-category-codes/data?format=csv)

## Official resources

- [UN/CEFACT code list UNCL 5305](https://unece.org/trade/uncefact)
- [Free XRechnung Validator](/xrechnung-validator)
- [Developer API](/developer-api)
