Retrieve a sales order shipment
Operation ID: getSalesOrderShipment
Group: Accounting › Sales Order Shipments
Open in the interactive reference
GET /accounting/sales-order-shipments/{id}
Read-only: Reads and returns; changes nothing.
Retrieves a sales order shipment. Use the sales order shipment's id, not its shipmentNumber.
The response includes the shipment's lines. A shipment created with POST accounting/sales-order-shipments starts with shippedQty 0 on every line. Inventory fills in the quantities when the shipment is committed there.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
id |
path | string | yes | The unique identifier of the sales order shipment you want to retrieve. Example: "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45". |
Response
200 Success
Under data (getSalesOrderShipmentOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the sales order shipment. Example: "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45". |
salesOrderId |
string | yes | The sales order this shipment fulfills. See id on GET accounting/sales-orders/:id. Example: "9c2a6a10-7d34-4c8e-9b21-5a0f3e6d81b7". |
inventoryShipmentId |
number | no | The numeric identifier of the shipment document in inventory, which owns the shipment. Absent only on legacy rows written before the mirroring existed. Example: 4242. |
shipmentNumber |
string | no | The shipment document number, assigned by inventory. Absent until inventory has issued one. Example: "SHP-1042". |
status |
string | no | The lifecycle status of the shipment. Possible values: 'pendingShipment', 'shipped', 'cancelled'. 'pendingShipment' is drafted in inventory but not yet dispatched, 'shipped' is dispatched, and 'cancelled' means the inventory shipment was deleted and this mirror was soft-canceled. Example: "shipped". |
trackingId |
string | no | The carrier tracking number or tracking URL, when one has been recorded. Example: "1Z999AA10123456784". |
carrier |
string | no | The name of the carrier handling the shipment. Example: "DHL". |
incoterm |
string | no | The incoterm governing shipping responsibility for this shipment. For example 'DAP' or 'EXW'. Example: "DAP". |
warehouseId |
string | no | The warehouse location the shipment is dispatched from. See id on GET inventory/warehouses/:id. Example: "1a24d5e9-3b7d-4f80-9c6d-2e8f70b13a45". |
shipToContactEmail |
string | no | The email of the contact who receives this shipment. |
customerRequestDate |
date | no | The date the customer asked for delivery. Format YYYY-MM-DD. |
shipDate |
date | no | The date the shipment was dispatched. Format YYYY-MM-DD. Absent while the shipment is still pending. Example: "2026-08-19". |
deliveryDate |
date | no | The date the shipment was, or is expected to be, delivered. Format YYYY-MM-DD. Example: "2026-08-22". |
lastModifiedDate |
date-time | yes | The date and time the shipment last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-20T10:15:00.000Z". |
items |
array<object> | yes | The shipped lines, oldest first. An empty array when the shipment has no lines. Example: [{"id":"5a0f3e6d-81b7-4c8e-9b21-9c2a6a107d34","salesOrderProductItemId":"7d345a0f-3e6d-4c8e-9b21-9c2a6a10b7f1","shippedQty":"3","orderedQty":"5","unshippedQty":"2"}]. |
items[].id |
string | yes | The unique identifier for the shipment line. PATCH matches updateItems and deleteItems on it. |
items[].salesOrderProductItemId |
string | yes | The sales order product item this shipment line is for. See items[].id on GET accounting/sales-orders/:id. |
items[].shippedQty |
decimal | yes | The quantity shipped on this line, as a count of units. |
items[].orderedQty |
decimal | yes | The total quantity ordered for the sales order product item, as a count of units. |
items[].unshippedQty |
decimal | yes | The quantity still outstanding on this line, as a count of units: orderedQty minus shippedQty. |
{
"data": {
"id": "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45",
"salesOrderId": "9c2a6a10-7d34-4c8e-9b21-5a0f3e6d81b7",
"inventoryShipmentId": 4242,
"shipmentNumber": "SHP-1042",
"status": "shipped",
"trackingId": "1Z999AA10123456784",
"carrier": "DHL",
"incoterm": "DAP",
"warehouseId": "1a24d5e9-3b7d-4f80-9c6d-2e8f70b13a45",
"shipToContactEmail": "<shipToContactEmail>",
"customerRequestDate": "2026-01-15",
"shipDate": "2026-08-19",
"deliveryDate": "2026-08-22",
"lastModifiedDate": "2026-08-20T10:15:00.000Z",
"items": [
{
"id": "5a0f3e6d-81b7-4c8e-9b21-9c2a6a107d34",
"salesOrderProductItemId": "7d345a0f-3e6d-4c8e-9b21-9c2a6a10b7f1",
"shippedQty": "3",
"orderedQty": "5",
"unshippedQty": "2"
}
]
},
"diagnostics": [
{
"code": "<code>",
"message": "<message>",
"severity": "error",
"path": [
"<path>"
],
"details": "<details>"
}
]
}
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error