Skip to main content

Consignments

Your consignments (despatch advice) and, line by line, what the receiver recorded of them (receiving advice): whether each arrived, short, damaged or refused.

List your consignments

GET https://api.dawatrack.com/partner-api/v1/consignments/

Your consignments, newest first: those you sent, those your linked supplier account declared on the portal, and those your linked facilities dispatched.

Scope batches:read Limit 5,000 per day

Each has its number, its biz_transaction (the CBV desadv URI the EPCIS export uses, so the two join), carrier, waybill and expected date, and its receiver: whether it is on DawaTrack, its party_id on GET /parties/ and whether a recall can reach it (reachable). Never its email or phone.

Each line has received, short, damaged and refused units and how it was confirmation: recorded on DawaTrack by the receiver, scanned or typed through its link, or declared on another party's word.

state: confirmed (every line answered), partly_confirmed, waiting, or not_confirmed (a receiver outside DawaTrack that hasn't answered 7 days after it left), or cancelled (every line retracted).

since (a date, default 90 days ago) and state filter the list; a bad value is 400. Subscribe to consignment.received and consignment.not_confirmed to be told instead of polling.

Query parameters

  • since string Optional

    Dispatched on or after this date (YYYY-MM-DD). Default 90 days ago.

  • state string Optional

    confirmed, partly_confirmed, waiting, not_confirmed or cancelled.

Example request

curl -X GET https://api.dawatrack.com/partner-api/v1/consignments/ \
  -H "Authorization: Bearer $DAWATRACK_TOKEN"
import requests

token = "..."  # from POST /oauth/token/
response = requests.get(
    "https://api.dawatrack.com/partner-api/v1/consignments/",
    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/consignments/", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${token}`,
  },
});
console.log(await response.json());

Response fields

  • number string

    Unique per sender.

  • biz_transaction string or null

    Its EPCIS bizTransaction (CBV desadv), as /batches/{gtin}/{batch}/epcis/ has it.

  • dispatched_at datetime
  • reference string
  • carrier_name string
  • waybill_number string
  • vehicle_registration string
  • expected_delivery_date date or null
  • receiver object
    • name string
    • on_dawatrack boolean
    • party_id integer or null

      Its record on GET /parties/, outside DawaTrack.

    • reachable boolean or null

      Outside DawaTrack: a verified email and a phone on file. Never the contact.

  • state enum

    confirmed: every line answered; partly_confirmed: some; waiting: none yet; not_confirmed: a receiver outside DawaTrack that hasn't answered 7 days after it left; cancelled: every line retracted.

    Possible values: confirmedpartly_confirmedwaitingnot_confirmedcancelled
  • lines array of objects
    • event_id integer

      The line's SHIP event.

    • gtin string

      The product's GS1 GTIN, as 14 digits.

    • batch_number string

      The batch or lot number.

    • quantity integer

      Units sent.

    • received integer or null

      Units the receiver recorded, or null if not yet.

    • short integer

      Units that never arrived (RECADV).

    • damaged integer

      Units of those received that arrived damaged.

    • refused integer

      Units refused: still yours to record.

    • confirmation enum or null

      recorded: on DawaTrack by the receiver; scanned/typed: through its link, a scan matching the batch or the quantities typed; declared: on another party's word. Null until answered.

      Possible values: recordedscannedtypeddeclared
    • received_at datetime or null

      When the facility received it.

  • link object or null

    Outside DawaTrack only.

    • sent_to string

      Where its confirm link was last emailed, masked.

    • sent_at datetime or null
    • reminded_at datetime or null

      The one reminder, 2 days on.

Example response

JSON
[
  {
    "number": "number",
    "biz_transaction": "",
    "dispatched_at": "2026-10-10T09:00:00Z",
    "reference": "reference",
    "carrier_name": "carrier_name",
    "waybill_number": "waybill_number",
    "vehicle_registration": "vehicle_registration",
    "expected_delivery_date": "2026-10-10",
    "receiver": {
      "name": "name",
      "on_dawatrack": false,
      "party_id": 1,
      "reachable": false
    },
    "state": "confirmed",
    "lines": [
      {
        "event_id": "5c0e7d2a-91b4-4f63-8a27-0d4e6b9c1f35",
        "gtin": "06164004321562",
        "batch_number": "BTH-2026-041",
        "quantity": 2600,
        "received": 1,
        "short": 1,
        "damaged": 1,
        "refused": 1,
        "confirmation": "recorded",
        "received_at": "2026-10-10T09:00:00Z"
      }
    ],
    "link": {
      "sent_to": "sent_to",
      "sent_at": "2026-10-10T09:00:00Z",
      "reminded_at": "2026-10-10T09:00:00Z"
    }
  }
]

