Receipts
Shipments other suppliers sent you, and confirming what arrived.
List incoming shipments
https://api.dawatrack.com/partner-api/v1/receipts/incoming/
Shipments other suppliers on DawaTrack sent your supplier account, newest first.
batches:read
Limit 5,000 per day
Your credential must belong to an API account linked to a supplier account; otherwise 403, as for confirming one.
status=waiting (the default) lists shipments with no confirmed receipt; status=all lists every one, with received_quantity once confirmed.
Query parameters
-
orderingstring OptionalWhich field to use when ordering the results.
-
pageinteger OptionalA page number within the paginated result set.
-
page_sizeinteger OptionalNumber of results to return per page.
-
searchstring OptionalA search term.
-
statusstring Optionalwaiting (default): not yet confirmed; all: every shipment.
Example request
curl -X GET https://api.dawatrack.com/partner-api/v1/receipts/incoming/ \
-H "Authorization: Bearer $DAWATRACK_TOKEN"
import requests
token = "..." # from POST /oauth/token/
response = requests.get(
"https://api.dawatrack.com/partner-api/v1/receipts/incoming/",
headers={"Authorization": f"Bearer {token}"},
)
response.raise_for_status()
print(response.json())
const token = "..."; // from POST /oauth/token/
const response = await fetch("https://api.dawatrack.com/partner-api/v1/receipts/incoming/", {
method: "GET",
headers: {
Authorization: `Bearer ${token}`,
},
});
console.log(await response.json());
Response fields
A page of results. These are the fields of each item in results. See Pagination.
-
shipment_idinteger -
gtinstringThe product's GS1 GTIN, as 14 digits.
-
batch_numberstringThe batch or lot number.
-
quantityintegerUnits the sender declared.
-
expiry_datestring Read-onlyThe lot's expiry, as its owner recorded it.
-
manufacture_datestring Read-onlyThe lot's manufacture date, or blank.
-
sender_namestring Read-only -
medicine_namestring Read-onlyThe product's name.
-
shipped_atdatetime -
received_quantityinteger or null Read-onlyUnits confirmed, or null if not yet.
-
recallobject or null Read-onlyThe open recall of this lot, or null. Receive it all the same, and hold the stock.
-
recall_idinteger -
actionenumquarantine: hold the stock; don't sell, dispense or ship it, and return it as the recall instructs. caution: a caution-in-use alert; the stock may be used following the instructions.
Possible values:quarantinecaution -
classificationstring -
reasonstring -
instructionsstringWhat facilities should do.
-
issued_bystring -
issued_atdatetime
-
Example response
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"shipment_id": 1,
"gtin": "06164004321562",
"batch_number": "BTH-2026-041",
"quantity": 2600,
"expiry_date": "expiry_date",
"manufacture_date": "manufacture_date",
"sender_name": "sender_name",
"medicine_name": "Amoxicillin 500 mg capsules",
"shipped_at": "2026-10-10T09:00:00Z",
"received_quantity": 1,
"recall": {
"recall_id": 42,
"action": "quarantine",
"classification": "classification",
"reason": "CONTAMINATION",
"instructions": "Quarantine the batch and await collection instructions.",
"issued_by": "issued_by",
"issued_at": "2026-10-10T09:00:00Z"
}
}
]
}
Status codes
200 | OK |
401 | No valid access token |
403 | Your credential lacks the scope, partner type or environment this needs |
429 | Rate limit exceeded |
Confirm a receipt
https://api.dawatrack.com/partner-api/v1/receipts/
Record what arrived of a shipment another supplier sent you: one RECEIVE event linked to their SHIP.
events:write
Production credentials only
Limit 5,000 per day
shipment_id is from GET /receipts/incoming/. A shipment not addressed to your supplier account is 404.
quantity can be less than declared, with a note saying what happened; more than declared is 400. Each shipment is confirmed once.
The same confirmation as the supplier portal's Receiving screen: either one counts. Production credentials only.
Request body
JSON. Send Content-Type: application/json.
-
shipment_idinteger Required -
quantityinteger RequiredUnits that arrived; at most what was declared.
-
notestring OptionalRequired when fewer units arrived.
Example request
curl -X POST https://api.dawatrack.com/partner-api/v1/receipts/ \
-H "Authorization: Bearer $DAWATRACK_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"shipment_id": 123,
"quantity": 30,
"note": ""
}'
import uuid
import requests
token = "..." # from POST /oauth/token/
response = requests.post(
"https://api.dawatrack.com/partner-api/v1/receipts/",
headers={"Authorization": f"Bearer {token}", "Idempotency-Key": str(uuid.uuid4())},
json={
"shipment_id": 123,
"quantity": 30,
"note": ""
},
)
response.raise_for_status()
print(response.json())
const token = "..."; // from POST /oauth/token/
const response = await fetch("https://api.dawatrack.com/partner-api/v1/receipts/", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"shipment_id": 123,
"quantity": 30,
"note": ""
}),
});
console.log(await response.json());
Response fields
-
event_idinteger -
shipment_idinteger -
gtinstringThe product's GS1 GTIN, as 14 digits.
-
batch_numberstringThe batch or lot number.
-
quantityintegerThe number of units.
-
occurred_atdatetimeWhen the event happened.
-
recallobject or null Read-onlyThe open recall of this lot, or null. The receipt is recorded; hold the stock.
-
recall_idinteger -
actionenumquarantine: hold the stock; don't sell, dispense or ship it, and return it as the recall instructs. caution: a caution-in-use alert; the stock may be used following the instructions.
Possible values:quarantinecaution -
classificationstring -
reasonstring -
instructionsstringWhat facilities should do.
-
issued_bystring -
issued_atdatetime
-
Example response
{
"event_id": "5c0e7d2a-91b4-4f63-8a27-0d4e6b9c1f35",
"shipment_id": 1,
"gtin": "06164004321562",
"batch_number": "BTH-2026-041",
"quantity": 2600,
"occurred_at": "2026-10-10T09:00:00Z",
"recall": {
"recall_id": 42,
"action": "quarantine",
"classification": "classification",
"reason": "CONTAMINATION",
"instructions": "Quarantine the batch and await collection instructions.",
"issued_by": "issued_by",
"issued_at": "2026-10-10T09:00:00Z"
}
}
Status codes
201 | Created |
400 | The request is invalid, for example a malformed GTIN or a missing field |
401 | No valid access token |
403 | Your credential lacks the scope, partner type or environment this needs |
404 | Not found, or not visible to your credential |
409 | Conflict: a request with this Idempotency-Key is in progress, or the record already exists |
429 | Rate limit exceeded |
Partner API v1. The API reference is generated from the API's own code.