Delivery dates your carrier actually keeps.
One API call that keeps three calendars apart: the days you dispatch and your cutoff time, the days your carrier delivers, and public holidays. So a Friday order with 3-day transit says Wednesday, not Monday.
Try the live demo Get early API access
Why existing "estimated delivery date" tools get it wrong
- They count business days only. Merchants on r/shopify ship with DPD, which delivers on Saturdays, but the platform's transit setting ignores that and quotes a date that is a day late.
- Cutoff times are ignored. A one-star review of a popular Shopify EDD app says the cutoff setting "simply did not work, no matter what time we entered", and weekend non-working days still produced the wrong dispatch day.
- Friday + 3 days = Monday. Another review of the same app: an order placed Friday with a 3-day window "states Monday as the delivery day when it should be Wednesday".
ShipDate treats dispatch days, carrier delivery days, cutoff (in the merchant timezone), public holidays and your own closures as separate inputs, and returns the reasoning so you can check it.
Pricing (planned)
Free
1,000 API calls / 30 days. All countries, explain output.
Pay as you go
After the free tier. No minimum, cancel any time.
Shopify app
Storefront "arrives by" widget with these rules. Coming after the API.
Nothing is charged today. Join the list and we'll email you once when the API opens.
API
curl -X POST https://shipdate.wrenbench.com/api/v1/delivery-date \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"ordered_at": "2026-10-23T09:00:00Z",
"tz": "Europe/London",
"cutoff": "14:00",
"dispatch_days": ["mon","tue","wed","thu","fri"],
"carrier_delivery_days": ["mon","tue","wed","thu","fri","sat"],
"transit_days": { "min": 1, "max": 3 },
"holiday_country": "GB",
"extra_closures": ["2026-12-24"]
}'
{
"dispatch_date": "2026-10-23",
"delivery_min": "2026-10-26",
"delivery_max": "2026-10-28",
"explain": ["Order placed 2026-10-23 10:00 Europe/London (Fri); cutoff 14:00.", "..."],
"holidays_applied": [],
"weekdays": { "dispatch": "fri", "delivery_min": "mon", "delivery_max": "wed" }
}Invalid input returns 422 with a machine-readable code. Over quota returns 402 with payment options in the body, so AI agents and checkout bots can pay per call without a signup (planned).
FAQ
- Which holidays are included?
- Nationwide public holidays for GB, US, DE, IN, AU, CA for 2026 and 2027, including substitute days. Regional and lunar-calendar holidays are not included yet; a nightly Nager.Date sync covering 100+ countries is next.
- Does a public holiday stop dispatch or delivery?
- Both. Your own closure dates stop dispatch only, because the carrier still moves parcels already in its network.
- What happens exactly at the cutoff minute?
- An order placed at 14:00 with a 14:00 cutoff is treated as after cutoff and dispatches on the next dispatch day.
- Can I use it from a Shopify theme today?
- Not yet. The validation stage is this page and the API. Leave your email and say "Shopify" and we will prioritise the storefront widget.
- Is my data stored?
- The demo stores nothing. The waitlist stores your email, platform and note. That is all.