← Back to all articles

EN 16931 code lists: every code an e-invoice needs

SealDoc Team · · 8 min read

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

FieldCode listRule
Invoice type code (BT-3)UNTDID 1001BR-CL-01
Invoice currency code (BT-5) and amountsISO 4217BR-CL-04, BR-CL-03
VAT accounting currency code (BT-6)ISO 4217BR-CL-05
VAT point date code (BT-8)UNTDID 2005BR-CL-06
Invoice note subject code (BT-21)UNTDID 4451BR-CL-08
Country codes (BT-40, BT-55 and others)ISO 3166-1 alpha-2BR-CL-14, BR-CL-15
Payment means type code (BT-81)UNTDID 4461BR-CL-16
VAT category code (BT-118, BT-151)UNCL5305BR-CL-17, BR-CL-18
Allowance reason code (BT-98, BT-140)UNTDID 5189BR-CL-19
Charge reason code (BT-105, BT-145)UNTDID 7161BR-CL-20
VAT exemption reason code (BT-121)VATEXBR-CL-22
Unit of measure (BT-130)UN/ECE Recommendation 20 and 21BR-CL-23
Attachment MIME type (BT-125)MIME media typesBR-CL-24
Electronic address scheme (BT-34, BT-49)EASBR-CL-25
Identifier schemes (parties, items, delivery location)ISO 6523 ICDBR-CL-10, BR-CL-11, BR-CL-21, BR-CL-26
Item classification scheme (BT-158)UNTDID 7143BR-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).

CodeMeaningWhen you use it
SStandard rateDomestic sales at a standard or reduced rate
ZZero rated goodsGoods taxed at a rate of 0%
EExempt from taxExempt supplies, for example medical or educational services
AEVAT reverse chargeThe buyer accounts for the VAT
KVAT exempt for EEA intra-community supplyIntra-community supply of goods or services within the EEA
GFree export item, VAT not chargedExport of goods outside the EU
OServices outside scope of taxSupplies outside the scope of VAT
LCanary Islands general indirect taxIGIC on the Canary Islands
MTax for production, services and importation in Ceuta and MelillaIPSI in Ceuta and Melilla
BTransferred (VAT), in ItalyItalian 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:

CodeMeaning
VATEX-EU-AEReverse charge
VATEX-EU-ICIntra-community supply
VATEX-EU-GExport outside the EU
VATEX-EU-ONot 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:

CodeMeaning
10In cash
30Credit transfer
31Debit transfer
42Payment to bank account
48Bank card
49Direct debit
57Standing agreement
58SEPA credit transfer
59SEPA direct debit
68Online payment service
97Clearing between partners
ZZZMutually 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”.

CodeMeaning
C62One
H87Piece
HURHour
DAYDay
MONMonth
ANNYear
KGMKilogram
MTRMetre
LTRLitre
MTKSquare metre
KWHKilowatt 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.

CodeMeaning
380Commercial invoice
381Credit note
383Debit note
384Corrected invoice
386Prepayment invoice
389Self-billed invoice
326Partial 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.

CodeScheme
0088Global Location Number (GLN)
0106Dutch Chamber of Commerce number (KvK)
0190Dutch government organisation identifier (OIN)
0204Peppol Leitweg-ID (German public sector)
0208Belgian enterprise number
9930German VAT number
9944Dutch VAT number
0009French SIRET code
0002French SIRENE number
9957French 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.

Check whether a VAT number is registered on Peppol →
← Back to all articles