> This page is for Developer.

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

# Create Order

POST https://api.bigcommerce.com/stores/{store_hash}/v2/orders
Content-Type: application/json

Creates an *Order*. To learn more about creating or updating orders, see [Orders Overview](/developer/docs/admin/checkout-and-cart/orders).

Create an order with an existing catalog product or a custom product.

**Required Fields**

* `products` or `consignments`
* `billing_address`

When you create an order, the `consignments` object lets you create a pickup consignment. Inventory for the pickup consignment's line items is checked and deducted at the location assigned to the `pickup_method_id`, which can be any inventory location, not only the default location. Orders created with `products` and `shipping_addresses` always deduct inventory from the default location.
- An order can have either a pickup or a shipping fulfillment method, but not both.
- An order can have only one pickup consignment.
- To create a pickup consignment, the target location must have a pickup method assigned to it. See the [Pickup Methods API](/developer/api-reference/rest/admin/management/pickup/pickup-methods).

To create a pickup order server-side, for example from a marketplace or point-of-sale (POS) import, send `consignments.pickups` instead of `products` and `shipping_addresses`. See the **Order with pickup method** request example.

Choose from one of the following:
1. Create order with a shipping fulfillment method using `shipping_addresses` and `products`
2. Create order with a pickup fulfillment method using `consignments`. Inventory is deducted at the pickup method's location.

You can fulfill an order with *shipping* or *pickup*, but not both. This means that if the `consignments` array is present in the request, then `shipping_addresses` and `products` can't be present, and vice versa.

Include the `fees` object along with all its attributes in the request to create order-level fees for the newly created order.

**Notes**

* The values for cost_ex_tax, cost_inc_tax and cost_tax in the fees payload should reflect the tax rate associated with the tax_class_id. For a 10% tax rate, the difference between cost_inc_tax and cost_ex_tax should be 10%. If no tax_class_id is provided, the store's default "tax class for fee" will apply. Incorrect data may lead to issues in downstream operations like refunds.

