Create Order

Direct order submission allows channels to submit fully composed orders, including their own tax and shipping calculations, in a single request to the merchant through Violet. This feature overrides the platform's built-in pricing engine, ensuring accuracy in the merchant's system of record and customer communications.

Learn more about Direct Order Submission in this guide.

circle-info

The following information is required to be included in the Order payload of this request:

  1. First Name

  2. Last Name

  3. Email

  4. Shipping Address

  5. Bag(s)

For a multi-merchant Order, multiple bags must be created in the Order payload. Each Bag must contain items from only one merchant and have its own shipping method.

circle-info

When not bypassing payments, Violet currently only supports accepting Single-use Stripe Tokens as a payment method in this endpoint.

Submission Date

At the time of order submission a date_submitted property on the Order and Bag objects will be populated with ISO 8601arrow-up-right datetime values that reflect the submission time. On the Order object this value will capture the last time the Order was submitted to Violet. Each Bag object within the Order object will reflect the last time an attempt was made to submit the Bag to the external commerce platform.

Create Order

post

Creates and submits an order directly without the multi-step cart checkout flow (Direct Order Submission / DOS). Accepts a complete order payload including an optional payment method, customer information, one or more bags of SKUs, shipping and billing addresses, and optional line-item taxes and custom discounts. Validates inventory, pricing, and payment before creating the order on the merchant's commerce platform. All monetary values are in the smallest currency unit (e.g. cents for USD).

Header parameters
X-Violet-TokenstringRequired

API token for authentication

X-Violet-App-SecretstringRequired

Application secret key

X-Violet-App-Idinteger · int32Required

Application ID

Example: 10000
Body

Request to create and submit an order in a single API call, bypassing the multi-step cart flow. Use this for direct order submission when you already have all order details (items, prices, shipping, taxes, payment). All monetary values are in the smallest currency unit (e.g. cents for USD).

Responses
chevron-right
200

success

application/json

A Violet Order representing a shopping cart that progresses through checkout to become a placed order. An Order contains one or more Bags (one per merchant), a customer, shipping/billing addresses, and a payment method. The lifecycle is: create cart → add items → set addresses → apply shipping → set payment → submit. All monetary values are in the smallest currency unit (e.g. cents for USD).

idinteger · int64Read-onlyRequired

ID of the Violet cart or order.

tokenstringRead-onlyOptionalDeprecated

An alternative UUID that can be used as an ID to reference the cart or order.

user_idinteger · int64Read-onlyOptionalDeprecated

ID of the User placing the order

app_idinteger · int32Read-onlyRequired

ID of the App responsible for the creation and submission of this Order.

developer_idinteger · int32Read-onlyRequired

ID of the Developer responsible for the creation and submission of this Order.

sub_totalinteger · int32Required

The price of the Order in the base currency before discounts, shipping, duties, taxes, and tips. In Cents.

Default: 0
shipping_totalinteger · int32Required

The sum of all shipping methods applied to the Order in the base currency. In Cents.

Default: 0
tax_totalinteger · int32Required

The sum of all the taxes applied to the Order in the base currency. In Cents.

Default: 0
discount_totalinteger · int32Required

The total discounts applied to the price of the Order in the base currency. In Cents.

Default: 0
totalinteger · int32Required

The sum of all item prices, discounts, shipping, and taxes applied to the Order in the base currency. In Cents.

Default: 0
app_customer_idstring · max: 191 · nullableOptional

App Customer ID. This should be used to map the order to the ID of the customer in your application.

app_order_idstring · max: 64 · nullableOptional

App Order ID. This should be set to a unique identifier in your system. While not enforced unique in Violet's system, it is strongly recommended that unique values are used for each cart to help correlate identifiers between Violet's system and yours.

statusstring · enumRead-onlyRequired

Status of the Order

Possible values:
is_guestbooleanRead-onlyRequired

Whether this is a guest checkout order. Guest orders do not create or link to a customer account in the merchant's system. Most orders placed via the Violet API are guest orders.

Default: true
date_createdstring · date-timeRead-onlyRequired

Date of order creation

date_last_modifiedstring · date-timeRead-onlyRequired

Indicates when the order was last modified. This timestamp is updated only when a property on the Order entity itself changes. Modifications to related entities (e.g., Bags) will not update this timestamp unless the change also triggers an update to the Order entity.

date_submittedstring · date-time · max: 24 · nullableRead-onlyOptional

Date the Order was last submitted in Violet. This value is captured immediately after the Order is successfully validated and before the nested Bag(s) are submitted to the external commerce platforms.

pricedbooleanRead-onlyRequired

Whether the cart has been priced. A cart must be priced before it can be submitted for checkout. Pricing is triggered automatically when shipping methods are applied and tax/shipping totals are calculated.

Default: false
wallet_based_checkoutbooleanRequired

Is this cart going to be placed through wallet-based checkout

Default: false
currencystring · min: 3 · max: 3Required

ISO 4217 currency code for the Order.

Default: USDExample: USD
referral_idstring · nullableOptional

Optional value used to represent an identifier in your system. This value is not required to represent a referral. It can represent the ID of anything in your system and can be used to filter order lookup results. Max length of 128 characters.

currency_symbolstringOptional

Symbol representing the currency the Order operates in.

app_namestringOptional

Name of app that originated the order. Use the "extended" query param when looking up orders to include this value.

stripe_keystringOptional

Stripe publishable key. Use for tokenizing payment methods.

payment_intent_client_secretstring · nullableRead-onlyOptional

Payment intent client secret. Use for payment intent based payment capture and external captures

order_idinteger · int64Optional
order_statusstring · enumOptionalPossible values:
guestbooleanOptional
intent_based_checkoutbooleanOptional

Boolean indicating if the cart/order will be payed using a payment intent.

post
/orders

Last updated

Was this helpful?