PO / RFQ standards mapping¶
.cart is a capture format. A purchase order (PO) or request for quotation
(RFQ) is a business document with its own established open standards. Rather
than invent new formats, .cart transformations map onto existing ones so output
flows straight into procurement systems.
This page gathers the standards and the field mapping in one place; the
normative mapping lives in SPEC.md §9.
The standards¶
| Standard | Body | PO document | RFQ document | Notes |
|---|---|---|---|---|
| UBL 2.1 (recommended baseline) | OASIS | Order |
RequestForQuotation (+ Quotation) |
XML; widely implemented; basis for PEPPOL. |
| UN/EDIFACT | UN/CEFACT | ORDERS |
REQOTE (+ QUOTES) |
Long-established EDI messages. |
| PEPPOL BIS | OpenPEPPOL | Order transaction | — | Built on UBL; mandated in much of EU public procurement. |
| Incoterms® 2020 | ICC | DeliveryTerms | DeliveryTerms | Delivery terms only — see Incoterms 2020. |
Why not the ICC for the documents themselves?
The International Chamber of Commerce standardizes Incoterms®
(delivery terms) and publishes model international sale contracts — but it
does not publish an electronic PO/RFQ document schema. For the documents
themselves, OASIS UBL and UN/CEFACT are the appropriate baselines;
ICC Incoterms slot into their DeliveryTerms.
Authoritative references¶
- OASIS UBL 2.1 — https://docs.oasis-open.org/ubl/UBL-2.1.html
- UN/CEFACT (UN/EDIFACT directories) — https://unece.org/trade/uncefact
- OpenPEPPOL / PEPPOL BIS — https://docs.peppol.eu/
- ICC Incoterms® 2020 — https://iccwbo.org/business-solutions/incoterms-rules/incoterms-2020/
Field mapping (.cart → UBL)¶
UBL element names are used as the canonical target; UN/CEFACT and PEPPOL have direct equivalents.
.cart field |
UBL target | Notes |
|---|---|---|
buyer |
BuyerCustomerParty |
business_name→PartyName; vat_id+vat_issuing_authority→PartyTaxScheme/CompanyID; country→PostalAddress/Country. |
merchant |
SellerSupplierParty |
Same party mapping on the seller side. |
id / reference |
ID / OrderReference |
Document identity. |
created_at |
IssueDate |
|
expires_at |
ValidityPeriod (RFQ) / RequestedDeliveryPeriod |
Drives quote validity in an RFQ. |
currency |
DocumentCurrencyCode |
|
items[] |
OrderLine / RequestForQuotationLine |
One per cart line. |
item.sku |
SellersItemIdentification/ID |
|
item.mpn / item.gtin |
ManufacturersItemIdentification / StandardItemIdentification (GTIN) |
GTIN is the cross-vendor key. |
item.name / description |
Item/Name / Description |
|
item.quantity / unit |
Quantity (@unitCode) |
|
item.unit_price_excl_tax |
Price/PriceAmount |
Omitted / indicative in an RFQ — the merchant fills it. |
item.price_breaks |
— | Carry as RFQ context; the quote returns firm tiers. |
item.tax_rate / tax |
TaxTotal / ClassifiedTaxCategory |
|
totals.grand_total |
LegalMonetaryTotal/PayableAmount |
PO only; an RFQ has no committed total. |
payment.terms |
PaymentTerms |
|
shipping.incoterms |
Delivery/DeliveryTerms |
ICC Incoterms® code. |
shipping.ship_to |
Delivery/DeliveryLocation/Address |
address_type has no direct UBL field; carry in an extension if needed. |
PO vs RFQ¶
- RFQ — item prices,
totals, andpaymentare indicative or omitted; the emphasis is on identifiers, quantities, delivery terms, andexpires_at. Producing an RFQ lets a buyer send the same basket to several merchants and compare returned quotations. - PO — prices and
totalsare authoritative and become a commitment;buyer,payment.terms, and delivery terms must be complete.
A reference implementation of both transformations is planned as part of the
.cart MCP server.