The V2 Orders API will not trigger the typical [Order Email](https://support.bigcommerce.com/s/article/Customizing-Emails?language=en_US) when creating orders. To create an order that does trigger this email, you can instead [create a cart](/developer/api-reference/rest/admin/management/carts/carts-single/create-cart) and [convert that cart into an order](/developer/api-reference/rest/admin/management/checkouts/orders/create-order).

If you are building an app that creates orders, it must include your app's ID in the `external_source` field of new orders to be approved for the App Marketplace. See [App Store Approval Requirements](/developer/docs/integrations/apps/guide/approval-requirements#functionality) to learn more.

> #### Note
> * If historical orders processed on another eCommerce platform are being migrated to BigCommerce, supply the `external_source` field with the code **M-MIG**. This code will exclude the historical orders from the store’s GMV/order count, which factors into pricing.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/admin/management/orders/create-order

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Orders | modify | `store_v2_orders` | | Orders | read-only | `store_v2_orders_read_only` | ### Authentication header | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#api-accounts). | ### Further reading For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).

## Request

### Path parameters

- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Query parameters

- `include` (list of enum, optional) — * `consignments` - include the response returned from the request to the `/orders/{order_id}/consignments` endpoint. Current default array structure is legacy and will be deprecated from **1 Feb 2026**. Specify `consignment_structure=object` as a request parameter when including consignments. * `consignments.line_items` - include the response returned from the request to the `/orders/{order_id}/products` endpoint in consignments. This will also includes the resources associated with `include=consignments`. Current default array structure is legacy and will be deprecated from **1 Feb 2026**. Specify `consignment_structure=object` as a request parameter when including consignments. * `fees` - include the response returned from the request to the `/orders/{order_id}/fees` endpoint.
  - Allowed values: `consignments`, `consignments.line_items`, `fees`
- `consignment_structure` (enum, optional) — Should be specified along with `include=consignments` or `include=consignments.line_items` to return consignments in the supported object structure. The default array structure provided is legacy and may not be supported in the future.
  - Allowed values: `object`

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

### Body (application/json)

This endpoint expects an order_Post.

- `backorder_shipping_expectation_message` (string, optional, nullable) — The shipping expectation message shown to the customer when the order contains a backordered item. `null` when the order has no backordered items.
- `base_handling_cost` (string, optional) — The value of the base handling cost. The value can't be negative. (Float, Float-As-String, Integer)
- `base_shipping_cost` (string, optional) — The value of the base shipping cost. The value can't be negative. (Float, Float-As-String, Integer)
- `base_wrapping_cost` (string, optional) — The value of the base wrapping cost expressed as a floating point number to four decimal places in string format. The value can't be negative.
- `billing_address` (billingAddress_Base, optional)
- `channel_id` (integer, optional) — Shows where the order originated. The channel_id defaults to 1. The value must match the ID of a valid and enabled channel. If the ID refers to a non-existing or disconnected channel, the POST and PUT `/v2/orders` endpoints return a validation error.
- `consignments` (orderConsignment_Post, optional)
- `customer_id` (double, optional) — The ID of the customer who placed the order. `0` indicates a guest checkout. Use this ID with the Customers API to look up customer attributes that aren't stored on the order, such as `tax_exempt_category`.
- `customer_locale` (string, optional) — The customer’s locale. The supported formats are: - 2-char lowercase characters. e.g., `en` - 3-char lowercase characters. e.g., `asa` - 5-char the language code is 2 lowercase characters and the region code is 2 uppercase characters, with `-` in the middle. e.g., `en-US` - 6-char the language code is 2 lowercase character and the region code is three digit number, with `-` in the middle. e.g., `es-419`
- `customer_message` (string, optional) — Message that the customer entered (number, options) -o the `Order Comments` box during checkout.
- `date_created` (string, optional) — The date the order was created, formatted in the RFC-2822 standard. You set this attribute on Order creation (POST) to support the migration of historical orders. If you do not provide a value, then it will default to the current date/time. e.g., `Tue, 20 Nov 2012 00:00:00 +0000`. This date time is always in UTC in the api response.
- `default_currency_code` (string, optional) — The currency code of the transactional currency the shopper pays in is writable when multi-currency is enabled.
- `discount_amount` (string, optional) — Amount of discount for this transaction. The value can't be negative. (Float, Float-As-String, Integer)
- `ebay_order_id` (string, optional) — If the order was placed through eBay, the eBay order number will be included. Otherwise, the value will be `0`.
- `external_id` (string, optional, nullable) — (Read-only) The order ID in another system, such as the Amazon order ID if this is an Amazon order.
- `external_merchant_id` (string, optional, nullable) — The merchant ID represents an upstream order from an external system. It is the source of truth for orders. After setting it, you cannot write to or update the `external_merchant_id`. For example, you can update the Facebook by Meta page ID in a POST request, but a PUT request to update the order will return a 400 error. Please remove it from your request before trying again.
- `external_order_id` (string, optional) — The order ID in another system, such as the Amazon Order ID if this is an Amazon order. After setting it, you can update this field using a POST or PUT request.
- `external_source` (string, optional, nullable) — This value identifies an external system that generated the order and submitted it to BigCommerce with the Orders API. * When supplying the value, we recommend combining the type of system and vendor, e.g., ERP (Acumatica) or POS (Square). * If you are migrating historical orders processed on another eCommerce platform to BigCommerce, supply the following code as the value: M-MIG. This code will exclude historical orders from the store’s GMV/order count, which factors into pricing. * If you do not provide a value, then it will default to null.
- `fees` (list of orderFees_Post, optional)
- `geoip_country` (string, optional) — The full name of the country where the customer made the purchase, based on the IP.
- `geoip_country_iso2` (string, optional) — The country where the customer made the purchase, in ISO2 format, based on the IP.
- `handling_cost_ex_tax` (string, optional) — The value of the handling cost, excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `handling_cost_inc_tax` (string, optional) — The value of the handling cost, including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `ip_address` (string, optional) — IPv4 Address of the customer, if known. Note: You can set either `ip_address` or `ip_address_v6`. Setting the `ip_address` value will reset the `ip_address_v6` value and vice versa.
- `ip_address_v6` (string, optional) — IPv6 Address of the customer, if known. Note: You can set either `ip_address` or `ip_address_v6`. Setting the `ip_address_v6` value will reset the `ip_address` value and vice versa.
- `items_shipped` (double, optional) — The number of items that have been shipped.
- `items_total` (double, optional) — The total number of items in the order.
- `order_is_digital` (boolean, optional) — Whether this is an order for digital products.
- `order_source` (string, optional) — Reflects the origin of the order, such as the storefront, the control panel, a manual order, the Orders API, the Checkout API, or an integration with an external platform. It can affect the order's icon and source shown in the control panel order list. Orders created with the API default to `external`. Allowed values: `www` (Desktop) | `iphone` (iPhone) | `ipad` (iPad) | `android` (Android) | `mobile` (Mobile) | `manual` (manual order) | `external` (Orders API) | `buybutton` (Buy Button) | `amazon` (Amazon) | `ebay` (eBay) | `facebookshop` (Facebook Shop) | `facebookcheckout` (Facebook Checkout) | `facebookmarketplace` (Facebook Marketplace) | `pinterest` (Pinterest) | `socialshop` (Social Shop)
- `payment_method` (string, optional) — The payment method for this order. For example, `Manual`, `Credit Card`, `cash`, `Test Payment Gateway`, etc.
- `payment_provider_id` (OrderSharedPaymentProviderId, optional) — The external Transaction ID/Payment ID within this order’s payment provider (if a payment provider was used).
- `products` (list of OrderPostProductsItems, optional)
- `refunded_amount` (string, optional) — The amount refunded from this transaction. The value can't be negative. (Float, Float-As-String, Integer)
- `shipping_addresses` (list of OrderPostShippingAddressesItems, optional)
- `shipping_cost_ex_tax` (string, optional) — The value of shipping cost, excluding tax. When specified in a POST or PUT request, the field `shipping_cost_inc_tax` is also required. The value can't be negative (Float, Float-As-String, Integer)
- `shipping_cost_inc_tax` (string, optional) — The value of shipping cost, including tax. When specified in a POST or PUT request, the field `shipping_cost_ex_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `staff_notes` (string, optional) — Any additional notes for staff.
- `status_id` (integer, optional) — The status ID of the order.
- `subtotal_ex_tax` (string, optional) — Override value for subtotal excluding tax. The value can't be negative. If specified, the field `subtotal_inc_tax` is also required. (Float, Float-As-String, Integer)
- `subtotal_inc_tax` (string, optional) — Override value for subtotal including tax. The value can't be negative. If specified, the field `subtotal_ex_tax` is also required. (Float, Float-As-String, Integer)
- `tax_provider_id` (string, optional) — Read-only. BasicTaxProvider - Tax is set to manual and order is created in the store. AvaTaxProvider - Tax is set to automatic and order is created in the store. Used for Avalara. "" (empty string) - The order is created with the API, or the tax provider is unknown.
- `total_ex_tax` (string, optional) — Override value for the total, excluding tax. If specified, the field `total_inc_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `total_inc_tax` (string, optional) — Override value for the total, including tax. If specified, the field `total_ex_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_ex_tax` (string, optional) — The value of the wrapping cost, excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_inc_tax` (string, optional) — The value of the wrapping cost, including tax. The value can't be negative. (Float, Float-As-String, Integer)

## Response

### 200

Order Response.

- `backorder_shipping_expectation_message` (string, optional, nullable) — The shipping expectation message shown to the customer when the order contains a backordered item. `null` when the order has no backordered items.
- `base_handling_cost` (string, optional) — The value of the base handling cost. The value can't be negative. (Float, Float-As-String, Integer)
- `base_shipping_cost` (string, optional) — The value of the base shipping cost. The value can't be negative. (Float, Float-As-String, Integer)
- `base_wrapping_cost` (string, optional) — The value of the base wrapping cost expressed as a floating point number to four decimal places in string format. The value can't be negative.
- `billing_address` (billingAddress_Resp, optional)
- `cart_id` (string, optional) — The cart ID from which this order originated, if applicable. Correlates with the Cart API. This is a read-only field; do not set or modify its value in a POST or PUT request.
- `channel_id` (integer, optional) — Shows where the order originated. The channel_id defaults to 1. The value must match the ID of a valid and enabled channel. If the ID refers to a non-existing or disconnected channel, the POST and PUT `/v2/orders` endpoints return a validation error.
- `consignments` (OrderRespOnlyConsignments, optional)
- `coupon_discount` (string, optional) — A read-only value. Do not pass in a POST or PUT request. (Float, Float-As-String, Integer)
- `coupons` (coupons_Resource, optional)
- `currency_code` (string, optional) — The currency code of the display currency used to present prices to the shopper on the storefront. Depending on the currency selected, the value can be different from the transactional currency. A read-only value. Do not pass in a POST or PUT request.
- `currency_exchange_rate` (string, optional) — The exchange rate between the store’s default currency and the display currency. A read-only value. Do not pass in a POST or PUT request. For orders created using the V2 endpoints, this value is always 1 (only in the storefront this value can be different to 1). (Float, Float-As-String, Integer)
- `currency_id` (integer, optional) — The display currency ID. Depending on the currency selected, the value can be different from the transactional currency. A read-only value. Do not pass in a POST or PUT request. In v2 display currency is set to the transactional currency, ''default_currency_id''.
- `customer_id` (double, optional) — The ID of the customer who placed the order. `0` indicates a guest checkout. Use this ID with the Customers API to look up customer attributes that aren't stored on the order, such as `tax_exempt_category`.
- `customer_locale` (string, optional) — The customer’s locale. The supported formats are: - 2-char lowercase characters. e.g., `en` - 3-char lowercase characters. e.g., `asa` - 5-char the language code is 2 lowercase characters and the region code is 2 uppercase characters, with `-` in the middle. e.g., `en-US` - 6-char the language code is 2 lowercase character and the region code is three digit number, with `-` in the middle. e.g., `es-419`
- `customer_message` (string, optional) — Message that the customer entered (number, options) -o the `Order Comments` box during checkout.
- `date_created` (string, optional) — The date the order was created, formatted in the RFC-2822 standard. You set this attribute on Order creation (POST) to support the migration of historical orders. If you do not provide a value, then it will default to the current date/time. e.g., `Tue, 20 Nov 2012 00:00:00 +0000`. This date time is always in UTC in the api response.
- `date_modified` (string, optional) — A read-only value representing the last modification of the order. Do not attempt to modify or set this value in a POST or PUT request. RFC-2822. This date time is always in UTC in the api response.
- `date_shipped` (string, optional) — A read-only value representing the date when the order is fully shipped. Do not attempt to modify or set this value in a POST or PUT request. RFC-2822
- `default_currency_code` (string, optional) — The currency code of the transactional currency the shopper pays in.
- `default_currency_id` (integer, optional) — The transactional currency ID. A read-only value. Do not pass in a POST or PUT request.
- `discount_amount` (string, optional) — Amount of discount for this transaction. The value can't be negative. (Float, Float-As-String, Integer)
- `ebay_order_id` (string, optional) — If the order was placed through eBay, the eBay order number will be included. Otherwise, the value will be `0`.
- `external_id` (string, optional, nullable) — (Read-only) The order ID in another system, such as the Amazon order ID if this is an Amazon order.
- `external_merchant_id` (string, optional, nullable) — The merchant ID represents an upstream order from an external system. It is the source of truth for orders. After setting it, you cannot write to or update the `external_merchant_id`. For example, you can update the Facebook by Meta page ID in a POST request, but a PUT request to update the order will return a 400 error. Please remove it from your request before trying again.
- `external_order_id` (string, optional) — The order ID in another system, such as the Amazon Order ID if this is an Amazon order. After setting it, you can update this field using a POST or PUT request.
- `external_source` (string, optional, nullable) — This value identifies an external system that generated the order and submitted it to BigCommerce with the Orders API. * When supplying the value, we recommend combining the type of system and vendor, e.g., ERP (Acumatica) or POS (Square). * If you are migrating historical orders processed on another eCommerce platform to BigCommerce, supply the following code as the value: M-MIG. This code will exclude historical orders from the store’s GMV/order count, which factors into pricing. * If you do not provide a value, then it will default to null.
- `fees` (OrderRespOnlyFees, optional)
- `geoip_country` (string, optional) — The full name of the country where the customer made the purchase, based on the IP.
- `geoip_country_iso2` (string, optional) — The country where the customer made the purchase, in ISO2 format, based on the IP.
- `gift_certificate_amount` (string, optional) — A read-only value. Do not pass in a POST or PUT request. (Float, Float-As-String, Integer)
- `handling_cost_ex_tax` (string, optional) — The value of the handling cost, excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `handling_cost_inc_tax` (string, optional) — The value of the handling cost, including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `handling_cost_tax` (string, optional) — A read-only value. Do not attempt to modify or set this value in a POST or PUT request. (Float, Float-As-String, Integer)
- `handling_cost_tax_class_id` (integer, optional) — A read-only value. Do not attempt to set or modify this value in a POST or PUT request. (NOTE: Value ignored if automatic tax is enabled on the store.)
- `id` (integer, optional) — Read-only. The ID of the order.
- `ip_address` (string, optional) — IPv4 Address of the customer, if known. Note: You can set either `ip_address` or `ip_address_v6`. Setting the `ip_address` value will reset the `ip_address_v6` value and vice versa.
- `ip_address_v6` (string, optional) — IPv6 Address of the customer, if known. Note: You can set either `ip_address` or `ip_address_v6`. Setting the `ip_address_v6` value will reset the `ip_address` value and vice versa.
- `is_deleted` (boolean, optional) — Indicates whether the order is deleted/archived. When set to true in a PUT request, it has the same result as the DELETE an order request.
- `is_email_opt_in` (boolean, optional) — Indicates whether the shopper has selected an opt-in check box (on the checkout page) to receive emails. A read-only value. Do not pass in a POST or PUT.
- `is_tax_inclusive_pricing` (boolean, optional) — Indicate whether the order's base prices include tax. If true, the base prices are inclusive of tax, and the values of `subtotal_inc_tax`, `shipping_cost_inc_tax`, `handling_cost_inc_tax`, `wrapping_cost_inc_tax` and `total_inc_tax` are not estimated but actual values and can be reliable for accounting purposes. If false, the base prices are exclusive of tax, and the values of `subtotal_ex_tax`, `shipping_cost_ex_tax`, `handling_cost_ex_tax`, `wrapping_cost_ex_tax` and `total_ex_tax` are not estimated but actual values and can be reliable for accounting purposes.
- `items_shipped` (double, optional) — The number of items that have been shipped.
- `items_total` (double, optional) — The total number of items in the order.
- `order_is_digital` (boolean, optional) — Whether this is an order for digital products.
- `order_source` (string, optional) — Reflects the origin of the order, such as the storefront, the control panel, a manual order, the Orders API, the Checkout API, or an integration with an external platform. It can affect the order's icon and source shown in the control panel order list. Orders created with the API default to `external`. Allowed values: `www` (Desktop) | `iphone` (iPhone) | `ipad` (iPad) | `android` (Android) | `mobile` (Mobile) | `manual` (manual order) | `external` (Orders API) | `buybutton` (Buy Button) | `amazon` (Amazon) | `ebay` (eBay) | `facebookshop` (Facebook Shop) | `facebookcheckout` (Facebook Checkout) | `facebookmarketplace` (Facebook Marketplace) | `pinterest` (Pinterest) | `socialshop` (Social Shop)
- `payment_method` (string, optional) — The payment method for this order. For example, `Manual`, `Credit Card`, `cash`, `Test Payment Gateway`, etc.
- `payment_provider_id` (OrderSharedPaymentProviderId, optional) — The external Transaction ID/Payment ID within this order’s payment provider (if a payment provider was used).
- `payment_status` (enum, optional) — A read-only value. Do not attempt to set or modify this value in a POST or PUT request.
  - Allowed values: `authorized`, `captured`, `capture pending`, `declined`, `held for review`, `paid`, `partially refunded`, `pending`, `refunded`, `void`, `void pending`, ``
- `products` (products_Resource, optional)
- `refunded_amount` (string, optional) — The amount refunded from this transaction. The value can't be negative. (Float, Float-As-String, Integer)
- `shipping_address_count` (double, optional) — The number of shipping addresses associated with this transaction. A read-only value. Do not pass in a POST or PUT.
- `shipping_addresses` (shippingAddresses_Resource, optional)
- `shipping_cost_ex_tax` (string, optional) — The value of shipping cost, excluding tax. When specified in a POST or PUT request, the field `shipping_cost_inc_tax` is also required. The value can't be negative (Float, Float-As-String, Integer)
- `shipping_cost_inc_tax` (string, optional) — The value of shipping cost, including tax. When specified in a POST or PUT request, the field `shipping_cost_ex_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `shipping_cost_tax` (string, optional) — A read-only value. Do not attempt to modify or set this value in a POST or PUT request. (Float, Float-As-String, Integer)
- `shipping_cost_tax_class_id` (integer, optional) — Shipping-cost tax class. A read-only value. Do not attempt to modify or set this value in a POST or PUT request. (NOTE: Value ignored if automatic tax is enabled on the store.)
- `staff_notes` (string, optional) — Any additional notes for staff.
- `status` (string, optional) — The status will include one of the (string, options) - values defined under Order Statuses. This value is read-only. Do not attempt to modify or set this value in a POST or PUT operation.
- `status_id` (integer, optional) — The status ID of the order.
- `store_credit_amount` (string, optional) — Represents the store credit that the shopper has redeemed on this individual order. This is a read-only value. Do not pass in a POST or PUT request. (Float, Float-As-String, Integer)
- `store_default_currency_code` (string, optional) — The currency code of the storeʼs default currency.
- `store_default_to_transactional_exchange_rate` (string, optional) — The exchange rate between the storeʼs default currency and the transactional currency used in the order.
- `subtotal_ex_tax` (string, optional) — Override value for subtotal excluding tax. The value can't be negative. If specified, the field `subtotal_inc_tax` is also required. (Float, Float-As-String, Integer)
- `subtotal_inc_tax` (string, optional) — Override value for subtotal including tax. The value can't be negative. If specified, the field `subtotal_ex_tax` is also required. (Float, Float-As-String, Integer)
- `subtotal_tax` (string, optional) — A read-only value. Do not attempt to set or modify this value in a POST or PUT request. (Float, Float-As-String, Integer)
- `tax_provider_id` (string, optional) — Read-only. BasicTaxProvider - Tax is set to manual and order is created in the store. AvaTaxProvider - Tax is set to automatic and order is created in the store. Used for Avalara. "" (empty string) - The order is created with the API, or the tax provider is unknown.
- `total_ex_tax` (string, optional) — Override value for the total, excluding tax. If specified, the field `total_inc_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `total_inc_tax` (string, optional) — Override value for the total, including tax. If specified, the field `total_ex_tax` is also required. The value can't be negative. (Float, Float-As-String, Integer)
- `total_tax` (string, optional) — Total tax amount for the order. A value of `0` doesn't indicate a tax-exempt customer; tax-exempt status lives in the `tax_exempt_category` field of the customer record, not on the order.
- `wrapping_cost_ex_tax` (string, optional) — The value of the wrapping cost, excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_inc_tax` (string, optional) — The value of the wrapping cost, including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_tax` (string, optional) — A read-only value. Do not attempt to modify or set this value in a POST or PUT request. (Float, Float-As-String, Integer)
- `wrapping_cost_tax_class_id` (integer, optional) — A read-only value. Do not attempt to set or modify this value in a POST or PUT request. NOTE: Value ignored if automatic tax is enabled on the store.

## Types

### billingAddress_Base

- `zip` (string, required) — The billing address must include the ZIP code. The ZIP code must be two or more characters.
- `first_name` (string, optional)
- `last_name` (string, optional)
- `company` (string, optional)
- `street_1` (string, optional)
- `street_2` (string, optional)
- `city` (string, optional)
- `state` (string, optional)
- `country` (string, optional)
- `country_iso2` (string, optional)
- `phone` (string, optional)
- `email` (string, optional)

### orderConsignment_Post

- `pickups` (list of pickupConsignment_Post, required)

### orderFees_Post

- `type` (enum, optional) — The type of the fee.
  - Allowed values: `custom_fee`
- `display_name_customer` (string, optional) — The display name of the fee targeting customers.
- `display_name_merchant` (string, optional) — The display name of the fee shown to the merchant in the control panel. NOTE - At least one of the following fields (display_name_customer, display_name_merchant) must be included in the request.
- `source` (string, optional) — The source of the request.
- `cost_ex_tax` (OrderFeesPostCostExTax, optional) — The fee cost value excluding tax. (Float, Float-As-String, Integer)
- `cost_inc_tax` (OrderFeesPostCostIncTax, optional) — The fee cost value including tax. (Float, Float-As-String, Integer)
- `cost_tax` (OrderFeesPostCostTax, optional) — The tax amount on the fee cost. (Float, Float-As-String, Integer) NOTE - At least two of the following fields (cost_ex_tax, cost_inc_tax, and cost_tax) must be included in the request.
- `tax_class_id` (integer, optional, nullable) — A unique numeric identifier for the tax class. If not provided or null, the default fee tax class from the control panel is used.

### OrderSharedPaymentProviderId

The external Transaction ID/Payment ID within this order’s payment provider (if a payment provider was used).

- string
- double

### OrderPostProductsItems

- orderCatalogProduct_Post: orderCatalogProduct_Post
- orderCustomProduct_Post: orderCustomProduct_Post

### OrderPostShippingAddressesItems

Shipping Address properties common to all requests and responses.

- `first_name` (string, optional)
- `last_name` (string, optional)
- `company` (string, optional)
- `street_1` (string, optional) — Street address (first line).
- `street_2` (string, optional) — Street address (second line).
- `city` (string, optional)
- `state` (string, optional)
- `zip` (string, optional) — Zip or postal code, as a string.
- `country` (string, optional)
- `country_iso2` (string, optional) — 2-letter ISO Alpha-2 code for the country.
- `phone` (string, optional) — Recipient’s telephone number.
- `email` (string, optional) — Recipient’s email address.
- `shipping_method` (string, optional) — Text code identifying the BigCommerce shipping module selected by the customer.

### billingAddress_Resp

- `zip` (string, required) — The billing address must include the ZIP code. The ZIP code must be two or more characters.
- `first_name` (string, optional)
- `last_name` (string, optional)
- `company` (string, optional)
- `street_1` (string, optional)
- `street_2` (string, optional)
- `city` (string, optional)
- `state` (string, optional)
- `country` (string, optional)
- `country_iso2` (string, optional)
- `phone` (string, optional)
- `email` (string, optional)
- `form_fields` (list of formFields, optional)

### OrderRespOnlyConsignments

- orderConsignments_Resource: orderConsignments_Resource
- : orderConsignment_Get

### coupons_Resource

- `url` (string, optional) — URL of the coupons for API requests.
- `resource` (string, optional) — Resource of the coupons.

### OrderRespOnlyFees

- orderFees_Resource: orderFees_Resource
- list of orderFees_Resp

### products_Resource

- `url` (string, optional)
- `resource` (string, optional)

### shippingAddresses_Resource

- `url` (string, optional) — URL of the shipping address for API requests.
- `resource` (string, optional)

### pickupConsignment_Post

- `line_items` (list of orderProduct_Post, required)
- `pickup_method_id` (integer, required) — ID of the pickup method. Inventory for the consignment's line items is checked and deducted at the location assigned to this pickup method.
- `collection_instructions` (string, optional) — A message for shoppers explaining how to collect their pickup order.
- `collection_time_description` (string, optional) — A message for shoppers indicating the estimated time their pickup order will be ready for collection.
- `location` (pickupConsignmentLocation_Post, optional)
- `pickup_method_display_name` (string, optional) — A name for the pickup method that can be displayed to shoppers.

### OrderFeesPostCostExTax

The fee cost value excluding tax. (Float, Float-As-String, Integer)

- string
- double

### OrderFeesPostCostIncTax

The fee cost value including tax. (Float, Float-As-String, Integer)

- string
- double

### OrderFeesPostCostTax

The tax amount on the fee cost. (Float, Float-As-String, Integer) NOTE - At least two of the following fields (cost_ex_tax, cost_inc_tax, and cost_tax) must be included in the request.

- string
- double

### orderCatalogProduct_Post

Note: - `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields. - If both fields `xxx` and `xxx_customer` are present, they must have same value. - Empty strings `''` and `null` are invalid for `xxx`, `xxx_customer`, and `xxx_merchant`. - `xxx`, `xxx_customer`, and `xxx_merchant` default to the value from `catalog` if not supplied in the request.

- `product_id` (integer, optional)
- `name` (string, optional) — Alias for `name_customer`. The product name that is shown to customer in storefront. `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.
- `name_customer` (string, optional) — The product name that is shown to customer in storefront. `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.
- `name_merchant` (string, optional) — The product name that is shown to the merchant in the control panel.
- `product_options` (list of OrderCatalogProductPostProductOptionsItems, optional) — List of product variant options and modifiers. `product_options` are required when adding a product with variants and not specifying the `variant_id`, or when products have mandatory modifiers.
- `quantity` (integer, optional)
- `quantity_backordered` (integer, optional) — The number of units in this line item that are backordered. Requires `quantity` in the same product entry. Only stores with backorders enabled store this value; other stores return a 400 error if this field included in request payload.
- `price_inc_tax` (double, optional)
- `price_ex_tax` (double, optional)
- `upc` (string, optional)
- `variant_id` (integer, optional) — Products `variant_id`. PUT or POST. This field is not available for custom products.
- `wrapping_id` (integer, optional) — ID of the gift wrapping that will be used for this product. If provided, then `wrapping_cost_ex_tax` and `wrapping_cost_inc_tax` are required. When updating an order product line item, if `wrapping_id` is set to `0` and no other wrapping fields are provided,then the wrapping will be removed from the order product.
- `wrapping_name` (string, optional) — If the `wrapping_id` is provided, this field will populate with the name of the gift wrapping that is to be used.
- `wrapping_message` (string, optional)
- `wrapping_cost_ex_tax` (double, optional) — The total wrapping cost for the line item, excluding tax. When provided, this value should equal the per-unit wrapping cost times `quantity`. The value can't be negative.
- `wrapping_cost_inc_tax` (double, optional) — The total wrapping cost for the line item, including tax. When provided, this value should equal the per-unit wrapping cost times `quantity`. The value can't be negative.

### orderCustomProduct_Post

**Usage notes** Provide one of these fields with a non-empty value: - `name` - `name_customer` - `name_merchant` Note the following constraints and default field values: - Null and `''` empty strings are invalid for `name`, `name_customer`, and `name_merchant`. - `name` and `name_customer` always share the same value; updating one updates the other. - When you omit both `name` and `name_customer`, they default to the value of `name_merchant`. - When you omit `name_merchant`, it defaults to the value that `name` and `name_customer` share.

- `name` (string, required) — Alias for name_customer. The product name that is shown to customer in storefront.
- `quantity` (integer, required)
- `price_inc_tax` (double, required)
- `price_ex_tax` (double, required)
- `name_customer` (string, optional) — The product name that is shown to customer in storefront.
- `name_merchant` (string, optional) — The product name that is shown to the merchant in the control panel.
- `upc` (string, optional)
- `sku` (string, optional)

### formFields

- `name` (string, optional) — The form field name.
- `value` (FormFieldsValue, optional) — The form field value.

### orderConsignments_Resource

- `url` (string, optional) — URL where you can use a GET request to get the order consignments.
- `resource` (string, optional) — Path where you can use a GET request to get the order consignments.

### orderConsignment_Get

- `pickups` (list of pickupConsignment_Get, optional) — Pickup consignments.
- `shipping` (list of shippingConsignment_Get, optional) — Shipping consignments.
- `downloads` (list of digitalConsignment_Get, optional) — Digital consignments for products that are downloaded.
- `email` (OrderConsignmentGetEmail, optional) — Email consignments for gift certificates.

### orderFees_Resource

- `url` (string, optional) — URL where you can use a GET request to get the order fees.
- `resource` (string, optional) — Path where you can use a GET request to get the order fees.

### orderFees_Resp

- `id` (integer, optional) — The unique numeric identifier of the fees object.
- `type` (enum, optional) — The type of the fee.
  - Allowed values: `custom_fee`
- `display_name_customer` (string, optional) — The display name of the fee targeting customers.
- `display_name_merchant` (string, optional) — The display name of the fee targeting shoppers.
- `source` (string, optional) — The source of the request.
- `base_cost` (OrderFeesRespBaseCost, optional) — The base fee cost value. (Float, Float-As-String, Integer)
- `cost_ex_tax` (OrderFeesRespCostExTax, optional) — The fee cost value excluding tax. (Float, Float-As-String, Integer)
- `cost_inc_tax` (OrderFeesRespCostIncTax, optional) — The fee cost value including tax. (Float, Float-As-String, Integer)
- `cost_tax` (OrderFeesRespCostTax, optional) — The tax amount on the fee cost. (Float, Float-As-String, Integer)
- `tax_class_id` (integer, optional, nullable) — A unique numeric identifier for the tax class. If not persisted or null, the default fee tax class from the control panel is used.

### orderProduct_Post

- orderCustomProduct_Post: orderCustomProduct_Post
- orderCatalogProduct_Post: orderCatalogProduct_Post

### pickupConsignmentLocation_Post

- `address_line_1` (string, optional) — Street address (first line).
- `address_line_2` (string, optional) — Street address (second line).
- `city` (string, optional)
- `code` (string, optional) — The code of the pickup location.
- `country_alpha2` (string, optional) — 2-letter ISO Alpha-2 code for the country.
- `email` (string, optional) — Pickup locationʼs email address.
- `name` (string, optional) — The name of the pickup location.
- `phone` (string, optional) — Pickup locationʼs phone number.
- `postal_code` (string, optional)
- `state` (string, optional)

### OrderCatalogProductPostProductOptionsItems

- `id` (integer, optional) — Numeric ID of an option applied to the product from a list of options available to the product. This field has the same value as `product_option_id` when [retrieving products in an order](/developer/api-reference/rest/admin/management/orders/order-products/get-order-products).
- `value` (string, optional) — Depending on the option type, value can be one of the following: - The variant option value id or the modifier value id for modifier types with a list of defined values, such as drop down or checkbox modifiers. - The modifier value for modifier types without a list of defined values, such as text field or date field modifiers. Notes: - The API does not currently support the following option types: - File upload - Pick list - For date modifiers use either the `YYYY-MM-DDThh:mm:ss±hh:mm` or the `YYYY-MM-DD` ISO-8601 formats. The date field modifier values are saved and returned as timestamps. For values entered using the YYYY-MM-DD format, the store timezone is used when creating the timestamp. - For multi-line text field modifiers, use the `\n` characters for separating the lines.
- `display_name` (string, optional) — Alias for display_name_customer. The product option name that is shown to customer in storefront. `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.
- `display_name_customer` (string, optional) — The product option name that is shown to customer in storefront. `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.
- `display_name_merchant` (string, optional) — The product option name that is shown to the merchant in the control panel.
- `display_value` (string, optional) — Alias for display_value_customer. The product option value that is shown to customer in storefront. `xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.
- `display_value_merchant` (string, optional) — The product option value that is shown to the merchant in the control panel.
- `display_value_customer` (string, optional) — The product option value that is shown to a customer in storefront.`xxx` and `xxx_customer` always hold the same value, updating either `xxx` or `xxx_customer` will change value for both of those fields.

### FormFieldsValue

The form field value.

- double
- string
- list of any

### pickupConsignment_Get

- `collection_instructions` (string, optional) — A message for shoppers explaining how to collect their pickup order.
- `collection_time_description` (string, optional) — A message for shoppers indicating the estimated time their pickup order will be ready for collection.
- `id` (integer, optional) — The ID of the pickup consignment to update.
- `line_items` (PickupConsignmentGetLineItems, optional)
- `location` (pickupConsignmentLocation_Get, optional)
- `pickup_method_display_name` (string, optional) — A name for the pickup method that can be displayed to shoppers.
- `pickup_method_id` (integer, optional) — ID of the pickup method.

### shippingConsignment_Get

- `base_cost` (double, optional) — The base shipping cost value.
- `base_handling_cost` (double, optional) — The base handling charge. The value can't be negative.
- `city` (string, optional)
- `company` (string, optional)
- `cost_ex_tax` (double, optional) — The shipping cost value excluding tax.
- `cost_inc_tax` (double, optional) — The shipping cost value including tax.
- `cost_tax` (double, optional) — The tax amount on the shipping cost.
- `cost_tax_class_id` (integer, optional) — The ID of the tax class applied to the shipping cost. Ignored if automatic tax is enabled.
- `country` (string, optional)
- `country_iso2` (string, optional) — 2-letter ISO Alpha-2 code for the country.
- `email` (string, optional) — Recipient’s email address.
- `first_name` (string, optional)
- `form_fields` (list of formFields, optional)
- `handling_cost_ex_tax` (double, optional) — The handling charge, excluding tax. The value can't be negative.
- `handling_cost_inc_tax` (double, optional) — The handling charge, including tax. The value can't be negative.
- `handling_cost_tax` (double, optional)
- `handling_cost_tax_class_id` (integer, optional) — The ID of the tax class applied to the handling charge. Ignored if automatic tax is enabled.
- `id` (integer, optional) — ID of the shipping consignment.
- `items_shipped` (double, optional) — The number of items that have been shipped.
- `items_total` (double, optional) — The total number of items in the order.
- `last_name` (string, optional)
- `line_items` (ShippingConsignmentGetLineItems, optional)
- `phone` (string, optional) — Recipient’s telephone number.
- `shipping_method` (string, optional) — Text identifying the BigCommerce shipping module selected by the customer.
- `shipping_quotes` (shippingQuotesConsignment_Resource, optional)
- `shipping_zone_id` (double, optional) — The numeric ID of the shipping zone.
- `shipping_zone_name` (string, optional) — The name of the shipping zone.
- `state` (string, optional)
- `street_1` (string, optional) — Street address (first line).
- `street_2` (string, optional) — Street address (second line).
- `zip` (string, optional) — Zip or postal code, as a string.

### digitalConsignment_Get

- `recipient_email` (string, optional) — The recipient email of the digital consignment.
- `line_items` (DigitalConsignmentGetLineItems, optional)

### OrderConsignmentGetEmail

Email consignments for gift certificates.

- `gift_certificates` (list of giftCertificateConsignment_Get, optional)

### OrderFeesRespBaseCost

The base fee cost value. (Float, Float-As-String, Integer)

- string
- double

### OrderFeesRespCostExTax

The fee cost value excluding tax. (Float, Float-As-String, Integer)

- string
- double

### OrderFeesRespCostIncTax

The fee cost value including tax. (Float, Float-As-String, Integer)

- string
- double

### OrderFeesRespCostTax

The tax amount on the fee cost. (Float, Float-As-String, Integer)

- string
- double

### PickupConsignmentGetLineItems

- list of products_Resource
- list of orderProducts

### pickupConsignmentLocation_Get

- `address_line_1` (string, optional) — Street address (first line).
- `address_line_2` (string, optional) — Street address (second line).
- `city` (string, optional)
- `code` (string, optional) — The code of the pickup location.
- `country_alpha2` (string, optional) — 2-letter ISO Alpha-2 code for the country.
- `email` (string, optional) — Pickup locationʼs email address.
- `id` (integer, optional) — ID of the location.
- `name` (string, optional) — The name of the pickup location.
- `phone` (string, optional) — Pickup locationʼs phone number.
- `postal_code` (string, optional)
- `state` (string, optional)

### ShippingConsignmentGetLineItems

- list of products_Resource
- list of orderProducts

### shippingQuotesConsignment_Resource

- `url` (string, optional) — URL where you can use a GET request to get the shipping quotes for the order consignment.
- `resource` (string, optional) — Path where you can use a GET request to get the shipping quotes for the order consignment.

### DigitalConsignmentGetLineItems

- list of products_Resource
- list of orderProducts

### giftCertificateConsignment_Get

- `recipient_email` (string, optional) — The recipient email of the gift certificate.
- `line_items` (GiftCertificateConsignmentGetLineItems, optional)

### orderProducts

- `id` (integer, optional) — Numeric ID of this product within this order.
- `order_id` (integer, optional) — Numeric ID of the associated order.
- `product_id` (integer, optional) — Numeric ID of the product.
- `order_pickup_method_id` (integer, optional) — ID of the pickup fulfillment method for this item. Default value is 0 when the item is not fulfilled by pickup method.
- `order_address_id` (integer, optional) — Numeric ID of the associated order address. Value is `0` for items that are not fulfilled by a pickup method.
- `name` (string, optional) — Alias for name_customer - The product name that is shown to customer in storefront.
- `sku` (string, optional) — User-defined product code/stock keeping unit (SKU).
- `type` (enum, optional) — Type of product.
  - Allowed values: `physical`, `digital`, `giftcertificate`
- `base_price` (string, optional) — The product’s base price. (Float, Float-As-String, Integer)
- `price_ex_tax` (string, optional) — The product’s price excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `price_inc_tax` (string, optional) — The product’s price including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `price_tax` (string, optional) — Amount of tax applied to a single product. Price tax is calculated as: `price_tax = price_inc_tax - price_ex_tax` (Float, Float-As-String, Integer)
- `base_total` (string, optional) — Total base price. (Float, Float-As-String, Integer) **Note**: The `base_total` is affected by the tax options set up in the control panel and is altered on tax-free orders. See more details on how `base_total` is affected by visiting the [Responsive Tax Display Settings](https://support.bigcommerce.com/s/article/Manual-Tax-Setup) overview. If the `base_total` is `$0`, it's due to the store's tax settings. To learn more about tax settings in the control panel, check out this [Tax Settings](https://support.bigcommerce.com/s/article/Tax-Overview?language=en_US#tax-settings) support article.
- `total_ex_tax` (string, optional) — Total base price excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `total_inc_tax` (string, optional) — Total base price including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `total_tax` (string, optional) — Total tax applied to products. For example, if quantity if 2, base price is 5 and tax rate is 10%. price_tax will be $.50 and total_tax will be $1.00. If there is a manual discount applied total_tax is calculated as the following: `(price_ex_tax - discount)*tax_rate=total_tax`. (Float, Float-As-String, Integer)
- `quantity` (integer, optional) — Quantity of the product ordered.
- `base_cost_price` (string, optional) — The product’s cost price. This can be set using the Catalog API. (Float, Float-As-String, Integer)
- `cost_price_inc_tax` (string, optional) — The product’s cost price including tax. (Float, Float-As-String, Integer) The cost of your products to you; this is never shown to customers, but can be used for accounting purposes. The value can't be negative.
- `cost_price_ex_tax` (string, optional) — The product cost price excluding tax. (Float, Float-As-String, Integer) The cost of your products to you; this is never shown to customers, but can be used for accounting purposes. The value can't be negative.
- `weight` (OrderProductsWeight, optional) — Weight of the product. The value can't be negative. (Float, Float-As-String, Integer)
- `width` (string, optional) — Product width. The value can't be negative.
- `height` (string, optional) — Product height. The value can't be negative.
- `depth` (string, optional) — Product depth. The value can't be negative.
- `cost_price_tax` (string, optional) — Tax applied to the product’s cost price. (Float, Float-As-String, Integer) The cost of your products to you; this is never shown to customers, but can be used for accounting purposes. Read Only
- `is_refunded` (boolean, optional) — Whether the product has been refunded.
- `quantity_refunded` (double, optional) — The total quantity of product refunded from this transaction.
- `return_id` (double, optional) — Numeric ID for the refund.
- `wrapping_id` (integer, optional) — ID of the gift wrapping option.
- `wrapping_name` (string, optional, nullable) — Name of gift-wrapping option.
- `base_wrapping_cost` (OrderProductsBaseWrappingCost, optional) — The value of the base wrapping cost. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_ex_tax` (string, optional) — The value of the wrapping cost, excluding tax. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_inc_tax` (string, optional) — The value of the wrapping cost, including tax. The value can't be negative. (Float, Float-As-String, Integer)
- `wrapping_cost_tax` (string, optional) — Tax applied to gift-wrapping option. (Float, Float-As-String, Integer)
- `wrapping_message` (string, optional) — Message to accompany gift-wrapping option.
- `quantity_shipped` (double, optional) — Quantity of this item shipped.
- `quantity_backordered` (integer, optional) — Number of units from this line item that were fulfilled via backorder at time of order placement.
- `backorder_message` (string, optional, nullable) — The backorder message shown to the customer for this line item at the time the order was placed. `null` when the line item has no backordered quantity.
- `event_name` (string, optional, nullable) — Name of promotional event/delivery date.
- `event_date` (date, optional, nullable) — Date of the promotional event/scheduled delivery.
- `fixed_shipping_cost` (string, optional) — Fixed shipping cost for this product. (Float, Float-As-String, Integer)
- `ebay_item_id` (string, optional) — Item ID for this product on eBay.
- `ebay_transaction_id` (string, optional) — Transaction ID for this product on eBay.
- `option_set_id` (integer, optional, nullable) — Numeric ID of the option set applied to the product.
- `parent_order_product_id` (integer, optional, nullable) — ID of a parent product.
- `is_bundled_product` (boolean, optional) — Whether this product is bundled with other products.
- `bin_picking_number` (string, optional) — Bin picking number for the physical product.
- `external_id` (string, optional, nullable) — (Read-only) ID of the order in another system. For example, the Amazon order ID if this is an Amazon order.
- `brand` (string, optional) — The productʼs brand.
- `applied_discounts` (list of orderProductAppliedDiscounts, optional) — Array of objects containing discounts applied to the product.
- `product_options` (list of orderProductOptions, optional) — Array of product option objects.
- `configurable_fields` (list of OrderProductsConfigurableFieldsItems, optional) — Available for only [Catalog V2 stores](/developer/docs/admin/catalog-and-inventory/migrating-from-catalog-v2-to-v3).
- `upc` (string, optional) — Universal Product Code. Can be written to for custom products and catalog products.
- `variant_id` (integer, optional) — Products `variant_id`. PUT or POST. This field is not available for custom products.
- `name_customer` (string, optional) — The product name that is shown to customer in storefront.
- `name_merchant` (string, optional) — The product name that is shown to the merchant in the control panel.
- `gift_certificate_id` (integer, optional, nullable) — ID of the associated gift certificate.
- `discounted_total_inc_tax` (string, optional) — Represent the correct total amount of the line item after deducting all the discounts and including the tax. This number can be used for accounting purpose. This makes it easier to have the "shopper paid" value for a line item and api user doesn't have to do any calculation to deduct discount on the client side. This field includes all types of discounts (automatic, coupon, manual) and therefore if you use this value, you don't need to deduct any more discounts at line item level or order level.
- `refund_amount` (string, optional, deprecated) — Deprecated. Only the legacy Returns feature sets this value. Refunds do not update it. Use quantity_refunded or the order refunds endpoints. (Float, Float-As-String, Integer)

### GiftCertificateConsignmentGetLineItems

- list of products_Resource
- list of orderProducts

### OrderProductsWeight

Weight of the product. The value can't be negative. (Float, Float-As-String, Integer)

- double
- string

### OrderProductsBaseWrappingCost

The value of the base wrapping cost. The value can't be negative. (Float, Float-As-String, Integer)

- string
- double

### orderProductAppliedDiscounts

When applying a manual discount to an order (not a product level discount), the discount is distributed across products in proportion to the products price. `(total_manual_discount*price_ex_tax)/subtotal_ex_tax`

- `id` (string, optional) — Name of the coupon applied to order.
- `amount` (string, optional) — Amount of the discount.(Float, Float-As-String, Integer)
- `name` (string, optional) — Name of the coupon. `Manual Discount` when creating a manual discount.
- `code` (string, optional, nullable) — Coupon Code. There is no code when creating a manual discount.
- `target` (enum, optional) — Determines if the discount if discount was applied at the Order or Product level. Read Only.
  - Allowed values: `order`, `product`

### orderProductOptions

- `id` (integer, optional) — The unique numerical ID of the option; increments sequentially.
- `option_id` (integer, optional) — Numeric ID of the associated option.
- `order_product_id` (integer, optional)
- `product_option_id` (integer, optional) — Numeric ID of an option applied to the product from a list of options available to the product.
- `display_name` (string, optional) — Alias for display_name_customer. The product option name that is shown to customer in the storefront.
- `display_value` (string, optional) — Alias for display_value_customer. The product option value that is shown to customer in storefront.
- `value` (string, optional) — For file-upload type, itʼs a unique string describing the properties of the file upload. For other types, itʼs the value of the property.
- `type` (enum, optional) — Option Type
  - Allowed values: `Checkbox`, `Date field`, `File Upload`, `Multi-line text field`, `Multiple choice`, `Product Pick List`, `Swatch`, `Text field`
- `name` (string, optional) — The option’s name, as used internally. Must be unique.
- `display_style` (string, optional) — How it is displayed on the storefront. Examples include Drop-down, radio buttons, or rectangles.
- `display_name_customer` (string, optional) — The product option name that is shown to customer in storefront.
- `display_name_merchant` (string, optional) — The product option name that is shown to the merchant in the control panel.
- `display_value_customer` (string, optional) — The product option value that is shown to customer in storefront.
- `display_value_merchant` (string, optional) — The product option value that is shown to the merchant in the control panel.

### OrderProductsConfigurableFieldsItems

- `name` (string, optional)
- `value` (string, optional)

## Examples

### Order

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 1,
  "products": [
    {
      "product_id": 118,
      "quantity": 1,
      "variant_id": 93
    }
  ],
  "status_id": 0
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Order
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@example.com"
    },
    "customer_id": 1,
    "products": [
        {
            "product_id": 118,
            "quantity": 1,
            "variant_id": 93
        }
    ],
    "status_id": 0
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Order
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@example.com"},"customer_id":1,"products":[{"product_id":118,"quantity":1,"variant_id":93}],"status_id":0}'
};

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

```go Order
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"product_id\": 118,\n      \"quantity\": 1,\n      \"variant_id\": 93\n    }\n  ],\n  \"status_id\": 0\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Order
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"product_id\": 118,\n      \"quantity\": 1,\n      \"variant_id\": 93\n    }\n  ],\n  \"status_id\": 0\n}"

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

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

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"product_id\": 118,\n      \"quantity\": 1,\n      \"variant_id\": 93\n    }\n  ],\n  \"status_id\": 0\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 1,
  "products": [
    {
      "product_id": 118,
      "quantity": 1,
      "variant_id": 93
    }
  ],
  "status_id": 0
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Order
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"product_id\": 118,\n      \"quantity\": 1,\n      \"variant_id\": 93\n    }\n  ],\n  \"status_id\": 0\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Order
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  ],
  "customer_id": 1,
  "products": [
    [
      "product_id": 118,
      "quantity": 1,
      "variant_id": 93
    ]
  ],
  "status_id": 0
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Order with multiple items

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "name": "BigCommerce Poster",
      "price_ex_tax": 10,
      "price_inc_tax": 10.98,
      "quantity": 1
    },
    {
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    },
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "192"
        }
      ]
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0",
  "base_shipping_cost": "8",
  "base_wrapping_cost": "0",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@email.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "8b84f622-faf1-4c10-887b-f5dff2f9eaf4",
  "channel_id": 1,
  "coupon_discount": "0",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/247/coupons",
    "resource": "/orders/247/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "Custom Journal Added",
  "date_created": "Thu, 20 Jun 2019 16:07:08 +0000",
  "date_modified": "Thu, 20 Jun 2019 16:07:08 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "0",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": "",
  "geoip_country": "United States",
  "geoip_country_iso2": "US",
  "gift_certificate_amount": "0",
  "handling_cost_ex_tax": "0",
  "handling_cost_inc_tax": "0",
  "handling_cost_tax": "0",
  "handling_cost_tax_class_id": 0,
  "id": 247,
  "ip_address": "70.112.53.67",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 11,
  "order_is_digital": false,
  "order_source": "manual",
  "payment_method": "Test Payment Gateway",
  "payment_provider_id": "",
  "payment_status": "captured",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/247/products",
    "resource": "/orders/247/products"
  },
  "refunded_amount": "0",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/247/shippingaddresses",
    "resource": "/orders/247/shippingaddresses"
  },
  "shipping_cost_ex_tax": "7.39",
  "shipping_cost_inc_tax": "8",
  "shipping_cost_tax": "0.61",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "BIN-45",
  "status": "Awaiting Fulfillment",
  "status_id": 11,
  "store_credit_amount": "0",
  "store_default_currency_code": "USD",
  "store_default_to_transactional_exchange_rate": "1",
  "subtotal_ex_tax": "924.47",
  "subtotal_inc_tax": "1000.74",
  "subtotal_tax": "76.27",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "931.86",
  "total_inc_tax": "1008.74",
  "total_tax": "76.88",
  "wrapping_cost_ex_tax": "0",
  "wrapping_cost_inc_tax": "0",
  "wrapping_cost_tax": "0",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": {},
  "custom_status": "Awaiting Fulfillment"
}
```

**SDK Code**

```python Order with multiple items
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@example.com"
    },
    "customer_id": 11,
    "products": [
        {
            "name": "BigCommerce Poster",
            "price_ex_tax": 10,
            "price_inc_tax": 10.98,
            "quantity": 1
        },
        {
            "name": "BigCommerce Coffee Mug",
            "price_ex_tax": 45,
            "price_inc_tax": 50,
            "quantity": 1
        },
        {
            "product_id": 184,
            "product_options": [
                {
                    "id": 200,
                    "value": "180"
                },
                {
                    "id": 230,
                    "value": "192"
                }
            ]
        }
    ],
    "shipping_addresses": [
        {
            "first_name": "Trish",
            "last_name": "Test",
            "company": "Acme Pty Ltd",
            "street_1": "666 Sussex St",
            "city": "Austin",
            "state": "Texas",
            "zip": "78751",
            "country": "United States",
            "country_iso2": "US",
            "email": "elsie@example.com"
        }
    ],
    "status_id": 0
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Order with multiple items
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@example.com"},"customer_id":11,"products":[{"name":"BigCommerce Poster","price_ex_tax":10,"price_inc_tax":10.98,"quantity":1},{"name":"BigCommerce Coffee Mug","price_ex_tax":45,"price_inc_tax":50,"quantity":1},{"product_id":184,"product_options":[{"id":200,"value":"180"},{"id":230,"value":"192"}]}],"shipping_addresses":[{"first_name":"Trish","last_name":"Test","company":"Acme Pty Ltd","street_1":"666 Sussex St","city":"Austin","state":"Texas","zip":"78751","country":"United States","country_iso2":"US","email":"elsie@example.com"}],"status_id":0}'
};

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

