Skip to content
English
  • There are no suggestions because the search field is empty.

How to connect Australia Post v2

Let's see how you can connect Australia Post to ShippyPro in just few steps.

 

Summary

  1. Before you start
  2. Connection steps
  3. Additional options

  4. Troubleshooting & errors

  5. Dangerous Goods

 

1. Before you start

To connect the carrier, you need to first ask your Australia Post Sales Person for credentials such as Account Number, API key, API password.

 

2. Connection steps

Then you can insert the credentials in the Carriers page, clicking on the Australia Post logo.

If you can't figure how to do it try to take a look at the following example:

 
image (9)

Configure the connection with your own product code by inserting the related Product Id. If you don’t know your Product Id contact you Australia Post account manager to know more about it.

Destinations

National: Australia

International: Yes

3. Additional options

Besides your credentials, you'll also see some further options, let's take a look at them!

 

Label Type gives you the possibility to choose the correct label format for your printer.

Signature Required allows you to enable the Signature Required option for all your shipments

Test Mode lets you make some test shipments.

 

The "Test Mode" option should be flagged only if you have test credentials, not production ones!

 

If you want, you can also enter a Custom Label to recognize the connection among all the others.

4. Troubleshooting & Errors

Internal Server Error

Check if your Australia Post connection is in Test Mode.

 

Your combination of suburb, state & postcode doesn't match. Please review and try again.

The Zip Code/City combination is not correct. Check the correct combination on the Australia Post website: https://auspost.com.au/postcode

 

Error while printing Carrier Labels for carton XXXXXXXXXXXXXX. Error: Total number of items in your basket can't exceed 10001. To add more, please manifest the items in your basket and start a new request, or delete some of your existing items.

Please contact your Australia Post account manager and verify what your current basket limit is — it may need to be increased.

 

 


5. Dangerous Goods (DG) Declaration Guide for Australia Post v2 Introduction

 The following implementation requires some effort to be used, Australia Post has a complicated system to enable the Dangerous Goods option

Australia Post requires different dangerous goods information depending on the service tier being used. ShippyPro handles everything through a single carrier option called dangerous_goods_multiparcel, whose value is a JSON-encoded object.


Basic Structure

The JSON always follows this shape:

{   "tier": "startrack" | "parcel_post" | "express_post",   "parcels": [ /* one slot per parcel in the shipment */ ] } 

Key rules to follow:

  • The number of elements in parcels must match exactly the number of parcels in the shipment. Any mismatch will cause the request to be rejected.
  • Each element in parcels is itself an array. A parcel with no dangerous goods must be declared as [] (empty array), not as null.
  • For Express Post, at most one entry per parcel is allowed.
  • For StarTrack, multiple entries per parcel are allowed; identical entries across different parcels are automatically deduplicated.

The Three Service Tiers
Tier What is sent to AusPost Typical Product IDs
startrack Shipment-level dangerous_goods[] block (deduplicated) + contains_dangerous_goods: true + packaging_type: "CTN" per parcel PRM, RPI
parcel_post contains_dangerous_goods: true per parcel only. Cannot travel by air. 7D55, 7E55, etc.
express_post contains_dangerous_goods: true + transportable_by_air + dangerous_goods_declaration per parcel 3H05, etc.

StarTrack

Required fields for each entry

Field Type Required Notes
un_number integer Yes UN classification number
technical_name string No Technical name of the substance
class_division integer or float Yes Primary hazard class and division
subsidiary_risk float No Secondary hazard classification
packing_group_designator "I" / "II" / "III" Yes Packing group
outer_packaging_type string Yes e.g. "Carton"
outer_packaging_quantity integer Yes Number of outer packages
net_weight float (kg) Yes Net weight of dangerous goods

Example — 2 parcels, same dangerous substance

{   "tier": "startrack",   "parcels": [     [       {         "un_number": 1950,         "technical_name": "Aerosols, flammable",         "class_division": 2,         "subsidiary_risk": 2.1,         "packing_group_designator": "III",         "outer_packaging_type": "Carton",         "outer_packaging_quantity": 1,         "net_weight": 1.3       }     ],     [       {         "un_number": 1950,         "technical_name": "Aerosols, flammable",         "class_division": 2,         "subsidiary_risk": 2.1,         "packing_group_designator": "III",         "outer_packaging_type": "Carton",         "outer_packaging_quantity": 1,         "net_weight": 1.3       }     ]   ] } 

How it appears in a /Ship API call

