# Order, DespatchAdvice, Invoice, ReceiptAdvice: UBL's four are CBV's four

> transactions.dev · by visibility.cloud — 2026-07-31
> Written for the in-house supply-chain platform team — the platform engineer who wants the standards bridge that costs zero legal review.

One thesis: **OASIS UBL 2.3's document library maps one-to-one onto the CBV
core four — Order→`po`, DespatchAdvice→`desadv`, Invoice→`inv`,
ReceiptAdvice→`recadv` — with royalty-free schemas included, which makes
UBL the cleanest standards bridge in the entire business-document
landscape.**

Most cross-standard mappings are acts of interpretation: somebody's table,
somebody's judgment calls, somebody's maintenance burden when either side
revises. Once in a while two vocabularies were simply aimed at the same
reality carefully enough that the mapping is a bijection you can read off
the document-type names. This is one of those, and it is worth a page
precisely because nothing about it is clever. It is also the strongest
single piece of evidence for the family's founding claim —
[every wire format is a dialect of the same
vocabulary](/blog/every-wire-format-is-a-dialect/) — because here the
correspondence is not argued from mapping tables; two independent
standards bodies simply wrote the same four documents down. CBV's authors
[built their vocabulary from the EDI document types the world already
exchanged](/blog/the-standard-already-named-your-paperwork/); OASIS built
UBL from the same commercial reality; the bijection is what convergent
modeling looks like when both sides did it honestly.

## The mapping, all four rows

OASIS UBL — the Universal Business Language — is a library of XML business
documents: 92 document types in UBL 2.3, published with runtime XSDs at
[docs.oasis-open.org/ubl/UBL-2.3.html](https://docs.oasis-open.org/ubl/UBL-2.3.html)
under OASIS's royalty-free policy. CBV 2.0 §7.3 is GS1's closed vocabulary
of business-transaction types for EPCIS events. The commercial cycle's
core, side by side:

- **Order** → `po` — the buyer's request; UBL's `cbc:ID` on the Order is
  the string the cycle echoes, exactly as
  [BGM is in ORDERS](/blog/edifact-orders-the-open-purchase-order/).
- **DespatchAdvice** → `desadv` — UBL even uses the international name CBV
  standardized on; the ASN argument
  [ends the same way in every dialect](/blog/eancom-desadv-walkthrough/).
- **Invoice** → `inv` — with the same scope boundary the record always
  draws: [identity on the record, money in AP](/blog/invoic-to-inv/).
- **ReceiptAdvice** → `recadv` — the discrepancy-bearing close of the
  loop, [RECADV's XML sibling](/blog/recadv-in-full/).

Four documents, four references, no residue in either direction that the
core cycle needs. The other 88 UBL types brush the adjacent CBV vocabulary
where you would expect — waybills near `bol`, returns-related documents
near `rma` — and diverge where UBL models territory (tendering,
certificates of origin, customs) that the event record has no business
holding. The bridge is the core four, and the core four is complete.

## What royalty-free means operationally

Against the licensing landscape this site keeps having to explain —
[X12's negotiated-partner regime](/blog/x12-licensing-stated-plainly/) on
one side, [UNECE's free-of-charge directories](/blog/edifact-is-open-we-pinned-it/)
on the other — UBL sits at the maximally convenient corner: the schemas
are not just free to read but free to redistribute and embed, under the
standing OASIS royalty-free commitment rather than anyone's forbearance. The XSDs are
vendored in this layer's artifact set with the same digest pins as the
UNTDID directories, your legal review has nothing to review, and validator
tooling consumes the official schema files rather than a paraphrase.

## The compile, worked end to end

A self-authored UBL DespatchAdvice, reduced to its load-bearing elements:

```xml
<DespatchAdvice xmlns="urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2">
  <cbc:ID>DES8560001</cbc:ID>
  <cbc:IssueDate>2026-07-28</cbc:IssueDate>
  <cac:OrderReference><cbc:ID>4500123</cbc:ID></cac:OrderReference>
  <cac:DespatchSupplierParty><cac:Party>
    <cbc:EndpointID schemeID="0088">0614141000005</cbc:EndpointID>
  </cac:Party></cac:DespatchSupplierParty>
  <cac:DeliveryCustomerParty><cac:Party>
    <cbc:EndpointID schemeID="0088">0345678000007</cbc:EndpointID>
  </cac:Party></cac:DeliveryCustomerParty>
  <cac:DespatchLine>
    <cbc:DeliveredQuantity unitCode="EA">48</cbc:DeliveredQuantity>
    <cac:Item><cac:StandardItemIdentification>
      <cbc:ID schemeID="0160">00614141123452</cbc:ID>
    </cac:StandardItemIdentification></cac:Item>
  </cac:DespatchLine>
</DespatchAdvice>
```

Note the identifier posture: the parties' `EndpointID` values are GLNs
under ISO 6523 scheme 0088, and the item is a GTIN under scheme 0160 — GS1
identity carried natively in an OASIS document, the same GLNs and GTINs
[the barcode layer resolves](https://barcoding.dev/schemes/gln/). The
`join` verb compiles it exactly as it compiles the DESADV:

```json
{ "type": "ObjectEvent", "action": "OBSERVE",
  "bizStep": "shipping", "disposition": "in_transit",
  "quantityList": [
    { "epcClass": "urn:epc:idpat:sgtin:0614141.012345.*",
      "quantity": 48, "uom": "EA" } ],
  "bizTransactionList": [
    { "type": "desadv",
      "bizTransaction": "urn:epc:id:gdti:0614141.00001.DES8560001" },
    { "type": "po",
      "bizTransaction": "urn:epc:id:gdti:0345678.00010.4500123" } ],
  "sourceList": [
    { "type": "owning_party", "source": "urn:epc:id:pgln:0614141.000005" } ],
  "destinationList": [
    { "type": "owning_party", "destination": "urn:epc:id:pgln:0345678.000009" } ] }
```

— validated against the pinned official EPCIS 2.0 schema before it leaves
the tool, superset where the document carries more than the standard
models and conformant always. One wire syntax fewer to argue about; zero
new semantics invented. The mapping table above is not a feature of this
product so much as a fact about two standards — the product's contribution
is [the compiler that makes the fact executable](/blog/biztransaction-is-a-core-field/).

## Why this bridge matters more each year

UBL is not a museum piece: it is the payload format of the Peppol network,
whose invoice rail is becoming legally load-bearing across the EU and
beyond — [the next post](/blog/peppol-puts-a-gln-on-the-envelope/) walks
that lane, GLN endpoint scheme and all. Which means the cleanest mapping
in the landscape is also the one sitting under the fastest-growing
document volume. For a platform team, the conclusion is pleasantly boring:
the standards already agree; wire the bridge once, pin the schemas, and
let both vocabularies' maintainers keep agreeing on your behalf. If UBL is
the bridge your platform crosses, [wire it at the door](/get-access/) —
the onboarding flow asks which document sets are on your wire and in
what form you hold your partner guides.

---
Access: https://transactions.dev/get-access/ · All posts: https://transactions.dev/blog/ · Machine face: https://transactions.dev/llms.txt
