Invocie

Tech

UBL 2.1 쉬운 말로: 현대 전자세금계산서를 떠받치는 XML 표준

세계의 거의 모든 주요 e-invoicing 의무 규정은 내부적으로 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이 인보이스 원장을 무결성을 증명할 수 있는 무언가로 어떻게 바꾸는지 살펴봅니다.

다지역 e-invoicing 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.

팀에 문의