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:
| Field | Meaning |
|---|---|
planId | The service chosen from the quote |
orderId | The Shipperfy order this shipment is for. Optional |
senderAddress, receiverAddress | Required |
parcels | One entry per parcel. Weight in grams, dimensions in cm |
pickupDate, pickupInstructions, firstMileOption | Collection details, when the service is a pickup. firstMileOption is pickup or drop off |
deliveryInstructions | Printed on the label |
references | Your own references, printed on the label |
international | true for overseas parcels |
idempotencyKey | A 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.