# Create shipments

Products
            Plans
          
        
        
          
            
              
              Formerly ShipEngine
            
            
              Free
              Advanced
              Enterprise
            
          
          
            
              
            
            
              Free
              Starter
              Standard
              Premium
            
          
        
      
      
        
          Learn about products and plans
          
        
      
    

Create one or more shipments

Endpoint: POST /v2/shipments
Version: 2.0.0
Security: api_keys

## Request fields (application/json):

  - `shipments` (array, required)
    Array of shipments to create

  - `shipments.validate_address` (string)
    Address validation option
    Enum: "no_validation", "validate_only", "validate_and_clean"

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

  - `shipments.carrier_id` (string,null)
    The carrier account that is billed for the shipping charges
    Example: "se-28529731"

  - `shipments.create_sales_order` (boolean)
    Whether to create a sales order for this shipment
    Example: true

  - `shipments.store_id` (string,null)
    The store ID associated with the shipment
    Example: "1582173"

  - `shipments.notes_from_buyer` (string,null)
    Notes from the buyer
    Example: "I am a note from the buyer"

  - `shipments.notes_to_buyer` (string,null)
    Notes to the buyer
    Example: "Thank you for your order!"

  - `shipments.notes_for_gift` (string,null)
    Gift notes
    Example: "I am a gift note"

  - `shipments.internal_notes` (string,null)
    Internal notes from the seller
    Example: "Check packaging before shipping"

  - `shipments.is_gift` (boolean)
    Indicates if the shipment is a gift
    Example: true

  - `shipments.zone` (integer,null)
    Shipping zone

  - `shipments.display_scheme` (string,null)
    Display scheme for the shipment
    Example: "paperless"

  - `shipments.requested_shipment_service` (string,null)
    The requested shipment service
    Example: "usps_priority_mail"

  - `shipments.deliver_by_date` (string,null)
    Date by which the shipment should be delivered
    Example: "2025-01-20T00:00:00.000Z"

  - `shipments.assigned_user` (string,null)
    User assigned to the shipment
    Example: "a2df9fa5-b7ee-467f-be4e-9c660542c187"

  - `shipments.shipment_status` (string)
    The status of the shipment
    Enum: "pending", "processing", "label_purchased", "cancelled"

  - `shipments.amount_paid` (object)
    Total amount paid for the order

  - `shipments.amount_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.amount_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.shipping_paid` (object)
    Amount paid for shipping

  - `shipments.shipping_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.shipping_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.tax_paid` (object)
    Amount paid for taxes

  - `shipments.tax_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.tax_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.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"

  - `shipments.ship_to.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"

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

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

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

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

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

  - `shipments.ship_to.instructions` (string,null)
    Additional text about how to handle the shipment at this address.
    Example: "any instruction"

  - `shipments.ship_to.geolocation` (array)

  - `shipments.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 assign to the specific location see [link](https://what3words.com/business) for more details.
    Enum: "what3words"

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

  - `shipments.ship_from` (object)
    The shipment's origin address

  - `shipments.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"

  - `shipments.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"

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

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

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

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

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

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

  - `shipments.items` (array)
    Items included in this shipment

  - `shipments.items.name` (string)
    item name
    Example: "box"

  - `shipments.items.sales_order_id` (string,null)
    sales order id
    Example: "12345"

  - `shipments.items.sales_order_item_id` (string,null)
    sales order item id
    Example: "1234556"

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

  - `shipments.items.sku` (string,null)
    Item Stock Keeping Unit
    Example: "sku-1234"

  - `shipments.items.bundle_sku` (string,null)
    Bundle SKU for the item
    Example: "bundle-123"

  - `shipments.items.external_order_id` (string,null)
    external order id
    Example: "123445"

  - `shipments.items.external_order_item_id` (string,null)
    external order item id
    Example: "12"

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

  - `shipments.items.order_source_code` (string)
    The order sources that are supported by ShipStation
    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"

  - `shipments.items.item_id` (string,null)
    Unique identifier for the item
    Example: "1402291169813"

  - `shipments.items.allocation_status` (string,null)
    Allocation status of the item
    Example: "allocated"

  - `shipments.items.image_url` (string,null)
    URL to the item image
    Example: "https://example.com/image.jpg"

  - `shipments.items.weight` (object)
    Weight of the individual item

  - `shipments.items.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.items.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipments.items.unit_price` (number,null)
    Unit price of the item
    Example: 88

  - `shipments.items.tax_amount` (number,null)
    Tax amount for the item
    Example: 5.5

  - `shipments.items.shipping_amount` (number,null)
    Shipping amount for the item
    Example: 10

  - `shipments.items.inventory_location` (string,null)
    Inventory location of the item
    Example: "warehouse-a"

  - `shipments.items.options` (array)
    Item options/variants

  - `shipments.items.options.name` (string)
    Option name
    Example: "Color"

  - `shipments.items.options.value` (string)
    Option value
    Example: "Red"

  - `shipments.items.product_id` (string,null)
    Product ID
    Example: "10408926"

  - `shipments.items.fullfilment_sku` (string,null)
    Fulfillment SKU
    Example: "fulfill-123"

  - `shipments.items.upc` (string,null)
    Universal Product Code
    Example: "123456789012"

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

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

  - `shipments.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"

  - `shipments.packages.package_name` (string)
    The name of the of the [package type]
    Example: "Flat Rate Envelope"

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

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

  - `shipments.packages.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

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

  - `shipments.packages.dimensions.unit` (string, required)
    Dimension unit
    Enum: "inch", "centimeter"

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

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

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

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

  - `shipments.packages.insured_value.currency` (string, required)
    Currency code
    Example: "usd"

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

  - `shipments.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

  - `shipments.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.
    Example: "Reference"

  - `shipments.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.
    Example: "Reference 2"

  - `shipments.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.
    Example: "Reference 3"

  - `shipments.packages.external_package_id` (string)
    An external package id.
    Example: "se-1234545"

  - `shipments.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"

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

  - `shipments.packages.products.description` (string,null)
    A description of the item
    Example: "a minimum description"

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

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

  - `shipments.packages.products.value.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.packages.products.value.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.packages.products.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.packages.products.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

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

  - `shipments.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"

  - `shipments.packages.products.unit_of_measure` (string,null)
    Example: "pound"

  - `shipments.packages.products.sku` (string,null)
    The SKU (Stock Keeping Unit) of the item
    Example: "sku-1223344"

  - `shipments.packages.products.sku_description` (string,null)
    Description of the Custom Item's SKU
    Example: "this is a description"

  - `shipments.packages.products.mid_code` (string,null)
    Manufacturers Identification code
    Example: "GBCOM15BRI"

  - `shipments.packages.products.product_url` (string,null)
    link to the item on the seller website
    Example: "https://myproduct.com"

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

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

  - `shipments.packages.products.dangerous_goods.id_number` (string,null)
    UN number to identify the dangerous goods.
    Example: "1234r1"

  - `shipments.packages.products.dangerous_goods.shipping_name` (string,null)
    Trade description of the dangerous goods.
    Example: "things with dangerous goods"

  - `shipments.packages.products.dangerous_goods.technical_name` (string,null)
    Recognized Technical or chemical name of dangerous goods.
    Example: "chloric acid"

  - `shipments.packages.products.dangerous_goods.product_class` (string,null)
    Dangerous goods product class based on regulation.
    Example: "1987"

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

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

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

  - `shipments.packages.products.dangerous_goods.quantity` (integer)
    Quantity of dangerous goods.
    Example: 1

  - `shipments.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.
    Example: "Packaging materials and containers that are in contact with food products must comply with the provisions established by Regulation "

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

  - `shipments.packages.products.dangerous_goods.packaging_type` (string,null)
    The type of exterior packaging used to contain the dangerous good.
    Example: "X"

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

  - `shipments.packages.products.dangerous_goods.transport_category` (string,null)
    Transport category assign to dangerous goods for the transport purpose.
    Example: "6.1"

  - `shipments.packages.products.dangerous_goods.regulation_authority` (string,null)
    Name of the regulatory authority.
    Example: "AEAT"

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

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

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

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

  - `shipments.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
    Example: "any description"

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

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

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

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

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

