Orders
Manages the full lifecycle of single and multi-merchant orders — from estimation and creation through fulfillment, payment, and refunds.
Overview
An Order represents a single customer transaction that may span multiple merchants. Because Violet connects your application to many independent storefronts, a single checkout can produce items from several sellers. To handle this, every order is split into Bags — one per merchant.
Order
├── Customer
├── Shipping Address
├── Billing Address
├── Payment Method
├── Bag (Merchant A)
│ ├── SKUs
│ ├── Shipping Method
│ ├── Fulfillments
│ └── Refunds
├── Bag (Merchant B)
│ ├── SKUs
│ ├── Shipping Method
│ ├── Fulfillments
│ └── Refunds
└── TransactionsThe Order holds customer-level data (addresses, payment, totals), while each Bag tracks merchant-specific state independently — its own status, financial status, fulfillment status, shipping method, and line items. This means one bag can be shipped and completed while another is still processing.
All monetary values are expressed in the smallest currency unit (e.g., cents for USD). An order total of $49.99 is represented as 4999.
Creating orders
There are two ways to create an order:
Multi-step checkout
Build an order incrementally through the Carts endpoints. This flow lets you:
Create a cart
Add SKUs from one or more merchants
Set customer information
Apply a shipping address and select shipping methods
Apply a payment method
Submit the cart, which creates the order
This approach is best when your UI guides the customer through discrete checkout steps.
Direct Order Submission (DOS)
Submit a complete order in a single POST /orders request. The payload includes everything — customer, bags with SKUs and prices, shipping and billing addresses, and an optional payment method. Violet validates inventory, pricing, and payment, then creates the order on each merchant's commerce platform.
This approach is best for server-to-server integrations, marketplace order ingestion, or any flow where you already have all order data assembled.
Estimating orders
Before creating an order, you can call POST /orders/estimate to preview totals without persisting anything. Provide one or more SKUs and a shipping address, and Violet returns estimated subtotals, taxes, shipping costs, and available shipping methods — grouped by merchant. This is useful for showing customers an order summary before they commit.
Order lifecycle
Order status
Tracks the overall state of the order across all bags.
IN_PROGRESS
The order is open and being assembled (cart phase).
PROCESSING
Checkout has been submitted; bags are being sent to merchants.
REQUIRES_ACTION
The order needs manual intervention before it can proceed.
COMPLETED
All bags have reached a terminal state.
CANCELED
The order has been canceled.
Bag status
Each bag progresses independently through its own lifecycle.
IN_PROGRESS
The bag is being assembled as part of a cart.
SUBMITTED
The bag has been sent to the merchant's platform.
ACCEPTED
The merchant has accepted the bag.
REJECTED
The merchant has rejected the bag.
COMPLETED
The bag has been fully fulfilled and delivered.
CANCELED
The bag has been canceled.
REFUNDED
A full refund has been processed for the bag.
PARTIALLY_REFUNDED
A partial refund has been processed.
Bag financial status
Tracks the payment state of each bag.
UNPAID
No payment has been captured.
AUTHORIZED
Payment has been authorized but not yet captured.
PAID
Payment has been captured.
VOIDED
The payment authorization has been voided.
REFUNDED
The full payment has been refunded.
PARTIALLY_REFUNDED
A partial refund has been issued.
Bag fulfillment status
Tracks the shipping and delivery state of each bag.
PROCESSING
The bag is being prepared for shipment.
SHIPPED
All items in the bag have shipped.
PARTIALLY_SHIPPED
Some items have shipped; others are still being prepared.
DELIVERED
All items have been delivered.
Order Webhook events
Violet publishes webhook events as orders progress through their lifecycle. Events are triggered at the bag level, since each bag moves independently.
ORDER_ACCEPTED
A bag is accepted by the merchant.
ORDER_SHIPPED
A bag has shipped.
ORDER_DELIVERED
A bag has been delivered.
ORDER_COMPLETED
A bag has reached its terminal completed state.
ORDER_REFUNDED
A refund has been processed for a bag.
ORDER_CANCELED
A bag has been canceled.
ORDER_FAILED
A bag submission or processing has failed.
ORDER_UPDATED
A general update has occurred on a bag.
See Events for details on subscribing to webhooks.
Available endpoints:
Last updated
Was this helpful?