```go Order with multiple items
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Poster\",\n      \"price_ex_tax\": 10,\n      \"price_inc_tax\": 10.98,\n      \"quantity\": 1\n    },\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    },\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ]\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Order with multiple items
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Poster\",\n      \"price_ex_tax\": 10,\n      \"price_inc_tax\": 10.98,\n      \"quantity\": 1\n    },\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    },\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ]\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}"

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

```java Order with multiple items
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Poster\",\n      \"price_ex_tax\": 10,\n      \"price_inc_tax\": 10.98,\n      \"quantity\": 1\n    },\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    },\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ]\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")
  .asString();
```

```php Order with multiple items
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "name": "BigCommerce Poster",
      "price_ex_tax": 10,
      "price_inc_tax": 10.98,
      "quantity": 1
    },
    {
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    },
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "192"
        }
      ]
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Order with multiple items
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Poster\",\n      \"price_ex_tax\": 10,\n      \"price_inc_tax\": 10.98,\n      \"quantity\": 1\n    },\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    },\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ]\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Order with multiple items
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  ],
  "customer_id": 11,
  "products": [
    [
      "name": "BigCommerce Poster",
      "price_ex_tax": 10,
      "price_inc_tax": 10.98,
      "quantity": 1
    ],
    [
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    ],
    [
      "product_id": 184,
      "product_options": [
        [
          "id": 200,
          "value": "180"
        ],
        [
          "id": 230,
          "value": "192"
        ]
      ]
    ]
  ],
  "shipping_addresses": [
    [
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    ]
  ],
  "status_id": 0
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Custom Product

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@email.com"
  },
  "customer_id": 1,
  "products": [
    {
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    }
  ],
  "status_id": 0
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Custom Product
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@email.com"
    },
    "customer_id": 1,
    "products": [
        {
            "name": "BigCommerce Coffee Mug",
            "price_ex_tax": 45,
            "price_inc_tax": 50,
            "quantity": 1
        }
    ],
    "status_id": 0
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Custom Product
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@email.com"},"customer_id":1,"products":[{"name":"BigCommerce Coffee Mug","price_ex_tax":45,"price_inc_tax":50,"quantity":1}],"status_id":0}'
};

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

