EN 16931 code lists: every code an e-invoice needs
An EN 16931 e-invoice is largely made of codes. Every coded field takes its value from a fixed international list, and the official validation rules check each one. Get a single code wrong and the invoice is rejected, even when every amount adds up.
This is the complete reference: for each code list the field it fills, the rule that checks it, and the codes you will actually use.
What the EN 16931 code lists are
EN 16931 is the European semantic standard for electronic invoices. It defines every invoice field as a business term with a number, such as BT-3 for the invoice type. Coded fields do not take free text. They point to international code lists maintained by UN/CEFACT, ISO and the European Commission.
The official validation artefacts check those lists with the BR-CL rules, BR-CL-01 to BR-CL-26. Every BR-CL rule is fatal: a wrong code is an error, never a warning. Peppol BIS Billing 3.0, XRechnung and Factur-X all build on the same code lists.
Overview: field, code list and rule
| Field | Code list | Rule |
|---|---|---|
| Invoice type code (BT-3) | UNTDID 1001 | BR-CL-01 |
| Invoice currency code (BT-5) and amounts | ISO 4217 | BR-CL-04, BR-CL-03 |
| VAT accounting currency code (BT-6) | ISO 4217 | BR-CL-05 |
| VAT point date code (BT-8) | UNTDID 2005 | BR-CL-06 |
| Invoice note subject code (BT-21) | UNTDID 4451 | BR-CL-08 |
| Country codes (BT-40, BT-55 and others) | ISO 3166-1 alpha-2 | BR-CL-14, BR-CL-15 |
| Payment means type code (BT-81) | UNTDID 4461 | BR-CL-16 |
| VAT category code (BT-118, BT-151) | UNCL5305 | BR-CL-17, BR-CL-18 |
| Allowance reason code (BT-98, BT-140) | UNTDID 5189 | BR-CL-19 |
| Charge reason code (BT-105, BT-145) | UNTDID 7161 | BR-CL-20 |
| VAT exemption reason code (BT-121) | VATEX | BR-CL-22 |
| Unit of measure (BT-130) | UN/ECE Recommendation 20 and 21 | BR-CL-23 |
| Attachment MIME type (BT-125) | MIME media types | BR-CL-24 |
| Electronic address scheme (BT-34, BT-49) | EAS | BR-CL-25 |
| Identifier schemes (parties, items, delivery location) | ISO 6523 ICD | BR-CL-10, BR-CL-11, BR-CL-21, BR-CL-26 |
| Item classification scheme (BT-158) | UNTDID 7143 | BR-CL-13 |
VAT category codes (UNCL5305)
The VAT category code tells the receiver which VAT treatment applies. It appears in the VAT breakdown (BT-118) and on every invoice line (BT-151).
| Code | Meaning | When you use it |
|---|---|---|
| S | Standard rate | Domestic sales at a standard or reduced rate |
| Z | Zero rated goods | Goods taxed at a rate of 0% |
| E | Exempt from tax | Exempt supplies, for example medical or educational services |
| AE | VAT reverse charge | The buyer accounts for the VAT |
| K | VAT exempt for EEA intra-community supply | Intra-community supply of goods or services within the EEA |
| G | Free export item, VAT not charged | Export of goods outside the EU |
| O | Services outside scope of tax | Supplies outside the scope of VAT |
| L | Canary Islands general indirect tax | IGIC on the Canary Islands |
| M | Tax for production, services and importation in Ceuta and Melilla | IPSI in Ceuta and Melilla |
| B | Transferred (VAT), in Italy | Italian split payment |
For E, AE, K, G and O the standard also asks for the reason: a text in BT-120 or a code in BT-121.
VAT exemption reason codes (VATEX)
The VATEX list gives that reason as a code. The four you will meet most:
| Code | Meaning |
|---|---|
| VATEX-EU-AE | Reverse charge |
| VATEX-EU-IC | Intra-community supply |
| VATEX-EU-G | Export outside the EU |
| VATEX-EU-O | Not subject to VAT |
The other VATEX codes refer to a specific article of the EU VAT Directive 2006/112/EC. VATEX-EU-132, for example, covers the exemptions of article 132.
Payment means codes (UNTDID 4461)
BT-81 says how the invoice is paid. EN 16931 allows the complete UNTDID 4461 list, but in practice a handful of codes do the work:
| Code | Meaning |
|---|---|
| 10 | In cash |
| 30 | Credit transfer |
| 31 | Debit transfer |
| 42 | Payment to bank account |
| 48 | Bank card |
| 49 | Direct debit |
| 57 | Standing agreement |
| 58 | SEPA credit transfer |
| 59 | SEPA direct debit |
| 68 | Online payment service |
| 97 | Clearing between partners |
| ZZZ | Mutually defined |
In the euro area with an IBAN, 58 is the right choice. For a SEPA direct debit (59) the receiver also expects the mandate reference and the creditor identifier.
Units of measure (UN/ECE Recommendation 20 and 21)
BT-130 needs a unit code, never a word like “pcs” or “hours”.
| Code | Meaning |
|---|---|
| C62 | One |
| H87 | Piece |
| HUR | Hour |
| DAY | Day |
| MON | Month |
| ANN | Year |
| KGM | Kilogram |
| MTR | Metre |
| LTR | Litre |
| MTK | Square metre |
| KWH | Kilowatt hour |
C62 and H87 are both valid for counted items. The Recommendation 21 packaging codes start with an X.
Document type codes (UNTDID 1001)
BT-3 says what kind of document this is.
| Code | Meaning |
|---|---|
| 380 | Commercial invoice |
| 381 | Credit note |
| 383 | Debit note |
| 384 | Corrected invoice |
| 386 | Prepayment invoice |
| 389 | Self-billed invoice |
| 326 | Partial invoice |
A national rule set can narrow this down. XRechnung expects 326, 380, 381, 384, 389, 875, 876 or 877, as rule BR-DE-17 spells out; see every BR-DE rule explained.
Currency, country and VAT point date
- Currency (ISO 4217): three letters, such as EUR, PLN or CZK. BT-5 holds the invoice currency. If you account for VAT in another currency, BT-6 holds that one.
- Country (ISO 3166-1 alpha-2): two letters, such as NL, DE, BE or FR. Greece is GR in the country code, even though Greek VAT numbers start with EL.
- VAT point date code (UNTDID 2005): only three codes are allowed. 3 means the invoice date, 35 the actual delivery date, 432 the date of payment.
Electronic addresses (EAS)
The electronic address of seller and buyer (BT-34 and BT-49) carries a scheme code from the EAS list. That code tells a network such as Peppol how to read the identifier.
| Code | Scheme |
|---|---|
| 0088 | Global Location Number (GLN) |
| 0106 | Dutch Chamber of Commerce number (KvK) |
| 0190 | Dutch government organisation identifier (OIN) |
| 0204 | Peppol Leitweg-ID (German public sector) |
| 0208 | Belgian enterprise number |
| 9930 | German VAT number |
| 9944 | Dutch VAT number |
| 0009 | French SIRET code |
| 0002 | French SIRENE number |
| 9957 | French VAT number |
Party identifiers outside the electronic address use the ISO 6523 ICD list, where the four-digit codes work the same way.
Attachments (MIME types)
An attached document (BT-125) declares its MIME type. EN 16931 allows application/pdf, image/png, image/jpeg, text/csv and the two spreadsheet formats: the Excel (xlsx) and the OpenDocument (ods) type.
How SealDoc picks the right codes for you
SealDoc turns invoice data in plain language into the right codes, and checks the result before anything leaves the building:
- Units in your own words. Write hour, Stunde, heure or uur, and SealDoc writes HUR. Day, month, year, kilogram and piece become DAY, MON, ANN, KGM and C62, in all eight languages SealDoc speaks.
- VAT category from the rate. Give the rate and SealDoc derives the category: 21% becomes S. For exempt, reverse-charge and export invoices you choose E, AE, G or O, and SealDoc insists on the reason the standard requires.
- Payment means from the IBAN. With an IBAN on the invoice, SealDoc writes 58, SEPA credit transfer.
- Credit notes as 381. A credit note is issued against the original invoice and carries code 381.
- Validation before sealing. Every invoice is validated against EN 16931 before SealDoc seals it, code list rules included. An invoice with a wrong code never leaves SealDoc.
Want to check an invoice you already have? Our free validator runs the same rules and names the rule behind each failure. Building it into your own software? The API does all of the above in one call.
Frequently asked questions
Which VAT category code do I use for reverse charge?
AE. Add the reason as well, as text in BT-120 or as code VATEX-EU-AE in BT-121.
What is the difference between VAT category E and O?
E is a supply within the scope of VAT that is exempt, such as medical care. O is a supply outside the scope of VAT altogether.
Which payment means code is right for a SEPA bank transfer?
58, SEPA credit transfer. Code 30 is the general credit transfer without the SEPA meaning.
Should I use C62 or H87 for items?
Both are valid. C62 means “one” and is the most common choice for counted items. H87 means “piece”.
Which country code does Greece have?
GR. The prefix EL only appears in Greek VAT numbers.
What happens if a code is wrong?
The BR-CL rule for that list fails, and every BR-CL rule is fatal. A Peppol access point or an XRechnung receiver rejects the invoice. Want the background on the fields themselves? Read Understanding EN16931: Europe’s invoice data model and the most common Peppol validation errors.