The document a supplier sends to say what has actually been shipped — against which order, in what quantities. Elsewhere in logistics it is called an advance shipping notice. On Peppol it travels as a UBL 2.1 DespatchAdvice, and it is the step most often missing when order-to-invoice automation breaks.
At a glance
IBT-016 · cac:DespatchDocumentReferenceurn:fdc:peppol.eu:poacc:trns:despatch_advice:3A Peppol despatch advice is the electronic message a supplier sends a buyer when goods leave, saying what was shipped, against which order and order lines, in what quantities and when. It is a UBL 2.1 DespatchAdvice exchanged under Peppol BIS Despatch Advice, a commercial document buyers request, not a tax one.
The buyer uses it to prepare for the delivery and to book the goods in against the
order, before the invoice arrives. That makes it the middle term of three-way matching:
order, receipt, invoice. The invoice can then point back to it through business term
IBT-016.
For a supplier in Belgium, the B2B e-invoicing mandate that has applied since
1 January 2026 reaches invoices and credit notes. The despatch advice travels over
the same Peppol connection, and a Belgian party in it is addressed the same way, by its
KBO/BCE enterprise number under scheme 0208. Our
Belgium e-invoicing page
covers the mandate itself.
Peppol carries the whole post-award conversation, not only the invoice. Tax mandates normally reach the last two documents; the earlier ones are driven by what your trading partner requires.
Large buyers, retailers and public bodies — parties receiving goods at volume, who need to book a delivery before the invoice arrives.
Three-way matching needs order, receipt and invoice. Without a despatch advice the middle term is manual, and the invoice waits.
You can only receive one if the document type is published in your SMP entry. Senders will not route what you have not declared.
Seven elements are mandatory: the specification and process identifiers, a document number, an issue date, the despatch party, the consignee, and at least one despatch line. Each line must carry the delivered quantity, the order line it fulfils, and the item.
The table follows the syntax OpenPeppol publishes as
Peppol BIS Despatch Advice
(transaction T16). The specification is now at version 3.1, and its identifiers still
end in :3, so a document written to 3.0 travels under the
same document type.
| Element (UBL) | What it must say |
|---|---|
cbc:CustomizationID | Must start with urn:fdc:peppol.eu:poacc:trns:despatch_advice:3 |
cbc:ProfileID | Exactly urn:fdc:peppol.eu:poacc:bis:despatch_advice:3, a fixed value |
cbc:ID, cbc:IssueDate | The despatch advice number, and the issue date as YYYY-MM-DD |
cac:DespatchSupplierParty | Who ships: an electronic address (cbc:EndpointID with its schemeID) and a registered name |
cac:DeliveryCustomerParty | The consignee, who takes possession: the same two items |
cac:DespatchLine (one or more) | A line number, cbc:DeliveredQuantity with a unitCode, cac:OrderLineReference/cbc:LineID, and cac:Item with a name and a seller's or standard identifier |
Optional, but where most of the operational value sits: the order reference in the header, the buyer and seller where they differ from consignee and despatch party, the shipment (consignment, carrier, gross weight, estimated delivery period, actual despatch date), transport handling units identified by SSCC, and per-item lot numbers, serial numbers, expiry and best-before dates.
When every line comes from one purchase order, the order number goes once in the
header, in cac:OrderReference/cbc:ID. When the lines come
from several orders, the header carries no order reference, and each line names its
own order inside cac:OrderLineReference.
The order line number is required on every line either way. Where no order line
exists, the specification asks for the value NA. The same
placeholder applies to cac:Shipment/cbc:ID when you send
shipment detail but have no shipment number.
Through two quantities on the line. cbc:DeliveredQuantity
is what is in this consignment. cbc:OutstandingQuantity is
what will follow in a later despatch. Anything ordered that is in neither will not be
delivered.
So 10 ordered, 6 shipped and 4 to follow is outstanding 4. Ten ordered, 6 shipped and nothing more is outstanding 0, with a reason such as “Out of stock”. One order can be covered by several despatch advices.
These three are routinely confused. The distinction is simply who is speaking, and about what.
| Document | Sent by | Says | Invoice reference |
|---|---|---|---|
| Despatch advice | Supplier | “This is what I shipped” | IBT-016 |
| Receiving advice | Buyer | “This is what arrived” | IBT-015 |
| Invoice | Supplier | “This is what you owe” | — |
Both references are optional. Where a jurisdiction's rules mention them they constrain rather than require — Oman's PINT OM Schematron, for instance, asserts only that each may occur at most once.
Your ERP or warehouse system emits a despatch advice as goods leave, it is mapped to a UBL 2.1 DespatchAdvice, and a certified Access Point routes it to the buyer. The receiver must publish that document type in its SMP entry first, or nothing routes.
In practice that is three pieces of work: have the receiving capability registered in the SMP entry of whoever is to receive the documents, map your shipment record to the fields listed above, and post the result to the API call shown below. The transport does not change — it is the same AS4 connection your invoices already use.
Usually the identifiers, the order line reference, the quantity's unit code, or an element the data model does not allow. All of them are fatal: the document is rejected, not delivered with a warning.
OpenPeppol publishes two rule sets for the transaction: basic rules generated from the syntax, and business rules. We have no failure statistics for despatch advices. The list below is our reading of which rules a document mapped from an ERP or warehouse record is most likely to break.
| Rule | What it checks | Usual cause and fix |
|---|---|---|
PEPPOL-T16-B00301PEPPOL-T16-R011 |
ProfileID must be urn:fdc:peppol.eu:poacc:bis:despatch_advice:3; CustomizationID must start with urn:fdc:peppol.eu:poacc:trns:despatch_advice:3 |
A header copied from an invoice template still carries billing values. Set both from the table above. |
PEPPOL-T16-B18003PEPPOL-T16-B18801 |
Each line must have cac:OrderLineReference, and it must have a cbc:LineID |
The warehouse system knows the order but not the order line. Send NA as the line ID. |
PEPPOL-T16-B18002PEPPOL-T16-B11901PEPPOL-T16-R006 |
Each line must have a delivered quantity, with a unitCode from UN/ECE Recommendation 20 or 21, and it must not be negative |
Internal units such as “PCS” or “BOX” are not on the code list. Map them to codes such as EA or KGM. |
PEPPOL-T16-R003PEPPOL-T16-R004 |
Each item must have a name, and either a seller's item identifier or a standard identifier such as a GTIN | Lines built from free-text order lines have neither. Send your own article number as the seller's identifier. |
PEPPOL-T16-B02101PEPPOL-T16-B02102 |
Every cbc:EndpointID needs a schemeID from the Electronic Address Scheme list |
The scheme is left off, or a VAT number is sent without one. For a Belgian party it is normally 0208. |
PEPPOL-T16-B00802PEPPOL-T16-B00108 |
The document must not contain elements outside the data model, or a schema location | A full UBL export carries elements Peppol does not allow. Map to the Peppol subset, and drop xsi:schemaLocation. |
Two warnings are worth clearing too. PEPPOL-T16-R005 says each line
should have a delivered quantity, and PEPPOL-T16-R007 asks for an
outstanding reason wherever an outstanding quantity is given. Buyer, seller and originator
parties are optional, but any you send must have a name or an identifier
(R008 to R010). Invoices fail for
different reasons, covered in
invoice validation errors you can prevent.
Through the same API call and AS4 connection your invoices use. Check that the buyer has published the despatch advice, then post the document with its document type and its process identifier. To receive them, the capability has to be published on your own SMP entry.
The participant lookup returns the document types a receiver has actually published. If the despatch advice is not among them, nothing will route, however good the document is.
curl https://app.goroute.ai/peppol-api/api/v1/lookup/0088/7300010000001 \
-H "X-API-Key: $GOROUTE_API_KEY"
Name the process identifier. If you leave it out, the API fills in the invoice
(BIS Billing) process, and the receiver's lookup will find nothing to deliver to.
The example uses a GS1 location number; a Belgian receiver is usually
0208 and its enterprise number.
curl -X POST https://app.goroute.ai/peppol-api/api/v1/documents \
-H "X-API-Key: $GOROUTE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"receiver_scheme": "0088",
"receiver_id": "7300010000001",
"document_type": "urn:oasis:names:specification:ubl:schema:xsd:DespatchAdvice-2::DespatchAdvice##urn:fdc:peppol.eu:poacc:trns:despatch_advice:3::2.1",
"process_id": "urn:fdc:peppol.eu:poacc:bis:despatch_advice:3",
"document": "<DespatchAdvice xmlns=...>…</DespatchAdvice>"
}'
GoRoute also carries two related documents. One is the
Peppol Logistics advanced despatch advice (T120), which can be paired
with a receipt advice. The other is Norway's EHF Despatch Advice 3.0.
For both, the same POST /api/v1/documents call recognises
the document, runs its official rules and sets the Peppol identifiers itself.
GET /api/v1/business-documents/types lists every such
document with the identifiers it travels under. POST /api/v1/business-documents/validate
checks one against its rules without sending it.
A despatch advice is never part of a default Peppol registration. Publishing one promises that your systems will take the document, and only you can say that. So the capability is switched on per participant. Tell us which variant your suppliers send, and we publish it on your SMP entry next to your invoice registration. The full request and response reference is in the API documentation, and Peppol API integration explains the integration as a whole. Also see the developer resources.
We publish the capability on your SMP entry and carry the document over AS4 as a certified Access Point — the same path your invoices already take.
Next: what Belgium's B2B mandate requires, or watch the tutorials and ERP walkthroughs.
Related: how Peppol works · e-invoicing glossary · Peppol API integration · SMP-as-a-Service · Oman e-invoicing