UBLExplain

Understand UBL invoice fields

Search UBL fields by name or XML path and read what each one means in plain English.

cbc:CustomizationID

fieldExplainerTool.commonlyRequired

/Invoice/cbc:CustomizationID

Identifies which specification the invoice follows (e.g. Peppol BIS Billing 3.0 + EN16931).

Where Top of the Invoice / CreditNote.

<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>

cbc:ProfileID

fieldExplainerTool.commonlyRequired

/Invoice/cbc:ProfileID

The business process / Peppol profile (e.g. billing 01:1.0).

Where Top of the Invoice / CreditNote.

<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>

cbc:ID

fieldExplainerTool.commonlyRequired

/Invoice/cbc:ID

The supplier's unique invoice number.

Where Top of the Invoice / CreditNote.

<cbc:ID>INV-2025-001</cbc:ID>

cbc:IssueDate

fieldExplainerTool.commonlyRequired

/Invoice/cbc:IssueDate

The date the invoice was issued, in YYYY-MM-DD format.

Where Top of the Invoice.

<cbc:IssueDate>2025-01-31</cbc:IssueDate>

cbc:DueDate

fieldExplainerTool.optional

/Invoice/cbc:DueDate

Payment due date in YYYY-MM-DD format.

Where Top of the Invoice.

<cbc:DueDate>2025-02-28</cbc:DueDate>

cac:AccountingSupplierParty

fieldExplainerTool.commonlyRequired

/Invoice/cac:AccountingSupplierParty

The seller's party block: name, address, tax scheme, endpoint ID.

Where After the header fields.

<cac:AccountingSupplierParty><cac:Party>…</cac:Party></cac:AccountingSupplierParty>

cac:AccountingCustomerParty

fieldExplainerTool.commonlyRequired

/Invoice/cac:AccountingCustomerParty

The buyer's party block.

Where After the supplier party.

<cac:AccountingCustomerParty><cac:Party>…</cac:Party></cac:AccountingCustomerParty>

cac:TaxTotal

fieldExplainerTool.commonlyRequired

/Invoice/cac:TaxTotal

Total VAT for the invoice, with one TaxSubtotal per VAT category.

Where Between parties and LegalMonetaryTotal.

<cac:TaxTotal><cbc:TaxAmount currencyID="EUR">21.00</cbc:TaxAmount>…</cac:TaxTotal>

cac:LegalMonetaryTotal

fieldExplainerTool.commonlyRequired

/Invoice/cac:LegalMonetaryTotal

All monetary totals: line extension, tax-exclusive, tax-inclusive, payable.

Where After TaxTotal.

<cac:LegalMonetaryTotal><cbc:PayableAmount currencyID="EUR">121.00</cbc:PayableAmount>…</cac:LegalMonetaryTotal>

cac:InvoiceLine

fieldExplainerTool.commonlyRequired

/Invoice/cac:InvoiceLine

A single invoice line with quantity, price and item details.

Where One per line item.

<cac:InvoiceLine><cbc:ID>1</cbc:ID>…</cac:InvoiceLine>

cac:AdditionalDocumentReference

fieldExplainerTool.optional

/Invoice/cac:AdditionalDocumentReference

References to extra documents — including the embedded PDF version of the invoice.

Where Anywhere in the Invoice body; often near the header.

<cac:AdditionalDocumentReference><cbc:ID>INV-PDF</cbc:ID><cac:Attachment><cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="invoice.pdf">…</cbc:EmbeddedDocumentBinaryObject></cac:Attachment></cac:AdditionalDocumentReference>

cbc:EmbeddedDocumentBinaryObject

fieldExplainerTool.optional

/Invoice/cac:AdditionalDocumentReference/cac:Attachment/cbc:EmbeddedDocumentBinaryObject

Base64-encoded binary content (typically a PDF) embedded directly in the XML.

Where Inside an Attachment block.

<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="invoice.pdf">JVBERi0x…</cbc:EmbeddedDocumentBinaryObject>

Għodod

Frequently asked questions

Are these the only UBL fields?

No. UBL has hundreds of optional elements. This explainer focuses on the ones that most often cause confusion or validation issues.

What do cbc: and cac: mean?

They are XML namespace prefixes: cbc is the Common Basic Components namespace (simple values) and cac is the Common Aggregate Components namespace (composite blocks).

What this tool does

The UBL field explainer is a searchable reference for common UBL XML paths such as CustomizationID, ProfileID, TaxTotal, LegalMonetaryTotal and EmbeddedDocumentBinaryObject.

Common UBL and Peppol problems it detects

  • UBL specs are long and hard to navigate.
  • Developers map fields incorrectly because the meaning of attributes like CustomizationID is not obvious.
  • Finance staff cannot tell what a given XML path actually represents on an invoice.

Why this matters

Most mapping bugs come from misunderstanding what a UBL element is for. A quick searchable reference shortens onboarding and reduces support tickets.

Example: CustomizationID vs ProfileID

CustomizationID identifies the document specification (e.g. Peppol BIS Billing 3.0). ProfileID identifies the business process (e.g. billing). They are not interchangeable — using the wrong one will cause Peppol rejection.

How to fix the issue

  1. Search the explainer for the XML path or element name you are mapping.
  2. Read the plain-English description and copy the recommended value if there is one.
  3. Cross-check with your ERP mapping table.

Frequently asked questions

Is this a replacement for the UBL specification?

No. It is a quick reference for the most common fields. For full normative definitions, refer to the UBL 2.1 specification and EN 16931.

Can I add my own fields?

Not today — but the source list is open and contributions are welcome on GitHub.