Skip to content

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

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_namePartyName; vat_id+vat_issuing_authorityPartyTaxScheme/CompanyID; countryPostalAddress/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, and payment are indicative or omitted; the emphasis is on identifiers, quantities, delivery terms, and expires_at. Producing an RFQ lets a buyer send the same basket to several merchants and compare returned quotations.
  • PO — prices and totals are 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.