# Purchase label with shipping rule

Purchase and print a shipping label using a Shipping Rule. The Shipping Rule automatically selects the optimal carrier and service based on the rule's configuration.

Dynamic Ordering: Service Group Rules can now use dynamic ordering (_Cheapest_ or _Fastest_) to automatically rank eligible services in real time based on live rate or transit data. This feature is currently available for US sellers with USA domestic carrier services only. For more details, see the Configuring "Order Services By" guide.

The request body must NOT include carrier_id, service_code, or shipping_rule_id in the shipment object. If any of these fields are provided, the API will return a 400 Bad Request error.

Endpoint: POST /v1/labels/shipping_rules/{shipping_rule_id}
Version: 1.1.202604070904
Security: api_key

## Path parameters:

  - `shipping_rule_id` (string, required)
    Shipping Rule ID
    Example: "se-28529731"

## Request fields (application/json):

  - `shipment` (object, required)
    The shipment details for which to create a label. The carrier_id, service_code, and shipping_rule_id are not allowed as these will be automatically determined by the Shipping Rule.

  - `shipment.external_order_id` (string,null)
    ID that the Order Source assigned
    Example: "ext-order-123"

  - `shipment.items` (array)
    Describe the packages included in this shipment as related to potential metadata that was imported from
external order sources

  - `shipment.items.name` (string)
    item name

  - `shipment.items.sales_order_id` (string,null)
    sales order id

  - `shipment.items.sales_order_item_id` (string,null)
    sales order item id

  - `shipment.items.quantity` (integer)
    The quantity of this item included in the shipment

  - `shipment.items.sku` (string,null)
    Item Stock Keeping Unit

  - `shipment.items.external_order_id` (string,null)
    external order id

  - `shipment.items.external_order_item_id` (string,null)
    external order item id

  - `shipment.items.asin` (string,null)
    Amazon Standard Identification Number
    Example: "B00005N5PF"

  - `shipment.items.order_source_code` (string)
    The order sources that are supported by ShipEngine
    Enum: "amazon_ca", "amazon_us", "brightpearl", "channel_advisor", "cratejoy", "ebay", "etsy", "jane", "groupon_goods", "magento", "paypal", "seller_active", "shopify", "stitch_labs", "squarespace", "three_dcart", "tophatter", "walmart", "woo_commerce", "volusion"

  - `shipment.tax_identifiers` (array,null)

  - `shipment.tax_identifiers.taxable_entity_type` (string, required)
    The taxable entity type for this tax item. Valid values include the following

|Value       |Description
|:---------  |:-----------------------------------------------------
|shipper   | The shipper is responsible for this tax.
|recipient | The recipient of the shipment is responsible for this tax.
|ior       | The importer of records is responsible for tax.
    Enum: "shipper", "recipient", "ior"

  - `shipment.tax_identifiers.identifier_type` (string, required)
    Tax identifier type for customs declaration

|Pickup Type    | Description
|---------------|-----------------------------------------
|vat          | The tax identifier is a Value Added Tax.
|eori         | The tax identifier is an Economic Operators Registration and Identification Number (EORI).
|ssn          | The tax identifier is a Social Security Number.
|ein          | The tax identifier is an Employer Identification Number (EIN).
|tin          | The tax identifier is a Tax Identification Number (TIN).
|ioss         | The tax identifier is an Import One-Stop Shop (IOSS).
|pan          | The tax identifier is a Permanent Account Number (PAN).
|voec         | The tax identifier is a Norwegian VAT On E-Commerce(VOEC).
|pccc         | The tax identifier is a Personal Customs Clearance Code (PCCC).
|oss          | The tax identifier is an One-Stop Shop (OSS).
|passport     | The tax identifier is a Passport Number.
|abn          | The tax identifier is an Australian Business Number.
|ukims        | The tax identifier is an UK Internal Market Scheme number.
    Enum: "vat", "eori", "ssn", "ein", "tin", "ioss", "pan", "voec", "pccc", "oss", "passport", "abn", "ukims"

  - `shipment.tax_identifiers.issuing_authority` (string, required)
    The authority that issued this tax. This must be a valid 2 character ISO 3166 Alpha 2 country code.

  - `shipment.tax_identifiers.value` (string, required)
    The value of the identifier

  - `shipment.external_shipment_id` (string,null)
    A unique user-defined key to identify a shipment.  This can be used to retrieve the shipment.

> Warning: The external_shipment_id is limited to 50 characters. Any additional characters will be truncated.
    Example: "ext-ship-123"

  - `shipment.shipment_number` (string,null)
    A non-unique user-defined number used to identify a shipment.  If undefined, this will match the external_shipment_id of the shipment.

