Skip to content

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

01

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.

02

Buy the label

Pick a price and buy it. The label comes back ready to print, along with any customs paperwork the destination needs.

03

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.

One slow courier does not stop the rest
{
  "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.

ask a price buy a label track a parcel Shipstack courier price label tracking

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.

Read the quickstart