Peppol code lists

Peppol code lists

A Peppol document and a Peppol transmission depend on different sets of code lists, maintained by different bodies on different release cycles. Document content draws on UN/CEFACT and ISO lists that Peppol subsets. The network itself draws on the OpenPeppol eDEC code lists. A value that is valid in the parent standard can still be rejected, because Peppol accepts only its own subset.

The two families

FamilyGovernsMaintained byCurrent
BIS Billing document code listsValues inside the invoice or credit noteUN/CEFACT, ISO and CEF, subset by OpenPeppolPeppol BIS Billing 3.0.21
eDEC code listsValues used to address and route the transmissionOpenPeppolPeppol Code Lists v9.7, 2 July 2026

The two families are versioned independently. An artifact update to BIS Billing does not update the eDEC lists, and the reverse is also true.

Document code lists

ListGovernsSource
UNCL1001Invoice and credit note typeUN/CEFACT D.16B, Peppol subset
UNCL5305VAT categoryUN/CEFACT D.16B, Peppol subset
EASScheme of an electronic address, BT-34 and BT-49CEF
ICDScheme of a party or location identifierISO 6523
VATEXReason for VAT exemptionCEF
UNCL4461Payment meansUN/CEFACT
UN/ECE Rec 20 and 21Unit of measureUN/ECE
ISO 4217MěnaISO
ISO 3166-1ZeměISO

eDEC code lists

ListGoverns
Document TypesWhich document types may be exchanged, and how a receiver declares support
Participant Identifier SchemesWhich identifier registers may be used to address a participant
ProcessesWhich business processes are supported
Transport ProfilesWhich transport protocols may be used
SPIS Use Case IdentifierUse cases within the SPIS framework

Entries in these lists carry a state. A row marked deprecated should not be used for newly issued documents. A row with a removal date becomes unusable in the Peppol network after that date. Scheme identifiers are never reused, so a deprecated code does not come back with a different meaning.

Why a valid code can still fail

Peppol publishes a subset of most document code lists. UNCL1001 in its full UN/CEFACT form is far larger than the Peppol subsets: the invoice code list contains 27 codes and the credit-note code list 5. Profile-specific rules may narrow the permitted values further. A code that is valid UN/CEFACT and outside the relevant subset produces a BR-CL- error.

If a validator rejects a code used in a current registration or document, compare the validator’s artifact version with the current Peppol release before changing the data.

Code-list changes in BIS Billing 3.0.21

Version 3.0.21 changed several code lists, including removals that may affect stored master data.

ListChange in 3.0.21
EAS14 codes removed, none added, 11 descriptions changed
ICD3 codes added: 0246, 0247, 0248
ISO 4217ANG and BGN removed, XCG added

OpenPeppol states that the EAS list had been pointing at the wrong source list and therefore contained codes that were not usable. Version 3.0.21 removes those codes and corrects the descriptions of eleven others.

If your customer master holds an address under a code that no longer exists, the document fails BR-CL-25 or PEPPOL-EN16931-CL008. Audit stored scheme codes against the current list at each release.

Earlier additions include EAS 0244 in 3.0.20 and the Slovak tax identification code 0245 in the 3.0.20 hotfix in January 2026.

Keeping code lists current

Update validation artifacts before the mandatory-from date for a BIS release. Track the eDEC code lists separately, since they follow their own schedule.

Run a regression set against the new artifacts before the mandatory date. Added codes may enable new registrations or document values. Deprecated or removed codes may require stored receiver data to be updated.

Auditing code lists at a release

Perform the audit between the publication date and the mandatory date.

  1. Read the release notes and write down every code list that changed, with the codes added and removed. The notes name them individually.
  2. Query your own data for the removed codes. Scheme codes in the customer master, VAT category codes in product and tax setup, unit codes in article data, currency codes in price lists.
  3. For every match, determine the receiver’s current identifier. Confirm the current registration rather than assuming a fixed replacement mapping.
  4. Update validation artifacts and run the regression set. Do this after the data audit, so that failures you see are new defects rather than known stale codes.
  5. Record which pages, integrations and mappings depend on the changed lists, so the next release starts from a list rather than from a search.
Byl tento článek užitečný?

Související články