# About hazardous materials

Hazardous material (hazmat) is any substance that can pose an unreasonable risk to health, safety, and property when transported in commerce. Due to its potential safety concerns, hazmat often must meet packaging and labeling requirements set by the U.S. Department of Transportation (DOT). Shipium suggests providing as much information as possible when shipping hazmat to meet any rules and regulations related to their transport and checking with your carrier representative for carrier-specific requirements.

### Regulatory compliance

Shipium does not validate hazmat shipments against regulatory thresholds (watt-hours, lithium content, packing group, packaging instruction codes, etc.) at the API or carrier-eligibility layer. Customers are responsible for ensuring shipments comply with all applicable U.S. Department of Transportation (DOT), International Air Transport Association (IATA), and carrier-specific regulations. The carrier's own API may or may not validate at label-creation time, depending on the carrier.

Shipium supports the most common hazmat shipping pathways, including:

- **Limited Quantity (LQ) and Limited Quantity Air (LQA) shipments.** LQ is also known as ORMD, a legacy term phased out in January 2021. Common examples include cosmetics, perfumery products, and small consumer hazmat goods.
- **Excepted Quantity (EQ) shipments.** Small-volume hazmat under 49 CFR §173.4, eligible for reduced documentation; eligible on both ground and air.
- **Lithium battery shipments.** Including the Small Battery Exception for air (SBEA) and ground (SBEG), as well as Fully Regulated lithium battery shipments; common in electronics shipments.
- **Generalized hazardous material.** You can specify International Air Transport Association (IATA) and DOT details for any hazardous materials directly.

### Carrier-specific guidance for limited quantity shipments

Some carriers handle limited quantity (LQ) shipments differently than full hazmat shipments, particularly for ground services. For example, FedEx Ground services do not support dangerous goods special services for LQ lithium batteries; these ship as regular ground shipments. See carrier-specific documentation in the Carrier Network section for details.

# productDetails reference

The `productDetails` field within `orderItemQuantities` allows you to flag products with special shipping characteristics. Shipium uses these values to filter carrier options, apply appropriate handling, and trigger carrier-specific surcharges.

## Accepted values

| Value | Aliases | Use case | Effect |
| --- | --- | --- | --- |
| `limited_quantity` | `lq` | Items classified as Limited Quantity (LQ) or ORM-D hazmat, such as aerosols, small batteries, or consumer-ready hazardous goods | Restricts carrier selection to ground-only service methods (air travel prohibited without full hazmat documentation); triggers LQ handling fees with supported carriers |
| `limited_quantity_air` | — | Items classified as Limited Quantity hazmat shipped via air service methods under 49 CFR §172.315(b), the Y-mark pathway; common examples include perfumery products, paint, and aerosols | Routes shipments to air-capable service methods configured for LQA support; requires a full `hazmatInfo` block on the item |
| `excepted_quantity` | — | Small-volume hazmat shipped under 49 CFR §173.4, eligible for reduced documentation and exempt from carrier-side hazmat data transmission; eligible on both ground and air | Permits hazmat shipping without standard packaging or carrier data transmission requirements; requires `hazmatInfo` with `category` set to `defined` |
| `small_battery_exception_air` | — | Lithium cells and batteries below regulated thresholds, shipped by ground or air with the Lithium Battery Mark, under 49 CFR §173.185(c)(1)(iii) | Routes shipments to service methods configured for SBEA support; requires `hazmatInfo` with battery and packaging fields |
| `small_battery_exception_ground` | — | Lithium cells and batteries shipped by ground only with the "FORBIDDEN FOR TRANSPORT ABOARD AIRCRAFT AND VESSEL" mark, under 49 CFR §173.185(c)(1)(iv) | Restricts carrier selection to ground-only service methods; requires `hazmatInfo` with battery and packaging fields |
| `bound_printed_matter` | `bpm` | Books, catalogs, directories, and other printed materials meeting USPS BPM eligibility requirements | Enables selection of USPS Bound Printed Matter service methods for discounted postal rates; see Bound Printed Matter for eligibility details. |
| `perishable` | — | Temperature-sensitive items such as food, pharmaceuticals, or biological materials | Prioritizes faster service methods to minimize transit time; see Perishable Items for configuration options. |
| `ormd` | `orm-d` | Legacy value for ORM-D hazmat items | Same effect as `limited_quantity`; use `limited_quantity` for new implementations. |