```go Custom Product
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@email.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    }\n  ],\n  \"status_id\": 0\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Custom Product
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@email.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    }\n  ],\n  \"status_id\": 0\n}"

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

```java Custom Product
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@email.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    }\n  ],\n  \"status_id\": 0\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@email.com"
  },
  "customer_id": 1,
  "products": [
    {
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    }
  ],
  "status_id": 0
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Custom Product
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@email.com\"\n  },\n  \"customer_id\": 1,\n  \"products\": [\n    {\n      \"name\": \"BigCommerce Coffee Mug\",\n      \"price_ex_tax\": 45,\n      \"price_inc_tax\": 50,\n      \"quantity\": 1\n    }\n  ],\n  \"status_id\": 0\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Custom Product
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@email.com"
  ],
  "customer_id": 1,
  "products": [
    [
      "name": "BigCommerce Coffee Mug",
      "price_ex_tax": 45,
      "price_inc_tax": 50,
      "quantity": 1
    ]
  ],
  "status_id": 0
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Product with Options

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "192"
        }
      ],
      "quantity": 5
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Product with Options
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@example.com"
    },
    "customer_id": 11,
    "products": [
        {
            "product_id": 184,
            "product_options": [
                {
                    "id": 200,
                    "value": "180"
                },
                {
                    "id": 230,
                    "value": "192"
                }
            ],
            "quantity": 5
        }
    ],
    "shipping_addresses": [
        {
            "first_name": "Trish",
            "last_name": "Test",
            "company": "Acme Pty Ltd",
            "street_1": "666 Sussex St",
            "city": "Austin",
            "state": "Texas",
            "zip": "78751",
            "country": "United States",
            "country_iso2": "US",
            "email": "elsie@example.com"
        }
    ],
    "status_id": 0
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Product with Options
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@example.com"},"customer_id":11,"products":[{"product_id":184,"product_options":[{"id":200,"value":"180"},{"id":230,"value":"192"}],"quantity":5}],"shipping_addresses":[{"first_name":"Trish","last_name":"Test","company":"Acme Pty Ltd","street_1":"666 Sussex St","city":"Austin","state":"Texas","zip":"78751","country":"United States","country_iso2":"US","email":"elsie@example.com"}],"status_id":0}'
};

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

