Browse Developer Center
Guides

Create a shipment

Get a quote, create the shipment and fetch the label.

After you have a quote, create the shipment with the carrier and service you chose, then fetch its label. All requests need an Authorization: Bearer header.

1. Get orders (optional)#

GET /store/orders/<storeInstallId>

Returns the unfulfilled orders of a connected sales channel. Request it for each store to query orders across all your channels. Skip this step if you create shipments from your own system.

2. Create the shipment#

POST /shipping/order/create/<carrierInstallId>

Send the sender, receiver and parcel details, plus the planId of the service you chose from the quote:

{
  "orderId": "<optional order id>",
  "planId": "<planId from the quote>",
  "pickupDate": "2026-10-20",
  "pickupInstructions": "Leave with reception",
  "firstMileOption": "pickup",
  "senderAddress": {
    "contact": "Main Warehouse",
    "line1": "1 Example St",
    "suburb": "Sydney",
    "state": "NSW",
    "postalCode": "2000",
    "countryCode": "AU"
  },
  "receiverAddress": {
    "contact": "Jane Smith",
    "line1": "99 Sample Rd",
    "suburb": "Melbourne",
    "state": "VIC",
    "postalCode": "3000",
    "countryCode": "AU",
    "phone": "0400000000"
  },
  "parcels": [
    { "weight": 800, "length": 30, "width": 20, "height": 10, "packageType": "CTN" }
  ],
  "deliveryInstructions": "Leave at the front door",
  "references": ["PO-1234"],
  "idempotencyKey": "order-1234-attempt-1"
}

The main fields:

FieldMeaning
planIdThe service chosen from the quote
orderIdThe Shipperfy order this shipment is for. Optional
senderAddress, receiverAddressRequired
parcelsOne entry per parcel. Weight in grams, dimensions in cm
pickupDate, pickupInstructions, firstMileOptionCollection details, when the service is a pickup. firstMileOption is pickup or drop off
deliveryInstructionsPrinted on the label
referencesYour own references, printed on the label
internationaltrue for overseas parcels
idempotencyKeyA unique value for the request, so retrying does not create a duplicate shipment

Other optional fields include transitCover, flatRatePackage, contentsType, description and extras.

The response is the created shipment, including its tracking number.

3. Get the label#

GET /shipping/order/label/<shipmentId>

Returns the label for printing. To change or cancel the shipment:

PUT    /shipping/order/update/<shipmentId>
DELETE /shipping/order/cancel/<shipmentId>

4. Mark the order as shipped (optional)#

POST /store/order/shipped/<orderId>

Updates the sales channel with the shipment and tracking details.

Next: Tracking & manifests.