For the rule on combining hazmat tags within a single shipment, see Hazmat tag exclusivity under Usage notes below.

## Usage notes

- **Preferred terminology.** Use `limited_quantity` (or `lq`) for LQ/ORM-D items. The value `ormd` is still accepted for backward compatibility, but `limited_quantity` is recommended for new implementations.
- **Multiple values.** You can pass multiple values in the array if a product has more than one special characteristic. For example, a perishable item that is also limited quantity hazmat:

```json
"orderItemQuantities": [
  {
    "productId": "PROD-12345",
    "quantity": 1,
    "productDetails": ["limited_quantity", "perishable"]
  }
]
```
- **Hazmat tag exclusivity.** A shipment can include only one of the following hazmat tags: `limited_quantity` (or its alias `ormd`), `limited_quantity_air`, `excepted_quantity`, `small_battery_exception_air`, or `small_battery_exception_ground`. Shipments combining two or more of these tags fail validation. Non-hazmat tags such as `perishable` or `bound_printed_matter` can still be combined with one hazmat tag.
- **Full hazmat shipments.** For items requiring complete hazmat documentation beyond LQ classification, use the `hazmatInfo` object instead of or in addition to `productDetails`. See the detailed hazmat properties example for detailed hazmat shipping requirements.

## Specify hazardous materials using hazmatInfo

Hazmat information is provided within shipments as part of the `orderItemProperties` map, either using the standard Shipment construction or using the more popular Carrier and Method Selection & Shipment Labels mechanism. Shipium generally recommends including as much data as you have for hazmat information as requirements differ among carriers. At a minimum, though, the following fields should be provided in your shipping request: `category`, `quantity`, `quantityType`, `quantityUnits`, and `containerType`.

In addition to these and other item properties that are passed, such as `productId`, you can specify a set of hazmat-related properties to ensure that these products are properly handled at the carrier level and during carrier selection. There are two ways to do this:

- For common hazmat classes, Shipium provides a shortcut mechanism and does much of the lookup on your behalf. The most common of these is the lithium ion classes for common electronics items, specified by the `category` property. The properties are included in the Pre-Configured Hazmat Properties section of this document.
- You can specify detailed hazardous materials properties using the properties defined in the Detailed Hazmat Properties section of this document and setting the `category` property to the value `defined`.

## Pre-configured hazmat properties

The following table includes properties for common hazmat classes covered by the shortcut mechanism.

| property | propertyContents | parentProperty |
| --- | --- | --- |
| "hazmat" | _Boolean_<br>`true` if the item is hazmat<br>`false` if it is not (default) | `orderItemQuantities` array element |
| "hazmatInfo" | _JSON object (map)_<br>Contains information about this particular `orderItemQuantities` element.<br>**See properties below that have a`parentProperty` of `hazmatInfo` for details.** | `orderItemQuantities` array element |
| "category" | Hazmat category for this `orderItemQuantities` element. Values are:<br>`aerosols_flammable`<br>`contains_lithium_ion`<br>`contains_lithium_metal`<br>`lithium_ion_battery_only`<br>`lithium_metal_battery_only`<br>`packaged_lithium_ion`<br>`packaged_lithium_metal`<br>`dry_ice`<br>**For any of these hazmat categories, values must be provided for the`quantity`, `quantityType`, and `quantityUnits` fields.**<br>**See the table below for additional details about these hazmat categories.** | `hazmatInfo` |
| "quantity" | _Float value_<br>The quantity of hazmat material in this `orderItemQuantities` element in units of `quantityType` of `quantityUnits` | `hazmatInfo` |
| "quantityType" | _String enumeration_<br>The type of quantity of hazardous material. Values are:<br>`gross`<br>`net` | `hazmatInfo` |
| "quantityUnits" | _String enumeration_<br>The units of measure for the quantity of hazardous material specified. Values are:<br>`g`<br>`kg`<br>`lb`<br>`oz`<br>`ml`<br>`l` | `hazmatInfo` |

The following table provides information about Shipium's hazmat categories, including their proper shipping name, United Nations (UN) number, and transport mode. For each of the categories listed, the hazard class is `class_9_miscellaneous`.