```go Product with Options
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Product with Options
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}"

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

```java Product with Options
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")
  .asString();
```

```php Product with Options
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "192"
        }
      ],
      "quantity": 5
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Product with Options
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"192\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Product with Options
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  ],
  "customer_id": 11,
  "products": [
    [
      "product_id": 184,
      "product_options": [
        [
          "id": 200,
          "value": "180"
        ],
        [
          "id": 230,
          "value": "192"
        ]
      ],
      "quantity": 5
    ]
  ],
  "shipping_addresses": [
    [
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    ]
  ],
  "status_id": 0
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Product with a Drop Down and a Text Field Modifier

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "Custom Message"
        }
      ],
      "quantity": 5
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Product with a Drop Down and a Text Field Modifier
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@example.com"
    },
    "customer_id": 11,
    "products": [
        {
            "product_id": 184,
            "product_options": [
                {
                    "id": 200,
                    "value": "180"
                },
                {
                    "id": 230,
                    "value": "Custom Message"
                }
            ],
            "quantity": 5
        }
    ],
    "shipping_addresses": [
        {
            "first_name": "Trish",
            "last_name": "Test",
            "company": "Acme Pty Ltd",
            "street_1": "666 Sussex St",
            "city": "Austin",
            "state": "Texas",
            "zip": "78751",
            "country": "United States",
            "country_iso2": "US",
            "email": "elsie@example.com"
        }
    ],
    "status_id": 0
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Product with a Drop Down and a Text Field Modifier
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@example.com"},"customer_id":11,"products":[{"product_id":184,"product_options":[{"id":200,"value":"180"},{"id":230,"value":"Custom Message"}],"quantity":5}],"shipping_addresses":[{"first_name":"Trish","last_name":"Test","company":"Acme Pty Ltd","street_1":"666 Sussex St","city":"Austin","state":"Texas","zip":"78751","country":"United States","country_iso2":"US","email":"elsie@example.com"}],"status_id":0}'
};

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

