How it works
One integration instead of one per courier.
Add Shipstack once and every courier you ship with works the same way. Here is what that looks like day to day.
Three steps to a parcel on its way
Ask for a price
Send the parcel and the destination. Every courier you have switched on answers at once, and you get their prices back together.
Buy the label
Pick a price and buy it. The label comes back ready to print, along with any customs paperwork the destination needs.
Track the parcel
Follow it to the door. Every courier reports progress in the same words, so your order page reads the same whoever carries it.
You bring your own courier accounts, so the prices you see are the ones you have negotiated. Shipstack never marks them up.
Every courier answers at once
Asking six couriers one after another means waiting six times. Shipstack asks them all at the same moment, so you wait once and compare the answers side by side.
If one courier is slow or having a bad morning, you still get everyone else's prices. A quiet courier is reported next to the prices that did arrive, rather than holding up the whole request or failing it.
In practice that means a checkout that always shows a delivery option, even on the days a carrier is struggling.
{
"rates": [
{ "courier": "dpd", "service_name": "DPD Next Day",
"total": { "amount": 749, "currency": "GBP" } }
],
"failures": [
{ "courier": "ups", "reason": "upstream timeout" },
{ "courier": "fedex", "reason": "rate limited" }
]
}
Every courier, the same way
Couriers each have their own way of describing an address, a parcel and a delivery. Shipstack does that translation for you, so you learn one way of doing things and it works everywhere. Adding a courier later does not mean rewriting anything.
Addresses
UK and international, including the tax details an overseas lane needs.
Parcels
Weight, size, your own references and what is inside.
Customs
The paperwork for shipping abroad, filled in and attached.
Delivery options
Signature, age check, insurance, Saturday, cash on delivery, safe place.
Pickup points
Send to a locker or a local shop instead of a front door.
Prices
Every surcharge itemised, so you can explain a price to a customer.
Labels
Ready for an office printer or a thermal label printer.
Tracking
The same set of updates whoever is carrying the parcel.
Money
Exact amounts throughout, so totals never drift by a penny.
It stays consistent as couriers change
Couriers change how they work without warning. Keeping that from reaching you is our job, not yours.
Every courier is held to the same standard
Before a courier goes live it has to pass the same set of checks as every other one: prices, labels, tracking and cancellations all behave the way the rest do. No courier gets to be the awkward exception your code has to work around.
A fix for one is a fix for all
The fiddly parts, like how dates are read or how a bulky parcel is measured, are handled in one place rather than separately per courier. When a courier changes something, it is corrected once and every courier stays consistent.
Your courier accounts stay yours
Connecting a courier means handing over the login for your account with them. Those details are encrypted before they are stored, using the same standard banks and governments rely on.
They are unlocked only at the moment a parcel is actually being priced or booked, and never shown back to anyone, including us. If someone walked off with a copy of our database, your courier logins would still be unreadable.
Your own key to Shipstack works only for your account, and you can replace it whenever you like.
- Courier logins are encrypted before they are stored.
- Unlocked only while a parcel is being priced or booked.
- Never displayed back to anyone, including us.
- This website holds no customer or shipping data at all.
See it in a request.
The quickstart goes from an API key to a printed label.