> Warning: The shipment_number is limited to 50 characters. Any additional characters will be truncated.
    Example: "SHIP-001"

  - `shipment.ship_date` (string)
    The date that the shipment was (or will be) shipped.  ShipEngine will take the day of week into consideration. For example, if the carrier does not operate on Sundays, then a package that would have shipped on Sunday will ship on Monday instead.
    Example: "2018-09-23T00:00:00.000Z"

  - `shipment.ship_to` (object)
    The recipient's mailing address

  - `shipment.ship_to.name` (string, required)
    The name of a contact person at this address.  This field may be set instead of - or in addition to - the company_name field.
    Example: "John Doe"

  - `shipment.ship_to.phone` (string)
    The phone number of a contact person at this address.  The format of this phone number varies depending on the country.
    Example: "+1 204-253-9411 ext. 123"

  - `shipment.ship_to.email` (string,null)
    Email for the address owner.
    Example: "example@example.com"

  - `shipment.ship_to.company_name` (string,null)
    If this is a business address, then the company name should be specified here.
    Example: "The Home Depot"

  - `shipment.ship_to.address_line1` (string, required)
    The first line of the street address.  For some addresses, this may be the only line.  Other addresses may require 2 or 3 lines.
    Example: "1999 Bishop Grandin Blvd."

  - `shipment.ship_to.address_line2` (string,null)
    The second line of the street address.  For some addresses, this line may not be needed.
    Example: "Unit 408"

  - `shipment.ship_to.address_line3` (string,null)
    The third line of the street address.  For some addresses, this line may not be needed.
    Example: "Building #7"

  - `shipment.ship_to.city_locality` (string, required)
    The name of the city or locality
    Example: "Winnipeg"

  - `shipment.ship_to.state_province` (string, required)
    The state or province.  For some countries (including the U.S.) only abbreviations are allowed.  Other countries allow the full name or abbreviation.
    Example: "Manitoba"

  - `shipment.ship_to.postal_code` (string, required)
    postal code
    Example: "78756-3717"

  - `shipment.ship_to.country_code` (string)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
    Example: "CA"

  - `shipment.ship_to.address_residential_indicator` (string)
    Indicates whether this is a residential address.
    Enum: "unknown", "yes", "no"

  - `shipment.ship_to.instructions` (string,null)
    Additional text about how to handle the shipment at this address.

  - `shipment.ship_to.geolocation` (array)

  - `shipment.ship_to.geolocation.type` (string)
    Enum of available type of geolocation items:
  - 'what3words' functionality allows to specify a location by providing 3 words that have been assigned to the specific location. See [link](https://what3words.com/business) for more details.
    Enum: "what3words"

  - `shipment.ship_to.geolocation.value` (string)
    value of the geolocation item
    Example: "cats.with.thumbs"

  - `shipment.ship_from` (object)
    The shipment's origin address. If you frequently ship from the same location, consider creating a warehouse. Then you can simply specify the warehouse_id rather than the complete address each time.

  - `shipment.ship_from.name` (string, required)
    The name of a contact person at this address.  This field may be set instead of - or in addition to - the company_name field.
    Example: "John Doe"

  - `shipment.ship_from.phone` (string, required)
    The phone number of a contact person at this address.  The format of this phone number varies depending on the country.
    Example: "+1 204-253-9411 ext. 123"

  - `shipment.ship_from.email` (string,null)
    Email for the address owner.
    Example: "example@example.com"

  - `shipment.ship_from.company_name` (string,null)
    If this is a business address, then the company name should be specified here.
    Example: "The Home Depot"

  - `shipment.ship_from.address_line1` (string, required)
    The first line of the street address.  For some addresses, this may be the only line.  Other addresses may require 2 or 3 lines.
    Example: "1999 Bishop Grandin Blvd."

  - `shipment.ship_from.address_line2` (string,null)
    The second line of the street address.  For some addresses, this line may not be needed.
    Example: "Unit 408"

  - `shipment.ship_from.address_line3` (string,null)
    The third line of the street address.  For some addresses, this line may not be needed.
    Example: "Building #7"

  - `shipment.ship_from.city_locality` (string, required)
    The name of the city or locality
    Example: "Winnipeg"

  - `shipment.ship_from.state_province` (string, required)
    The state or province.  For some countries (including the U.S.) only abbreviations are allowed.  Other countries allow the full name or abbreviation.
    Example: "Manitoba"

  - `shipment.ship_from.postal_code` (string, required)
    postal code
    Example: "78756-3717"

  - `shipment.ship_from.country_code` (string, required)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
    Example: "CA"

  - `shipment.ship_from.address_residential_indicator` (string)
    Indicates whether this is a residential address.
    Enum: "unknown", "yes", "no"

  - `shipment.ship_from.instructions` (string,null)
    Additional text about how to handle the shipment at this address.

  - `shipment.ship_from.geolocation` (array)

  - `shipment.ship_from.geolocation.type` (string)
    Enum of available type of geolocation items:
  - 'what3words' functionality allows to specify a location by providing 3 words that have been assigned to the specific location. See [link](https://what3words.com/business) for more details.
    Enum: "what3words"

  - `shipment.ship_from.geolocation.value` (string)
    value of the geolocation item
    Example: "cats.with.thumbs"

  - `shipment.warehouse_id` (string,null)
    The warehouse that the shipment is being shipped from. Either warehouse_id or ship_from must be specified.
    Example: "se-28529731"

  - `shipment.return_to` (object)
    The return address for this shipment.  Defaults to the ship_from address.

  - `shipment.return_to.name` (string, required)
    The name of a contact person at this address.  This field may be set instead of - or in addition to - the company_name field.
    Example: "John Doe"

  - `shipment.return_to.phone` (string)
    The phone number of a contact person at this address.  The format of this phone number varies depending on the country.
    Example: "+1 204-253-9411 ext. 123"

  - `shipment.return_to.email` (string,null)
    Email for the address owner.
    Example: "example@example.com"

  - `shipment.return_to.company_name` (string,null)
    If this is a business address, then the company name should be specified here.
    Example: "The Home Depot"

  - `shipment.return_to.address_line1` (string, required)
    The first line of the street address.  For some addresses, this may be the only line.  Other addresses may require 2 or 3 lines.
    Example: "1999 Bishop Grandin Blvd."

  - `shipment.return_to.address_line2` (string,null)
    The second line of the street address.  For some addresses, this line may not be needed.
    Example: "Unit 408"

  - `shipment.return_to.address_line3` (string,null)
    The third line of the street address.  For some addresses, this line may not be needed.
    Example: "Building #7"

  - `shipment.return_to.city_locality` (string, required)
    The name of the city or locality
    Example: "Winnipeg"

  - `shipment.return_to.state_province` (string, required)
    The state or province.  For some countries (including the U.S.) only abbreviations are allowed.  Other countries allow the full name or abbreviation.
    Example: "Manitoba"

  - `shipment.return_to.postal_code` (string, required)
    postal code
    Example: "78756-3717"

  - `shipment.return_to.country_code` (string)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
    Example: "CA"

  - `shipment.return_to.address_residential_indicator` (string)
    Indicates whether this is a residential address.
    Enum: "unknown", "yes", "no"

  - `shipment.return_to.instructions` (string,null)
    Additional text about how to handle the shipment at this address.

  - `shipment.return_to.geolocation` (array)

  - `shipment.return_to.geolocation.type` (string)
    Enum of available type of geolocation items:
  - 'what3words' functionality allows to specify a location by providing 3 words that have been assigned to the specific location. See [link](https://what3words.com/business) for more details.
    Enum: "what3words"

  - `shipment.return_to.geolocation.value` (string)
    value of the geolocation item
    Example: "cats.with.thumbs"

  - `shipment.is_return` (boolean,null)
    An optional indicator if the shipment is intended to be a return. Defaults to false if not provided.

  - `shipment.confirmation` (string)
    The type of delivery confirmation for this shipment. Defaults to 'none' if not specified.
    Enum: "none", "delivery", "signature", "adult_signature", "adult_signature_restricted_delivery", "direct_signature", "delivery_mailed", "verbal_confirmation", "delivery_code", "age_verification_16_plus"

  - `shipment.customs` (object,null)
    Customs information for international shipments.

> Note: International shipments (where ship_from.country_code differs from ship_to.country_code) must include either customs or advanced_options.
>
> To prepay duties and taxes (DDP / PDT), set customs.terms_of_trade_code to ddp.
>
> Please note that the guaranteed prepaid duties and taxes option is available only for eligible ShipStation carriers.
    Example: {"terms_of_trade_code":"ddp","contents":"gift","non_delivery":"return_to_sender"}

  - `shipment.customs.contents` (string, required)
    The type of contents in this shipment.  This may impact import duties or customs treatment.
    Enum: "merchandise", "documents", "gift", "returned_goods", "sample", "e_commerce_goods", "commercial_sale_of_goods_b2b", "other"

  - `shipment.customs.contents_explanation` (string)
    Explanation for contents (required if the contents is provided as other)

  - `shipment.customs.non_delivery` (string, required)
    Indicates what to do if a package is unable to be delivered.
    Enum: "return_to_sender", "treat_as_abandoned"

  - `shipment.customs.terms_of_trade_code` (string)
    Specifies the supported terms of trade code (incoterms)
    Enum: "exw", "fca", "cpt", "cip", "dpu", "dap", "ddp", "fas", "fob", "cfr", "cif", "ddu", "daf", "deq", "des"

  - `shipment.customs.declaration` (string)
    Declaration statement to be placed on the commercial invoice

  - `shipment.customs.pending_documents` (boolean)
    Set to true to indicate the shipment requires customs documents to be uploaded via Carrier Document Upload. See the [Carrier Document Upload guide](/apis/@shipengine/docs/labels/carrier-document-upload.md).
    Example: true

  - `shipment.customs.invoice_additional_details` (object)
    The additional information to put on commercial invoice

  - `shipment.customs.invoice_additional_details.freight_charge` (object)
    Freight Charge for shipment.

  - `shipment.customs.invoice_additional_details.freight_charge.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.freight_charge.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.insurance_charge` (object)
    Insurance Charge for shipment.

  - `shipment.customs.invoice_additional_details.insurance_charge.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.insurance_charge.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.discount` (object)
    Discount for shipment.

  - `shipment.customs.invoice_additional_details.discount.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.discount.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.estimated_import_charges` (object)
    Estimated import charges for commercial invoices for international shipments.

  - `shipment.customs.invoice_additional_details.estimated_import_charges.taxes` (object)
    Estimated import taxes.

  - `shipment.customs.invoice_additional_details.estimated_import_charges.taxes.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.estimated_import_charges.taxes.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.estimated_import_charges.duties` (object)
    Estimated import duties.

  - `shipment.customs.invoice_additional_details.estimated_import_charges.duties.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.estimated_import_charges.duties.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.other_charge` (object)
    Other charge for shipment.

  - `shipment.customs.invoice_additional_details.other_charge.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.invoice_additional_details.other_charge.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.customs.invoice_additional_details.other_charge_description` (string)
    Description for the other charge (if provided).

  - `shipment.customs.invoice_additional_details.invoice_number` (string)
    The invoice number to be used in the customs.

  - `shipment.customs.importer_of_record` (object)
    importer of records address, anywhere in the world.

  - `shipment.customs.importer_of_record.name` (string, required)
    The name of a contact person at this address. Either name or the company_name field should always be set.
    Example: "John Doe"

  - `shipment.customs.importer_of_record.phone` (string)
    The phone number of a contact person at this address.  The format of this phone number varies depending on the country.
    Example: "+1 204-253-9411 ext. 123"

  - `shipment.customs.importer_of_record.email` (string,null)
    Email for the address owner.
    Example: "example@example.com"

  - `shipment.customs.importer_of_record.company_name` (string,null)
    If this is a business address, then the company name should be specified here. Either name or the company_name field should always be set.
    Example: "The Home Depot"

  - `shipment.customs.importer_of_record.address_line1` (string, required)
    The first line of the street address.  For some addresses, this may be the only line.  Other addresses may require 2 or 3 lines.
    Example: "1999 Bishop Grandin Blvd."

  - `shipment.customs.importer_of_record.address_line2` (string,null)
    The second line of the street address.  For some addresses, this line may not be needed.
    Example: "Unit 408"

  - `shipment.customs.importer_of_record.address_line3` (string,null)
    The third line of the street address.  For some addresses, this line may not be needed.
    Example: "Building #7"

  - `shipment.customs.importer_of_record.city_locality` (string, required)
    The name of the city or locality
    Example: "Winnipeg"

  - `shipment.customs.importer_of_record.state_province` (string)
    The state or province.  For some countries (including the U.S.) only abbreviations are allowed.  Other countries allow the full name or abbreviation.
    Example: "Manitoba"

  - `shipment.customs.importer_of_record.postal_code` (string, required)
    postal code
    Example: "78756-3717"

  - `shipment.customs.importer_of_record.country_code` (string, required)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
    Example: "CA"

  - `shipment.customs.license_number` (string)
    The license number to be used in the customs.

  - `shipment.customs.certificate_number` (string)
    The certificate number to be used in the customs.

  - `shipment.customs.customs_items` (array)
    Customs declarations for each item in the shipment. (Please provide this information under products inside packages)

  - `shipment.customs.customs_items.description` (string,null)
    A description of the item

  - `shipment.customs.customs_items.quantity` (integer)
    The quantity of this item in the shipment.

  - `shipment.customs.customs_items.value` (number)
    The monetary amount, in the specified currency.

  - `shipment.customs.customs_items.value_currency` (string)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.customs.customs_items.weight` (object)
    The item weight

  - `shipment.customs.customs_items.weight.value` (number, required)
    The weight, in the specified unit

  - `shipment.customs.customs_items.weight.unit` (string, required)
    The possible weight unit values
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipment.customs.customs_items.harmonized_tariff_code` (string,null)
    The [Harmonized Tariff Code](https://en.wikipedia.org/wiki/Harmonized_System) of this item.
    Example: "3926.1"

  - `shipment.customs.customs_items.country_of_origin` (string,null)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1) where this item originated
    Example: "CA"

  - `shipment.customs.customs_items.unit_of_measure` (string,null)

  - `shipment.customs.customs_items.sku` (string,null)
    The SKU (Stock Keeping Unit) of the customs item

  - `shipment.customs.customs_items.sku_description` (string,null)
    Description of the Custom Item's SKU

  - `shipment.advanced_options` (object)
    Advanced shipment options.

> Note: International shipments must include either customs or advanced_options.

  - `shipment.advanced_options.bill_to_account` (string,null)
    This field is used to bill shipping costs to a third party. This field must be used in conjunction with the bill_to_country_code, bill_to_party, and bill_to_postal_code fields.

  - `shipment.advanced_options.bill_to_country_code` (string,null)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1) of the third-party that is responsible for shipping costs.
    Example: "CA"

  - `shipment.advanced_options.bill_to_party` (string,null)
    Indicates whether to bill shipping costs to the recipient or to a third-party.  When billing to a third-party, the bill_to_account, bill_to_country_code, and bill_to_postal_code fields must also be set.
    Enum: "recipient", "third_party"

  - `shipment.advanced_options.bill_to_postal_code` (string,null)
    The postal code of the third-party that is responsible for shipping costs.

  - `shipment.advanced_options.contains_alcohol` (boolean)
    Indicates that the shipment contains alcohol.

  - `shipment.advanced_options.delivered_duty_paid` (boolean)
    Indicates that the shipper is paying the international delivery duties for this shipment.  This option is supported by UPS, FedEx, and DHL Express.

  - `shipment.advanced_options.dry_ice` (boolean)
    Indicates if the shipment contain dry ice

  - `shipment.advanced_options.dry_ice_weight` (object,null)
    The weight of the dry ice in the shipment

  - `shipment.advanced_options.dry_ice_weight.value` (number, required)
    The weight, in the specified unit

  - `shipment.advanced_options.dry_ice_weight.unit` (string, required)
    The possible weight unit values
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipment.advanced_options.non_machinable` (boolean)
    Indicates that the package cannot be processed automatically because it is too large or irregularly shaped. This is primarily for USPS shipments.  See [Section 1.2 of the USPS parcel standards](https://pe.usps.com/text/dmm300/101.htm#ep1047495) for details.

  - `shipment.advanced_options.saturday_delivery` (boolean)
    Enables Saturday delivery, if supported by the carrier.

  - `shipment.advanced_options.fedex_freight` (object)
    Provide details for the Fedex freight service

  - `shipment.advanced_options.fedex_freight.shipper_load_and_count` (string)

  - `shipment.advanced_options.fedex_freight.booking_confirmation` (string)

  - `shipment.advanced_options.use_ups_ground_freight_pricing` (boolean,null)
    Whether to use UPS Ground Freight pricing. If enabled, then a freight_class must also be specified.

  - `shipment.advanced_options.freight_class` (string,null)
    The National Motor Freight Traffic Association [freight class](http://www.nmfta.org/pages/nmfc?AspxAutoDetectCookieSupport=1), such as "77.5", "110", or "250".
    Example: "77.5"

  - `shipment.advanced_options.custom_field1` (string,null)
    An arbitrary field that can be used to store information about the shipment.

  - `shipment.advanced_options.custom_field2` (string,null)
    An arbitrary field that can be used to store information about the shipment.

  - `shipment.advanced_options.custom_field3` (string,null)
    An arbitrary field that can be used to store information about the shipment.

  - `shipment.advanced_options.origin_type` (string,null)
    Indicates if the package will be picked up or dropped off by the carrier
    Enum: "pickup", "drop_off"

  - `shipment.advanced_options.additional_handling` (boolean,null)
    Indicate to the carrier that this shipment requires additional handling.

  - `shipment.advanced_options.shipper_release` (boolean,null)

  - `shipment.advanced_options.collect_on_delivery` (object)
    Defer payment until package is delivered, instead of when it is ordered.

  - `shipment.advanced_options.collect_on_delivery.payment_type` (string)
    Types of payment that are supported
    Enum: "any", "cash", "cash_equivalent", "none"

  - `shipment.advanced_options.collect_on_delivery.payment_amount` (object)

  - `shipment.advanced_options.collect_on_delivery.payment_amount.currency` (string)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.advanced_options.collect_on_delivery.payment_amount.amount` (number)

  - `shipment.advanced_options.third_party_consignee` (boolean)
    Third Party Consignee option is a value-added service that allows the shipper to supply goods without commercial invoices being attached

  - `shipment.advanced_options.dangerous_goods` (boolean)
    Indicates if the Dangerous goods are present in the shipment

  - `shipment.advanced_options.dangerous_goods_contact` (object)
    Contact information for Dangerous goods

  - `shipment.advanced_options.dangerous_goods_contact.name` (string)
    Name of the contact

  - `shipment.advanced_options.dangerous_goods_contact.phone` (string)
    Phone number of the contact

  - `shipment.advanced_options.movement_indicator` (string,null)
    An indicator that will tell the carrier the type of movement for the shipment.
    Enum: "c2c", "b2c", "c2b", "b2b"

  - `shipment.advanced_options.windsor_framework_details` (object)
    The Windsor framework is a new regulation in the UK that simplifies customs procedures for goods moved from the UK mainland to Northern Ireland.

  - `shipment.advanced_options.windsor_framework_details.not_at_risk` (boolean)
    An indicator that allows a shipper to declare the shipment as not-at-risk.

  - `shipment.advanced_options.windsor_framework_details.movement_indicator` (string)
    An indicator that will tell the carrier and HMRC the type of movement for the shipment.
    Enum: "c2c", "b2c", "c2b", "b2b"

  - `shipment.advanced_options.license_number` (string,null)
    license_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.
    Example: "514785"

  - `shipment.advanced_options.invoice_number` (string,null)
    invoice_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.
    Example: "IOC56888"

  - `shipment.advanced_options.certificate_number` (string,null)
    certificate_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.
    Example: "784515"

  - `shipment.advanced_options.fragile` (boolean)
    Indicates that the contents of the package are fragile and should be handled with care.
    Example: true

  - `shipment.advanced_options.delivery_as_addressed` (boolean)
    Instructs the carrier to deliver the package only to the exact address provided.
    Example: true

  - `shipment.advanced_options.return_after_first_attempt` (boolean)
    Ensures the shipment is immediately flagged for return to the sender if the initial delivery attempt fails.
    Example: true

  - `shipment.advanced_options.regulated_content_type` (string,null)
    Indicates the category of goods in the shipment that is subject to special regulatory or compliance requirements.
    Enum: "day_old_poultry", "other_live_animal"

  - `shipment.advanced_options.netstamps_options` (object)
    Layout options for printing NetStamps labels on a sheet. Controls the starting position on the label sheet.

  - `shipment.advanced_options.netstamps_options.row` (integer)
    The row on the sheet where label is placed.
    Example: 1

  - `shipment.advanced_options.netstamps_options.column` (integer)
    The column on the sheet where label is placed.
    Example: 1

  - `shipment.advanced_options.suppress_carrier_generated_documents` (array)
    A list of carrier-generated documents to suppress for the shipment.

> Note: Currently, only commercial_invoice is supported (UPS only).
    Enum: "commercial_invoice"

  - `shipment.advanced_options.transparency_codes` (array)
    Amazon Transparency Codes for verifying product authenticity. Each entry maps transparency codes to the corresponding order item ID, which must match the value in shipment.items[].external_order_item_id.

  - `shipment.advanced_options.transparency_codes.order_item_id` (string, required)
    The order item ID from Amazon, matching the external_order_item_id in the shipment items.
    Example: "12345678901234"

  - `shipment.advanced_options.transparency_codes.codes` (array, required)
    Array of Amazon Transparency codes for this order item.
    Example: ["AZ:XXXXXXXXXXXX"]

  - `shipment.insurance_provider` (string)
    The insurance provider to use for any insured packages in the shipment.
    Enum: "none", "shipsurance", "parcelguard", "xcover", "carrier", "third_party"

  - `shipment.order_source_code` (string)
    The order sources that are supported by ShipEngine
    Enum: "amazon_ca", "amazon_us", "brightpearl", "channel_advisor", "cratejoy", "ebay", "etsy", "jane", "groupon_goods", "magento", "paypal", "seller_active", "shopify", "stitch_labs", "squarespace", "three_dcart", "tophatter", "walmart", "woo_commerce", "volusion"

  - `shipment.packages` (array)
    The packages in the shipment.

> Note: Some carriers only allow one package per shipment.  If you attempt to create a multi-package shipment for a carrier that doesn't allow it, an error will be returned.

  - `shipment.packages.package_id` (string)
    A string that uniquely identifies this package type
    Example: "se-28529731"

  - `shipment.packages.package_code` (string)
    The package type, such as thick_envelope, small_flat_rate_box, large_package, etc.  The code package indicates a custom or unknown package type.
    Example: "small_flat_rate_box"

  - `shipment.packages.package_name` (string)
    The name of the of the package type

  - `shipment.packages.weight` (object, required)
    The package weight

  - `shipment.packages.weight.value` (number, required)
    The weight, in the specified unit

  - `shipment.packages.weight.unit` (string, required)
    The possible weight unit values
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipment.packages.dimensions` (object)
    The package dimensions

  - `shipment.packages.dimensions.unit` (string, required)
    The dimension units that are supported by ShipEngine.
    Enum: "inch", "centimeter"

  - `shipment.packages.dimensions.length` (number, required)
    The length of the package, in the specified unit

  - `shipment.packages.dimensions.width` (number, required)
    The width of the package, in the specified unit

  - `shipment.packages.dimensions.height` (number, required)
    The height of the package, in the specified unit

  - `shipment.packages.insured_value` (object)
    The insured value of the package.  Requires the insurance_provider field of the shipment to be set.

  - `shipment.packages.insured_value.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.packages.insured_value.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.packages.label_messages` (object)
    Custom messages to print on the shipping label for the package.  These are typically used to print invoice numbers, product numbers, or other internal reference numbers.  Not all carriers support label messages. The number of lines and the maximum length of each line also varies by carrier.

|Carrier            |Max lines |Max line length
|-------------------|----------|--------------------
|USPS (Stamps.com)  |3         |60
|FedEx              |3         |35 for the first line. 30 for additional lines.
|UPS                |2         |35
|OnTrac             |2         |25

  - `shipment.packages.label_messages.reference1` (string,null, required)
    The first line of the custom label message.  Some carriers may prefix this line with something like "REF", "Reference", "Trx Ref No.", etc.

  - `shipment.packages.label_messages.reference2` (string,null, required)
    The second line of the custom label message.  Some carriers may prefix this line with something like "INV", "Reference 2", "Trx Ref No.", etc.

  - `shipment.packages.label_messages.reference3` (string,null, required)
    The third line of the custom label message.  Some carriers may prefix this line with something like "PO", "Reference 3", etc.

  - `shipment.packages.external_package_id` (string)
    An external package id.

  - `shipment.packages.content_description` (string,null)
    A short description of the package content. Required for shipments moving to, from, and through Mexico.
    Example: "Hand knitted wool socks"

  - `shipment.packages.products` (array)
    Details about products inside packages (Information provided would be used on custom documentation)

  - `shipment.packages.products.description` (string,null)
    A description of the item

  - `shipment.packages.products.quantity` (integer)
    The quantity of this item in the shipment.

  - `shipment.packages.products.value` (object)
    The declared value of each item

  - `shipment.packages.products.value.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment.packages.products.value.amount` (number, required)
    The monetary amount, in the specified currency.

  - `shipment.packages.products.weight` (object)
    The item weight

  - `shipment.packages.products.weight.value` (number, required)
    The weight, in the specified unit

  - `shipment.packages.products.weight.unit` (string, required)
    The possible weight unit values
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipment.packages.products.harmonized_tariff_code` (string,null)
    The [Harmonized Tariff Code](https://en.wikipedia.org/wiki/Harmonized_System) of this item.
    Example: "3926.1"

  - `shipment.packages.products.country_of_origin` (string,null)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1) where this item originated
    Example: "CA"

  - `shipment.packages.products.unit_of_measure` (string,null)

  - `shipment.packages.products.sku` (string,null)
    The SKU (Stock Keeping Unit) of the item

  - `shipment.packages.products.sku_description` (string,null)
    Description of the Custom Item's SKU

  - `shipment.packages.products.mid_code` (string,null)
    Manufacturers Identification code

  - `shipment.packages.products.product_url` (string,null)
    link to the item on the seller website

  - `shipment.packages.products.vat_rate` (number,null)
    VAT rate applicable to the item
    Example: 0.2

  - `shipment.packages.products.dangerous_goods` (array)
    Details about dangerous goods inside products

  - `shipment.packages.products.dangerous_goods.id_number` (string,null)
    UN number to identify the dangerous goods.

  - `shipment.packages.products.dangerous_goods.shipping_name` (string,null)
    Trade description of the dangerous goods.

  - `shipment.packages.products.dangerous_goods.technical_name` (string,null)
    Recognized Technical or chemical name of dangerous goods.

  - `shipment.packages.products.dangerous_goods.product_class` (string,null)
    Dangerous goods product class based on regulation.

  - `shipment.packages.products.dangerous_goods.product_class_subsidiary` (string,null)
    A secondary of product class for substances presenting more than one particular hazard

  - `shipment.packages.products.dangerous_goods.packaging_group` (string)
    Enum: "i", "ii", "iii"

  - `shipment.packages.products.dangerous_goods.dangerous_amount` (object)
    This model represents the amount of the dangerous goods.

  - `shipment.packages.products.dangerous_goods.dangerous_amount.amount` (number)
    The amount of dangerous goods.

  - `shipment.packages.products.dangerous_goods.dangerous_amount.unit` (string,null)
    The unit of dangerous goods.

  - `shipment.packages.products.dangerous_goods.quantity` (integer)
    Quantity of dangerous goods.

  - `shipment.packages.products.dangerous_goods.packaging_instruction` (string,null)
    The specific standardized packaging instructions from the relevant regulatory agency that have been applied to the parcel/container.

  - `shipment.packages.products.dangerous_goods.packaging_instruction_section` (string)
    Enum: "section_1", "section_2", "section_1a", "section_1b"

  - `shipment.packages.products.dangerous_goods.packaging_type` (string,null)
    The type of exterior packaging used to contain the dangerous good.

  - `shipment.packages.products.dangerous_goods.transport_mean` (string)
    Enum: "ground", "water", "cargo_aircraft_only", "passenger_aircraft"

  - `shipment.packages.products.dangerous_goods.transport_category` (string,null)
    Transport category assign to dangerous goods for the transport purpose.

  - `shipment.packages.products.dangerous_goods.regulation_authority` (string,null)
    Name of the regulatory authority.

  - `shipment.packages.products.dangerous_goods.regulation_level` (string)
    Enum: "lightly_regulated", "fully_regulated", "limited_quantities", "excepted_quantity"

  - `shipment.packages.products.dangerous_goods.radioactive` (boolean,null)
    Indication if the substance is radioactive.

  - `shipment.packages.products.dangerous_goods.reportable_quantity` (boolean,null)
    Indication if the substance needs to be reported to regulatory authority based on the quantity.

  - `shipment.packages.products.dangerous_goods.tunnel_code` (string,null)
    Defines which types of tunnels the shipment is allowed to go through

  - `shipment.packages.products.dangerous_goods.additional_description` (string,null)
    Provider additonal description regarding the dangerous goods. This is used as a placed holder to provider additional context and varies by carrier

  - `shipment.packages.products.manufacturer_product_id_type` (string,null)
    The type of identifier used for the manufacturer product ID.
    Enum: "undefined", "gtin", "ean", "isbn", "upc", "mpn", "sku"

  - `shipment.packages.products.manufacturer_product_id` (string,null)
    The manufacturer's product identifier corresponding to the manufacturer_product_id_type.
    Example: "012345678905"

  - `shipment.packages.products.manufacturer_ns_product_id` (string,null)
    A non-standardized product identifier unique to the manufacturer's own system that does not follow an internationally recognized standard (e.g. a SKU).
    Example: "MY-SKU-12345"

  - `shipment.packages.products.cpsc_certificates` (array,null)
    List of CPSC eFiling certificates associated with this product.

  - `shipment.packages.products.cpsc_certificates.certifier_id` (string)
    Unique identifier assigned to the certifier by the CPSC.
    Example: "CERT-12345"

  - `shipment.packages.products.cpsc_certificates.certificate_version_id` (string)
    The version identifier of the CPSC certificate.
    Example: "v1.0"

  - `shipment.packages.products.cpsc_disclaim` (object,null)
    CPSC disclaimer information for products that do not require a Certificate of Compliance, even though their HTS code is flagged as potentially subject to CPSC regulation. Use either cpsc_certificates or cpsc_disclaim per product, not both.

  - `shipment.packages.products.cpsc_disclaim.disclaim_code` (string, required)
    The CPSC disclaimer code indicating why no certificate is required. A - Product Not Regulated by CPSC: product falls outside CPSC jurisdiction (e.g., regulated by FDA), has no applicable CPSC safety standard, or is a B2B part for further assembly. B - Enforcement Discretion: product falls under CPSC jurisdiction and a rule technically applies, but CPSC is exercising enforcement discretion and does not require a certificate.
    Enum: "A", "B"

  - `shipment.packages.products.cpsc_disclaim.intended_use_code` (string, required)
    A code from CBP's Intended Use Code list indicating why the product is exempt. Required for every Disclaim filing. For Disclaim B, must be 130.006. For Disclaim A, valid base codes are: 081.XXX (Medical Device), 090.XXX (Military Use), 100.XXX (Personal Use), 130.XXX (Consumer Use), 155.XXX (Commercial Assembly), 970.XXX (Export), 980.000 (Other Use - intended_use_description recommended).
    Example: "130.006"

  - `shipment.packages.products.cpsc_disclaim.intended_use_description` (string,null)
    A plain-language description of the product's intended use. Max 100 characters. Recommended by CPSC when intended_use_code is 980.000 (Other Use).

  - `shipment.packages.products.extended_details` (object)
    Additional details about products

  - `shipment.comparison_rate_type` (string,null)
    Calculate a rate for this shipment with the requested carrier using a ratecard that differs from the default.  Only supported for UPS and USPS.
    Example: "retail"

  - `is_return_label` (boolean)
    Indicates whether this is a return label.  You may also want to set the rma_number so you know what is being returned.

  - `rma_number` (string,null)
    An optional Return Merchandise Authorization number.  This field is useful for return labels.  You can set it to any string value.
    Example: "RMA-12345"

  - `charge_event` (string)
    The label charge event.
    Enum: "carrier_default", "on_creation", "on_carrier_acceptance"

  - `outbound_label_id` (string)
    The label_id of the original (outgoing) label that the return label is for. This associates the two labels together, which is
required by some carriers.
    Example: "se-28529731"

  - `validate_address` (string)
    The possible validate address values
    Enum: "no_validation", "validate_only", "validate_and_clean"

  - `label_download_type` (string)
    There are two different ways to download a label:

|Label Download Type | Description
|--------------------|------------------------------
|url               |You will receive a URL, which you can use to download the label in a separate request. The URL will remain valid for 90 days.
|inline            |You will receive the Base64-encoded label as part of the response. No need for a second request to download the label.
    Enum: "url", "inline"

  - `label_format` (string)
    The file format that you want the label to be in.  We recommend pdf format because it is supported by all carriers, whereas some carriers do not support the png or zpl formats.
    Enum: "pdf", "png", "zpl"

  - `display_scheme` (string)
    The display format that the label should be shown in.
    Enum: "label", "paperless", "label_and_paperless"

  - `label_layout` (string)
    The layout (size) that you want the label to be in.  The label_format determines which sizes are allowed.  4x6 is supported for all label formats, whereas letter (8.5" x 11") is only supported for pdf format.
    Enum: "4x6", "letter", "A4", "A6"

  - `label_image_id` (string,null)
    The label image resource that was used to create a custom label image.
    Example: "img_DtBXupDBxREpHnwEXhTfgK"

  - `test_label` (boolean)
    Indicate if this label is being used only for testing purposes. If true, then no charge will be added to your account.

## Response 200 fields (application/json):

  - `label_id` (string, required)
    A string that uniquely identifies the label. This ID is generated by ShipEngine when the label is created.
    Example: "se-28529731"

  - `status` (string, required)
    The possible statuses that a shipping label can be in.

|Status       |Description
|:------------|:-----------------------------------------------------
|processing |When labels are created in a batch, it may take a few minutes for all of the labels in the batch to be created. During this period, they will be in processing status.
|completed  |The label was successfully created
|error      |The label could not be created due to an error, such as an invalid delivery address
|voided     |The label has been voided
    Enum: "processing", "completed", "error", "voided"

  - `shipment_id` (string, required)
    The shipment that this label is for.  ShipEngine can create a shipment for you automatically when you create a label, or you can create your own shipment and then use it to print a label
    Example: "se-28529731"

  - `external_shipment_id` (string,null, required)
    A unique user-defined key to identify a shipment.  This can be used to retrieve the shipment.

  - `external_order_id` (string,null, required)
    ID that the Order Source assigned

  - `ship_date` (string, required)
    The date that the package was (or will be) shipped.  ShipEngine will take the day of week into consideration. For example, if the carrier does not operate on Sundays, then a package that would have shipped on Sunday will ship on Monday instead.
    Example: "2018-09-23T00:00:00.000Z"

  - `created_at` (string, required)
    The date and time that the label was created in ShipEngine.
    Example: "2018-09-23T15:00:00.000Z"

  - `shipment_cost` (object, required)
    The cost of shipping, delivery confirmation, and other carrier charges.  This amount does not include insurance costs.

  - `shipment_cost.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `shipment_cost.amount` (number, required)
    The monetary amount, in the specified currency.

  - `insurance_cost` (object, required)
    The insurance cost for this package.  Add this to the shipment_cost field to get the total cost.

  - `insurance_cost.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `insurance_cost.amount` (number, required)
    The monetary amount, in the specified currency.

  - `requested_comparison_amount` (object)
    The total shipping cost for the specified comparison_rate_type.

  - `requested_comparison_amount.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `requested_comparison_amount.amount` (number, required)
    The monetary amount, in the specified currency.

  - `rate_details` (array)
    A list of rate details that are associated with shipping cost. This is useful for displaying a breakdown of the rate to the user.

  - `rate_details.rate_detail_type` (string)
    The category of charge. Common values include shipping and additional_fees. DDP shipments (customs.terms_of_trade_code: "ddp") also return prepaid_duties, prepaid_taxes and prepaid_import_fees on Wallet carriers, or estimated_duties, estimated_taxes and estimated_import_fees on BYOA (Bring Your Own Account) carriers.
    Enum: "uncategorized", "shipping", "insurance", "confirmation", "discount", "fuel_charge", "additional_fees", "tariff", "tax", "delivery", "handling", "special_goods", "pickup", "location_fee", "oversize", "returns", "notifications", "tip", "duties_and_taxes", "brokerage_fee", "admin_fee", "adjustment", "prepaid_duties", "prepaid_taxes", "prepaid_import_fees", "estimated_duties", "estimated_taxes", "estimated_import_fees"

  - `rate_details.carrier_description` (string,null)
    The carrier-provided description of the charge.
    Example: "Shipping"

  - `rate_details.carrier_billing_code` (string,null)
    The carrier billing code, when provided by the carrier.
    Example: "BaseServiceCharge"

  - `rate_details.carrier_memo` (string,null)
    An optional carrier-supplied note for the charge.

  - `rate_details.amount` (object)
    The amount of this individual charge.

  - `rate_details.amount.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `rate_details.amount.amount` (number, required)
    The monetary amount, in the specified currency.

  - `rate_details.rate_detail_attributes` (object)
    If applicable, contains additional data about a rate detail of a specific type, e.g. VAT

  - `rate_details.rate_detail_attributes.tax_type` (string)
    Type of a tax added to shipping cost. Includes Canadian tax types GST (Goods and Services Tax), HST (Harmonized Sales Tax), QST (Quebec Sales Tax), and PST (Provincial Sales Tax).
    Enum: "vat", "gst", "hst", "qst", "pst"

  - `rate_details.rate_detail_attributes.tax_percentage` (number)
    Tax percentage, e.g. 20 for 20%, added to the shipping cost

  - `rate_details.billing_source` (string)
    The source that produced the charge. Common values are carrier for carrier-billed charges and dutiestax for duties and taxes on DDP shipments (prepaid on Wallet carriers, estimated on BYOA carriers).
    Example: "carrier"

  - `tracking_number` (string, required)
    The tracking number for the package. Tracking number formats vary across carriers.
    Example: "782758401696"

  - `is_return_label` (boolean, required)
    Indicates whether this is a return label.  You may also want to set the rma_number so you know what is being returned.

  - `rma_number` (string,null, required)
    An optional Return Merchandise Authorization number.  This field is useful for return labels.  You can set it to any string value.

  - `is_international` (boolean, required)
    Indicates whether this is an international shipment.  That is, the originating country and destination country are different.

  - `batch_id` (string, required)
    If this label was created as part of a batch, then this is the unique ID of that batch.
    Example: "se-28529731"

  - `carrier_id` (string, required)
    The unique ID of the carrier account that was used to create this label
    Example: "se-28529731"

  - `charge_event` (string, required)
    The label charge event.
    Enum: "carrier_default", "on_creation", "on_carrier_acceptance"

  - `service_code` (string, required)
    The carrier service used to ship the package, such as fedex_ground, usps_first_class_mail, flat_rate_envelope, etc.
    Example: "usps_first_class_mail"

  - `package_code` (string, required)
    The package type, such as thick_envelope, small_flat_rate_box, large_package, etc.  The code package indicates a custom or unknown package type.
    Example: "small_flat_rate_box"

  - `voided` (boolean, required)
    Indicates whether the label has been voided

  - `voided_at` (string,null)
    The date and time that the label was voided, or null if the label has not been voided
    Example: "2018-09-23T15:00:00.000Z"

  - `label_format` (string, required)
    The file format that you want the label to be in.  We recommend pdf format because it is supported by all carriers, whereas some carriers do not support the png or zpl formats.
    Enum: "pdf", "png", "zpl"

  - `display_scheme` (string, required)
    The display format that the label should be shown in.
    Enum: "label", "paperless", "label_and_paperless"

  - `label_layout` (string, required)
    The layout (size) that you want the label to be in.  The label_format determines which sizes are allowed.  4x6 is supported for all label formats, whereas letter (8.5" x 11") is only supported for pdf format.
    Enum: "4x6", "letter", "A4", "A6"

  - `trackable` (boolean, required)
    Indicates whether the shipment is trackable, in which case the tracking_status field will reflect the current status and each package will have a tracking_number.

  - `label_image_id` (string,null, required)
    The label image resource that was used to create a custom label image.
    Example: "img_DtBXupDBxREpHnwEXhTfgK"

  - `carrier_code` (string, required)
    The shipping carrier who will ship the package, such as fedex, dhl_express, stamps_com, etc.
    Example: "dhl_express"

  - `tracking_status` (string, required)
    The current status of the package, such as in_transit or delivered
    Enum: "unknown", "in_transit", "error", "delivered"

  - `confirmation` (string)
    The type of delivery confirmation for this shipment. Defaults to 'none' if not specified.
    Enum: "none", "delivery", "signature", "adult_signature", "adult_signature_restricted_delivery", "direct_signature", "delivery_mailed", "verbal_confirmation", "delivery_code", "age_verification_16_plus"

  - `label_download` (object, required)
    Reference to the various downloadable file formats for the generated label

  - `label_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `label_download.pdf` (string)
    The URL for the pdf generated label
    Example: "https://example.com/resource"

  - `label_download.png` (string)
    The URL for the png generated label
    Example: "https://example.com/resource"

  - `label_download.zpl` (string)
    The URL for the zpl generated label
    Example: "https://example.com/resource"

  - `form_download` (object,null, required)
    The link to download the customs form (a.k.a. commercial invoice) for this shipment, if any.  Forms are in PDF format. This field is null if the shipment does not require a customs form, or if the carrier does not support it.

  - `form_download.href` (string, required)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `form_download.type` (string)
    The type of resource, or the type of relationship to the parent resource

  - `qr_code_download` (object,null, required)
    The QR code download for the package

  - `qr_code_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `qr_code_download.type` (string)
    The type of resource, or the type of relationship to the parent resource

  - `paperless_download` (object,null, required)
    The paperless details which may contain elements like href, instructions and handoff_code.

  - `paperless_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `paperless_download.instructions` (string,null)
    The instructions for the paperless download.

  - `paperless_download.handoff_code` (string,null)
    The handoff code for the paperless download.

  - `insurance_claim` (object,null, required)
    The link to submit an insurance claim for the shipment.  This field is null if the shipment is not insured or if the insurance provider does not support online claim submission.

  - `insurance_claim.href` (string, required)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `insurance_claim.type` (string)
    The type of resource, or the type of relationship to the parent resource

  - `packages` (array, required)
    The label's package(s).

> Note: Some carriers only allow one package per label.  If you attempt to create a multi-package label for a carrier that doesn't allow it, an error will be returned.

  - `packages.package_id` (integer)
    The shipment package id

  - `packages.package_code` (string)
    The package type, such as thick_envelope, small_flat_rate_box, large_package, etc.  The code package indicates a custom or unknown package type.
    Example: "small_flat_rate_box"

  - `packages.weight` (object, required)
    The package weight

  - `packages.weight.value` (number, required)
    The weight, in the specified unit

  - `packages.weight.unit` (string, required)
    The possible weight unit values
    Enum: "pound", "ounce", "gram", "kilogram"

  - `packages.dimensions` (object)
    The package dimensions

  - `packages.dimensions.unit` (string, required)
    The dimension units that are supported by ShipEngine.
    Enum: "inch", "centimeter"

  - `packages.dimensions.length` (number, required)
    The length of the package, in the specified unit

  - `packages.dimensions.width` (number, required)
    The width of the package, in the specified unit

  - `packages.dimensions.height` (number, required)
    The height of the package, in the specified unit

  - `packages.insured_value` (object)
    The insured value of the package.  Requires the insurance_provider field of the shipment to be set.

  - `packages.insured_value.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `packages.insured_value.amount` (number, required)
    The monetary amount, in the specified currency.

  - `packages.tracking_number` (string)
    The tracking number for the package.  The format depends on the carrier.
    Example: "1Z932R800392060079"

  - `packages.label_download` (object)
    The label download for the package

  - `packages.label_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `packages.label_download.pdf` (string)
    The URL for the pdf generated label
    Example: "https://example.com/resource"

  - `packages.label_download.png` (string)
    The URL for the png generated label
    Example: "https://example.com/resource"

  - `packages.label_download.zpl` (string)
    The URL for the zpl generated label
    Example: "https://example.com/resource"

  - `packages.form_download` (object)
    The form download for any customs that are needed

  - `packages.form_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `packages.form_download.type` (string)
    The type of resource, or the type of relationship to the parent resource

  - `packages.qr_code_download` (object)
    The QR code download for the package

  - `packages.qr_code_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `packages.qr_code_download.type` (string)
    The type of resource, or the type of relationship to the parent resource

  - `packages.paperless_download` (object)
    The paperless details which may contain elements like href, instructions and handoff_code.

  - `packages.paperless_download.href` (string)
    The URL of the linked resource, if any
    Example: "https://example.com/resource"

  - `packages.paperless_download.instructions` (string,null)
    The instructions for the paperless download.

  - `packages.paperless_download.handoff_code` (string,null)
    The handoff code for the paperless download.

  - `packages.label_messages` (object)
    Custom messages to print on the shipping label for the package.  These are typically used to print invoice numbers, product numbers, or other internal reference numbers.  Not all carriers support label messages. The number of lines and the maximum length of each line also varies by carrier.

|Carrier            |Max lines |Max line length
|-------------------|----------|--------------------
|USPS (Stamps.com)  |3         |60
|FedEx              |3         |35 for the first line. 30 for additional lines.
|UPS                |2         |35
|OnTrac             |2         |25

  - `packages.label_messages.reference1` (string,null, required)
    The first line of the custom label message.  Some carriers may prefix this line with something like "REF", "Reference", "Trx Ref No.", etc.

  - `packages.label_messages.reference2` (string,null, required)
    The second line of the custom label message.  Some carriers may prefix this line with something like "INV", "Reference 2", "Trx Ref No.", etc.

  - `packages.label_messages.reference3` (string,null, required)
    The third line of the custom label message.  Some carriers may prefix this line with something like "PO", "Reference 3", etc.

  - `packages.external_package_id` (string)
    An external package id.

  - `packages.content_description` (string,null)
    A short description of the package content. Required for shipments moving to, from, and through Mexico.
    Example: "Hand knitted wool socks"

  - `packages.sequence` (integer)
    Package sequence

  - `packages.has_label_documents` (boolean)
    Whether the package has label documents available for download

  - `packages.has_form_documents` (boolean)
    Whether the package has form documents available for download

  - `packages.has_qr_code_documents` (boolean)
    Whether the package has QR code documents available for download

  - `packages.has_paperless_label_documents` (boolean)
    Whether the package has paperless documents available for download

  - `packages.alternative_identifiers` (array,null)
    Alternative identifiers associated with this package.

  - `packages.alternative_identifiers.type` (string)
    The type of alternative_identifier that corresponds to the value.
    Example: "last_mile_tracking_number"

  - `packages.alternative_identifiers.value` (string)
    The value of the alternative_identifier.
    Example: "12345678912345678912"

  - `alternative_identifiers` (array,null)
    Additional information some carriers may provide by which to identify a given label in their system.

  - `tracking_url` (string,null)
    The URL to track the package. This URL is provided by the carrier and is unique to the tracking number.
    Example: "https://www.fedex.com/fedextrack/?action=track&trackingnumber=1234"

  - `pickup_windows` (array,null)
    An array of pickup windows provided by the carrier during label creation. Contains time ranges when the carrier will pick up the package. This is particularly useful when the carrier does not support the Schedule Pickup method but still provides pickup date information during label purchase.

  - `pickup_windows.start_at` (string)
    The start of the pickup window.
    Example: "2018-09-23T15:00:00.000Z"

  - `pickup_windows.end_at` (string)
    The end of the pickup window.
    Example: "2018-09-23T15:00:00.000Z"

  - `pickup_windows.use_time_zone_iana` (string,null)
    The IANA time zone identifier for the pickup window (e.g., "Australia/Sydney"). When provided, start_at and end_at should be interpreted in this time zone.
    Example: "Australia/Sydney"

  - `ship_to` (object, required)
    The recipient's mailing address

  - `ship_to.name` (string, required)
    The name of a contact person at this address.  This field may be set instead of - or in addition to - the company_name field.
    Example: "John Doe"

  - `ship_to.phone` (string)
    The phone number of a contact person at this address.  The format of this phone number varies depending on the country.
    Example: "+1 204-253-9411 ext. 123"

  - `ship_to.email` (string,null)
    Email for the address owner.
    Example: "example@example.com"

  - `ship_to.company_name` (string,null)
    If this is a business address, then the company name should be specified here.
    Example: "The Home Depot"

  - `ship_to.address_line1` (string, required)
    The first line of the street address.  For some addresses, this may be the only line.  Other addresses may require 2 or 3 lines.
    Example: "1999 Bishop Grandin Blvd."

  - `ship_to.address_line2` (string,null)
    The second line of the street address.  For some addresses, this line may not be needed.
    Example: "Unit 408"

  - `ship_to.address_line3` (string,null)
    The third line of the street address.  For some addresses, this line may not be needed.
    Example: "Building #7"

  - `ship_to.city_locality` (string, required)
    The name of the city or locality
    Example: "Winnipeg"

  - `ship_to.state_province` (string, required)
    The state or province.  For some countries (including the U.S.) only abbreviations are allowed.  Other countries allow the full name or abbreviation.
    Example: "Manitoba"

  - `ship_to.postal_code` (string, required)
    postal code
    Example: "78756-3717"

  - `ship_to.country_code` (string)
    The two-letter [ISO 3166-1 country code](https://en.wikipedia.org/wiki/ISO_3166-1)
    Example: "CA"

  - `ship_to.address_residential_indicator` (string)
    Indicates whether this is a residential address.
    Enum: "unknown", "yes", "no"

  - `ship_to.instructions` (string,null)
    Additional text about how to handle the shipment at this address.

  - `ship_to.geolocation` (array)

  - `ship_to.geolocation.type` (string)
    Enum of available type of geolocation items:
  - 'what3words' functionality allows to specify a location by providing 3 words that have been assigned to the specific location. See [link](https://what3words.com/business) for more details.
    Enum: "what3words"

  - `ship_to.geolocation.value` (string)
    value of the geolocation item
    Example: "cats.with.thumbs"

  - `void_type` (string,null)
    Indicates how the label was voided. This field is null if the label has not been voided.
    Enum: "refund_assist", "manual"

  - `refund_details` (object,null)
    Information about the Refund Assist request for this label. This field is null if the label is not eligible for Refund Assist.

  - `refund_details.refund_status` (string)
    The current status of the refund request
    Enum: "request_scheduled", "pending", "approved", "rejected", "excluded"

  - `refund_details.request_date` (string)
    The date and time when the refund request was submitted
    Example: "2018-09-23T15:00:00.000Z"

  - `refund_details.amount_paid` (object,null)
    The amount that was originally paid for the label

  - `refund_details.amount_paid.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `refund_details.amount_paid.amount` (number, required)
    The monetary amount, in the specified currency.

  - `refund_details.amount_requested` (object,null)
    The amount requested to be refunded

  - `refund_details.amount_requested.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `refund_details.amount_requested.amount` (number, required)
    The monetary amount, in the specified currency.

  - `refund_details.amount_approved` (object,null)
    The amount approved for refund by the carrier

  - `refund_details.amount_approved.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `refund_details.amount_approved.amount` (number, required)
    The monetary amount, in the specified currency.

  - `refund_details.amount_credited` (object,null)
    The amount that has been credited back to the account

  - `refund_details.amount_credited.currency` (string, required)
    The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

  - `refund_details.amount_credited.amount` (number, required)
    The monetary amount, in the specified currency.

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, or the ShipEngine API itself.
    Enum: "carrier", "order_source", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "file_not_found", "shipping_rule_not_found", "service_not_determined", "no_rates_returned", "funding_source_registration_in_progress", "insurance_failure", "funding_source_missing_configuration", "funding_source_error", "freight_connection_inactive", "freight_provider_id_required", "freight_provider_already_connected", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.carrier_id` (string)
    A string that uniquely identifies the carrier that generated the error.
    Example: "se-28529731"

  - `errors.carrier_code` (string)
    The name of the shipping carrier that generated the error, such as fedex, dhl_express, stamps_com, etc.
    Example: "dhl_express"

  - `errors.field_name` (string)
    The name of the field that caused the error
    Example: "shipment.ship_to.phone_number"