```go Product with a Drop Down and a Text Field Modifier
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"Custom Message\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Product with a Drop Down and a Text Field Modifier
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"Custom Message\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}"

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

```java Product with a Drop Down and a Text Field Modifier
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"Custom Message\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}")
  .asString();
```

```php Product with a Drop Down and a Text Field Modifier
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "customer_id": 11,
  "products": [
    {
      "product_id": 184,
      "product_options": [
        {
          "id": 200,
          "value": "180"
        },
        {
          "id": 230,
          "value": "Custom Message"
        }
      ],
      "quantity": 5
    }
  ],
  "shipping_addresses": [
    {
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    }
  ],
  "status_id": 0
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Product with a Drop Down and a Text Field Modifier
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"customer_id\": 11,\n  \"products\": [\n    {\n      \"product_id\": 184,\n      \"product_options\": [\n        {\n          \"id\": 200,\n          \"value\": \"180\"\n        },\n        {\n          \"id\": 230,\n          \"value\": \"Custom Message\"\n        }\n      ],\n      \"quantity\": 5\n    }\n  ],\n  \"shipping_addresses\": [\n    {\n      \"first_name\": \"Trish\",\n      \"last_name\": \"Test\",\n      \"company\": \"Acme Pty Ltd\",\n      \"street_1\": \"666 Sussex St\",\n      \"city\": \"Austin\",\n      \"state\": \"Texas\",\n      \"zip\": \"78751\",\n      \"country\": \"United States\",\n      \"country_iso2\": \"US\",\n      \"email\": \"elsie@example.com\"\n    }\n  ],\n  \"status_id\": 0\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Product with a Drop Down and a Text Field Modifier
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  ],
  "customer_id": 11,
  "products": [
    [
      "product_id": 184,
      "product_options": [
        [
          "id": 200,
          "value": "180"
        ],
        [
          "id": 230,
          "value": "Custom Message"
        ]
      ],
      "quantity": 5
    ]
  ],
  "shipping_addresses": [
    [
      "first_name": "Trish",
      "last_name": "Test",
      "company": "Acme Pty Ltd",
      "street_1": "666 Sussex St",
      "city": "Austin",
      "state": "Texas",
      "zip": "78751",
      "country": "United States",
      "country_iso2": "US",
      "email": "elsie@example.com"
    ]
  ],
  "status_id": 0
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Order with pickup method (BOPIS / additional location)

