ShippitDeveloper Centre

Estimated delivery dates API

The estimated delivery dates API returns estimated delivery times for different service levels based on origin and destination postcodes.

Endpoints

The estimate object

The response is an array of estimated delivery dates grouped by service level.

service_levelstringRequired
The service level for this estimate. Valid values are standard or express
estimated_deliveryobjectRequired
Estimated delivery window for this service level
Show child attributesHide child attributes
earlieststring (ISO 8601 date)Optional
The earliest estimated delivery date. null when confidence is none.
lateststring (ISO 8601 date)Optional
The latest estimated delivery date. null when confidence is none.
confidenceenumRequired
Confidence level for the estimate. See the confidence values table.
displaystringRequired
Pre-formatted delivery message ready to show customers. Render this directly—no client-side date logic required.

Confidence values

The confidence field indicates the reliability of the delivery window and controls how display reads.

ValueMeaningExample display
highearliest and latest are the same date. High accuracy estimate."Arrives Tue, Apr 20"
mediumearliest and latest differ by a moderate spread."Arrives Tue, Apr 20 - Wed, Apr 21"
lowWide spread between earliest and latest."Arrives by Mon, Apr 27"
noneNo data available for this route or service level. earliest and latest are null."3 to 5 business days"

Use the display string as-is for all confidence levels. It's pre-formatted server-side and requires no additional date logic.

Sample responseJSON
[
  {
    "service_level": "standard",
    "estimated_delivery": {
      "earliest": "2026-04-20",
      "latest": "2026-04-22",
      "confidence": "medium",
      "display": "Arrives Tue, Apr 20 - Thu, Apr 22"
    }
  },
  {
    "service_level": "express",
    "estimated_delivery": {
      "earliest": "2026-04-18",
      "latest": "2026-04-18",
      "confidence": "high",
      "display": "Arrives Sat, Apr 18"
    }
  }
]

Retrieve estimated delivery dates

POST/api/v3/estimated_delivery_dates

Submits a request to get estimated delivery dates for different service levels between specified postcodes.

At minimum, a request requires origin and destination postcodes. However, you can optionally filter by specific couriers, service levels, or provide additional context like fulfilment time or pickup schedules to get more accurate estimates.

The API returns a delivery window for each available service level, including the earliest and latest estimated delivery dates, a confidence level, and a pre-formatted display string ready to show customers.

To perform this operation, you must be authenticated with an authentication token.

Parameters

from_postcodestringRequired
Origin postcode for the delivery estimate
to_postcodestringRequired
Destination postcode for the delivery estimate
couriersarray of stringsOptional
List of carrier strings to provide estimates for. If not provided, all available carriers are considered.
service_levelsarray of stringsOptional
An array of service levels to return estimates for. Valid values are standard or express.
preparation_timestringOptional
Lead time required for order fulfilment before pickup in format DD:HH:MM. For example, 01:05:30 is 1 day, 5 hours and 30 minutes.
pickup_days_per_courierarray of objectsOptional
Array of pickup days for the carrier
Show child attributesHide child attributes
courierstringRequired
Name of the carrier
pickup_daysarray of stringsRequired
Days when pickup is available, in lowercase
pickup_timestringRequired
Time when pickup occurs, in format HH:MM
store_operating_hoursarray of objectsOptional
Array of store operating hours
Show child attributesHide child attributes
dayenumRequired
The day of the week in lowercase. Possible values are monday, tuesday, wednesday, thursday, friday, saturday, sunday.
beginning_of_workdaystringRequired
The start time of the workday in HH:MM format
end_of_workdaystringRequired
The end time of the workday in HH:MM format
is_openbooleanRequired
Whether the store is open on the given day. Use true for open, false for closed.

Response codes

StatusMeaningDescription
200OKSuccessful delivery estimate response. Returns an empty array if no carrier is enabled for the merchant.
400Bad RequestThe request body isn't valid JSON
401UnauthorizedThe Authorization header is missing, or the API key doesn't match a valid merchant account. The response has no body.
422Unprocessable EntityA required parameter is missing, or a parameter is the wrong type. details names each field that failed.
429Too Many RequestsMore than 1000 requests in a minute for the same API key. The RateLimit-* response headers carry your remaining quota.
500Internal Server ErrorAn unknown error occurred
RequestJSON
{
  "from_postcode": "2000",
  "to_postcode": "3000",
  "couriers": ["CouriersPlease", "eParcelExpress"],
  "service_levels": ["standard", "express"],
  "preparation_time": "00:01:05",
  "pickup_days_per_courier": [
    {
      "courier": "eParcelExpress",
      "pickup_days": ["monday", "tuesday"],
      "pickup_time": "16:00"
    },
    {
      "courier": "CouriersPlease",
      "pickup_days": ["monday", "friday"],
      "pickup_time": "09:00"
    }
  ],
  "store_operating_hours": [
    {
      "day": "monday",
      "open_time": "09:00",
      "close_time": "17:00"
    },
    {
      "day": "tuesday",
      "open_time": "09:00",
      "close_time": "17:00"
    }
  ]
}
JSON
[
  {
    "service_level": "standard",
    "estimated_delivery": {
      "earliest": "2026-04-20",
      "latest": "2026-04-22",
      "confidence": "medium",
      "display": "Arrives Tue, Apr 20 - Thu, Apr 22"
    }
  },
  {
    "service_level": "express",
    "estimated_delivery": {
      "earliest": "2026-04-18",
      "latest": "2026-04-18",
      "confidence": "high",
      "display": "Arrives Sat, Apr 18"
    }
  }
]