> This page is for version v1.0.
> For other versions, use one of these documentation indexes:
> - 2026-07 (default): https://developer-stage.shipbob.dev/2026-07/llms.txt
> - 2026-01: https://developer-stage.shipbob.dev/2026-01/llms.txt
> - 2025-07: https://developer-stage.shipbob.dev/2025-07/llms.txt
> - v2.0: https://developer-stage.shipbob.dev/v2.0/llms.txt
> - v1.0: https://developer-stage.shipbob.dev/v1.0/llms.txt
> - Experimental: https://developer-stage.shipbob.dev/experimental/llms.txt

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

# Create Order

POST https://sandbox-api.shipbob.com/1.0/order
Content-Type: application/json

Reference: https://developer-stage.shipbob.dev/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

## 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
- `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
- `reference_id` (string, optional) — Unique and immutable order identifier from your upstream system
- `retailer_program_data` (Orders.RetailerProgramDataViewModel, optional) — Contains properties that needs to be used for fulfilling B2B/Dropship orders.
- `sales_channel` (string, optional, nullable) — Origin platform source for the order. Accepts a sales channel name.
- `shipping_method` (string, optional) — 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
- `shipping_terms` (Orders.ShippingTermsViewModel, optional) — Contains shipping properties that need to be used for fulfilling an order.
- `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.
- `type` (enum, optional)
  - Allowed values: `DTC`, `DropShip`, `B2B`

## 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 OrdersOrderViewModelShipmentsItems, 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)
  - 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.AddProductToOrderByProductIdModel
- Orders.AddProductToOrderByReferenceIdModel

### 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.

- `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
- `doNotShipBeforeDate` (datetime, optional, nullable) — The date the retailer does not want the order shipped by.
- `mark_for_store` (string, optional, nullable) — Store Number
- `purchase_order_number` (string, optional) — First initial documentation sent from buyer to seller with item(s) and quantities.
- `retailer_program_type` (string, optional) — Identifies retailer-merchant combination
- `shipByDate` (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

### OrdersOrderViewModelShipmentsItems

Information about a shipment

- Orders.ShipmentViewModel
- Orders.InternalShipmentViewModel

### Orders.AddProductToOrderByProductIdModel

- `quantity` (integer, required) — The quantity of this product ordered
- `quantity` (integer, required)
- `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.
- `id` (integer, optional) — Unique id of the product
- `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
- `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

### Orders.AddProductToOrderByReferenceIdModel

- `quantity` (integer, required) — The quantity of this product ordered
- `quantity` (integer, required)
- `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
- `reference_id` (string, optional) — Unique reference id of the product
- `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
- `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

### OrdersRecipientInfoViewModelAddress

Address of the recipient

- Orders.AddressViewModel
- Orders.RetailerProgramDataAddressViewModel

### 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.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.InternalShipmentViewModel

- `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
- `store_order_id` (string, optional, nullable) — Unique store order id of the shipment
- `tracking` (Orders.TrackingViewModel, optional) — Tracking information for a shipment

### 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.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.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.AddressViewModel
- Orders.RetailerProgramDataAddressViewModel