**Request**

```json
{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "consignments": {
    "pickups": [
      {
        "line_items": [
          {
            "product_id": 111,
            "product_options": [],
            "quantity": 2
          }
        ],
        "pickup_method_id": 2,
        "collection_instructions": "Bring your order number",
        "collection_time_description": "Ready within 24 hours",
        "pickup_method_display_name": "Pickup - Warehouse 2"
      }
    ]
  },
  "status_id": 11
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Order with pickup method (BOPIS / additional location)
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = {
    "billing_address": {
        "zip": "78751",
        "first_name": "Jane",
        "last_name": "Doe",
        "street_1": "123 Main Street",
        "city": "Austin",
        "state": "Texas",
        "country": "United States",
        "country_iso2": "US",
        "email": "janedoe@example.com"
    },
    "consignments": { "pickups": [
            {
                "line_items": [
                    {
                        "product_id": 111,
                        "product_options": [],
                        "quantity": 2
                    }
                ],
                "pickup_method_id": 2,
                "collection_instructions": "Bring your order number",
                "collection_time_description": "Ready within 24 hours",
                "pickup_method_display_name": "Pickup - Warehouse 2"
            }
        ] },
    "status_id": 11
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Order with pickup method (BOPIS / additional location)
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"billing_address":{"zip":"78751","first_name":"Jane","last_name":"Doe","street_1":"123 Main Street","city":"Austin","state":"Texas","country":"United States","country_iso2":"US","email":"janedoe@example.com"},"consignments":{"pickups":[{"line_items":[{"product_id":111,"product_options":[],"quantity":2}],"pickup_method_id":2,"collection_instructions":"Bring your order number","collection_time_description":"Ready within 24 hours","pickup_method_display_name":"Pickup - Warehouse 2"}]},"status_id":11}'
};

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

```go Order with pickup method (BOPIS / additional location)
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"consignments\": {\n    \"pickups\": [\n      {\n        \"line_items\": [\n          {\n            \"product_id\": 111,\n            \"product_options\": [],\n            \"quantity\": 2\n          }\n        ],\n        \"pickup_method_id\": 2,\n        \"collection_instructions\": \"Bring your order number\",\n        \"collection_time_description\": \"Ready within 24 hours\",\n        \"pickup_method_display_name\": \"Pickup - Warehouse 2\"\n      }\n    ]\n  },\n  \"status_id\": 11\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Order with pickup method (BOPIS / additional location)
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"consignments\": {\n    \"pickups\": [\n      {\n        \"line_items\": [\n          {\n            \"product_id\": 111,\n            \"product_options\": [],\n            \"quantity\": 2\n          }\n        ],\n        \"pickup_method_id\": 2,\n        \"collection_instructions\": \"Bring your order number\",\n        \"collection_time_description\": \"Ready within 24 hours\",\n        \"pickup_method_display_name\": \"Pickup - Warehouse 2\"\n      }\n    ]\n  },\n  \"status_id\": 11\n}"

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

```java Order with pickup method (BOPIS / additional location)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"consignments\": {\n    \"pickups\": [\n      {\n        \"line_items\": [\n          {\n            \"product_id\": 111,\n            \"product_options\": [],\n            \"quantity\": 2\n          }\n        ],\n        \"pickup_method_id\": 2,\n        \"collection_instructions\": \"Bring your order number\",\n        \"collection_time_description\": \"Ready within 24 hours\",\n        \"pickup_method_display_name\": \"Pickup - Warehouse 2\"\n      }\n    ]\n  },\n  \"status_id\": 11\n}")
  .asString();
```

```php Order with pickup method (BOPIS / additional location)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "billing_address": {
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  },
  "consignments": {
    "pickups": [
      {
        "line_items": [
          {
            "product_id": 111,
            "product_options": [],
            "quantity": 2
          }
        ],
        "pickup_method_id": 2,
        "collection_instructions": "Bring your order number",
        "collection_time_description": "Ready within 24 hours",
        "pickup_method_display_name": "Pickup - Warehouse 2"
      }
    ]
  },
  "status_id": 11
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Order with pickup method (BOPIS / additional location)
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"billing_address\": {\n    \"zip\": \"78751\",\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"street_1\": \"123 Main Street\",\n    \"city\": \"Austin\",\n    \"state\": \"Texas\",\n    \"country\": \"United States\",\n    \"country_iso2\": \"US\",\n    \"email\": \"janedoe@example.com\"\n  },\n  \"consignments\": {\n    \"pickups\": [\n      {\n        \"line_items\": [\n          {\n            \"product_id\": 111,\n            \"product_options\": [],\n            \"quantity\": 2\n          }\n        ],\n        \"pickup_method_id\": 2,\n        \"collection_instructions\": \"Bring your order number\",\n        \"collection_time_description\": \"Ready within 24 hours\",\n        \"pickup_method_display_name\": \"Pickup - Warehouse 2\"\n      }\n    ]\n  },\n  \"status_id\": 11\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Order with pickup method (BOPIS / additional location)
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "billing_address": [
    "zip": "78751",
    "first_name": "Jane",
    "last_name": "Doe",
    "street_1": "123 Main Street",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "email": "janedoe@example.com"
  ],
  "consignments": ["pickups": [
      [
        "line_items": [
          [
            "product_id": 111,
            "product_options": [],
            "quantity": 2
          ]
        ],
        "pickup_method_id": 2,
        "collection_instructions": "Bring your order number",
        "collection_time_description": "Ready within 24 hours",
        "pickup_method_display_name": "Pickup - Warehouse 2"
      ]
    ]],
  "status_id": 11
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```

### Create an order with fees (include the fees object as shown with rest of the payload)

**Request**