| Category name | Proper shipping name | UN number | Transport mode |
| --- | --- | --- | --- |
| `aerosols_flammable` | Aerosols, flammable | UN1950 | `passenger_and_cargo_aircraft` |
| `contains_lithium_ion` | Lithium ion batteries contained in equipment | UN3481 | `passenger_and_cargo_aircraft` |
| `contains_lithium_metal` | Lithium metal batteries contained in equipment | UN3091 | `passenger_and_cargo_aircraft` |
| `lithium_ion_battery_only` | Lithium ion batteries (refers to lithium ion batteries that are not packed with or installed in equipment) | UN3480 | `cargo_aircraft_only` |
| `lithium_metal_battery_only` | Lithium metal batteries (refers to lithium metal batteries that are not rechargeable and are shipped by themselves) | UN3090 | `cargo_aircraft_only` |
| `packaged_lithium_ion` | Lithium ion batteries packed with equipment | UN3481 | `passenger_and_cargo_aircraft` |
| `packaged_lithium_metal` | Lithium metal batteries packed with equipment | UN3091 | `passenger_and_cargo_aircraft` |
| `dry_ice` | Dry ice | UN1845 | `passenger_and_cargo_aircraft` |

## Detailed hazmat properties

If your shipment contains hazardous materials that cannot be included using the above pre-configured interface, you can use the properties in the following table to specify the details and set the `category` property to the value `defined`.

The same `hazmatInfo` properties listed below also support the `limited_quantity_air`, `excepted_quantity`, `small_battery_exception_air`, and `small_battery_exception_ground` hazmat tags. Each property's description notes the hazmat tags that require it.

| property | propertyContents | parentProperty |
| --- | --- | --- |
| "hazmat" | _Boolean_<br>`true` if the item is hazmat<br>`false` if it is not (default) | `orderItemQuantities` array element |
| "hazmatInfo" | _JSON object (map)_<br>Contains information pertaining to this particular `orderItemQuantities` element; properties related to this element are explained in this table. | `orderItemQuantities` array element |
| "category" | _String enumeration_<br>To specify detailed information, set this to `defined`. | `hazmatInfo` |
| "hazmatId" | _String_<br>Required if category is `defined`; the IATA or DOT regulatory identifier for the commodity as appropriate (e.g., UN1755) | `hazmatInfo` |
| "containerType" | _String enumeration_<br>Required if category is `defined`; one of the following strings for the material in which the hazardous material is packaged:<br>`fiberboard_box`<br>`wooden_box`<br>`plastic_jerrican`<br>`metal_box`<br>`steel_drum`<br>`other`<br>`plastic_box`<br>`plastic_drum`<br>`styrofoam_box`<br>`cylinder`<br>`envirotainer`<br>`plywood_box`<br>`aluminum_drum`<br>`aluminum_cylinder`<br>`plastic_pail`<br>`plywood_drum`<br>`fiber_drum`<br>`steel_jerrican`<br>`aluminum_jerrican`<br>`steel_box`<br>`carton`<br>`aluminum_box` | `hazmatInfo` |
| "numberOfInnerPackagings" | _Integer_<br>Required when an item is tagged `limited_quantity_air`, `small_battery_exception_air`, or `small_battery_exception_ground`; the number of inner packagings within the outer container | `hazmatInfo` |
| "innerPackagingType" | _String_<br>Required when an item is tagged `limited_quantity_air`, `small_battery_exception_air`, or `small_battery_exception_ground`; a free-form description of the inner packaging, such as "plastic bottle", "glass bottle", or "fiberboard box" | `hazmatInfo` |
| "outerPackagingType" | _String_<br>Required when an item is tagged `limited_quantity_air`, `small_battery_exception_air`, or `small_battery_exception_ground`; a free-form description of the outer packaging, such as "fiberboard box", "plywood drum", or "steel drum" | `hazmatInfo` |
| "packingGroup" | _String enumeration_<br>The degree of danger the hazardous material presents. Values are:<br>`i`<br>`ii`<br>`iii` | `hazmatInfo` |
| "packingInstructionCode" | _String_<br>The packing instruction code used for air transport (e.g., 967) | `hazmatInfo` |
| "properShippingName" | _String_<br>Required if category is `defined`; the proper shipping name that is associated with the specified `hazmatId` | `hazmatInfo` |
| "hazardClass" | _String enumeration_<br>Required if category is `defined`; the hazard class of the hazmat. Values are:<br>`class_1_explosive`<br>`class_2_flammable_gas`<br>`class_3_flammable_liquid`<br>`class_4_flammable_solid`<br>`class_5_organic_peroxide`<br>`class_6_poisonous_material`<br>`class_7_radioactive`<br>`class_8_corrosive_material`<br>`class_9_miscellaneous` | `hazmatInfo` |
| "subsidiaryClasses" | _Array of strings_<br>The appropriate IATA/DOT subsidiary classes associated with the material and the hazard class (e.g., 8.1) | `hazmatInfo` |
| "quantity" | _Float value_<br>Required if category is `defined`; the quantity of hazmat material in this `orderItemQuantities` element in units of `quantityType` of `quantityUnits` | `hazmatInfo` |
| "quantityType" | _string enumeration_<br>Required if category is `defined`; the type of quantity of hazardous material. Values are:<br>`gross`<br>`net` | `hazmatInfo` |
| "quantityUnits" | _String enumeration_<br>Required if category is `defined`; the units of measure for the quantity of hazardous material specified. Values are:<br>`g`<br>`kg`<br>`lb`<br>`oz`<br>`ml`<br>`l` | `hazmatInfo` |
| "transportMode" | _String enumeration_<br>Required if category is `defined`; the packing instruction code used for air transport. Values are:<br>`cargo_aircraft_only`<br>`ground`<br>`passenger_and_cargo_aircraft` | `hazmatInfo` |
| "shipperDeclarationStatement" | _String enumeration_<br>Required when an item is tagged `limited_quantity_air`, `excepted_quantity`, `small_battery_exception_air`, or `small_battery_exception_ground`.<br>Values are:<br>`FDG`<br>`LQ_air`<br>`EQ`<br>`small_battery_air`<br>`small_battery_ground``cargo_aircraft_only` | `hazmatInfo` |
| "wattHours" | _Float value_<br>Required for lithium-ion battery items tagged `small_battery_exception_air` or `small_battery_exception_ground`; the energy capacity in watt-hours per cell or battery (at least one of `wattHours` or `lithiumContent` is required for lithium battery items) | `hazmatInfo` |
| "lithiumContent" | _Float value_<br>Required for lithium-metal battery items tagged `small_battery_exception_air` or `small_battery_exception_ground`; the lithium content in grams per cell or battery (at least one of `wattHours` or `lithiumContent` is required for lithium battery items) | `hazmatInfo` |
| "numberOfCells" | _Integer_<br>Required for lithium battery items tagged `small_battery_exception_air` or `small_battery_exception_ground`; the number of cells per battery | `hazmatInfo` |
| "numberOfBatteries" | _Integer_<br>Required for lithium battery items tagged `small_battery_exception_air` or `small_battery_exception_ground`; the number of batteries per package | `hazmatInfo` |
| "batteryConfiguration" | _String enumeration_<br>Required for lithium battery items tagged `small_battery_exception_air` or `small_battery_exception_ground`. Values are:<br>`contained_in_equipment`<br>`packed_with_equipment`<br>`standalone` | `hazmatInfo` |

