Hazardous or dangerous materials shipping

What are hazardous materials?

Hazardous materials are things that can cause harm to people. We commonly refer to these as hazmat or dangerous materials. These include things such as radioactive materials, lithium batteries, and biological materials. When shipping hazmat items, you must follow the carrier guidelines. Follow this guide to learn about shipping hazmat items.

How do I know if I am shipping hazardous materials?

USPS provides guidelines for determining if a shipment contains hazardous materials that may impact how you ship. Review these guidelines to determine if they affect your shipment.

For domestic hazmat shipments, USPS only offer the ground service level USPS Ground Advantage.

How do I declare that I am shipping hazardous materials?

If you have determined that you are shipping hazardous materials or the items you are shipping contain hazardous materials (for example, a mobile phone containing a lithium battery), you must declare when creating your shipment. In your Shipments object, create a dangerous_goods object in shipments extra.

Copy
Copied
{
    "extra": { 
        "dangerous_goods": {
            "contains": true,
            "biological_material": {
                "contains": true
            },
            "lithium_batteries": {
                "contains": true
            }
        }
    }
}

For domestic (within the US) shipments, you must declare if your shipment contains any hazardous materials by setting “contains”:true

Copy
Copied
"dangerous_goods": {
	"contains": true
}

For domestic returns, you must set “contains”:true in the biological_material object, if your shipment contains biological materials.

Copy
Copied
"dangerous_goods": {
	"biological_material": {
		"contains": true
	}
}

For international shipments, you must set “contains”:true, in the lithium_batteries object, if your shipment contains lithium batteries.

Copy
Copied
"dangerous_goods": {
	"lithium_batteries": {
		"contains": true
	}
}
Note

Carefully review the USPS guidance on shipping lithium batteries internationally. Only “Class 9 - lithium batteries, unmarked package - New electronic devices installed or packaged with lithium batteries (no marking)" can be shipped internationally.

The following example shows the creation of a shipment that contains dangerous goods.

Copy
Copied
curl https://api.goshippo.com/shipments/ \
  -H "Authorization: ShippoToken shippo_test_3a47d23c032ca626fce863c48d0f93d63a394396" \
  -H "Content-Type: application/json" \
  -d $'{
      "address_to": {
          "name": "Mr Hippo",
          "street1": "965 Mission St #572",
          "city": "San Francisco",
          "state": "CA",
          "zip": "94103",
          "country": "US",
          "phone": "4151234567",
          "email": "mrhippo@shippo.com"
      },
      "address_from": {
          "name": "Mrs Hippo",
          "street1": "1092 Indian Summer Ct",
          "city": "San Jose",
          "state": "CA",
          "zip": "95122",
          "country": "US",
          "phone": "4159876543",
          "email": "mrshippo@shippo.com"
      },
      "parcels": [{
          "length": "10",
          "width": "15",
          "height": "10",
          "distance_unit": "in",
          "weight": "1",
          "mass_unit": "lb"
      }],
    “extra”:
        {
        "dangerous_goods": {
            "contains": true,
            "lithium_batteries": {
                "contains": false
                },
            "biological_material": {
                "contains": false
                }
                }
            },

      "async": false
  }'

The generated shipping label contains a “H” to show the package contains hazardous materials. For example, this label for a domestic shipment containing hazardous materials.

sample shipping label including hazmat details

Hazardous materials returns

To learn about returns labels, follow our Returns guide. To generate a pay-on-use return label for shipping hazardous materials, create a new Shipment object with a dangerous_goods object and set an is_return field as true inside the extra attribute.

info

The Shippo API swaps the original address_to of the outbound transaction to the address_from for the return label.

The following example shows the creation of a shipment that contains dangerous goods including a returns label.

Copy
Copied
curl https://api.goshippo.com/shipments/ \
  -H "Authorization: ShippoToken shippo_test_3a47d23c032ca626fce863c48d0f93d63a394396" \
  -H "Content-Type: application/json" \
  -d $'{
      "address_to": {
          "name": "Mr Hippo",
          "street1": "965 Mission St #572",
          "city": "San Francisco",
          "state": "CA",
          "zip": "94103",
          "country": "US",
          "phone": "4151234567",
          "email": "mrhippo@shippo.com"
      },
      "address_from": {
          "name": "Mrs Hippo",
          "street1": "1092 Indian Summer Ct",
          "city": "San Jose",
          "state": "CA",
          "zip": "95122",
          "country": "US",
          "phone": "4159876543",
          "email": "mrshippo@shippo.com"
      },
      "parcels": [{
          "length": "10",
          "width": "15",
          "height": "10",
          "distance_unit": "in",
          "weight": "1",
          "mass_unit": "lb"
      }],
    “extra”:
        {
        "dangerous_goods": {
            "contains": true,
            "lithium_batteries": {
                "contains": false
                },
            "biological_material": {
                "contains": false
                }
                },
        "is_return": true
            },
      "async": false
  }'