Retrieve a receipt
Operation ID: getReceipt
Group: Inventory › Receipts
Open in the interactive reference
GET /inventory/receipts/{id}
Read-only: Reads and returns; changes nothing.
Retrieves a receipt. Use the receipt's id, not its documentNumber.
The response includes all of the receipt's lines and their batch, serial, and bin detail. POST inventory/receipts/search returns the same fields. The collection GET inventory/receipts returns the receipt's main fields only, with lineCount instead of the lines.
Read lineType before reading a line. An Inventory line has an item, a warehouse, and a quantity. A Service or Expense line has serviceDescription, an amount, and an expense account instead, and no item or warehouse.
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 receipt you want to retrieve. |
Response
200 Success
Under data (getReceiptOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the receipt. Example: "6a1f30c9-4d82-4b57-9e60-83c25f0a71b4". |
documentNumber |
string | no | The receipt number, for example 'GR-2291'. Assigned when the receipt is created. Example: "GR-2291". |
documentStatus |
string | yes | The status of the receipt. It is DRAFT when the receipt is created through this API and COMMITTED once you commit it with POST inventory/receipts/:id/commit. The receiving and invoicing processes set the other statuses. Example: "DRAFT". |
documentDate |
date | yes | The date of the receipt. Format YYYY-MM-DD. Example: "2026-08-14". |
deliveryDate |
date | no | The date the goods arrived or are expected. Format YYYY-MM-DD. Example: "2026-08-14". |
entityId |
string | yes | The legal entity the receipt belongs to. Example: "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43". |
entityName |
string | no | The name of that legal entity. Example: "Acme Netherlands B.V.". |
businessPartnerId |
string | yes | The vendor the goods came from. Example: "b62e4f17-0c93-4a58-8d21-5f70e3b9a4c6". |
businessPartnerName |
string | no | The name of that vendor. Example: "Van Dijk Components B.V.". |
referenceNumber |
string | no | The vendor's own reference, typically their delivery note number. Example: "DN-77120". |
trackingNumber |
string | no | The carrier's tracking number for the inbound shipment. |
currency |
string | no | ISO 4217 code governing every amount on the document. The VENDOR's currency, which need not be the entity's functional one — see functionalUnitPrice on the line. Example: "EUR". |
totalAmount |
decimal | no | The total value of the receipt, in the receipt's currency. Example: "725.00". |
notes |
string | no | Free text on the receipt. Example: "Received at the back dock". |
createdDate |
date-time | no | The date and time the receipt was created, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T09:20:00.000Z". |
lastModifiedDate |
date-time | no | The date and time the receipt last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: "2026-08-14T09:20:00.000Z". |
lines |
array<object> | yes | The lines of the receipt, oldest first. A receipt always has at least one line. Example: [{"id":"8c14a6f2-3b70-4d59-9e02-6f5a1d38b47c","lineType":"Inventory","itemId":"5f21c8b0-9d34-4a76-8e12-04b93c7de5a8","itemCode":"WIDGET-01","itemName":"Standard widget","locationId":"e1d84c07-5b39-4a26-9f70-2c8b613ad495","locationCode":"WH-01","locationName":"Rotterdam Distribution Centre","unitId":"3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45","unitCode":"EA","quantity":"200.00","inventoryQuantity":"200.00","openQuantity":"200.00","unitPrice":"3.20","lineTotal":"640.00","sourceDocumentLineId":"551043","sourceDocumentLineType":"PurchaseOrderLine","notes":"Two pallets"},{"id":"d0a7e3b5-2f61-4c98-b704-1a5e9c86d243","lineType":"Service","serviceDescription":"Inbound freight","lineTotal":"85.00","expenseAccountId":"4b7c0e29-6d15-4830-9f42-8a3e57c1d604","expenseAccountNumber":"615200","expenseAccountName":"Inbound freight"}]. |
lines[].id |
string | yes | The unique identifier for the line. Use it in updateLines and deleteLines. |
lines[].lineType |
string | no | The type of the line. Possible values: 'Inventory', 'Service', 'Expense'. Only an Inventory line moves stock. A Service or Expense line records something bought that does not enter a warehouse and has a description instead of an item. |
lines[].itemId |
string | no | The item received. Absent on a Service or Expense line. |
lines[].itemCode |
string | no | The short code of that item. |
lines[].itemName |
string | no | The name of that item. |
lines[].serviceDescription |
string | no | What a Service or Expense line is for. Absent on an Inventory line. |
lines[].locationId |
string | no | The warehouse the goods went into. Absent on a Service or Expense line. |
lines[].locationCode |
string | no | The short code of that warehouse. |
lines[].locationName |
string | no | The name of that warehouse. |
lines[].unitId |
string | no | The unit the quantity is counted in. |
lines[].unitCode |
string | no | The short code of that unit. |
lines[].quantity |
decimal | no | The quantity received, in the line's unit. |
lines[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].receivedQuantity |
decimal | no | The quantity actually received, where the receiving process records it separately. |
lines[].openQuantity |
decimal | no | The quantity still to be invoiced. |
lines[].returnedQuantity |
decimal | no | The quantity that has gone back on a purchase return. |
lines[].unitPrice |
decimal | no | The price of one unit, in the receipt's currency. |
lines[].lineTotal |
decimal | no | The total for the line, in the receipt's currency. |
lines[].functionalUnitPrice |
decimal | no | The unit price in the entity's functional currency. Present when the receipt is in another currency. |
lines[].functionalLineTotal |
decimal | no | The line total in the entity's functional currency. |
lines[].expenseAccountId |
string | no | The general ledger account a Service or Expense line is charged to. Absent on an Inventory line. |
lines[].expenseAccountNumber |
string | no | The number of that account. |
lines[].expenseAccountName |
string | no | The name of that account. |
lines[].status |
string | no | Where the line is in the receiving process. This is free text, with no fixed set of values. |
lines[].sourceDocumentLineId |
string | no | The purchase order line this line was received against. It is a numeric id in string form, not a UUID. Purchase order lines are not individually addressable, so there is no endpoint that takes it. |
lines[].sourceDocumentLineType |
any | no | The kind of source document line this receipt line was created from. One of: "IMInventorySalesOrderLine", "IMInventorySalesDeliveryLine", "IMSalesOrderLine", "IMInventoryPurchaseReturnLine", "IMInventorySalesReturnLine", "IMWarehouseTransferLine", "IMInventoryDecreaseLine", "IMInventoryIncreaseLine", "IMInventoryRevaluationLine", "IMInventoryTransferLine", "IMInventoryAdjustmentLine", "IMInventoryCountLine", "IMInventoryPutAwayTask", "IMInventoryPurchaseReturnReversal", "PurchaseOrderLine", "IMLandedCostAllocationLine", "SalesOrderProductItem", "IMWarehouseTransferOrderLine", "VendorBillItemBase", "InvPurchaseDeliveryLine". |
lines[].notes |
string | no | Free text on the line. |
lines[].batches |
array<object> | no | The batches received on this line, for a batch-tracked item. Absent when the item is not batch-tracked. |
lines[].batches[].batchNumberId |
string | no | The unique identifier for the batch record this entry created or matched. |
lines[].batches[].batchNumber |
string | yes | The batch number as printed. |
lines[].batches[].expirationDate |
date | no | The expiration date of the batch. Format YYYY-MM-DD. |
lines[].batches[].quantity |
decimal | yes | The quantity of this batch received, in the line's unit. |
lines[].batches[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].batches[].openQuantity |
decimal | no | The quantity of this batch still to be invoiced. |
lines[].batches[].returnedQuantity |
decimal | no | The quantity of this batch that has gone back to the vendor. |
lines[].batches[].unitCost |
decimal | no | The cost of one unit of this batch, in the receipt's currency. |
lines[].serials |
array<object> | no | The serialized units received, one entry per unit. Absent when the item is not serialized. |
lines[].serials[].serialNumberId |
string | no | The unique identifier for the serial record this entry created or matched. |
lines[].serials[].serialNumber |
string | yes | The serial number as stamped on the unit. |
lines[].serials[].openQuantity |
decimal | no | The quantity of this unit still to be invoiced. |
lines[].serials[].returnedQuantity |
decimal | no | The quantity of this unit that has gone back to the vendor. |
lines[].serials[].unitCost |
decimal | no | The cost of this unit, in the receipt's currency. |
lines[].binLocations |
array<object> | no | The bins the goods went into, in a bin-tracked warehouse. One flat array per line: an entry that names a batchNumber or serialNumber belongs to that batch or unit, and one that names neither belongs to the line. |
lines[].binLocations[].binLocationId |
string | yes | The bin the goods went into. |
lines[].binLocations[].binLocationCode |
string | no | The short code of that bin. |
lines[].binLocations[].quantity |
decimal | yes | The quantity put into this bin, in the line's unit. |
lines[].binLocations[].inventoryQuantity |
decimal | no | The same quantity in the item's stocking unit. |
lines[].binLocations[].batchNumber |
string | no | The batch this bin entry belongs to, when it belongs to one of the line's batches. |
lines[].binLocations[].serialNumber |
string | no | The serialized unit this bin entry belongs to, when it belongs to one of the line's units. |
{
"data": {
"id": "6a1f30c9-4d82-4b57-9e60-83c25f0a71b4",
"documentNumber": "GR-2291",
"documentStatus": "DRAFT",
"documentDate": "2026-08-14",
"deliveryDate": "2026-08-14",
"entityId": "1a9c4e70-38b5-4d26-9f01-7c2e5b8a6d43",
"entityName": "Acme Netherlands B.V.",
"businessPartnerId": "b62e4f17-0c93-4a58-8d21-5f70e3b9a4c6",
"businessPartnerName": "Van Dijk Components B.V.",
"referenceNumber": "DN-77120",
"trackingNumber": "<trackingNumber>",
"currency": "EUR",
"totalAmount": "725.00",
"notes": "Received at the back dock",
"createdDate": "2026-08-14T09:20:00.000Z",
"lastModifiedDate": "2026-08-14T09:20:00.000Z",
"lines": [
{
"id": "8c14a6f2-3b70-4d59-9e02-6f5a1d38b47c",
"lineType": "Inventory",
"itemId": "5f21c8b0-9d34-4a76-8e12-04b93c7de5a8",
"itemCode": "WIDGET-01",
"itemName": "Standard widget",
"locationId": "e1d84c07-5b39-4a26-9f70-2c8b613ad495",
"locationCode": "WH-01",
"locationName": "Rotterdam Distribution Centre",
"unitId": "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45",
"unitCode": "EA",
"quantity": "200.00",
"inventoryQuantity": "200.00",
"openQuantity": "200.00",
"unitPrice": "3.20",
"lineTotal": "640.00",
"sourceDocumentLineId": "551043",
"sourceDocumentLineType": "PurchaseOrderLine",
"notes": "Two pallets"
},
{
"id": "d0a7e3b5-2f61-4c98-b704-1a5e9c86d243",
"lineType": "Service",
"serviceDescription": "Inbound freight",
"lineTotal": "85.00",
"expenseAccountId": "4b7c0e29-6d15-4830-9f42-8a3e57c1d604",
"expenseAccountNumber": "615200",
"expenseAccountName": "Inbound freight"
}
]
},
"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