For a quick reference of which `hazmatInfo` properties are required for each hazmat tag, see **Field requirements by hazmat tag** below.

## Field requirements by hazmat tag

The following table shows which `hazmatInfo` properties are required for each of the four hazmat tags. This can be used as a quick reference alongside the example payloads further down this page. In the table below:

- **LQA** refers to the `limited_quantity_air` hazmat tag
- **EQ** refers to the `excepted_quantity` hazmat tag
- **SBEA** refers to the `small_battery_exception_air` hazmat tag
- **SBEG** refers to the `small_battery_exception_ground` hazmat tag

For shortcut categories like `contains_lithium_ion` or `dry_ice`, see Pre-Configured Hazmat Properties above.

| Field | LQA | EQ | SBEA | SBEG | Notes |
| --- | --- | --- | --- | --- | --- |
| `category` | Optional | Required | Required | Required | EQ, SBEA, and SBEG must use `category: defined`; lithium shortcut categories such as `contains_lithium_ion` are rejected for these three tags. |
| `hazmatId` | Required | Required | Required | Required | UN or ID number identifying the commodity |
| `properShippingName` | Required | Required | Required | Required | Proper shipping name associated with the `hazmatId` |
| `hazardClass` | Required | Required | Required | Required | One of the `class_<N>_<descriptor>` values |
| `subsidiaryClasses` | Optional | Optional | Optional | Optional | Optional list of subsidiary hazard classifications |
| `packingGroup` | Required | Required | Optional | Optional | One of `i`, `ii`, or `iii`. Optional for SBE since Section II of IATA PI 965 through 970 does not assign a packing group. |
| `quantity` | Required | Required | Required | Required | Greater than zero |
| `quantityType` | Required | Required | Required | Required | Either `gross` or `net` |
| `quantityUnits` | Required | Required | Required | Required | One of `g`, `kg`, `lb`, `oz`, `ml`, or `l` |
| `containerType` | Required | Required | Required | Required | See the container enumeration in Detailed Hazmat Properties. |
| `numberOfInnerPackagings` | Required | Not applicable | Required | Required | Greater than zero where required |
| `innerPackagingType` | Required | Not applicable | Required | Required | Free-form description |
| `outerPackagingType` | Required | Not applicable | Required | Required | Free-form description |
| `packingInstructionCode` | Required | Not applicable | Required | Not applicable | LQA uses an IATA Packing Instruction such as `Y344`. SBEA uses one of `965` through `970`. SBEG ground shipments do not use an IATA Packing Instruction; the field is not applicable. |
| `transportMode` | Air only | Any | Any | Ground only | LQA rejects `ground`. SBEA covers both air and ground transport regulatorily. SBEG is ground-only. |
| `shipperDeclarationStatement` | Required | Required | Required | Required | Each tag uses a specific value: LQA uses `LQ_air` or `cargo_aircraft_only`; EQ uses `EQ`; SBEA uses `small_battery_air`; SBEG uses `small_battery_ground`. |
| `wattHours` | Not applicable | Not applicable | Conditional | Conditional | Required for lithium-ion battery items; at least one of `wattHours` or `lithiumContent` is required. |
| `lithiumContent` | Not applicable | Not applicable | Conditional | Conditional | Required for lithium-metal battery items; at least one of `wattHours` or `lithiumContent` is required. |
| `numberOfCells` | Not applicable | Not applicable | Conditional | Conditional | Required for lithium battery items; greater than zero. |
| `numberOfBatteries` | Not applicable | Not applicable | Conditional | Conditional | Required for lithium battery items; greater than zero. |
| `batteryConfiguration` | Not applicable | Not applicable | Conditional | Conditional | Required for lithium battery items; values are `contained_in_equipment`, `packed_with_equipment`, or `standalone`. |

