Invocie

Tech

UBL 2.1 をやさしく:現代の電子請求書を支える XML 標準

世界のほぼすべての主要な電子請求書義務化は、内部で UBL 2.1 を吐き出している。本当に理解しておくべき部分を、専門用語なしで案内する。

Invocie Team · 2026年1月21日 · 5 分で読める


UBL — Universal Business Language — is the OASIS standard underpinning Peppol BIS, EN 16931, ZATCA Phase-2, the UAE's PINT profile, India's IRP/e-invoice schema (with extensions), and several LATAM regimes. If your e-invoicing strategy doesn't make peace with UBL 2.1, you're going to be re-implementing the same XML over and over.

The shape of an UBL invoice

An UBL invoice is an XML document with three main namespaces: cbc (Common Basic Components — primitive types like ID and Amount), cac (Common Aggregate Components — complex types like Party and TaxTotal), and the document namespace itself. Every UBL document follows the same pattern:

<Invoice
    xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
  <cbc:ID>INV-2026-0001</cbc:ID>
  <cbc:IssueDate>2026-01-15</cbc:IssueDate>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cac:AccountingSupplierParty>...</cac:AccountingSupplierParty>
  <cac:AccountingCustomerParty>...</cac:AccountingCustomerParty>
  <cac:TaxTotal>...</cac:TaxTotal>
  <cac:LegalMonetaryTotal>...</cac:LegalMonetaryTotal>
  <cac:InvoiceLine>...</cac:InvoiceLine>
</Invoice>

Five concepts that are almost always wrong

  1. TaxTotal vs. LegalMonetaryTotal. The former breaks tax down by rate. The latter is the consolidated payable amount. Don't confuse them.
  2. AllowanceCharge can be either a discount or a surcharge — controlled by ChargeIndicator (false = allowance, true = charge). Wrong indicator → wrong total.
  3. Endpoint IDs need a scheme attribute (schemeID="0088" etc.). Without it, validators give cryptic errors about missing identifiers.
  4. Quantities use a unit code from UN/CEFACT (EA = each, KGM = kilogram, HUR = hour). "piece" is not a valid value.
  5. TaxCategory codes are UNCL5305: S = standard rate, Z = zero rate, E = exempt, AE = reverse charge. Don't invent new codes.

Invocie's EUStrategy emits UBL 2.1 conforming to BIS Billing 3.0 — same XML works for Peppol APs, the UAE PINT profile, and any system that consumes EN 16931.


関連記事

改ざん耐性のある監査証跡のためのハッシュ チェーン

ZATCA はこれを義務化し、EU の監査人はこれを愛する。実装も安い。チェーン化された SHA-256 が請求書台帳を、整合性を証明できるものへとどう変えるか。

マルチリージョン電子請求書 API の設計:現場からの教訓

clearance と post-audit の両方の国を同時にカバーするインフラを作っているなら、抽象化を正しくする機会は一度だけ。痛い思いをして学んだことを共有する。

Integrating UAE E-Invoicing With Your ERP: A Technical Guide

A technical walkthrough for the Head of IT and ERP transformation lead: how UAE PINT maps onto SAP, Oracle, Microsoft Dynamics, and custom ERPs, the data you must clean first, and the integration patterns that survive production.

あらゆる市場で準拠した請求書を発行

ZATCA、FTA、Peppol とグローバル ポストオーディット — ひとつの API。

チームに相談する