Purchase order response
nutrab2b.order.responded.v2 · Ordering
- Purpose
- Accept, reject or change the order line by line (quantity, date, price, substitution, back-order).
- When to send
- PO or PO change received.
- Sender → receiver
- Supplier → Buyer
- Expected responses
- ACK
- Equivalent standards
- X12: 855 · EDIFACT: ORDRSP · GS1: OrderResponse · SAP: ORDRSP IDoc
- Scenarios using it
- Full order-to-cash · PO rejected below MOQ · Partial acceptance with back-order · PO response must answer every line · Quantity change after acknowledgement · Cancel race after shipment · Split shipment, two lots · Over-shipment beyond tolerance · Multi-pallet, multi-lot SSCC hierarchy · Release against blanket contract · Failed CoA blocks shipment · Out-of-spec lot ships under deviation · Hold blocks shipment until release · Organic certificate expired before shipment · Remaining shelf life too short · Cold-chain excursion · Duplicate delivery (idempotency) · Out-of-order events are parked and released · Dropped event, gap detected, replay · Three-way match failures · Short receipt settled with credit note
Fields and mappings
| Field | Type | Req | Description | Code list / format | EDI / GS1 / SAP mapping |
|---|---|---|---|---|---|
| po_number | string | yes | PO answered | ||
| response | string | yes | accepted | rejected | changed | ^(accepted|rejected|changed)$ | x12: BAK02 (AT/RD/AC) edifact: BGM 1225 (29/27/4) |
| reject_reason | string | Reason when rejected | reject_reason | ||
| lines | array<object> | yes | One entry per PO line | ||
| line_no | integer | yes | PO lineNB-R014 NB-R016 | ||
| status | string | yes | Line status | line_status | x12: ACK01 |
| quantity | object | Confirmed quantity | |||
| value | number | yes | Quantity | ||
| uom | string | yes | Unit of measure | uom | |
| unit_price | object | Confirmed price | |||
| amount | number | yes | Amount in major units, decimals ≤ currency minor unitsNB-R011 | ||
| currency | string | yes | Currency | currency | |
| promised_date | date | Promised ship date | |||
| substitute_item_id | string | Substituted item |
Business rules
- NB-R014 Line reference unknown, response, ship notice or invoice line refers to a PO line that does not exist.
- NB-R016 Partial response incomplete, every PO line needs a line status in a PO response.
Example
{
"specversion": "2.0",
"id": "evt-po_response-PO-55012-1",
"type": "nutrab2b.order.responded.v2",
"source": "urn:gln:4012345000009:erp",
"subject": "PO-55012",
"time": "2026-11-02T09:00:00Z",
"datacontenttype": "application/json",
"dataschema": "https://nutrab2b.org/schemas/2.0/PO_RESPONSE.json",
"sender": {
"gln": "4012345000009"
},
"receiver": {
"gln": "0614141000012"
},
"correlationid": "CONV-RFQ-1001",
"idempotencykey": "PO_RESPONSE:PO-55012:1",
"sequence": 1,
"env": "test",
"data": {
"po_number": "PO-55012",
"response": "accepted",
"lines": [
{
"line_no": 1,
"status": "IA",
"quantity": {
"value": 500,
"uom": "KGM"
},
"promised_date": "2026-11-25"
}
]
}
}Mapping checklist
- Every required field populated from your system of record
- Coded fields mapped to the Bodylia OpenB2B code lists
- GLN, GTIN and SSCC check digits validated
- Rules above pass in the validator
- Idempotency key and per-subject sequence generated
- Expected responses, including rejections, handled
