Responses

The Quote API possible responses:

Status Meaning Description
200 OK Successful quote response
400 Bad Request Returned when a quote request cannot be generated at all. If returned as text or HTML, the response is blank.
403 Forbidden Returned when the API key given does not match a valid merchant account.
500 Internal Server Error Returned when an unknown error occurs, or if there is a problem with the combination of the input or merchant account configuration.

Note that if a quote request to a carrier can be generated, but one or more carriers can’t respond to the quote, then the quote request succeeds and a 400 Bad Request response is not given. The status of each individual quote is then determined from the response body. The 400 Bad Request response is only returned if the quote request can’t be processed.

Zero dollar quotes

In some cases, you can receive a 200 OK response, with a list of carriers. However, sometimes the carriers in the list might have returned a quote price of $0, meaning that they’re unable to accept the booking.

When this happens, the quote endpoint returns an error similar to $0 quote or quote not available. Shippit made changes to these error messages in August 2025 to make them more understandable.

This table shows the different error messages before and after August 2025:

Before August 2025 After August 2025
Calculated a $0 quote. Suburb/state/postcode mismatch Unable to calculate quote. Please check if suburb, state, and postcode match correctly.
Calculated a $0 quote. no valid rates returned Unable to calculate quote. No valid shipping rates matched the request. Please check the service, product, or delivery.
Product Code Not Found Unable to calculate quote. One or more product codes are missing or invalid. Please check your product mappings.
Contract for charge account expired or not valid Unable to calculate quote. The contract linked to charge account 0007290406 is either expired or not yet active.
no valid rates matched Unable to calculate quote. No matching rates found for the selected details.
Suburb is missing 1 mandatory English character Unable to calculate quote. Suburb name must include at least one English character. Please update and try again.
Missing or incorrect mandatory attribute Unable to calculate quote. The request is missing one or more required fields. Please review the input and try again.
Packaging type is invalid Unable to calculate quote. The specified packaging type is invalid. Please check the packaging value and try again.
InternalQuote::Rate::ToZoneNotFound or internal_quote “[To] courier, state - postcode, country” Unable to calculate quote. Destination zone not found for the selected service. Please check the destination or carrier.
State must not be longer than 3 characters Unable to calculate quote. State value must be a 3-letter abbreviation (e.g. NSW, VIC). Please correct and try again.
TNT: brisbane - 4000 Unable to calculate quote. Destination zone not found for the selected service. Please check the destination or carrier.
Connection timed out Unable to calculate quote. The request timed out — please try again.
Product not available on your contract Unable to calculate quote. The product you’ve selected isn’t available under your contract. Please contact your carrier.
State must be one of the following VIC,NT,WA,ACT,QLD,TAS,SA,NSW Unable to calculate quote. The state must be one of: VIC, NT, WA, ACT, QLD, TAS, SA, or NSW.
The product 3W05 you have entered is not available on your contract 0000500929 from lodgement 3108 to the destination 3122 Unable to calculate quote. Product 3W05 is not available under contract 0000500929 for deliveries from 3108 to 3122.

Examples

Example responses:

Successful quote response

{
  "response": [
    {
      "courier_type": "CouriersPlease",
      "quotes": [
        {
          "price": 20.4,
          "estimated_transit_time": "3 business days"
        }
      ],
      "service_level": "standard",
      "success": true
    },
    {
      "courier_type": "eParcelExpress",
      "quotes": [
        {
          "price": 30.4,
          "estimated_transit_time": "1 business day"
        }
      ],
      "service_level": "express",
      "success": true
    },
    {
      "courier_type": "Priority",
      "quotes": [
        {
          "delivery_date": "2014-09-18T00:00:00.000Z",
          "delivery_window": "07:00-10:00",
          "delivery_window_desc": "7AM-10AM",
          "price": 24.24,
          "courier_type": "Bonds"
        },
        {
          "delivery_date": "2014-09-18T00:00:00.000Z",
          "delivery_window": "10:00-13:00",
          "delivery_window_desc": "10AM-1PM",
          "price": 24.24,
          "courier_type": "AlliedExpressP2P"
        }
      ],
      "service_level": "priority",
      "success": true
    },
    {
      "courier_type": "DoorDashOndemand",
      "quotes": [
        {
          "price": 10.99,
          "estimated_delivery_time": "2023-10-03T16:21:57.000+11:00"
        }
      ],
      "service_level": "on_demand",
      "success": true
    }
  ],
  "count": 4
}

Successful quote response

{
  "response": [
    {
      "courier_type": "SmartRoutingInternational",
      "quotes": [
        {
          "price": 20.4,
          "estimated_transit_time": "3 business days",
          "customs_duty": 3.21,
          "import_tax": 1.22,
          "import_fee": 0.8,
          "incoterm": "DDP"
        }
      ],
      "service_level": "standard",
      "success": true
    },
    {
      "courier_type": "JanioInternational",
      "quotes": [
        {
          "price": 18.3,
          "estimated_transit_time": "5 business days",
          "incoterm": "DDU"
        }
      ],
      "service_level": "standard",
      "success": true
    },
    {
      "courier_type": "AramexInternational",
      "quotes": [
        {
          "price": 30.4,
          "estimated_transit_time": "4 business day"
        }
      ],
      "service_level": "express",
      "success": true
    },
    {
      "courier_type": "CouriersPlease",
      "error": "cannot transport to country ID.",
      "success": false
    }
  ],
  "count": 4
}

Failed quote responses

400 response:

{
  "error": "bad_request",
  "error_description": "Dutiable amount must be greater than 0 for international orders",
  "success": false
}

Returned when the API key given does not match a valid merchant account:

{
  "error": "invalid_merchant_account",
  "error_description": "An unknown error has occurred."
}

Returned when an unknown error occurs. This can happen if Shippit has trouble with the combination of the input or merchant account configuration:

{
  "error": "system",
  "error_description": "An unknown error has occurred."
}