"CarrierOptions": [   {     "name": "australiapostv2dangerous_goods_multiparcel",     "value": "{\"tier\":\"startrack\",\"parcels\":[[{\"un_number\":1950,\"technical_name\":\"Aerosols, flammable\",\"class_division\":2,\"subsidiary_risk\":2.1,\"packing_group_designator\":\"III\",\"outer_packaging_type\":\"Carton\",\"outer_packaging_quantity\":1,\"net_weight\":1.3}],[{\"un_number\":1950,\"technical_name\":\"Aerosols, flammable\",\"class_division\":2,\"subsidiary_risk\":2.1,\"packing_group_designator\":\"III\",\"outer_packaging_type\":\"Carton\",\"outer_packaging_quantity\":1,\"net_weight\":1.3}]]}"   } ] 

Parcel Post

For Parcel Post, it is sufficient to indicate whether a parcel contains dangerous goods or not — no chemical details are required. This service cannot travel by air.

Fields

Field Type Required Notes
un_number integer No (but recommended) Any field is enough to flag the parcel

Example — 2 parcels, only the first contains dangerous goods

{   "tier": "parcel_post",   "parcels": [     [ { "un_number": 1950 } ],     []   ] } 

How it appears in a /Ship API call

"CarrierOptions": [   {     "name": "australiapostv2dangerous_goods_multiparcel",     "value": "{\"tier\":\"parcel_post\",\"parcels\":[[{\"un_number\":1950}],[]]}"   } ] 

Express Post

Required fields for each entry

Field Type Required Notes
declaration_code string (see list below) Yes One of the 6 supported UN codes
transportable_by_air boolean Yes Whether the goods can travel via Express Post's air network

Supported declaration_code values

  • UN1845_DryIce_and_UN3373_BioSubstance_B
  • UN2910_radioactive_excepted_limited_qty
  • UN2911_radioactive_excepted_instruments_or_articles
  • UN3091_Lithium_MetalAndAlloy_contained_in_equipment ⚠️ cannot be used for returns via Express Post
  • UN3373_BioSubstance_B
  • UN3481_Lithium_IonOrPolymer_contained_in_equipment ⚠️ cannot be used for returns via Express Post

⚠️ Return restriction: If the shipment is a return and the declared code is UN3091_* or UN3481_*, ShippyPro will reject the request. Use Parcel Post for these return scenarios instead.

Example — 1 parcel with a biological substance

{   "tier": "express_post",   "parcels": [     [       {         "declaration_code": "UN3373_BioSubstance_B",         "transportable_by_air": true       }     ]   ] } 

How it appears in a /Ship API call

"CarrierOptions": [   {     "name": "australiapostv2dangerous_goods_multiparcel",     "value": "{\"tier\":\"express_post\",\"parcels\":[[{\"declaration_code\":\"UN3373_BioSubstance_B\",\"transportable_by_air\":true}]]}"   } ] 

Combining with Other Carrier Options

The dangerous goods option can be used alongside any other carrier options without issues:

"CarrierOptions": [   { "name": "glsflex", "value": "1" },   {     "name": "dangerous_goods_multiparcel",     "value": "{\"tier\":\"express_post\",\"parcels\":[[{\"declaration_code\":\"UN3373_BioSubstance_B\",\"transportable_by_air\":true}]]}"   } ] 

Validation Errors
Condition Error message
Option absent No error — shipment proceeds without DG declaration
Value is not valid JSON dangerous_goods_multiparcel must be a JSON-encoded object with 'tier' and 'parcels' fields
tier missing dangerous_goods_multiparcel.tier is required
tier not valid dangerous_goods_multiparcel.tier must be one of: startrack, parcel_post, express_post
parcels missing or not an array dangerous_goods_multiparcel.parcels must be an array
Parcel count mismatch dangerous_goods_multiparcel.parcels length (X) does not match parcel count (Y)
Express Post entry missing declaration_code Express Post entries require declaration_code (parcel X)
Express Post entry missing transportable_by_air Express Post entries require transportable_by_air (boolean) (parcel X)
Express Post invalid declaration_code Invalid declaration_code for Express Post: <code>
Express Post more than one entry per parcel Express Post supports at most one dangerous_goods entry per parcel (parcel X has Y)
Express Post return with UN3091 or UN3481 <code> cannot be returned via Express Post — use Parcel Post

Common Mistakes to Avoid
  • Parcel count must match exactly. If the order has 2 parcels but the JSON only declares 1 slot, the request is rejected before even reaching AusPost.
  • An empty parcel must be declared as [], not null. For a 2-parcel shipment where only the first contains dangerous goods: "parcels": [[{...}], []].
  • transportable_by_air must be a real boolean (true / false), not a string ("true" / "false").
  • For returns of lithium-in-equipment (UN3091, UN3481), Parcel Post is mandatory. Express Post will reject these codes on return shipments.
  • The configured Product ID must match the tier declared in the JSON. If they are not aligned, AusPost itself will reject the request with a separate error.