Skip to content

How quoting works

When you request a quote through Transdirect — whether via the API, a plugin, or the website — we send your shipment details to multiple courier partners simultaneously and return the best available rates.

Each quote includes:

  • Price — the total cost including any applicable fees
  • Transit time — estimated delivery timeframe
  • Service type — road, air, or express
  • Pickup dates — available dates for collection
  • Pickup window — the time range for collection

At minimum, a quote request requires:

FieldDescriptionExample
Sender postcodePickup location postcode2000
Sender suburbPickup suburbSYDNEY
Receiver postcodeDelivery location postcode3000
Receiver suburbDelivery suburbMELBOURNE
ItemsAt least one item with weight and dimensionsSee below

Each item in a shipment needs:

FieldDescriptionUnit
weightItem weightKilograms (kg)
heightItem heightCentimetres (cm)
widthItem widthCentimetres (cm)
lengthItem lengthCentimetres (cm)
quantityNumber of identical itemsInteger
descriptionPackage typecarton, satchel, pallet, etc.

A quote response contains pricing from every available courier for your route. Each courier quote includes:

{
"allied": {
"total": 79.24,
"price_insurance_ex": 72.09,
"fee": 7.15,
"insured_amount": 4500,
"service": "road",
"transit_time": "1-2 days",
"pickup_dates": ["2025-08-27", "2025-08-28"],
"pickup_time": {
"from": "14:00",
"to": "18:00"
}
}
}
FieldDescription
totalTotal price including fees (AUD, GST-inclusive)
price_insurance_exCarrier price excluding the warranty fee (AUD, GST-inclusive)
feeWarranty fee component (AUD)
insured_amountInsured value for that quote (AUD)
serviceService type (road, air)
transit_timeEstimated delivery timeframe
pickup_datesAvailable pickup dates
pickup_timePickup time window

Some couriers (Couriers Please, Aramex) offer frequent rates — discounted pricing for members who ship regularly. When available, the quote response includes a tiers array:

{
"couriers_please": {
"total": 11.03,
"service": "road",
"transit_time": "0-1 Business Days",
"tiers": [
{
"identifier": 1,
"description": "Multipickup 10",
"total": 6.96
},
{
"identifier": 2,
"description": "Multipickup 21",
"total": 5.75
}
]
}
}

Learn more about frequent rates.

Not every carrier answers: check quote_errors

Section titled “Not every carrier answers: check quote_errors”

A quote response is a snapshot of the carriers that replied, not a guarantee that every carrier was asked and answered. Alongside quotes, every response carries a quote_errors array naming each carrier that did not produce a price:

{
"quotes": { "allied": { "total": 79.24 } },
"quote_errors": [
{ "courier": "northline", "code": "no_service", "serviceability": "route.not_serviced", "retryable": false },
{ "courier": "aramex", "code": "no_response", "serviceability": "carrier.unavailable", "retryable": true }
]
}
FieldDescription
courierThe carrier string_id that did not quote
codeCoarse legacy bucket: no_service, no_response, invalid_response, courier_error
serviceabilityCanonical reason — see the table below
retryabletrue when the condition is transient and re-quoting the lane may succeed
serviceabilityMeaningA price is missing?
route.not_servicedLane, area or zone not coveredNo
route.restricted_postcodeOrigin/destination outside coverageNo
route.no_residentialCarrier does not serve residential on this laneNo
items.not_servicedItem type or packaging not acceptedNo
items.over_limitItem exceeds weight or dimension limitsNo
service.unavailableNo eligible service or rate for this shipmentNo
carrier.unavailableCarrier API timed out or was unreachableYes — and worth retrying (the only retryable: true code)
config.errorCredentials or configuration problem on the carrier accountYes — but retrying will not help; fix or report it
courier.errorMalformed upstream response, or an unmapped carrier failureYes

Treat an unrecognised code as “a price is missing”: over-warning on something new is safer than quietly dropping a cheaper rate.

config.error covers both a carrier that is simply not configured for the account and a credential failure on one that should be quoting. The response cannot separate them, so it sits on the “missing” side — a price is absent either way.

If you’re using a WooCommerce, Shopify, or Magento plugin, the quoting process is handled automatically. Your plugin:

  1. Captures the customer’s delivery address at checkout
  2. Sends the cart items with dimensions and weights to Transdirect
  3. Displays the available shipping options and prices to the customer

You can control which quotes are shown using quote display settings and courier settings.