Peppol Tax Codes List: UNCL5305, VATEX, and Tax Schemes

The Peppol tax codes list is the set of tax category identifiers a Peppol BIS Billing 3.0 invoice is allowed to carry, drawn from a defined subset of the UN/CEFACT UNCL5305 code list. There are roughly a dozen of them, each one a single or two-letter code that tells the receiving system exactly how the line should be taxed: standard rate, zero rate, exempt, reverse charge, intra-community supply, export, outside scope, or one of a few territory-specific codes. Get the code wrong and the invoice fails automated validation before it ever reaches the buyer.

Every code below sits inside the invoice XML alongside a tax rate and a tax scheme identifier (usually VAT or GST). Some codes also require a VATEX reason code explaining the legal basis for the treatment. All three pieces have to line up.

The UNCL5305 Category Codes Peppol Accepts

These are the codes currently available on a Peppol BIS Billing 3.0 invoice:

  • S — Standard rate. The default for taxable goods and services. Paired with the applicable VAT or GST percentage for the jurisdiction.
  • Z — Zero-rated goods. Tax rate is 0%, but the seller can still reclaim input tax credits. Common for certain food, children’s clothing, or exported services depending on the country.
  • E — Exempt from tax. No tax is charged and no input credits can be recovered. Typical for financial services, insurance, education, and healthcare in many jurisdictions.
  • AE — VAT reverse charge. The buyer, not the seller, accounts for the tax. Used in cross-border B2B transactions where the supplier is in a different country from the customer.
  • K — Intra-community supply. VAT-exempt movement of goods and services between businesses in different European Economic Area member states.
  • G — Free export item. Goods exported outside a VAT jurisdiction where no tax is charged.
  • O — Outside scope of tax. For services that fall entirely outside the relevant tax regime, so no tax applies at all.
  • L — Canary Islands general indirect tax (IGIC). A territory-specific indirect tax on goods and services supplied in the Canary Islands.
  • M — Ceuta and Melilla tax (IPSI). An indirect municipal tax on production, services, and imports in the Spanish territories of Ceuta and Melilla.
  • B — Transferred VAT (Italy only). A special code where VAT is paid directly to the tax authority rather than to the invoice issuer. Permitted only for Italian transactions under an EU deviation.

Codes L, M, and B exist for narrow geographic or regulatory situations. Most businesses outside Spain and Italy will never use them, but if you trade into those territories, your invoicing software has to support them or the invoice will fail validation.1OpenPEPPOL. Duty or Tax or Fee Category Code

Zero-Rated (Z) Versus Exempt (E)

This pairing trips people up more than any other. Both result in a 0% tax line on the invoice. The difference is what the seller can do with input tax. Zero-rated transactions preserve the seller’s right to claim input VAT. Exempt transactions do not. Choosing E when Z is correct means the supplier loses money on input credits. Choosing Z when E is correct creates a false tax position that auditors will flag.

VATEX Reason Codes

When you use category codes E, AE, K, G, or O, the invoice usually needs a VATEX reason code explaining why the transaction qualifies for that treatment. Each VATEX code maps to a specific legal basis, and certain codes are restricted to particular category codes.

VATEX-EU-AE can only accompany category code AE (reverse charge). VATEX-EU-IC pairs exclusively with code K (intra-community supply). Category code E has the widest range of associated VATEX codes because exemptions arise from many different legal provisions, including specific articles of the EU VAT Directive (Council Directive 2006/112/EC) and margin-scheme indicators for second-hand goods, works of art, and antiques.2OpenPEPPOL. VATEX Code List

Some countries publish their own VATEX codes. France, for example, has VATEX-FR-FRANCHISE for domestic VAT franchise situations. If you invoice into a jurisdiction with country-specific exemption codes, your software has to include those codes in its reference data or the invoice will be rejected during validation. The official BIS Billing 3.0 documentation publishes the complete VATEX list alongside the UNCL5305 category codes.3OpenPEPPOL. Peppol BIS Billing 3.0

Tax Scheme Identifiers: VAT or GST

Alongside the category code, every tax entry in a Peppol invoice includes a tax scheme identifier that tells the receiving system which type of tax applies. The most common identifier is “VAT,” used across European transactions. Jurisdictions that operate a goods and services tax use “GST” instead. That is the norm in Australia, New Zealand, and Singapore.

The scheme identifier and the category code work together. A line coded S with scheme VAT means “standard-rate VAT applies at the specified percentage.” The same S code with scheme GST means “standard-rate GST applies.” The receiving system uses both values to route the tax amount to the correct ledger and apply the right rounding and reporting rules. If the scheme identifier doesn’t match what the receiving country expects, the invoice will fail automated checks even when the category code itself is correct.4OpenPEPPOL. Peppol BIS Billing

Picking the Right Code for a Transaction

Choosing the correct code requires knowing four things: the nature of what you’re selling, where the seller is established, where the buyer is established, and the VAT or GST registration status of both parties. A domestic sale of standard-rated goods to a registered business is straightforward. Code S with the local rate. Cross-border sales introduce complexity because the same transaction might be coded AE (reverse charge), K (intra-community supply), or G (export) depending on whether goods or services are involved and where the parties sit.

Some products carry reduced rates or full exemptions under national law. Medical equipment, educational materials, and basic food items are common examples, though the specifics vary widely between countries. Your accounting system should maintain a tax matrix that maps product categories and customer locations to the correct UNCL5305 code and rate. Manual selection for every invoice is where errors creep in, especially when the same product ships to customers in different jurisdictions.

How Validation Reacts to a Bad Code

Peppol validation runs on Schematron rules that check the XML against business rules before the invoice is transmitted. Failures come in two severities. A “warning” flags a potential issue but allows the invoice through. A “fatal” error blocks transmission and returns an error report identifying the failing rule. New rules typically launch as warnings first and get upgraded to fatal in a later release. Common fatal errors on the tax side include using a code that doesn’t exist in the UNCL5305 subset, omitting a tax scheme identifier, and pairing a VATEX reason code with an incompatible category code.5OpenPEPPOL. Policy on BIS Billing Country Specific Validation Rules

Credit Notes Use the Same Codes

Peppol credit notes follow the UBL Credit Note schema, but the tax treatment mirrors the invoice structure. The same UNCL5305 category codes, VATEX reason codes, and tax scheme identifiers apply. OpenPeppol’s documentation notes that although element naming conventions reference “invoice,” the coverage extends to both invoices and credit notes; the tag names simply follow the UBL Credit Note schema rather than the invoice schema.6OpenPEPPOL. UBL Credit Note – Peppol BIS Billing 3.0

When issuing a credit note for a previously invoiced transaction, use the same tax category code and rate that appeared on the original invoice. A credit note reversing a standard-rated sale uses code S at the same percentage. A credit note for a reverse-charge transaction uses code AE. Mismatching codes between the invoice and its credit note creates reconciliation problems in the buyer’s system and can trigger validation failures.

Keeping the Codes Current

The BIS Billing 3.0 specification updates on a regular cycle, and the official documentation at docs.peppol.eu always reflects the current valid code lists and rules.7OpenPEPPOL. Post Award Documentation As of early 2026, the current release took effect in February 2026, with a further update scheduled for August 2026. Falling behind on these releases is the single most common reason businesses see invoices that used to validate suddenly start failing. Whatever tax matrix your accounting system relies on has to be reviewed against each release, and any codes newly restricted or newly introduced have to make it into your product-to-code mapping before the next reporting cycle.