# Identifiers and code lists The layer that fails silently. A wrong VAT number is rejected loudly; a wrong EAS scheme code routes the invoice to nobody. All code values below are reproduced from the Peppol BIS Billing 3.0 code lists (November 2025 release, docs.peppol.eu/poacc/billing/3.0/codelist/), which are the maintained subsets of the underlying UN/CEFACT and ISO lists. ## EAS — Electronic Address Scheme (BT-34 / BT-49, `schemeID` on `cbc:EndpointID`) The EAS code list is derived from ISO 6523 ICD plus Peppol-assigned values in the 9xxx range. It identifies *what kind of identifier* the electronic address is. It is not the country code and not the identifier itself. Codes you will actually need: | EAS | Scheme | Typical use | |---|---|---| | `0007` | Organisationsnummer | Swedish legal entities | | `0009` | SIRET-CODE | France, establishment-level | | `0037` | LY-tunnus | Finland | | `0060` | D-U-N-S Number | global | | `0088` | EAN Location Code | GLN, the classic Peppol identifier | | `0106` | Vereniging van Kamers van Koophandel en Fabrieken in Nederland Scheme | Dutch KvK | | `0130` | Directorates of the European Commission | EU institutions | | `0151` | Australian Business Number (ABN) | Australia | | `0183` | Numéro d'identification suisse des entreprises (IDE), Swiss UIDB | Switzerland | | `0184` | DIGSTORG | Denmark (CVR under the Danish digital agency scheme) | | `0192` | Enhetsregisteret ved Brønnøysundregisterne | Norway | | `0193` | UBL.BE party identifier | Belgium | | `0195` | Singapore UEN identifier | Singapore | | `0196` | Kennitala | Iceland | | `0198` | ERSTORG | Denmark | | `0199` | Legal Entity Identifier (LEI) | global | | `0201` | Codice Univoco Unità Organizzativa iPA | Italian public bodies | | `0202` | Indirizzo di Posta Elettronica Certificata | Italian PEC address | | `0204` | Leitweg-ID | German public sector | | `0208` | Numéro d'entreprise / ondernemingsnummer / Unternehmensnummer | Belgium (CBE/KBO) | | `0209` | GS1 identification keys | global | | `0210` | CODICE FISCALE | Italy | | `0211` | PARTITA IVA | Italy | | `0212` | Finnish Organization Identifier | Finland | | `0213` | Finnish Organization Value Add Tax Identifier | Finland | | `0216` | OVTcode | Finland | | `0217` | Netherlands Chamber of Commerce and Industry establishment number | Netherlands | | `0221` | Registered number of the qualified invoice issuer | Japan | | `0230` | National e-Invoicing Framework | Malaysia | | `0235` | UAE Tax Identification Number (TIN) | United Arab Emirates | | `0240` | Répertoire des personnes morales | France | | `0245` | Tax identification number (DIČ) | Slovakia | | `9910` | Hungary VAT number | Hungary | | `9914` | Österreichische Umsatzsteuer-Identifikationsnummer | Austria | | `9920` | Agencia Española de Administración Tributaria | Spain | | `9925` … `9953` | Country VAT numbers | BE 9925, BG 9926, CH 9927, CY 9928, CZ 9929, DE 9930, EE 9931, GB 9932, GR 9933, HR 9934, IE 9935, LT 9937, LU 9938, LV 9939, MT 9943, NL 9944, PL 9945, PT 9946, RO 9947, SI 9949, SK 9950 | | `9957` | French VAT number | France | | `9959` | Employer Identification Number (EIN, USA) | United States | Traps: - **Italy: `9906` and `9907` are gone.** The current codes are `0211` (Partita IVA) and `0210` (Codice Fiscale). Code that still emits `9906` was written before the list was revised and routes nowhere. - **The list is maintained and entries get removed.** In eDEC code list v9.7 (2026-07-02), `0193` (UBL.BE) carries removal date **2026-07-07** and is replaced by `0208`; `9954` (NL:OIN) was removed on 2026-03-31; `9909` (NO:VAT), `9912` (EU:VAT), `9916` (AT:CID) and `9917` (IS:KT) are long-standing deprecations. Re-read the code list at each Peppol release rather than vendoring a copy. - **The EAS goes in the `schemeID` attribute, the value in the element text.** `7300010000001`. Writing `0088:7300010000001` into the element text is wrong; the colon form is the *participant identifier* used at the transport layer, not in the invoice. - **EAS is not ICD.** The EAS list qualifies the *electronic address* (BT-34 seller, BT-49 buyer — `cbc:EndpointID`). The ISO 6523 ICD list qualifies *party identifiers*: `cac:PartyIdentification/cbc:ID/@schemeID` (BT-29) and `cac:PartyLegalEntity/cbc:CompanyID/@schemeID` (BT-30). The numbers overlap because Peppol built EAS on ICD, but the two lists are maintained separately and diverge. Peppol publishes them as separate code lists (`codelist/eas/` and `codelist/ICD/`). - `0088` is the GLN. A GLN is a 13-digit GS1 location number with a check digit; it is not the company's VAT number and cannot be derived from it. ## National routing identifiers | Country | Identifier | Format | Where it goes | |---|---|---|---| | Germany (public sector) | Leitweg-ID | Coarse address, optional fine address, check digit, separated by `-`; assigned by the receiving authority | BT-10, `cbc:BuyerReference` / `ram:BuyerReference`. **Not** a party identifier. EAS `0204` exists for transport-layer addressing. | | Italy | Codice destinatario | Exactly 7 characters. `0000000` = consumer or no channel; `XXXXXXX` = foreign counterparty. Alternative: a PEC address. | FatturaPA `` / ``, not an EN 16931 field | | France | SIRET (14 digits) / SIREN (9 digits) | SIRET identifies the establishment, SIREN the legal entity | EAS `0009` for SIRET; Chorus Pro service code additionally identifies the receiving department | | Belgium | Ondernemingsnummer / numéro d'entreprise | 10 digits | EAS `0208` | | Denmark | CVR / EAN-lokationsnummer | 8 digits / 13 digits | EAS `0184` or `0198`; public bodies are addressed by EAN/GLN `0088` | | Norway | Organisasjonsnummer | 9 digits | EAS `0192` | | Poland | NIP | 10 digits | KSeF addresses by NIP; the platform assigns a *numer KSeF* to each accepted invoice | | Romania | CUI/CIF (businesses), CNP (individuals from 2026) | — | RO e-Factura via SPV | | Hungary | Adószám (tax number) | First 8 digits of a domestic taxable customer's tax number must appear on the invoice | RTIR reporting, not routing | ## UNTDID 1001 — document type code (BT-3) `cbc:InvoiceTypeCode` / `ram:TypeCode`. The Peppol subset for invoices: `71` Request for payment · `80` Debit note related to goods or services · `82` Metered services invoice · `84` Debit note related to financial adjustments · `102` Tax notification · `218` Final payment request based on completion of work · `219` Payment request for completed units · `326` Partial invoice · `331` Commercial invoice which includes a packing list · **`380` Commercial invoice** · `382` Commission note · `383` Debit note · **`384` Corrected invoice** · `386` Prepayment invoice · `388` Tax invoice · **`389` Self-billed invoice** · `393` Factored invoice · `395` Consignment invoice · `553` Forwarder's invoice discrepancy report · `575` Insurer's invoice · `623` Forwarder's invoice · `780` Freight invoice · `817` Claim notification · `870` Consular invoice · `875` Partial construction invoice · `876` Partial final construction invoice · `877` Final construction invoice Credit note subset (`cbc:CreditNoteTypeCode`, or `ram:TypeCode` in CII): `81` Credit note related to goods or services · `83` Credit note related to financial adjustments · **`381` Credit note** · `396` Factored credit note · `532` Forwarder's credit note Use `380` for a normal invoice and `381` for a normal credit note. `384` (Corrected invoice) triggers a preceding-invoice reference requirement in national CIUS (German rule DE-R-026 warns when BG-3 is absent with type 384). `875`/`876`/`877` exist because German construction invoicing needs them — do not use them elsewhere. ## UNCL5305 — VAT category code (BT-95 / BT-102 / BT-118 / BT-151) | Code | Meaning | Rate must be | Exemption reason | |---|---|---|---| | `S` | Standard rate | > 0 | must be absent (BR-S-10) | | `Z` | Zero rated goods | 0 | must be absent (BR-Z-10) | | `E` | Exempt from Tax | 0 | required (BR-E-10) | | `AE` | VAT Reverse Charge | 0 | required, meaning "Reverse charge" (BR-AE-10) | | `K` | VAT exempt for EEA intra-community supply of goods and services | 0 | required, meaning "Intra-community supply" (BR-IC-10) | | `G` | Free export item, VAT not charged | 0 | required, meaning "Export outside the EU" (BR-G-10) | | `O` | Services outside scope of tax | absent entirely | required (BR-O-10); no seller or buyer VAT identifier allowed (BR-O-02) | | `L` | Canary Islands general indirect tax | — | Spain (IGIC) | | `M` | Tax for production, services and importation in Ceuta and Melilla | — | Spain (IPSI) | | `B` | Transferred (VAT), In Italy | — | Italy split payment | `K` is intra-Community supply, not `E`. Confusing the two is the single most common VAT-category error, because "exempt" is how the supply is described in plain language. ## VATEX — VAT exemption reason codes (BT-121) Two families. The EU-directive family (`VATEX-EU-132…`, `VATEX-EU-143…`, `VATEX-EU-148…`, `VATEX-EU-151…`, `VATEX-EU-159`, `VATEX-EU-309`) cites the article of Directive 2006/112/EC. The category-support family is what you use for the standard cases: | Code | Use with category | Meaning | |---|---|---| | `VATEX-EU-AE` | `AE` | Reverse charge (supports BR-AE-10) | | `VATEX-EU-IC` | `K` | Intra-Community supply (supports BR-IC-10) | | `VATEX-EU-G` | `G` | Export outside the EU (supports BR-G-10) | | `VATEX-EU-O` | `O` | Not subject to VAT (supports BR-O-10) | | `VATEX-EU-D`, `-F`, `-I`, `-J` | `E` | Second-hand transport means, second-hand goods, works of art, collectors' items — margin schemes | | `VATEX-EU-79-C` | `E` | Repayment of expenditures under Art 79(c) | France adds a national family (`VATEX-FR-FRANCHISE` for the *franchise en base*, `VATEX-FR-CNWVAT` for domestic credit notes without VAT, and `VATEX-FR-CGI261…` for Code Général des Impôts exemptions). Do not use French codes outside France. ## UNECE Recommendation 20 — unit of measure (BT-130, BT-150) The `unitCode` attribute. Code list name: "Recommendation 20, including Recommendation 21 codes — prefixed with X". `C62` one · `H87` piece · `EA` each · `DAY` day · `HUR` hour · `MIN` minute [unit of time] · `MON` month · `ANN` year · `KGM` kilogram · `GRM` gram · `LTR` litre · `MTR` metre · `KMT` kilometre · `MTK` square metre · `MTQ` cubic metre · `KWH` kilowatt hour · `NAR` number of articles `PCE`, `SET` and `ZZ` are **not** in the Peppol subset — using them fails validation. For "one unit of an unspecified thing" use `C62`; `H87` (piece) and `EA` (each) are also valid and are preferred by some national CIUS. Do not use `ZZ` as a fallback. ## UNCL4461 — payment means (BT-81) The values that matter: `10` In cash · `20` Cheque · `30` Credit transfer · `31` Debit transfer · `42` Payment to bank account · `48` Bank card · `49` Direct debit · `54` Credit card · `55` Debit card · `58` SEPA credit transfer · `59` SEPA direct debit · `68` Online payment service · `97` Clearing between partners · `ZZZ` Mutually defined. `30` is the safe default for a bank transfer. `58` is more precise inside SEPA and triggers Peppol rule BR-61 (a payment account identifier BT-84 must then be present). ## Checkpoints - [ ] Every `schemeID` value taken from the EAS list, not invented or copied from a different list - [ ] No `9906` / `9907` for Italian parties - [ ] Leitweg-ID in BT-10, not in a party identifier - [ ] Codice destinatario present and exactly 7 characters, `0000000` for consumers - [ ] VAT category `K` used for intra-Community supply, not `E` - [ ] Every non-`S`, non-`Z` category carries a VATEX code or exemption text - [ ] Unit codes restricted to the Rec 20 subset the target CIUS accepts - [ ] Document type code 380/381 unless a national rule requires another value