### 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,
      "id": 0,
      "quantity": 1,
      "quantity_unit_of_measure_code": "string"
    }
  ],
  "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"
  },
  "financials": {
    "total_price": 0.1
  },
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "reference_id": "string",
  "retailer_program_data": {
    "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",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "mark_for_store": "string",
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  },
  "shipping_method": "Free 2-day Shipping",
  "shipping_terms": {
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  },
  "tags": [
    {
      "name": "Handling instructions",
      "value": "Fragile"
    }
  ],
  "type": "DTC"
}
```

**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": {
    "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",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "mark_for_store": "string",
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "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://sandbox-api.shipbob.com/1.0/order"

payload = {
    "products": [
        {
            "external_line_id": 0,
            "id": 0,
            "quantity": 1,
            "quantity_unit_of_measure_code": "string"
        }
    ],
    "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"
    },
    "financials": { "total_price": 0.1 },
    "gift_message": "string",
    "location_id": 0,
    "order_number": "string",
    "purchase_date": "2019-08-24T14:15:22+00:00",
    "reference_id": "string",
    "retailer_program_data": {
        "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",
        "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
        "mark_for_store": "string",
        "purchase_order_number": "string",
        "retailer_program_type": "string",
        "shipByDate": "2019-08-24T14:15:22+00:00"
    },
    "shipping_method": "Free 2-day Shipping",
    "shipping_terms": {
        "carrier_type": "Parcel",
        "payment_term": "Collect"
    },
    "tags": [
        {
            "name": "Handling instructions",
            "value": "Fragile"
        }
    ],
    "type": "DTC"
}
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://sandbox-api.shipbob.com/1.0/order';
const options = {
  method: 'POST',
  headers: {
    shipbob_channel_id: '1',
    Authorization: 'Bearer <token>',
    'Content-Type': 'application/json'
  },
  body: '{"products":[{"external_line_id":0,"id":0,"quantity":1,"quantity_unit_of_measure_code":"string"}],"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"},"financials":{"total_price":0.1},"gift_message":"string","location_id":0,"order_number":"string","purchase_date":"2019-08-24T14:15:22+00:00","reference_id":"string","retailer_program_data":{"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","doNotShipBeforeDate":"2019-08-24T14:15:22+00:00","mark_for_store":"string","purchase_order_number":"string","retailer_program_type":"string","shipByDate":"2019-08-24T14:15:22+00:00"},"shipping_method":"Free 2-day Shipping","shipping_terms":{"carrier_type":"Parcel","payment_term":"Collect"},"tags":[{"name":"Handling instructions","value":"Fragile"}],"type":"DTC"}'
};

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://sandbox-api.shipbob.com/1.0/order"

	payload := strings.NewReader("{\n  \"products\": [\n    {\n      \"external_line_id\": 0,\n      \"id\": 0,\n      \"quantity\": 1,\n      \"quantity_unit_of_measure_code\": \"string\"\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  \"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  \"reference_id\": \"string\",\n  \"retailer_program_data\": {\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    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"mark_for_store\": \"string\",\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_method\": \"Free 2-day Shipping\",\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  \"type\": \"DTC\"\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://sandbox-api.shipbob.com/1.0/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      \"id\": 0,\n      \"quantity\": 1,\n      \"quantity_unit_of_measure_code\": \"string\"\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  \"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  \"reference_id\": \"string\",\n  \"retailer_program_data\": {\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    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"mark_for_store\": \"string\",\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_method\": \"Free 2-day Shipping\",\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  \"type\": \"DTC\"\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://sandbox-api.shipbob.com/1.0/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      \"id\": 0,\n      \"quantity\": 1,\n      \"quantity_unit_of_measure_code\": \"string\"\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  \"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  \"reference_id\": \"string\",\n  \"retailer_program_data\": {\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    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"mark_for_store\": \"string\",\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_method\": \"Free 2-day Shipping\",\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  \"type\": \"DTC\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://sandbox-api.shipbob.com/1.0/order', [
  'body' => '{
  "products": [
    {
      "external_line_id": 0,
      "id": 0,
      "quantity": 1,
      "quantity_unit_of_measure_code": "string"
    }
  ],
  "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"
  },
  "financials": {
    "total_price": 0.1
  },
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "reference_id": "string",
  "retailer_program_data": {
    "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",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "mark_for_store": "string",
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  },
  "shipping_method": "Free 2-day Shipping",
  "shipping_terms": {
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  },
  "tags": [
    {
      "name": "Handling instructions",
      "value": "Fragile"
    }
  ],
  "type": "DTC"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
    'shipbob_channel_id' => '1',
  ],
]);

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

```csharp default
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/1.0/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      \"id\": 0,\n      \"quantity\": 1,\n      \"quantity_unit_of_measure_code\": \"string\"\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  \"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  \"reference_id\": \"string\",\n  \"retailer_program_data\": {\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    \"doNotShipBeforeDate\": \"2019-08-24T14:15:22+00:00\",\n    \"mark_for_store\": \"string\",\n    \"purchase_order_number\": \"string\",\n    \"retailer_program_type\": \"string\",\n    \"shipByDate\": \"2019-08-24T14:15:22+00:00\"\n  },\n  \"shipping_method\": \"Free 2-day Shipping\",\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  \"type\": \"DTC\"\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,
      "id": 0,
      "quantity": 1,
      "quantity_unit_of_measure_code": "string"
    ]
  ],
  "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"
  ],
  "financials": ["total_price": 0.1],
  "gift_message": "string",
  "location_id": 0,
  "order_number": "string",
  "purchase_date": "2019-08-24T14:15:22+00:00",
  "reference_id": "string",
  "retailer_program_data": [
    "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",
    "doNotShipBeforeDate": "2019-08-24T14:15:22+00:00",
    "mark_for_store": "string",
    "purchase_order_number": "string",
    "retailer_program_type": "string",
    "shipByDate": "2019-08-24T14:15:22+00:00"
  ],
  "shipping_method": "Free 2-day Shipping",
  "shipping_terms": [
    "carrier_type": "Parcel",
    "payment_term": "Collect"
  ],
  "tags": [
    [
      "name": "Handling instructions",
      "value": "Fragile"
    ]
  ],
  "type": "DTC"
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/1.0/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()
```