ediverse Explore the platform

Spotlight PEPPOL BIS Billing 3.0 The EU e-invoicing mandate is here — France Sept 2026, Belgium Jan 2026, Germany 2025.
oci — data architecture in transit

OCI

SAP Open Catalog Interface. The punchout protocol maintained by SAP, dominant in SAP SRM and SAP Ariba ecosystems since the early 2000s.

What is OCI?

OCI is a punchout protocol whose role is to let a user inside an SAP ERP (SRM, Ariba, S/4HANA) browse a supplier's hosted web catalog, build a cart, and bring back that cart into the ERP as order lines ready for approval. Unlike cXML, which carries items as XML, OCI carries them as HTML form fields posted by the supplier catalog to the buyer ERP via the user's browser.

This simple mechanic — a standard HTTP POST with a named set of NEW_ITEM-* fields — explains the protocol's success: no XML stack on the supplier side, no intermediate B2B network, just a web page that knows how to submit a form to the URL handed over by the buyer ERP at punchout launch.

Anatomy of an OCI return

OCI flows in two steps: (1) the buyer ERP opens the session by passing the supplier catalog a return URL (HOOK_URL) along with user credentials; (2) at checkout, the catalog posts back to that URL an HTML form carrying one set of NEW_ITEM-<FIELD>[n] parameters per cart line (where n is the line rank, starting at 1). A minimal return looks like this:

html oci-return.html
<!-- HTML form posted by the supplier catalog back to the buyer system (SAP) -->
<form method="POST" action="https://buyer.example/sap/bc/srm/return">
  <input type="hidden" name="NEW_ITEM-DESCRIPTION[1]" value="Black ballpoint pen" />
  <input type="hidden" name="NEW_ITEM-MATNR[1]"       value="" />
  <input type="hidden" name="NEW_ITEM-QUANTITY[1]"    value="2" />
  <input type="hidden" name="NEW_ITEM-UNIT[1]"        value="EA" />
  <input type="hidden" name="NEW_ITEM-PRICE[1]"       value="9.99" />
  <input type="hidden" name="NEW_ITEM-PRICEUNIT[1]"   value="1" />
  <input type="hidden" name="NEW_ITEM-CURRENCY[1]"    value="USD" />
  <input type="hidden" name="NEW_ITEM-VENDOR[1]"      value="0000100042" />
  <input type="hidden" name="NEW_ITEM-VENDORMAT[1]"   value="SKU-123" />
  <input type="hidden" name="NEW_ITEM-MATGROUP[1]"    value="44121706" />
  <input type="hidden" name="NEW_ITEM-LEADTIME[1]"    value="3" />
  <button type="submit">Submit cart</button>
</form>

The form is generally auto-submitted via JavaScript on landing. The NEW_ITEM-UNIT[n] fields carry a unit of measure drawn from UNECE Rec 20 (for instance EA, KGM, PCE), and NEW_ITEM-CURRENCY[n] fields carry an ISO 4217 currency code (EUR, USD, GBP).

Versions

VersionStatusNotes
2.0BHistoricInitial subset of NEW_ITEM-* fields.
3.0HistoricBroadened field set and documentation.
4.0Still widely deployedShort specification (~10 pages), stable reference for SAP SRM.
5.0CurrentFull specification (~50 pages), introduces federated multi-supplier search and extended attributes (services, contracts, attachments).

NEW_ITEM-* field reference

The fields below come directly from the SAP OCI 5.0 specification archived on ediverse.io. Every cart line repeats the entire set with its own [n] index.

FieldRole
NEW_ITEM-DESCRIPTION[n]Item description.
NEW_ITEM-MATNR[n]SRM product number (filled only if known to the catalog).
NEW_ITEM-QUANTITY[n]Quantity ordered on the line.
NEW_ITEM-UNIT[n]Unit of measure for the quantity (UNECE Rec 20).
NEW_ITEM-PRICE[n]Item price per price unit.
NEW_ITEM-PRICEUNIT[n]Price unit (defaults to 1 if empty).
NEW_ITEM-CURRENCY[n]ISO 4217 currency code for the line.
NEW_ITEM-LEADTIME[n]Delivery lead time in days.
NEW_ITEM-VENDOR[n]Vendor ID in the buyer system.
NEW_ITEM-VENDORMAT[n]Vendor's product reference (source catalog).
NEW_ITEM-MANUFACTCODE[n]Manufacturer identifier.
NEW_ITEM-MANUFACTMAT[n]Manufacturer's product reference.
NEW_ITEM-MATGROUP[n]Material group (UNSPSC or internal taxonomy).
NEW_ITEM-SERVICE[n]Service-line flag (rather than goods).
NEW_ITEM-CONTRACT[n]Applicable contract reference.
NEW_ITEM-CONTRACT_ITEM[n]Applicable contract item reference.
NEW_ITEM-EXT_CATEGORY_ID[n]External category identifier (UNSPSC, eCl@ss, etc.).
NEW_ITEM-EXT_CATEGORY[n]External categorisation scheme used.
NEW_ITEM-EXT_PRODUCT_ID[n]External product identifier (GTIN, barcode, etc.).
NEW_ITEM-EXT_SCHEMA_TYPE[n]Type of the external schema in use.
NEW_ITEM-EXT_QUOTE_ID[n]External quote reference associated with the line.
NEW_ITEM-EXT_QUOTE_ITEM[n]External quote item reference.
NEW_ITEM-ATTACHMENT[n]URL or file attached to the line.
NEW_ITEM-ATTACHMENT_PURPOSE[n]Role of the attachment (datasheet, picture, etc.).
NEW_ITEM-LONGTEXT_n:132[]Long descriptive text for the line (multi-line).
NEW_ITEM-ITEM_TYPE[n]Line type (catalog, service, etc.).
NEW_ITEM-PARENT_ID[n]Parent identifier for hierarchical structures.
NEW_ITEM-SLD_SYS_NAME[n]Source system name (System Landscape Directory).
NEW_ITEM-CUST_FIELD1[n]5Customer extension fields, free use.

Use cases

  • Catalog punchout in SAP SRM / S/4HANA Sourcing — the user browses the supplier catalog from the requisition creation screen; on return, NEW_ITEM-* lines populate the requisition automatically, which then proceeds through the internal approval workflow.
  • SAP Ariba Punchout — even though Ariba leads with cXML, OCI remains accepted for legacy suppliers, in particular specialised catalogs (office supplies, industrial supplies, MRO).
  • Federated multi-supplier search (OCI 5.0) — the buyer submits a text query against several OCI 5.0 catalogs simultaneously; each catalog answers with a structured list of items directly consumable by the ERP.
  • MRO catalogs — small hardware, consumables, PPE: OCI remains the dominant choice among suppliers in these families.

Further reading