# Emergency response info for hazmat shipments

When shipping hazardous materials, carriers may require a 24-hour emergency response phone number and contact details. Many companies use an Emergency Response Info Provider (ERIP) as their emergency contact rather than providing their own company phone number. Shipium supports an optional `emergencyResponseInfo` object at the shipment level within `shipmentParameters` (or `multiParcelShipmentParameters` for multi-parcel shipments). This object allows you to specify emergency contact details that are transmitted to the carrier for hazmat shipments.

## emergencyResponseInfo fields

The `emergencyResponseInfo` object is included directly in `shipmentParameters`, separate from the item-level `hazmatInfo`. All fields are optional.

| Property | Property contents | Parent property |
| --- | --- | --- |
| `emergencyResponseInfo` | _JSON object_<br>Contains emergency response contact details for hazmat shipments. See properties below for details. | `shipmentParameters` |
| `phoneNumber` | _String_<br>24-hour emergency phone number. For US numbers: 1 + area code + 7-digit number. For international numbers: country code + area code + number. Maximum 25 characters. | `emergencyResponseInfo` |
| `contactName` | _String_<br>Emergency contact name or Emergency Response Info Provider (ERIP) provider name. Maximum 35 characters. | `emergencyResponseInfo` |
| `contractNumber` | _String_<br>ERIP contract or account number. Maximum 35 characters. | `emergencyResponseInfo` |

If `emergencyResponseInfo` is not included in a hazmat shipment request, Shipium automatically falls back to the `shipFrom` contact information for carriers that require emergency details. This means that existing hazmat shipments will continue to work without modification, but providing explicit ERIP details is recommended for accuracy and compliance.

## Carrier support

Emergency response contact fields are supported by UPS and FedEx.

### UPS-specific guidance

**Phone number formatting.** UPS restricts certain characters in emergency phone numbers. Shipium automatically removes periods, dashes, plus signs, parentheses, spaces, and the keywords "EXT" and "OPT" before transmitting to UPS. You do not need to pre-sanitize phone numbers.