Status codes

200OK
401No valid access token
403Your credential lacks the scope, partner type or environment this needs
429Rate limit exceeded

Get a consignment

GET https://api.dawatrack.com/partner-api/v1/consignments/{number}/

One of your consignments by its number, as the list has it.

Scope batches:read Limit 5,000 per day

A number that isn't one of yours is 404.

Path parameters

  • number string Required

Example request

curl -X GET https://api.dawatrack.com/partner-api/v1/consignments/1/ \
  -H "Authorization: Bearer $DAWATRACK_TOKEN"
import requests

token = "..."  # from POST /oauth/token/
response = requests.get(
    "https://api.dawatrack.com/partner-api/v1/consignments/1/",
    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/consignments/1/", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${token}`,
  },
});
console.log(await response.json());

Response fields

  • number string

    Unique per sender.

  • biz_transaction string or null

    Its EPCIS bizTransaction (CBV desadv), as /batches/{gtin}/{batch}/epcis/ has it.

  • dispatched_at datetime
  • reference string
  • carrier_name string
  • waybill_number string
  • vehicle_registration string
  • expected_delivery_date date or null
  • receiver object
    • name string
    • on_dawatrack boolean
    • party_id integer or null

      Its record on GET /parties/, outside DawaTrack.

    • reachable boolean or null

      Outside DawaTrack: a verified email and a phone on file. Never the contact.

  • state enum

    confirmed: every line answered; partly_confirmed: some; waiting: none yet; not_confirmed: a receiver outside DawaTrack that hasn't answered 7 days after it left; cancelled: every line retracted.

    Possible values: confirmedpartly_confirmedwaitingnot_confirmedcancelled
  • lines array of objects
    • event_id integer

      The line's SHIP event.

    • gtin string

      The product's GS1 GTIN, as 14 digits.

    • batch_number string

      The batch or lot number.

    • quantity integer

      Units sent.

    • received integer or null

      Units the receiver recorded, or null if not yet.

    • short integer

      Units that never arrived (RECADV).

    • damaged integer

      Units of those received that arrived damaged.

    • refused integer

      Units refused: still yours to record.

    • confirmation enum or null

      recorded: on DawaTrack by the receiver; scanned/typed: through its link, a scan matching the batch or the quantities typed; declared: on another party's word. Null until answered.

      Possible values: recordedscannedtypeddeclared
    • received_at datetime or null

      When the facility received it.

  • link object or null

    Outside DawaTrack only.

    • sent_to string

      Where its confirm link was last emailed, masked.

    • sent_at datetime or null
    • reminded_at datetime or null

      The one reminder, 2 days on.

Example response

JSON
{
  "number": "number",
  "biz_transaction": "",
  "dispatched_at": "2026-10-10T09:00:00Z",
  "reference": "reference",
  "carrier_name": "carrier_name",
  "waybill_number": "waybill_number",
  "vehicle_registration": "vehicle_registration",
  "expected_delivery_date": "2026-10-10",
  "receiver": {
    "name": "name",
    "on_dawatrack": false,
    "party_id": 1,
    "reachable": false
  },
  "state": "confirmed",
  "lines": [
    {
      "event_id": "5c0e7d2a-91b4-4f63-8a27-0d4e6b9c1f35",
      "gtin": "06164004321562",
      "batch_number": "BTH-2026-041",
      "quantity": 2600,
      "received": 1,
      "short": 1,
      "damaged": 1,
      "refused": 1,
      "confirmation": "recorded",
      "received_at": "2026-10-10T09:00:00Z"
    }
  ],
  "link": {
    "sent_to": "sent_to",
    "sent_at": "2026-10-10T09:00:00Z",
    "reminded_at": "2026-10-10T09:00:00Z"
  }
}

Status codes

200OK
401No valid access token
403Your credential lacks the scope, partner type or environment this needs
404Not found, or not visible to your credential
429Rate limit exceeded

Partner API v1. The API reference is generated from the API's own code.