How quoting works
Overview
Section titled “Overview”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
What you need for a quote
Section titled “What you need for a quote”At minimum, a quote request requires:
| Field | Description | Example |
|---|---|---|
| Sender postcode | Pickup location postcode | 2000 |
| Sender suburb | Pickup suburb | SYDNEY |
| Receiver postcode | Delivery location postcode | 3000 |
| Receiver suburb | Delivery suburb | MELBOURNE |
| Items | At least one item with weight and dimensions | See below |
Item details
Section titled “Item details”Each item in a shipment needs:
| Field | Description | Unit |
|---|---|---|
weight | Item weight | Kilograms (kg) |
height | Item height | Centimetres (cm) |
width | Item width | Centimetres (cm) |
length | Item length | Centimetres (cm) |
quantity | Number of identical items | Integer |
description | Package type | carton, satchel, pallet, etc. |
How quotes are returned
Section titled “How quotes are returned”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" } }}| Field | Description |
|---|---|
total | Total price including fees (AUD, GST-inclusive) |
price_insurance_ex | Carrier price excluding the warranty fee (AUD, GST-inclusive) |
fee | Warranty fee component (AUD) |
insured_amount | Insured value for that quote (AUD) |
service | Service type (road, air) |
transit_time | Estimated delivery timeframe |
pickup_dates | Available pickup dates |
pickup_time | Pickup time window |
Frequent rates and tiers
Section titled “Frequent rates and tiers”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 } ]}| Field | Description |
|---|---|
courier | The carrier string_id that did not quote |
code | Coarse legacy bucket: no_service, no_response, invalid_response, courier_error |
serviceability | Canonical reason — see the table below |
retryable | true when the condition is transient and re-quoting the lane may succeed |
Serviceability codes
Section titled “Serviceability codes”serviceability | Meaning | A price is missing? |
|---|---|---|
route.not_serviced | Lane, area or zone not covered | No |
route.restricted_postcode | Origin/destination outside coverage | No |
route.no_residential | Carrier does not serve residential on this lane | No |
items.not_serviced | Item type or packaging not accepted | No |
items.over_limit | Item exceeds weight or dimension limits | No |
service.unavailable | No eligible service or rate for this shipment | No |
carrier.unavailable | Carrier API timed out or was unreachable | Yes — and worth retrying (the only retryable: true code) |
config.error | Credentials or configuration problem on the carrier account | Yes — but retrying will not help; fix or report it |
courier.error | Malformed upstream response, or an unmapped carrier failure | Yes |
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.
Quotes in eCommerce plugins
Section titled “Quotes in eCommerce plugins”If you’re using a WooCommerce, Shopify, or Magento plugin, the quoting process is handled automatically. Your plugin:
- Captures the customer’s delivery address at checkout
- Sends the cart items with dimensions and weights to Transdirect
- Displays the available shipping options and prices to the customer
You can control which quotes are shown using quote display settings and courier settings.