**When emergency contact info is required.** Although Shipium treats all `emergencyResponseInfo` fields as optional, UPS requires emergency phone and contact information for hazmat shipments where the origin or destination is within the US 50 states or Puerto Rico **and** the shipment uses the IATA regulation set (air transport). For ground domestic and Canada ground shipments, the fields are optional at the UPS level. If required fields are not provided and the `shipFrom` fallback does not contain adequate information, UPS may reject the shipment.

# Examples

## Non-hazmat example
This example in JavaScript Object Notation (JSON) shows a sample `orderItemQuantities` entry for a shipment that contains no hazmat items.

```json
{
  "orderItemQuantities": [
    {
      "productId": "PRODUCTID001",
      "quantity": 1
    },
    {
      "productId": "PRODUCTID002",
      "quantity": 2
    }
  ]
}
```

## Hazmat example: Limited quantity (LQ)/ORMD via ground transport
This example shows an `orderItemQuantities` entry for a ground shipment that contains two items: one with no hazmat properties and one LQ/ORMD product. LQ/ORMD via ground does not require a `hazmatInfo` block; flagging the item with the `limited_quantity` productDetails tag is sufficient for carrier selection.

```json
{
  "orderItemQuantities": [
    {
      "productId": "PRODUCTID001",
      "quantity": 1
    },
    {
      "productId": "PRODUCTID002",
      "quantity": 2,
      "productDetails": ["limited_quantity"]
    }
  ]
}
```

## Hazmat example: Limited Quantity Air (LQA)
This example shows an `orderItemQuantities` entry for an air shipment containing one LQA item. LQA applies to Limited Quantity hazmat transported on air service methods under 49 CFR §172.315(b), the Y-mark pathway. Unlike LQ via ground, LQA requires a full `hazmatInfo` block on the item.

The required `hazmatInfo` fields for an LQA item are:

- `hazmatId`, the UN or ID number, such as `UN1263`
- `properShippingName`
- `hazardClass`
- `packingGroup`, one of `i`, `ii`, or `iii`
- `transportMode`, either `passenger_and_cargo_aircraft` or `cargo_aircraft_only` (`ground` is rejected for LQA)
- `quantity`, `quantityType`, and `quantityUnits`
- `containerType`
- `numberOfInnerPackagings`
- `innerPackagingType`
- `outerPackagingType`
- `packingInstructionCode`
- `shipperDeclarationStatement`, typically `LQ_air` or `cargo_aircraft_only` for LQA

The following example shows a non-battery LQA payload for a paint product.

```json
{
  "orderItemQuantities": [
    {
      "productId": "PRODUCTID001",
      "quantity": 1
    },
    {
      "hazmat": true,
      "hazmatInfo": {
        "hazmatId": "UN1263",
        "properShippingName": "Paint",
        "hazardClass": "class_3_flammable_liquid",
        "packingGroup": "ii",
        "transportMode": "passenger_and_cargo_aircraft",
        "quantity": 0.5,
        "quantityType": "net",
        "quantityUnits": "l",
        "containerType": "fiberboard_box",
        "numberOfInnerPackagings": 1,
        "innerPackagingType": "plastic bottle",
        "outerPackagingType": "fiberboard box",
        "packingInstructionCode": "Y344",
        "shipperDeclarationStatement": "LQ_air"
      },
      "productDetails": ["limited_quantity_air"],
      "productId": "PRODUCTIDHAZ1",
      "quantity": 1
    }
  ]
}
```

## Hazmat example: Excepted Quantity (EQ)
This example shows an `orderItemQuantities` entry for a shipment containing one EQ item. EQ applies to small-volume hazmat shipped under 49 CFR §173.4. EQ items are eligible for reduced documentation, exempt from carrier-side hazmat data transmission, and may ship by either ground or air.  
Use the `excepted_quantity` productDetails tag.

The required `hazmatInfo` fields for an EQ item are:

- `category`, which must be `defined`; lithium shortcut categories such as `contains_lithium_ion` are rejected for EQ items
- `hazmatId`, the UN or ID number, such as `UN1266`
- `properShippingName`
- `hazardClass`
- `packingGroup`, one of `i`, `ii`, or `iii`
- `transportMode`, which can be either ground or air for EQ
- `quantity`, `quantityType`, and `quantityUnits`
- `containerType`
- `shipperDeclarationStatement`, typically `EQ` for EQ items

The following example shows an EQ payload for a perfumery product.

