> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.shipbob.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.shipbob.com/_mcp/server.

# Create Order

POST https://api.shipbob.com/2026-07/order
Content-Type: application/json

Creates a new order in ShipBob’s system that will be queued for fulfillment. Orders can be created using either product reference IDs (SKUs) or ShipBob product IDs, with reference IDs being the recommended approach.

Reference: https://developer.shipbob.com/api/orders/create-order

## Authentication

- `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token
- `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens

## Servers

- `https://api.shipbob.com` (https://api.shipbob.com, default)
- `https://sandbox-api.shipbob.com` (https://sandbox-api.shipbob.com)

## Request

### Headers

- `shipbob_channel_id` (integer, required) — Channel Id for Operation

### Body (application/json)

This endpoint expects an Orders.CreateOrderModel.

- `products` (list of OrdersCreateOrderModelProductsItems, required) — Products included in the order. Products identified by reference_id must also include the product name if there is no matching ShipBob product.
- `recipient` (Orders.RecipientInfoViewModel, required) — Information about the recipient of an order
- `reference_id` (string, required) — Unique and immutable order identifier from your upstream system
- `shipping_method` (string, required) — Client-defined shipping method matching what the user has listed as the shipping method on the Ship Option Mapping setup page in the ShipBob Merchant Portal. If they don’t match, we will create a new one and default it to Standard
- `type` (enum, required) — Order type. Accepted values are DTC, DropShip and B2B. DropShip and B2B orders must also include retailer_program_data and shipping_terms, or the create request fails validation with a 422 response. For DTC orders the API ignores retailer_program_data.
  - Allowed values: `DTC`, `DropShip`, `B2B`
- `financials` (Orders.Financials, optional)
- `gift_message` (string, optional, nullable) — Gift message associated with the order
- `location_id` (integer, optional, nullable) — Desired Fulfillment Center Location ID. If not specified, ShipBob will determine the location that fulfills this order.
- `order_number` (string, optional, nullable) — User friendly orderId or store order number that will be shown on the Orders Page. If not provided, referenceId will be used
- `origin_platform_program` (string, optional, nullable) — Origin platform program for the order. Accepts a program name.
- `purchase_date` (datetime, optional, nullable) — Date this order was purchase by the end user
- `requested_delivery_date` (datetime, optional, nullable) — The delivery date requested by the source platform for the order in UTC
- `retailer_program_data` (Orders.RetailerProgramDataViewModel, optional) — Required when type is DropShip or B2B. Omitting this object entirely, or supplying a retailer_program_type that is unrecognized or not enrolled, returns a 422 validation error; including the object without its required purchase_order_number or retailer_program_type fields returns a 400 validation error instead. Not used for DTC orders, where the API ignores this object.
- `sales_channel` (enum, optional)
  - Allowed values: `amazon`, `bigcommerce`, `ebay`, `faire`, `macy`, `magento`, `shein`, `shopify`, `squarespace`, `targetplus`, `temu`, `tiktok`, `unleashed`, `walmart`, `woocommerce`
- `shipping_terms` (Orders.ShippingTermsViewModel, optional) — Required when type is DropShip or B2B. For those order types both carrier_type and payment_term must be present. A carrier_type of Freight with a payment_term of ThirdParty is rejected. For DTC orders the only accepted combination is a carrier_type of Parcel with a payment_term of Prepaid, or both values left empty.
- `tags` (list of Orders.TagViewModel, optional, nullable) — Key value pair array to store extra information at the order level for API purposes. ShipBob won't display the info in the ShipBob Merchant Portal or react based on this data.

## Response

### 201

Created

- `channel` (Orders.ChannelInfoViewModel, optional) — Created by channel metadata
- `created_date` (datetime, optional) — Date this order was created
- `financials` (Orders.Financials, optional)
- `gift_message` (string, optional, nullable) — Gift message associated with the order
- `id` (integer, optional) — Unique id of the order
- `order_number` (string, optional, nullable) — User friendly orderId or store order number that will be shown on the Orders Page. If not provided, referenceId will be used
- `products` (list of Orders.ProductInfoViewModel, optional, nullable) — List of products included in the order
- `purchase_date` (datetime, optional, nullable) — Date this order was purchase by the end user
- `recipient` (Orders.RecipientInfoViewModel, optional) — Information about the recipient of an order
- `reference_id` (string, optional, nullable) — Client-defined external unique id of the order
- `retailer_program_data` (Orders.RetailerProgramDataViewModel, optional) — Contains properties that needs to be used for fulfilling B2B/Dropship orders.
- `shipments` (list of Orders.ShipmentViewModel, optional, nullable) — Shipments affiliated with the order
- `shipping_method` (string, optional, nullable) — Client-defined shipping method
- `shipping_terms` (Orders.ShippingTermsViewModel, optional) — Contains shipping properties that need to be used for fulfilling an order.
- `status` (enum, optional)
  - Allowed values: `Processing`, `Exception`, `PartiallyFulfilled`, `Fulfilled`, `Cancelled`, `ImportReview`
- `tags` (list of Orders.TagViewModel, optional, nullable) — Client-defined order tags
- `type` (enum, optional) — Order type. DTC is a direct to consumer order. DropShip and B2B are retailer program order types.
  - Allowed values: `DTC`, `DropShip`, `B2B`

## Errors

### 400 Bad Request Error

Bad Request

- `map from string to list of string`

### 401 Unauthorized Error

No access right at this time

- `any`

### 403 Forbidden Error

No access

- `any`

### 422 Unprocessable Entity Error

Client Error

- `map from string to list of string`

## Types

### OrdersCreateOrderModelProductsItems

### Orders.RecipientInfoViewModel

Information about the recipient of an order

- `address` (OrdersRecipientInfoViewModelAddress, required) — Address of the recipient
- `name` (string, required) — Name of the recipient
- `email` (string, optional, nullable) — Email address of the recipient
- `phone_number` (string, optional, nullable) — Phone number of the recipient

### Orders.Financials

- `total_price` (double, optional, nullable) — Sum of all line item prices, discounts, and taxes in USD

### Orders.RetailerProgramDataViewModel

Contains properties that needs to be used for fulfilling B2B/Dropship orders.

- `purchase_order_number` (string, required) — First initial documentation sent from buyer to seller with item(s) and quantities.
- `retailer_program_type` (string, required) — Program code that identifies the retailer and merchant combination. The code must already exist in the ShipBob retailer program configuration. Use SB-B2B for a standard ShipBob B2B order, because it is the one code the API accepts without the merchant being enrolled first. Retailer specific codes, for example TGTDS, need ShipBob support to enroll the merchant, otherwise the API returns "Merchant is not enabled for the Retailer Program Type". The code must also agree with the order type, otherwise the API reports a different Retailer Program Type than the one configured for the program code. A carrier_type of Parcel combined with a payment_term of Collect or ThirdParty can also be rejected for SB-B2B, depending on the merchant's retailer configuration.
- `addresses` (list of Orders.RetailerProgramDataAddressViewModel, optional, nullable) — Ship From - Certain retailers want to display the ship from address as their return facility, not Shipbob’s warehouse address /// Mark For Address - Final destination address
- `customer_ticket_number` (string, optional, nullable) — Customer Ticket Number
- `delivery_date` (datetime, optional, nullable) — Expected delivery date
- `department` (string, optional, nullable) — Identifies a merchant's store department
- `do_not_ship_before_date` (datetime, optional, nullable) — The date the retailer does not want the order shipped by.
- `mark_for_store` (string, optional, nullable) — Store Number
- `ship_by_date` (datetime, optional, nullable) — The date the retailer has requested the order to ship by.

### Orders.ShippingTermsViewModel

Contains shipping properties that need to be used for fulfilling an order.

- `carrier_type` (enum, optional)
  - Allowed values: `Parcel`, `Freight`
- `payment_term` (enum, optional)
  - Allowed values: `Collect`, `ThirdParty`, `Prepaid`, `MerchantResponsible`

### Orders.TagViewModel

- `name` (string, required) — The key of the tag
- `value` (string, required) — The value of the tag

### Orders.ChannelInfoViewModel

Created by channel metadata

- `id` (integer, optional) — Unique id of the channel
- `name` (string, optional, nullable) — Name of the channel

### Orders.ProductInfoViewModel

- `external_line_id` (integer, optional, nullable) — Numeric assignment per item. Used as a reference number for multiple purposes such as split orders, split containers, etc.
- `gtin` (string, optional, nullable) — Global Trade Item Number - unique and internationally recognized identifier assigned to item by company GS1
- `id` (integer, optional, nullable) — Unique id of the product
- `quantity` (integer, optional) — The quantity of this product ordered
- `quantity_unit_of_measure_code` (string, optional, nullable) — Defined standard for measure for an item (each, inner pack, case, pallet). Values: EA, INP, CS and PL
- `reference_id` (string, optional, nullable) — Unique reference id of the product
- `sku` (string, optional, nullable) — Stock keeping unit for the product
- `unit_price` (double, optional, nullable) — Price for one item
- `upc` (string, optional, nullable) — Universal Product Code - Unique external identifier

### Orders.ShipmentViewModel

Information about a shipment

- `actual_fulfillment_date` (datetime, optional, nullable) — The datetime of ShipBob’s completion of the fulfillment operation as promised. Currently, this means the shipment has been picked, packed, and label has been printed.
- `created_date` (datetime, optional) — Date this shipment was created
- `delivery_date` (datetime, optional, nullable) — The datetime of Shipment delivered to customer.
- `estimated_fulfillment_date` (datetime, optional, nullable) — The datetime of ShipBob’s commitment for completing the shipment and handing to the carrier for delivery.
- `estimated_fulfillment_date_status` (enum, optional)
  - Allowed values: `AwaitingInventoryAllocation`, `AwaitingReset`, `Unavailable`, `PendingOnTime`, `FulfilledOnTime`, `PendingLate`, `FulfilledLate`
- `gift_message` (string, optional, nullable) — Gift message associated with the shipment
- `id` (integer, optional) — Unique id of the shipment
- `insurance_value` (double, optional, nullable) — Monetary amount that this shipment was insured for
- `invoice_amount` (double, optional, nullable) — Monetary amount that was invoiced for this shipment
- `invoice_currency_code` (string, optional, nullable)
- `is_tracking_uploaded` (boolean, optional) — Indicates whether the Shipment was marked with tracking information uploaded to a third-party system where the order originated.
- `last_tracking_update_at` (datetime, optional, nullable) — Timestamp for the last time this shipment had a tracking update
- `last_update_at` (datetime, optional, nullable) — Date this shipment was last updated
- `location` (Orders.FulfillmentCenterViewModel, optional) — Information about a fulfillment center that a shipment can belong to
- `measurements` (Orders.MeasurementsViewModel, optional) — Measurements of a shipment
- `order_id` (integer, optional) — Id of the order this shipment belongs to
- `package_material_type` (enum, optional)
  - Allowed values: `Unknown`, `Box`, `BubbleMailer`, `PolyMailer`, `FragileBox`, `PosterTube`, `Custom`, `Bookfold`, `OwnContainer`, `Undefined`
- `parent_cartons` (list of Orders.ParentCartonViewModel, optional, nullable) — Carton information for this shipment
- `products` (list of Orders.ShipmentProductViewModel, optional, nullable) — Information about the products contained in this shipment
- `recipient` (Orders.RecipientViewModel, optional) — Information about the recipient of a shipment
- `reference_id` (string, optional, nullable) — Client-defined external unique id of the order this shipment belongs to
- `require_signature` (boolean, optional) — If a shipment requires signature
- `ship_option` (string, optional, nullable) — Name of the shipping option used for this shipment
- `status` (enum, optional)
  - Allowed values: `None`, `Processing`, `Completed`, `Exception`, `OnHold`, `Cancelled`, `CleanSweeped`, `LabeledCreated`, `ImportReview`
- `status_details` (list of Orders.StatusDetailViewModel, optional, nullable) — Additional details about the shipment status
- `tracking` (Orders.TrackingViewModel, optional) — Tracking information for a shipment

### Orders.AddProductToOrderByReferenceIdModel

- `quantity` (integer, required) — The quantity of this product ordered
- `reference_id` (string, required) — Unique reference id (also known as sku or seller_sku) of the product.
- `external_line_id` (integer, optional, nullable) — Numeric assignment per item. Used as a reference number for multiple purposes such as split orders, split containers, etc.
- `gtin` (string, optional, nullable) — Global Trade Item Number - unique and internationally recognized identifier assigned to item by company GS1
- `name` (string, optional, nullable) — Name of the product. Required if there is not an existing ShipBob product with a matching reference_id value.
- `quantity_unit_of_measure_code` (string, optional, nullable) — Defined standard for measure for an item (each, inner pack, case, pallet). Values: EA, INP, CS and PL
- `required_lot` (Orders.RequiredLotModel, optional) — Manually specify the lot number/date that should be used to fulfill this order.
- `sku` (string, optional, nullable) — Product SKU
- `unit_price` (double, optional, nullable) — Price for one item
- `upc` (string, optional, nullable) — Universal Product Code - Unique external identifier

### Orders.AddProductToOrderByProductIdModel

- `id` (integer, required) — Unique id of the product
- `quantity` (integer, required) — The quantity of this product ordered
- `external_line_id` (integer, optional, nullable) — Numeric assignment per item. Used as a reference number for multiple purposes such as split orders, split containers, etc.
- `quantity_unit_of_measure_code` (string, optional, nullable) — Defined standard for measure for an item (each, inner pack, case, pallet). Values: EA, INP, CS and PL
- `required_lot` (Orders.RequiredLotModel, optional) — Manually specify the lot number/date that should be used to fulfill this order.

### OrdersRecipientInfoViewModelAddress

Address of the recipient

### Orders.RetailerProgramDataAddressViewModel

Address to used when creating a B2B/DropShip order.

- `address1` (string, required) — First line of the address
- `city` (string, required) — The city
- `country` (string, required) — The country (Must be ISO Alpha-2 for estimates)
- `type` (enum, required)
  - Allowed values: `MarkFor`, `ShipFrom`
- `address2` (string, optional, nullable) — Second line of the address
- `company_name` (string, optional, nullable) — Name of the company receiving the shipment
- `state` (string, optional, nullable) — The state or province
- `zip_code` (string, optional, nullable) — The zip code or postal code

### Orders.FulfillmentCenterViewModel

Information about a fulfillment center that a shipment can belong to

- `id` (integer, optional) — Id of the fulfillment center
- `name` (string, optional, nullable) — Name of the fulfillment center

### Orders.MeasurementsViewModel

Measurements of a shipment

- `depth_in` (integer, optional) — Total depth in inches
- `length_in` (integer, optional) — Total length in inches
- `total_weight_oz` (integer, optional) — Total weight in ounces
- `width_in` (integer, optional) — Total width in inches

### Orders.ParentCartonViewModel

- `barcode` (string, optional, nullable) — Barcode assigned to this carton
- `cartons` (list of Orders.CartonViewModel, optional, nullable) — Cartons packed inside this parent container
- `measurements` (Orders.CartonMeasurementsViewModel, optional) — Measurements of a carton
- `type` (string, optional, nullable) — Type of this carton container

### Orders.ShipmentProductViewModel

Information about a store product belonging to a shipment

- `id` (integer, optional) — Unique id of the product
- `inventory_items` (list of Orders.InventoryViewModel, optional, nullable) — Information about fulfillable inventory items belonging to this product
- `name` (string, optional, nullable) — Name of the product
- `reference_id` (string, optional, nullable) — Unique reference id of the product
- `sku` (string, optional, nullable) — Stock keeping unit for the product

### Orders.RecipientViewModel

Information about the recipient of a shipment

- `address` (OrdersRecipientViewModelAddress, optional, nullable) — Address of the recipient
- `email` (string, optional, nullable) — Email address of the recipient
- `full_name` (string, optional, nullable) — FullName of the recipient
- `name` (string, optional, nullable) — Name of the recipient
- `phone_number` (string, optional, nullable) — Phone number of the recipient

### Orders.StatusDetailViewModel

- `description` (string, optional, nullable) — Describes what the status detail means
- `exception_fulfillment_center_id` (integer, optional, nullable)
- `extra_information` (Orders.StatusInformationViewModel, optional)
- `id` (integer, optional) — The id of the status detail
- `inventory_id` (integer, optional, nullable) — Inventory Id the detail applies to (if applicable)
- `name` (string, optional, nullable) — Short name of the status detail

### Orders.TrackingViewModel

Tracking information for a shipment

- `bol` (string, optional, nullable) — Bill of lading (BOL) number. Document acknowledging receipt of cargo for shipment.
- `carrier` (string, optional, nullable) — Carrier of the shipment
- `carrier_service` (string, optional, nullable) — The carrier's service which was used for this shipment
- `pro_number` (string, optional, nullable) — Tracking number used for freight carriers
- `scac` (string, optional, nullable) — Standard Carrier Alpha Code (SCAC). Unique 2-4 letter code used to identify transportation companies.
- `shipping_date` (datetime, optional, nullable) — Date freight was shipped on
- `tracking_number` (string, optional, nullable) — Tracking number of the shipment
- `tracking_url` (string, optional, nullable) — URL to the website where a shipment can be tracked

### Orders.RequiredLotModel

Manually specify the lot number/date that should be used to fulfill this order.

- `lot_date` (datetime, optional, nullable) — Manually specified lot date
- `lot_number` (string, optional, nullable) — Manually specified lot number

### Orders.AddressViewModel

- `address1` (string, required) — First line of the address
- `city` (string, required) — The city
- `country` (string, required) — The country (Must be ISO Alpha-2 for estimates)
- `address2` (string, optional, nullable) — Second line of the address
- `company_name` (string, optional, nullable) — Name of the company receiving the shipment
- `state` (string, optional, nullable) — The state or province
- `zip_code` (string, optional, nullable) — The zip code or postal code

### Orders.CartonViewModel

- `barcode` (string, optional, nullable) — Barcode assigned to this carton
- `carton_details` (list of Orders.CartonDetailsViewModel, optional, nullable) — Details about the contents of this carton
- `id` (integer, optional) — ID assigned to this carton
- `measurements` (Orders.CartonMeasurementsViewModel, optional) — Measurements of a carton
- `type` (string, optional, nullable) — Type of this carton container

### Orders.CartonMeasurementsViewModel

Measurements of a carton

- `depth_in` (double, optional) — Total depth in inches
- `length_in` (double, optional) — Total length in inches
- `total_weight_oz` (double, optional) — Total weight in ounces
- `width_in` (double, optional) — Total width in inches

### Orders.InventoryViewModel

Information about inventory belonging to a store product

- `expiration_date` (datetime, optional, nullable) — Expiration date of the inventory
- `id` (integer, optional) — Unique id of the inventory
- `is_dangerous_goods` (boolean, optional) — Is inventory Dangerous Good
- `lot` (string, optional, nullable) — Lot number of the inventory
- `name` (string, optional, nullable) — Name of the inventory item
- `quantity` (integer, optional) — Quantity of the inventory item to be included in the fulfillment
- `quantity_committed` (integer, optional) — The quantity of the inventory item allocated from the assigned fulfillment center and committed to the order. If quantity committed is less than order quantity, then the inventory item is out of stock at the assigned fulfillment center.
- `serial_numbers` (list of string, optional, nullable) — Serial number of the inventory

### OrdersRecipientViewModelAddress

Address of the recipient

### Orders.StatusInformationViewModel

- `validation_messages` (list of string, optional, nullable)

### Orders.CartonDetailsViewModel

- `products` (list of Orders.ShipmentProductViewModel, optional, nullable) — List of what is packed in this carton

## Examples

**Request**

```json
{
  "products": [
    {
      "external_line_id": 0,
      "quantity_unit_of_measure_code": "string",
      "reference_id": "TShirtBlueM",
      "quantity": 1,
      "id": 0
    }
  ],
  "recipient": {
    "address": {
      "address1": "100 Nowhere Blvd",
      "address2": "Suite 100",
      "city": "Gotham City",
      "company_name": "Wayne Enterprises",
      "country": "US",
      "state": "NJ",
      "zip_code": "07093"
    },
    "name": "John Doe",
    "email": "john@example.com",
    "phone_number": "555-555-5555"
  },
  "reference_id": "string",
  "shipping_method": "Free 2-day Shipping",
  "type": "DTC",
  "financials": {
    "total_price": 0.1
  },
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "retailer_program_data": {
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "addresses": [
      {
        "address1": "100 Nowhere Blvd",
        "city": "Gotham City",
        "country": "US",
        "type": "MarkFor",
        "address2": "Suite 100",
        "company_name": "Wayne Enterprises",
        "state": "NJ",
        "zip_code": "07093"
      }
    ],
    "customer_ticket_number": "string",
    "delivery_date": "2019-08-24T14:15:22+00:00",
    "department": "string",
    "mark_for_store": "string",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  },
  "shipping_terms": {
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  },
  "tags": [
    {
      "name": "Handling instructions",
      "value": "Fragile"
    }
  ]
}
```

**Response**

```json
{
  "channel": {
    "id": 0,
    "name": "ShipBobs-Shopify-Store"
  },
  "created_date": "2019-08-24T14:15:22+00:00",
  "financials": {
    "total_price": 0.1
  },
  "gift_message": "string",
  "id": 0,
  "order_number": "string",
  "products": [
    {
      "external_line_id": 0,
      "gtin": "string",
      "id": 0,
      "quantity": 0,
      "quantity_unit_of_measure_code": "string",
      "reference_id": "TShirtBlueM",
      "sku": "TShirtBlueM",
      "unit_price": 0.1,
      "upc": "string"
    }
  ],
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "recipient": {
    "address": {
      "address1": "100 Nowhere Blvd",
      "address2": "Suite 100",
      "city": "Gotham City",
      "company_name": "Wayne Enterprises",
      "country": "US",
      "state": "NJ",
      "zip_code": "07093"
    },
    "name": "John Doe",
    "email": "john@example.com",
    "phone_number": "555-555-5555"
  },
  "reference_id": "string",
  "retailer_program_data": {
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "addresses": [
      {
        "address1": "100 Nowhere Blvd",
        "city": "Gotham City",
        "country": "US",
        "type": "MarkFor",
        "address2": "Suite 100",
        "company_name": "Wayne Enterprises",
        "state": "NJ",
        "zip_code": "07093"
      }
    ],
    "customer_ticket_number": "string",
    "delivery_date": "2019-08-24T14:15:22+00:00",
    "department": "string",
    "mark_for_store": "string",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  },
  "shipments": [
    {
      "actual_fulfillment_date": "2019-08-24T14:15:22+00:00",
      "created_date": "2019-08-24T14:15:22+00:00",
      "delivery_date": "2019-08-24T14:15:22+00:00",
      "estimated_fulfillment_date": "2019-08-24T14:15:22+00:00",
      "estimated_fulfillment_date_status": "AwaitingInventoryAllocation",
      "gift_message": "string",
      "id": 0,
      "insurance_value": 0,
      "invoice_amount": 0,
      "invoice_currency_code": "string",
      "is_tracking_uploaded": true,
      "last_tracking_update_at": "2019-08-24T14:15:22+00:00",
      "last_update_at": "2019-08-24T14:15:22+00:00",
      "location": {
        "id": 0,
        "name": "Cicero (IL)"
      },
      "measurements": {
        "depth_in": 0,
        "length_in": 0,
        "total_weight_oz": 0,
        "width_in": 0
      },
      "order_id": 0,
      "package_material_type": "Unknown",
      "parent_cartons": [
        {
          "barcode": "string",
          "cartons": [
            {
              "barcode": "string",
              "carton_details": [
                {
                  "products": [
                    {
                      "id": 0,
                      "inventory_items": [
                        {
                          "expiration_date": "2019-08-24T14:15:22+00:00",
                          "id": 0,
                          "is_dangerous_goods": true,
                          "lot": "22222",
                          "name": "Medium Blue T-Shirt",
                          "quantity": 0,
                          "quantity_committed": 0,
                          "serial_numbers": [
                            "string"
                          ]
                        }
                      ],
                      "name": "Medium Blue T-Shirt",
                      "reference_id": "TShirtBlueM",
                      "sku": "TShirtBlueM"
                    }
                  ]
                }
              ],
              "id": 0,
              "measurements": {
                "depth_in": 0.1,
                "length_in": 0.1,
                "total_weight_oz": 0.1,
                "width_in": 0.1
              },
              "type": "Box or pallet"
            }
          ],
          "measurements": {
            "depth_in": 0.1,
            "length_in": 0.1,
            "total_weight_oz": 0.1,
            "width_in": 0.1
          },
          "type": "Box or pallet"
        }
      ],
      "products": [
        {
          "id": 0,
          "inventory_items": [
            {
              "expiration_date": "2019-08-24T14:15:22+00:00",
              "id": 0,
              "is_dangerous_goods": true,
              "lot": "22222",
              "name": "Medium Blue T-Shirt",
              "quantity": 0,
              "quantity_committed": 0,
              "serial_numbers": [
                "string"
              ]
            }
          ],
          "name": "Medium Blue T-Shirt",
          "reference_id": "TShirtBlueM",
          "sku": "TShirtBlueM"
        }
      ],
      "recipient": {
        "address": {
          "address1": "100 Nowhere Blvd",
          "address2": "Suite 100",
          "city": "Gotham City",
          "company_name": "Wayne Enterprises",
          "country": "US",
          "state": "NJ",
          "zip_code": "07093"
        },
        "email": "john@example.com",
        "full_name": "John Doe",
        "name": "John Doe",
        "phone_number": "555-555-5555"
      },
      "reference_id": "string",
      "require_signature": true,
      "ship_option": "Standard",
      "status": "None",
      "status_details": [
        {
          "description": "string",
          "exception_fulfillment_center_id": 0,
          "extra_information": {
            "validation_messages": [
              "string"
            ]
          },
          "id": 0,
          "inventory_id": 0,
          "name": "string"
        }
      ],
      "tracking": {
        "bol": "string",
        "carrier": "USPS",
        "carrier_service": "Priority",
        "pro_number": "string",
        "scac": "string",
        "shipping_date": "2019-08-24T14:15:22+00:00",
        "tracking_number": "860C8CDC8F0B4FC7AB69AC86C20539EC",
        "tracking_url": "https://www.example.com/tracking?id=860C8CDC8F0B4FC7AB69AC86C20539EC"
      }
    }
  ],
  "shipping_method": "Free 2-day Shipping",
  "shipping_terms": {
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  },
  "status": "Processing",
  "tags": [
    {
      "name": "Handling instructions",
      "value": "Fragile"
    }
  ],
  "type": "DTC"
}
```

**SDK Code**

```python default
import requests

url = "https://api.shipbob.com/2026-07/order"

payload = {
    "products": [
        {
            "external_line_id": 0,
            "quantity_unit_of_measure_code": "string",
            "reference_id": "TShirtBlueM",
            "quantity": 1,
            "id": 0
        }
    ],
    "recipient": {
        "address": {
            "address1": "100 Nowhere Blvd",
            "address2": "Suite 100",
            "city": "Gotham City",
            "company_name": "Wayne Enterprises",
            "country": "US",
            "state": "NJ",
            "zip_code": "07093"
        },
        "name": "John Doe",
        "email": "john@example.com",
        "phone_number": "555-555-5555"
    },
    "reference_id": "string",
    "shipping_method": "Free 2-day Shipping",
    "type": "DTC",
    "financials": { "total_price": 0.1 },
    "gift_message": "string",
    "location_id": 0,
    "order_number": "string",
    "purchase_date": "2019-08-24T14:15:22+00:00",
    "retailer_program_data": {
        "purchase_order_number": "string",
        "retailer_program_type": "string",
        "addresses": [
            {
                "address1": "100 Nowhere Blvd",
                "city": "Gotham City",
                "country": "US",
                "type": "MarkFor",
                "address2": "Suite 100",
                "company_name": "Wayne Enterprises",
                "state": "NJ",
                "zip_code": "07093"
            }
        ],
        "customer_ticket_number": "string",
        "delivery_date": "2019-08-24T14:15:22+00:00",
        "department": "string",
        "mark_for_store": "string",
        "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
        "shipByDate": "2019-08-24T14:15:22+00:00"
    },
    "shipping_terms": {
        "carrier_type": "Parcel",
        "payment_term": "Collect"
    },
    "tags": [
        {
            "name": "Handling instructions",
            "value": "Fragile"
        }
    ]
}
headers = {
    "shipbob_channel_id": "1",
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript default
const url = 'https://api.shipbob.com/2026-07/order';
const options = {
  method: 'POST',
  headers: {
    shipbob_channel_id: '1',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"products":[{"external_line_id":0,"quantity_unit_of_measure_code":"string","reference_id":"TShirtBlueM","quantity":1,"id":0}],"recipient":{"address":{"address1":"100 Nowhere Blvd","address2":"Suite 100","city":"Gotham City","company_name":"Wayne Enterprises","country":"US","state":"NJ","zip_code":"07093"},"name":"John Doe","email":"john@example.com","phone_number":"555-555-5555"},"reference_id":"string","shipping_method":"Free 2-day Shipping","type":"DTC","financials":{"total_price":0.1},"gift_message":"string","location_id":0,"order_number":"string","purchase_date":"2019-08-24T14:15:22+00:00","retailer_program_data":{"purchase_order_number":"string","retailer_program_type":"string","addresses":[{"address1":"100 Nowhere Blvd","city":"Gotham City","country":"US","type":"MarkFor","address2":"Suite 100","company_name":"Wayne Enterprises","state":"NJ","zip_code":"07093"}],"customer_ticket_number":"string","delivery_date":"2019-08-24T14:15:22+00:00","department":"string","mark_for_store":"string","doNotShipBeforeDate":"2019-08-24T14:15:22+00:00","shipByDate":"2019-08-24T14:15:22+00:00"},"shipping_terms":{"carrier_type":"Parcel","payment_term":"Collect"},"tags":[{"name":"Handling instructions","value":"Fragile"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go default
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.shipbob.com/2026-07/order"

	payload := strings.NewReader("{\n  \"products\": [\n    {\n      \"external_line_id\": 0,\n      \"quantity_unit_of_measure_code\": \"string\",\n      \"reference_id\": \"TShirtBlueM\",\n      \"quantity\": 1,\n      \"id\": 0\n    }\n  ],\n  \"recipient\": {\n    \"address\": {\n      \"address1\": \"100 Nowhere Blvd\",\n      \"address2\": \"Suite 100\",\n      \"city\": \"Gotham City\",\n      \"company_name\": \"Wayne Enterprises\",\n      \"country\": \"US\",\n      \"state\": \"NJ\",\n      \"zip_code\": \"07093\"\n    },\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"phone_number\": \"555-555-5555\"\n  },\n  \"reference_id\": \"string\",\n  \"shipping_method\": \"Free 2-day Shipping\",\n  \"type\": \"DTC\",\n  \"financials\": {\n    \"total_price\": 0.1\n  },\n  \"gift_message\": \"string\",\n  \"location_id\": 0,\n  \"order_number\": \"string\",\n  \"purchase_date\": \"2019-08-24T14:15:22+00:00\",\n  \"retailer_program_data\": {\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"addresses\": [\n      {\n        \"address1\": \"100 Nowhere Blvd\",\n        \"city\": \"Gotham City\",\n        \"country\": \"US\",\n        \"type\": \"MarkFor\",\n        \"address2\": \"Suite 100\",\n        \"company_name\": \"Wayne Enterprises\",\n        \"state\": \"NJ\",\n        \"zip_code\": \"07093\"\n      }\n    ],\n    \"customer_ticket_number\": \"string\",\n    \"delivery_date\": \"2019-08-24T14:15:22+00:00\",\n    \"department\": \"string\",\n    \"mark_for_store\": \"string\",\n    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_terms\": {\n    \"carrier_type\": \"Parcel\",\n    \"payment_term\": \"Collect\"\n  },\n  \"tags\": [\n    {\n      \"name\": \"Handling instructions\",\n      \"value\": \"Fragile\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("shipbob_channel_id", "1")
	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby default
require 'uri'
require 'net/http'

url = URI("https://api.shipbob.com/2026-07/order")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["shipbob_channel_id"] = '1'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"products\": [\n    {\n      \"external_line_id\": 0,\n      \"quantity_unit_of_measure_code\": \"string\",\n      \"reference_id\": \"TShirtBlueM\",\n      \"quantity\": 1,\n      \"id\": 0\n    }\n  ],\n  \"recipient\": {\n    \"address\": {\n      \"address1\": \"100 Nowhere Blvd\",\n      \"address2\": \"Suite 100\",\n      \"city\": \"Gotham City\",\n      \"company_name\": \"Wayne Enterprises\",\n      \"country\": \"US\",\n      \"state\": \"NJ\",\n      \"zip_code\": \"07093\"\n    },\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"phone_number\": \"555-555-5555\"\n  },\n  \"reference_id\": \"string\",\n  \"shipping_method\": \"Free 2-day Shipping\",\n  \"type\": \"DTC\",\n  \"financials\": {\n    \"total_price\": 0.1\n  },\n  \"gift_message\": \"string\",\n  \"location_id\": 0,\n  \"order_number\": \"string\",\n  \"purchase_date\": \"2019-08-24T14:15:22+00:00\",\n  \"retailer_program_data\": {\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"addresses\": [\n      {\n        \"address1\": \"100 Nowhere Blvd\",\n        \"city\": \"Gotham City\",\n        \"country\": \"US\",\n        \"type\": \"MarkFor\",\n        \"address2\": \"Suite 100\",\n        \"company_name\": \"Wayne Enterprises\",\n        \"state\": \"NJ\",\n        \"zip_code\": \"07093\"\n      }\n    ],\n    \"customer_ticket_number\": \"string\",\n    \"delivery_date\": \"2019-08-24T14:15:22+00:00\",\n    \"department\": \"string\",\n    \"mark_for_store\": \"string\",\n    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_terms\": {\n    \"carrier_type\": \"Parcel\",\n    \"payment_term\": \"Collect\"\n  },\n  \"tags\": [\n    {\n      \"name\": \"Handling instructions\",\n      \"value\": \"Fragile\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java default
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.shipbob.com/2026-07/order")
  .header("shipbob_channel_id", "1")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"products\": [\n    {\n      \"external_line_id\": 0,\n      \"quantity_unit_of_measure_code\": \"string\",\n      \"reference_id\": \"TShirtBlueM\",\n      \"quantity\": 1,\n      \"id\": 0\n    }\n  ],\n  \"recipient\": {\n    \"address\": {\n      \"address1\": \"100 Nowhere Blvd\",\n      \"address2\": \"Suite 100\",\n      \"city\": \"Gotham City\",\n      \"company_name\": \"Wayne Enterprises\",\n      \"country\": \"US\",\n      \"state\": \"NJ\",\n      \"zip_code\": \"07093\"\n    },\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"phone_number\": \"555-555-5555\"\n  },\n  \"reference_id\": \"string\",\n  \"shipping_method\": \"Free 2-day Shipping\",\n  \"type\": \"DTC\",\n  \"financials\": {\n    \"total_price\": 0.1\n  },\n  \"gift_message\": \"string\",\n  \"location_id\": 0,\n  \"order_number\": \"string\",\n  \"purchase_date\": \"2019-08-24T14:15:22+00:00\",\n  \"retailer_program_data\": {\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"addresses\": [\n      {\n        \"address1\": \"100 Nowhere Blvd\",\n        \"city\": \"Gotham City\",\n        \"country\": \"US\",\n        \"type\": \"MarkFor\",\n        \"address2\": \"Suite 100\",\n        \"company_name\": \"Wayne Enterprises\",\n        \"state\": \"NJ\",\n        \"zip_code\": \"07093\"\n      }\n    ],\n    \"customer_ticket_number\": \"string\",\n    \"delivery_date\": \"2019-08-24T14:15:22+00:00\",\n    \"department\": \"string\",\n    \"mark_for_store\": \"string\",\n    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_terms\": {\n    \"carrier_type\": \"Parcel\",\n    \"payment_term\": \"Collect\"\n  },\n  \"tags\": [\n    {\n      \"name\": \"Handling instructions\",\n      \"value\": \"Fragile\"\n    }\n  ]\n}")
  .asString();
```

```php default
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.shipbob.com/2026-07/order', [
  'body' => '{
  "products": [
    {
      "external_line_id": 0,
      "quantity_unit_of_measure_code": "string",
      "reference_id": "TShirtBlueM",
      "quantity": 1,
      "id": 0
    }
  ],
  "recipient": {
    "address": {
      "address1": "100 Nowhere Blvd",
      "address2": "Suite 100",
      "city": "Gotham City",
      "company_name": "Wayne Enterprises",
      "country": "US",
      "state": "NJ",
      "zip_code": "07093"
    },
    "name": "John Doe",
    "email": "john@example.com",
    "phone_number": "555-555-5555"
  },
  "reference_id": "string",
  "shipping_method": "Free 2-day Shipping",
  "type": "DTC",
  "financials": {
    "total_price": 0.1
  },
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "retailer_program_data": {
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "addresses": [
      {
        "address1": "100 Nowhere Blvd",
        "city": "Gotham City",
        "country": "US",
        "type": "MarkFor",
        "address2": "Suite 100",
        "company_name": "Wayne Enterprises",
        "state": "NJ",
        "zip_code": "07093"
      }
    ],
    "customer_ticket_number": "string",
    "delivery_date": "2019-08-24T14:15:22+00:00",
    "department": "string",
    "mark_for_store": "string",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  },
  "shipping_terms": {
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  },
  "tags": [
    {
      "name": "Handling instructions",
      "value": "Fragile"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'shipbob_channel_id' => '1',
  ],
]);

echo $response->getBody();
```

```csharp default
using RestSharp;

var client = new RestClient("https://api.shipbob.com/2026-07/order");
var request = new RestRequest(Method.POST);
request.AddHeader("shipbob_channel_id", "1");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"products\": [\n    {\n      \"external_line_id\": 0,\n      \"quantity_unit_of_measure_code\": \"string\",\n      \"reference_id\": \"TShirtBlueM\",\n      \"quantity\": 1,\n      \"id\": 0\n    }\n  ],\n  \"recipient\": {\n    \"address\": {\n      \"address1\": \"100 Nowhere Blvd\",\n      \"address2\": \"Suite 100\",\n      \"city\": \"Gotham City\",\n      \"company_name\": \"Wayne Enterprises\",\n      \"country\": \"US\",\n      \"state\": \"NJ\",\n      \"zip_code\": \"07093\"\n    },\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"phone_number\": \"555-555-5555\"\n  },\n  \"reference_id\": \"string\",\n  \"shipping_method\": \"Free 2-day Shipping\",\n  \"type\": \"DTC\",\n  \"financials\": {\n    \"total_price\": 0.1\n  },\n  \"gift_message\": \"string\",\n  \"location_id\": 0,\n  \"order_number\": \"string\",\n  \"purchase_date\": \"2019-08-24T14:15:22+00:00\",\n  \"retailer_program_data\": {\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"addresses\": [\n      {\n        \"address1\": \"100 Nowhere Blvd\",\n        \"city\": \"Gotham City\",\n        \"country\": \"US\",\n        \"type\": \"MarkFor\",\n        \"address2\": \"Suite 100\",\n        \"company_name\": \"Wayne Enterprises\",\n        \"state\": \"NJ\",\n        \"zip_code\": \"07093\"\n      }\n    ],\n    \"customer_ticket_number\": \"string\",\n    \"delivery_date\": \"2019-08-24T14:15:22+00:00\",\n    \"department\": \"string\",\n    \"mark_for_store\": \"string\",\n    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_terms\": {\n    \"carrier_type\": \"Parcel\",\n    \"payment_term\": \"Collect\"\n  },\n  \"tags\": [\n    {\n      \"name\": \"Handling instructions\",\n      \"value\": \"Fragile\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift default
import Foundation

let headers = [
  "shipbob_channel_id": "1",
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "products": [
    [
      "external_line_id": 0,
      "quantity_unit_of_measure_code": "string",
      "reference_id": "TShirtBlueM",
      "quantity": 1,
      "id": 0
    ]
  ],
  "recipient": [
    "address": [
      "address1": "100 Nowhere Blvd",
      "address2": "Suite 100",
      "city": "Gotham City",
      "company_name": "Wayne Enterprises",
      "country": "US",
      "state": "NJ",
      "zip_code": "07093"
    ],
    "name": "John Doe",
    "email": "john@example.com",
    "phone_number": "555-555-5555"
  ],
  "reference_id": "string",
  "shipping_method": "Free 2-day Shipping",
  "type": "DTC",
  "financials": ["total_price": 0.1],
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "retailer_program_data": [
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "addresses": [
      [
        "address1": "100 Nowhere Blvd",
        "city": "Gotham City",
        "country": "US",
        "type": "MarkFor",
        "address2": "Suite 100",
        "company_name": "Wayne Enterprises",
        "state": "NJ",
        "zip_code": "07093"
      ]
    ],
    "customer_ticket_number": "string",
    "delivery_date": "2019-08-24T14:15:22+00:00",
    "department": "string",
    "mark_for_store": "string",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  ],
  "shipping_terms": [
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  ],
  "tags": [
    [
      "name": "Handling instructions",
      "value": "Fragile"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.shipbob.com/2026-07/order")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```