```json
{
  "fees": [
    {
      "type": "custom_fee",
      "display_name_customer": "D Fee",
      "source": "AA",
      "cost_ex_tax": "22.5000",
      "cost_inc_tax": "25.0000",
      "tax_class_id": 22
    },
    {
      "type": "custom_fee",
      "display_name_customer": "E Fee",
      "source": "AA",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "tax_class_id": null
    },
    {
      "type": "custom_fee",
      "display_name_merchant": "F Fee",
      "source": "AA",
      "cost_ex_tax": "4.0000",
      "cost_tax": "8.0000"
    }
  ]
}
```

**Response**

```json
{
  "backorder_shipping_expectation_message": null,
  "base_handling_cost": "0.0000",
  "base_shipping_cost": "12.0000",
  "base_wrapping_cost": "0.0000",
  "billing_address": {
    "zip": "78108",
    "first_name": "Jane",
    "last_name": "Doe",
    "company": "",
    "street_1": "555 East Street",
    "street_2": "",
    "city": "Austin",
    "state": "Texas",
    "country": "United States",
    "country_iso2": "US",
    "phone": "1234567890",
    "email": "janedoe@example.com",
    "form_fields": [
      {
        "name": "Delivery Instructions",
        "value": "Leave in backyard"
      }
    ]
  },
  "cart_id": "7e48f7ef-2e88-4817-aea4-b0ed01490114",
  "channel_id": 1,
  "coupon_discount": "5.0000",
  "coupons": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/coupons",
    "resource": "/orders/218/coupons"
  },
  "currency_code": "USD",
  "currency_exchange_rate": "1.0000000000",
  "currency_id": 1,
  "customer_id": 11,
  "customer_locale": "en",
  "customer_message": "",
  "date_created": "Tue, 05 Mar 2019 21:40:11 +0000",
  "date_modified": "Mon, 11 Mar 2019 15:17:25 +0000",
  "date_shipped": "",
  "default_currency_code": "USD",
  "default_currency_id": 1,
  "discount_amount": "5.0000",
  "ebay_order_id": "0",
  "external_id": null,
  "external_merchant_id": null,
  "external_order_id": "external-order-id",
  "external_source": null,
  "fees": [
    {
      "base_cost": "12.3000",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "cost_tax": "0.0000",
      "display_name_customer": "A Fee",
      "display_name_merchant": "A Fee",
      "id": 1,
      "source": "AA",
      "tax_class_id": 22,
      "type": "custom_fee"
    },
    {
      "base_cost": "4.0000",
      "cost_ex_tax": "4.0000",
      "cost_inc_tax": "12.0000",
      "cost_tax": "8.0000",
      "display_name_customer": "B Fee",
      "display_name_merchant": "B Fee",
      "id": 2,
      "source": "AA",
      "tax_class_id": null,
      "type": "custom_fee"
    }
  ],
  "geoip_country": "",
  "geoip_country_iso2": "",
  "gift_certificate_amount": "0.0000",
  "handling_cost_ex_tax": "0.0000",
  "handling_cost_inc_tax": "0.0000",
  "handling_cost_tax": "0.0000",
  "handling_cost_tax_class_id": 0,
  "id": 218,
  "ip_address": "",
  "ip_address_v6": "",
  "is_email_opt_in": false,
  "is_tax_inclusive_pricing": false,
  "items_shipped": 0,
  "items_total": 4,
  "order_is_digital": false,
  "order_source": "external",
  "payment_method": "Cash",
  "payment_provider_id": "",
  "payment_status": "authorized",
  "products": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/products",
    "resource": "/orders/218/products"
  },
  "refunded_amount": "0.0000",
  "shipping_address_count": 1,
  "shipping_addresses": {
    "url": "https://api.bigcommerce.com/stores/{store_hash}/v2/orders/218/shippingaddresses",
    "resource": "/orders/218/shippingaddresses"
  },
  "shipping_cost_ex_tax": "11.0900",
  "shipping_cost_inc_tax": "12.0000",
  "shipping_cost_tax": "0.9100",
  "shipping_cost_tax_class_id": 0,
  "staff_notes": "",
  "status": "Awaiting Payment",
  "status_id": 7,
  "store_credit_amount": "0.0000",
  "store_default_currency_code": "",
  "store_default_to_transactional_exchange_rate": "1.0000000000",
  "subtotal_ex_tax": "62.6793",
  "subtotal_inc_tax": "67.8400",
  "subtotal_tax": "4.4000",
  "tax_provider_id": "BasicTaxProvider",
  "total_ex_tax": "64.5300",
  "total_inc_tax": "69.8400",
  "total_tax": "5.3100",
  "wrapping_cost_ex_tax": "0.0000",
  "wrapping_cost_inc_tax": "0.0000",
  "wrapping_cost_tax": "0.0000",
  "wrapping_cost_tax_class_id": 0,
  "credit_card_type": null,
  "custom_status": "Awaiting Payment"
}
```

**SDK Code**

```python Create an order with fees (include the fees object as shown with rest of the payload)
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v2/orders"

payload = { "fees": [
        {
            "type": "custom_fee",
            "display_name_customer": "D Fee",
            "source": "AA",
            "cost_ex_tax": "22.5000",
            "cost_inc_tax": "25.0000",
            "tax_class_id": 22
        },
        {
            "type": "custom_fee",
            "display_name_customer": "E Fee",
            "source": "AA",
            "cost_ex_tax": "12.3000",
            "cost_inc_tax": "12.3000",
            "tax_class_id": None
        },
        {
            "type": "custom_fee",
            "display_name_merchant": "F Fee",
            "source": "AA",
            "cost_ex_tax": "4.0000",
            "cost_tax": "8.0000"
        }
    ] }
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript Create an order with fees (include the fees object as shown with rest of the payload)
const url = 'https://api.bigcommerce.com/stores/store_hash/v2/orders';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"fees":[{"type":"custom_fee","display_name_customer":"D Fee","source":"AA","cost_ex_tax":"22.5000","cost_inc_tax":"25.0000","tax_class_id":22},{"type":"custom_fee","display_name_customer":"E Fee","source":"AA","cost_ex_tax":"12.3000","cost_inc_tax":"12.3000","tax_class_id":null},{"type":"custom_fee","display_name_merchant":"F Fee","source":"AA","cost_ex_tax":"4.0000","cost_tax":"8.0000"}]}'
};

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

```go Create an order with fees (include the fees object as shown with rest of the payload)
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v2/orders"

	payload := strings.NewReader("{\n  \"fees\": [\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"D Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"22.5000\",\n      \"cost_inc_tax\": \"25.0000\",\n      \"tax_class_id\": 22\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"E Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"12.3000\",\n      \"cost_inc_tax\": \"12.3000\",\n      \"tax_class_id\": null\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_merchant\": \"F Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"4.0000\",\n      \"cost_tax\": \"8.0000\"\n    }\n  ]\n}")

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

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	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 Create an order with fees (include the fees object as shown with rest of the payload)
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v2/orders")

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

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"fees\": [\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"D Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"22.5000\",\n      \"cost_inc_tax\": \"25.0000\",\n      \"tax_class_id\": 22\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"E Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"12.3000\",\n      \"cost_inc_tax\": \"12.3000\",\n      \"tax_class_id\": null\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_merchant\": \"F Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"4.0000\",\n      \"cost_tax\": \"8.0000\"\n    }\n  ]\n}"

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

```java Create an order with fees (include the fees object as shown with rest of the payload)
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.bigcommerce.com/stores/store_hash/v2/orders")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"fees\": [\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"D Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"22.5000\",\n      \"cost_inc_tax\": \"25.0000\",\n      \"tax_class_id\": 22\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"E Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"12.3000\",\n      \"cost_inc_tax\": \"12.3000\",\n      \"tax_class_id\": null\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_merchant\": \"F Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"4.0000\",\n      \"cost_tax\": \"8.0000\"\n    }\n  ]\n}")
  .asString();
```

```php Create an order with fees (include the fees object as shown with rest of the payload)
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.bigcommerce.com/stores/store_hash/v2/orders', [
  'body' => '{
  "fees": [
    {
      "type": "custom_fee",
      "display_name_customer": "D Fee",
      "source": "AA",
      "cost_ex_tax": "22.5000",
      "cost_inc_tax": "25.0000",
      "tax_class_id": 22
    },
    {
      "type": "custom_fee",
      "display_name_customer": "E Fee",
      "source": "AA",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "tax_class_id": null
    },
    {
      "type": "custom_fee",
      "display_name_merchant": "F Fee",
      "source": "AA",
      "cost_ex_tax": "4.0000",
      "cost_tax": "8.0000"
    }
  ]
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Create an order with fees (include the fees object as shown with rest of the payload)
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v2/orders");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"fees\": [\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"D Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"22.5000\",\n      \"cost_inc_tax\": \"25.0000\",\n      \"tax_class_id\": 22\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_customer\": \"E Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"12.3000\",\n      \"cost_inc_tax\": \"12.3000\",\n      \"tax_class_id\": null\n    },\n    {\n      \"type\": \"custom_fee\",\n      \"display_name_merchant\": \"F Fee\",\n      \"source\": \"AA\",\n      \"cost_ex_tax\": \"4.0000\",\n      \"cost_tax\": \"8.0000\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Create an order with fees (include the fees object as shown with rest of the payload)
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = ["fees": [
    [
      "type": "custom_fee",
      "display_name_customer": "D Fee",
      "source": "AA",
      "cost_ex_tax": "22.5000",
      "cost_inc_tax": "25.0000",
      "tax_class_id": 22
    ],
    [
      "type": "custom_fee",
      "display_name_customer": "E Fee",
      "source": "AA",
      "cost_ex_tax": "12.3000",
      "cost_inc_tax": "12.3000",
      "tax_class_id": 
    ],
    [
      "type": "custom_fee",
      "display_name_merchant": "F Fee",
      "source": "AA",
      "cost_ex_tax": "4.0000",
      "cost_tax": "8.0000"
    ]
  ]] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v2/orders")! 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()
```