```json
{
  "orderItemQuantities": [
    {
      "productId": "PRODUCTID001",
      "quantity": 1
    },
    {
      "hazmat": true,
      "hazmatInfo": {
        "category": "defined",
        "hazmatId": "UN1266",
        "properShippingName": "Perfumery products",
        "hazardClass": "class_3_flammable_liquid",
        "packingGroup": "iii",
        "transportMode": "ground",
        "quantity": 0.03,
        "quantityType": "net",
        "quantityUnits": "l",
        "containerType": "fiberboard_box",
        "shipperDeclarationStatement": "EQ"
      },
      "productDetails": ["excepted_quantity"],
      "productId": "PRODUCTIDHAZ2",
      "quantity": 1
    }
  ]
}
```

## Hazmat example: Small Battery Exception (Air)
This example shows an `orderItemQuantities` entry for a shipment containing one SBEA item. SBEA applies to lithium cells and batteries below regulated thresholds, shipped with the Lithium Battery Mark on the outer packaging, under 49 CFR §173.185(c)(1)(iii). SBEA items may ship by either air or ground.  
Use the `small_battery_exception_air` productDetails tag.

The required `hazmatInfo` fields for an SBEA item are:

- `category`, which must be `defined`
- `hazmatId`, one of the lithium-battery UN numbers: `UN3090`, `UN3091`, `UN3480`, or `UN3481`
- `properShippingName`
- `hazardClass`, typically `class_9_miscellaneous`
- `transportMode`
- `quantity`, `quantityType`, and `quantityUnits`
- `containerType`
- `numberOfInnerPackagings`
- `innerPackagingType`
- `outerPackagingType`
- `packingInstructionCode`, typically an IATA Packing Instruction value such as `965` through `970`
- `shipperDeclarationStatement`, typically `small_battery_air` for SBEA
- Battery fields: at least one of `wattHours` or `lithiumContent` is required, plus `numberOfCells`, `numberOfBatteries`, and `batteryConfiguration`

The following example shows an SBEA payload for lithium-ion batteries packed with equipment.

```json
{
  "orderItemQuantities": [
    {
      "productId": "PRODUCTID001",
      "quantity": 1
    },
    {
      "hazmat": true,
      "hazmatInfo": {
        "category": "defined",
        "hazmatId": "UN3481",
        "properShippingName": "Lithium ion batteries packed with equipment",
        "hazardClass": "class_9_miscellaneous",
        "packingGroup": "ii",
        "transportMode": "passenger_and_cargo_aircraft",
        "quantity": 0.5,
        "quantityType": "net",
        "quantityUnits": "kg",
        "containerType": "fiberboard_box",
        "numberOfInnerPackagings": 1,
        "innerPackagingType": "plastic bag",
        "outerPackagingType": "fiberboard box",
        "packingInstructionCode": "966",
        "shipperDeclarationStatement": "small_battery_air",
        "wattHours": 95.0,
        "numberOfCells": 4,
        "numberOfBatteries": 1,
        "batteryConfiguration": "packed_with_equipment"
      },
      "productDetails": ["small_battery_exception_air"],
      "productId": "PRODUCTIDHAZ3",
      "quantity": 1
    }
  ]
}
```

## Hazmat example: Shipment with emergency response info (ERIP)
This example in JSON shows a shipment containing a hazardous material with emergency response contact details provided at the shipment level. The `emergencyResponseInfo` object is included in `shipmentParameters`, while the hazmat item details remain in `orderItemQuantities`.

```json
{
  "shipmentParameters": {
    "emergencyResponseInfo": {
      "phoneNumber": "18005551234",
      "contactName": "CHEMTREC",
      "contractNumber": "CCN123456"
    },
    "currencyCode": "usd",
    "orderItemQuantities": [
      {
        "hazmat": true,
        "hazmatInfo": {
          "category": "defined",
          "hazmatId": "UN1755",
          "containerType": "aluminum_jerrican",
          "packingGroup": "ii",
          "packingInstructionCode": "851",
          "properShippingName": "chromic acid solution",
          "hazardClass": "class_8_corrosive_material",
          "subsidiaryClasses": [
            "8.1"
          ],
          "quantity": 5.0,
          "quantityType": "net",
          "quantityUnits": "l",
          "transportMode": "ground"
        },
        "productDetails": [],
        "productId": "PRODUCTID001",
        "quantity": 3
      }
    ]
  }
}
```