## Response 200 fields (application/json):

  - `has_errors` (boolean, required)
    Indicates if any shipments had errors during creation

  - `shipments` (array, required)
    Array of created shipments with their results

  - `shipments.shipment_id` (string, required)
    A string that uniquely identifies the shipment
    Example: "se-28529731"

  - `shipments.carrier_id` (string,null)
    The carrier account that is billed for the shipping charges
    Example: "se-28529731"

  - `shipments.service_code` (string,null)
    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"

  - `shipments.requested_shipment_service` (string,null)
    The requested shipment service
    Example: "usps_priority_mail"

  - `shipments.external_order_id` (string,null)
    ID that the Order Source assigned
    Example: "1232434"

  - `shipments.hold_until_date` (string,null)
    Date to hold the shipment until
    Example: "2025-01-15T00:00:00.000Z"

  - `shipments.ship_by_date` (string,null)
    Date by which the shipment should be shipped
    Example: "2025-01-15T00:00:00.000Z"

  - `shipments.deliver_by_date` (string,null)
    Date by which the shipment should be delivered
    Example: "2025-01-20T00:00:00.000Z"

  - `shipments.retail_rate` (object,null)
    The retail rate for the shipment

  - `shipments.retail_rate.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.retail_rate.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.store_id` (string)
    The store ID associated with the shipment
    Example: "se-28529731"

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

  - `shipments.items.name` (string)
    item name
    Example: "box"

  - `shipments.items.sales_order_id` (string,null)
    sales order id
    Example: "12345"

  - `shipments.items.sales_order_item_id` (string,null)
    sales order item id
    Example: "1234556"

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

  - `shipments.items.sku` (string,null)
    Item Stock Keeping Unit
    Example: "sku-1234"

  - `shipments.items.bundle_sku` (string,null)
    Bundle SKU for the item
    Example: "bundle-123"

  - `shipments.items.external_order_id` (string,null)
    external order id
    Example: "123445"

  - `shipments.items.external_order_item_id` (string,null)
    external order item id
    Example: "12"

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

  - `shipments.items.order_source_code` (string)
    The order sources that are supported by ShipStation
    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"

  - `shipments.items.item_id` (string,null)
    Unique identifier for the item
    Example: "1402291169813"

  - `shipments.items.allocation_status` (string,null)
    Allocation status of the item
    Example: "allocated"

  - `shipments.items.image_url` (string,null)
    URL to the item image
    Example: "https://example.com/image.jpg"

  - `shipments.items.weight` (object)
    Weight of the individual item

  - `shipments.items.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.items.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipments.items.unit_price` (number,null)
    Unit price of the item
    Example: 88

  - `shipments.items.tax_amount` (number,null)
    Tax amount for the item
    Example: 5.5

  - `shipments.items.shipping_amount` (number,null)
    Shipping amount for the item
    Example: 10

  - `shipments.items.inventory_location` (string,null)
    Inventory location of the item
    Example: "warehouse-a"

  - `shipments.items.options` (array)
    Item options/variants

  - `shipments.items.options.name` (string)
    Option name
    Example: "Color"

  - `shipments.items.options.value` (string)
    Option value
    Example: "Red"

  - `shipments.items.product_id` (string,null)
    Product ID
    Example: "10408926"

  - `shipments.items.fullfilment_sku` (string,null)
    Fulfillment SKU
    Example: "fulfill-123"

  - `shipments.items.upc` (string,null)
    Universal Product Code
    Example: "123456789012"

  - `shipments.notes_from_buyer` (string,null)
    Notes from the buyer
    Example: "Please handle with care"

  - `shipments.notes_to_buyer` (string,null)
    Notes to the buyer
    Example: "Thank you for your order!"

  - `shipments.notes_for_gift` (string,null)
    Gift notes
    Example: "Happy Birthday!"

  - `shipments.internal_notes` (string,null)
    Internal notes from the seller
    Example: "Check packaging before shipping"

  - `shipments.is_gift` (boolean)
    Indicates if the shipment is a gift
    Example: true

  - `shipments.assigned_user` (string,null)
    User assigned to the shipment
    Example: "user@example.com"

  - `shipments.amount_paid` (object)
    Total amount paid for the order

  - `shipments.amount_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.amount_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.shipping_paid` (object)
    Amount paid for shipping

  - `shipments.shipping_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.shipping_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.tax_paid` (object)
    Amount paid for taxes

  - `shipments.tax_paid.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.tax_paid.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.zone` (integer,null)
    Shipping zone
    Example: 1

  - `shipments.display_scheme` (string,null)
    Display scheme for the shipment
    Example: "label"

  - `shipments.tax_identifiers` (array,null)

  - `shipments.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"

  - `shipments.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"

  - `shipments.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.
    Example: "US"

  - `shipments.tax_identifiers.value` (string, required)
    The value of the identifier
    Example: "value"

  - `shipments.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: "1234556"

  - `shipments.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: "10001"

  - `shipments.ship_date` (string,null)
    The date that the shipment was (or will be) shipped.  ShipStation 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:00Z"

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

  - `shipments.modified_at` (string, required)
    The date and time that the shipment was created or last modified.
    Example: "2018-09-23T15:00:00.000Z"

  - `shipments.shipment_status` (string, required)
    The current status of the shipment
    Enum: "pending", "processing", "label_purchased", "cancelled"

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

  - `shipments.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"

  - `shipments.ship_to.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"

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

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

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

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

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

  - `shipments.ship_to.instructions` (string,null)
    Additional text about how to handle the shipment at this address.
    Example: "any instruction"

  - `shipments.ship_to.geolocation` (array)

  - `shipments.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 assign to the specific location see [link](https://what3words.com/business) for more details.
    Enum: "what3words"

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

  - `shipments.ship_from` (object, required)
    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.

  - `shipments.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"

  - `shipments.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"

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

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

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

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

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

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

  - `shipments.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"

  - `shipments.return_to` (object, required)
    The return address for this shipment.  Defaults to the ship_from address.  Can be sent with a warehouse_id, in which case the return address can be overridden.  This allows you to have a different address printed on the label while maintaining the origin address.

  - `shipments.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"

  - `shipments.return_to.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"

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

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

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

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

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

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

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

  - `shipments.confirmation` (string, required)
    The type of delivery confirmation that is required for this shipment
    Enum: "none", "delivery", "signature", "adult_signature", "direct_signature", "delivery_mailed", "verbal_confirmation", "delivery_code", "age_verification_16_plus"

  - `shipments.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"}

  - `shipments.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"

  - `shipments.customs.contents_explanation` (string)
    Explanation for contents (required if the contents is provided as other)
    Example: "rubber duckies"

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

  - `shipments.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"

  - `shipments.customs.declaration` (string)
    Declaration statement to be placed on the commercial invoice
    Example: "I hereby certify that the information on this invoice is true and correct and that the contents and value of this shipment are as stated above"

  - `shipments.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](/upload-carrier-documents).
    Example: true

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

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

  - `shipments.customs.invoice_additional_details.freight_charge.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.freight_charge.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.customs.invoice_additional_details.insurance_charge.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.insurance_charge.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.customs.invoice_additional_details.discount.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.discount.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

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

  - `shipments.customs.invoice_additional_details.estimated_import_charges.taxes.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.estimated_import_charges.taxes.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.customs.invoice_additional_details.estimated_import_charges.duties.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.estimated_import_charges.duties.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.customs.invoice_additional_details.other_charge.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.customs.invoice_additional_details.other_charge.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

  - `shipments.customs.invoice_additional_details.other_charge_description` (string)
    Description for the other charge (if provided).
    Example: "Other charges description"

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

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

  - `shipments.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."

  - `shipments.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"

  - `shipments.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"

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

  - `shipments.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"

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

  - `shipments.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"

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

  - `shipments.customs.customs_items.customs_item_id` (string, required)
    A string that uniquely identifies the customs item
    Example: "se-28529731"

  - `shipments.customs.customs_items.description` (string,null)
    A description of the item
    Example: "This is a description"

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

  - `shipments.customs.customs_items.value` (number)
    The monetary amount, in the specified currency.
    Example: 12

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

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

  - `shipments.customs.customs_items.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.customs.customs_items.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

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

  - `shipments.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"

  - `shipments.customs.customs_items.unit_of_measure` (string,null)
    Example: "pound"

  - `shipments.customs.customs_items.sku` (string,null)
    The SKU (Stock Keeping Unit) of the customs item
    Example: "sku-1234"

  - `shipments.customs.customs_items.sku_description` (string,null)
    Description of the Custom Item's SKU
    Example: "this is a description"

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

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

  - `shipments.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.
    Example: "123456789"

  - `shipments.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"

  - `shipments.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"

  - `shipments.advanced_options.bill_to_postal_code` (string,null)
    The postal code of the third-party that is responsible for shipping costs.
    Example: "28005"

  - `shipments.advanced_options.contains_alcohol` (boolean)
    Indicates that the shipment contains alcohol.
    Example: true

  - `shipments.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.
    Example: true

  - `shipments.advanced_options.dry_ice` (boolean)
    Indicates if the shipment contain dry ice
    Example: true

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

  - `shipments.advanced_options.dry_ice_weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.advanced_options.dry_ice_weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipments.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.
    Example: true

  - `shipments.advanced_options.saturday_delivery` (boolean)
    Enables Saturday delivery, if supported by the carrier.
    Example: true

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

  - `shipments.advanced_options.fedex_freight.shipper_load_and_count` (string)
    Example: "shipper_load_and_count"

  - `shipments.advanced_options.fedex_freight.booking_confirmation` (string)
    Example: "today"

  - `shipments.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.
    Example: true

  - `shipments.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"

  - `shipments.advanced_options.custom_field1` (string,null)
    An arbitrary field that can be used to store information about the shipment.
    Example: "custom field 1"

  - `shipments.advanced_options.custom_field2` (string,null)
    An arbitrary field that can be used to store information about the shipment.
    Example: "custom field 2"

  - `shipments.advanced_options.custom_field3` (string,null)
    An arbitrary field that can be used to store information about the shipment.
    Example: "custom field 3"

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

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

  - `shipments.advanced_options.shipper_release` (boolean,null)
    Example: true

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

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

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

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

  - `shipments.advanced_options.collect_on_delivery.payment_amount.amount` (number)
    Example: 12

  - `shipments.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
    Example: true

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

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

  - `shipments.advanced_options.dangerous_goods_contact.name` (string)
    Name of the contact
    Example: "Michael Robinson"

  - `shipments.advanced_options.dangerous_goods_contact.phone` (string)
    Phone number of the contact
    Example: "123456578789"

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

  - `shipments.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.

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

  - `shipments.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"

  - `shipments.advanced_options.ancillary_endorsements_option` (string,null)
    Ancillary endorsements option for the shipment
    Example: "forward"

  - `shipments.advanced_options.return_pickup_attempts` (integer,null)
    Number of return pickup attempts
    Example: 3

  - `shipments.advanced_options.own_document_upload` (boolean)
    Indicates if own document upload is enabled

  - `shipments.advanced_options.limited_quantity` (boolean)
    Indicates if the shipment contains limited quantities

  - `shipments.advanced_options.event_notification` (boolean)
    Indicates if event notifications are enabled

  - `shipments.advanced_options.fragile` (boolean)
    Indicates if the shipment contains fragile items

  - `shipments.advanced_options.delivery_as_addressed` (boolean)
    Instructs the carrier to deliver the package only to the exact address provided

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

  - `shipments.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"

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

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

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

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

  - `shipments.tags` (array, required)
    Arbitrary tags associated with this shipment.  Tags can be used to categorize shipments, and shipments can be queried by their tags. Note: Tags require object structure with name property, not simple strings.

  - `shipments.tags.name` (string, required)
    The tag name.
    Example: "Fragile"

  - `shipments.order_source_code` (string)
    The order sources that are supported by ShipStation
    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"

  - `shipments.packages` (array, required)
    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.

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

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

  - `shipments.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"

  - `shipments.packages.package_name` (string)
    The name of the of the [package type]
    Example: "Flat Rate Envelope"

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

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

  - `shipments.packages.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

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

  - `shipments.packages.dimensions.unit` (string, required)
    Dimension unit
    Enum: "inch", "centimeter"

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

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

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

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

  - `shipments.packages.insured_value.currency` (string, required)
    Currency code
    Example: "usd"

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

  - `shipments.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

  - `shipments.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.
    Example: "Reference"

  - `shipments.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.
    Example: "Reference 2"

  - `shipments.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.
    Example: "Reference 3"

  - `shipments.packages.external_package_id` (string)
    An external package id.
    Example: "se-1234545"

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

  - `shipments.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"

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

  - `shipments.packages.products.description` (string,null)
    A description of the item
    Example: "a minimum description"

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

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

  - `shipments.packages.products.value.currency` (string, required)
    Currency code
    Example: "usd"

  - `shipments.packages.products.value.amount` (number, required)
    The monetary amount, in the specified currency.
    Example: 12

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

  - `shipments.packages.products.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `shipments.packages.products.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

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

  - `shipments.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"

  - `shipments.packages.products.unit_of_measure` (string,null)
    Example: "pound"

  - `shipments.packages.products.sku` (string,null)
    The SKU (Stock Keeping Unit) of the item
    Example: "sku-1223344"

  - `shipments.packages.products.sku_description` (string,null)
    Description of the Custom Item's SKU
    Example: "this is a description"

  - `shipments.packages.products.mid_code` (string,null)
    Manufacturers Identification code
    Example: "GBCOM15BRI"

  - `shipments.packages.products.product_url` (string,null)
    link to the item on the seller website
    Example: "https://myproduct.com"

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

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

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

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

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

  - `shipments.total_weight` (object, required)
    The combined weight of all packages in the shipment

  - `shipments.total_weight.value` (number, required)
    The weight, in the specified unit
    Example: 3

  - `shipments.total_weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

  - `shipments.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"

  - `shipments.errors` (array)
    An array of errors that occurred while creating the shipment.
    Example: ["Parameter value is out of range."]

  - `shipments.address_validation` (object,null)
    The address validation result

  - `shipments.address_validation.status` (string, required)
    The possible address validation status values
    Enum: "unverified", "verified", "warning", "error"

  - `shipments.address_validation.original_address` (object, required)
    The original address that was sent for validation

  - `shipments.address_validation.original_address.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"

  - `shipments.address_validation.original_address.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"

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

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

  - `shipments.address_validation.original_address.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."

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

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

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

  - `shipments.address_validation.original_address.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"

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

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

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

  - `shipments.address_validation.matched_address` (object,null, required)
    The matched address found by the ShipStation API

  - `shipments.address_validation.matched_address.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"

  - `shipments.address_validation.matched_address.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"

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

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

  - `shipments.address_validation.matched_address.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."

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

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

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

  - `shipments.address_validation.matched_address.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"

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

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

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

  - `shipments.address_validation.messages` (array, required)
    The list of messages that were generated during the address validation request.

  - `shipments.address_validation.messages.code` (string, required)
    The error codes that can be returned by the address validation API
    Enum: "a1000", "a1001", "a1002", "a1003", "a1004", "a1005", "a1006", "a1007", "a1008", "r1000", "r1001", "r1002", "r1003"

  - `shipments.address_validation.messages.message` (string, required)
    Message explaining the address validation error
    Example: "Invalid Postal Code"

  - `shipments.address_validation.messages.type` (string, required)
    The different types of messages that can be returned by the address validation API
    Enum: "error", "warning", "info"

  - `shipments.address_validation.messages.detail_code` (string,null, required)
    The detailed error codes that can be returned by the address validation API
    Enum: "unsupported_country", "non_supported_country", "minimum_postal_code_verification_failed", "street_does_not_match_unique_street_name", "multiple_directionals", "multiple_matches", "suite_not_valid", "suite_missing", "incompatible_paired_labels", "invalid_house_number", "missing_house_number", "invalid_box_number", "invalid_charge_event", "missing_box_number", "missing_cmra_or_private_mail_box_number", "suite_has_no_secondaries", "postal_code_changed_or_added", "state_province_changed_or_added", "city_locality_changed_or_added", "urbanization_changed", "street_name_spelling_changed_or_added", "street_name_type_changed_or_added", "street_direction_changed_or_added", "suite_type_changed_or_added", "suite_unit_number_changed_or_added", "double_dependent_locality_changed_or_added", "subadministrative_area_changed_or_added", "subnational_area_changed_or_added", "po_box_changed_or_added", "premise_type_changed_or_added", "house_number_changed", "organization_changed_or_added", "partially_verified_to_state_level", "partially_verified_to_city_level", "partially_verified_to_street_level", "partially_verified_to_premise_level", "verified_to_state_level", "verified_to_city_level", "verified_to_street_level", "verified_to_premise_level", "verified_to_suite_level", "coded_to_street_lavel", "coded_to_neighborhood_level", "coded_to_community_level", "coded_to_state_level", "coded_to_rooftop_level", "coded_to_rooftop_interpolation_level", "name_max_length_exceeded", "phone_max_length_exceeded", "company_name_max_length_exceeded", "line1_min_max_length", "line2_max_length_exceeded", "line3_max_length_exceeded", "city_locality_max_length_exceeded", "state_province_max_length_exceeded", "invalid_postal_code", "country_invalid_length", "address_not_found"

## 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 ShipStation API itself.
    Enum: "carrier", "order_source", "ShipStation"

  - `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"

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

  - `errors.field_name` (string)
    The name of the field that caused the error (only present for validation errors)
    Example: "inventory_warehouse_id"

  - `errors.field_value` (string)
    The invalid value that was provided for the field (only present for validation errors)
    Example: "invalid-id"


