Order placed
Changed onReport an order placed in your store.
This is an idempotent upsert keyed on order_id: the first call for an order_id creates the order and returns 201 Created; subsequent calls with the same order_id update it and return 200 OK. The order carries the full current state each time — omitted optional fields keep their previously stored value.
The order is associated to a contact by email (or, when no email is sent, by phone), creating the contact if needed.
accepts_email_marketing and accepts_sms_marketing drive the contact's marketing consent — see the field descriptions for the exact semantics.
Optionally send the X-Privy-Integration-Token header to tie the order to a specific Custom Integration (see the header parameter below).
Required scope: orders_write
Request
- Base URLhttps://api.privy.com/v1
- AuthHTTP bearer
Headers
Target a subaccount instead of the main connected account. Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts of the connected account are reachable — omit this for the main account itself.
Optional. The integration token of a Custom Integration, sent in addition to the Authorization: Bearer token, to tie the order to that specific integration. Find it in your Privy dashboard under Settings → Integrations Hub → Connected, or generate a new one in the same Integrations Hub section under Custom Integration.
When omitted and the business has exactly one Custom Integration, the order is auto-tied to it; otherwise no integration is attributed. If the value doesn't match an active Custom Integration for your business, the request returns 422. This token only narrows attribution within the business already established by the bearer token — it is not a standalone credential.
Request body
Example request
{
"order_id": 1001,
"email": "buyer@example.com",
"phone": "+12025550123",
"customer_id": "ext-42",
"subtotal": 90,
"discounts": [
{
"code": "SAVE10",
"amount": 10
}
],
"tax_lines": [
{
"title": "VAT",
"amount": 5
}
],
"total": 95,
"currency": "USD",
"total_items": 2,
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"shipment_status": "delivered",
"line_items": [
{
"sku": "SKU-1",
"title": "Sample Product",
"quantity": 2
}
],
"billing_address": {
"first_name": "Jane",
"last_name": "Shopper",
"name": "Jane Shopper",
"address1": "123 Main St",
"address2": "Apt 101",
"city": "Boston",
"state_code": "MA",
"country_code": "US",
"postal_code": "02118"
},
"shipping_address": {
"first_name": "Jane",
"last_name": "Shopper",
"name": "Jane Shopper",
"address1": "123 Main St",
"address2": "Apt 101",
"city": "Boston",
"state_code": "MA",
"country_code": "US",
"postal_code": "02118"
},
"accepts_email_marketing": true,
"accepts_sms_marketing": true,
"order_date": "2026-06-01T12:00:00Z"
}Response
Existing order updated.
Example response
{
"data": {
"order_id": 1001,
"source": "api",
"email": "buyer@example.com",
"phone": "+12025550123",
"total_amount": "95.00",
"currency_code": "USD",
"placed_at": "2026-06-01T12:00:00Z",
"financial_status": "paid",
"fulfillment_status": "fulfilled",
"shipment_status": "in_transit",
"subtotal": 90,
"discounts": [
{
"code": "SAVE10",
"amount": 10
}
],
"tax_lines": [
{
"title": "VAT",
"amount": 5
}
],
"total_items": 2,
"line_items": [
{
"sku": "SKU-1",
"title": "Sample Product",
"quantity": 2
}
],
"billing_address": {
"first_name": "Jane",
"last_name": "Shopper",
"name": "Jane Shopper",
"address1": "123 Main St",
"address2": "Apt 101",
"city": "Boston",
"state_code": "MA",
"country_code": "US",
"postal_code": "02118"
},
"shipping_address": {
"first_name": "Jane",
"last_name": "Shopper",
"name": "Jane Shopper",
"address1": "123 Main St",
"address2": "Apt 101",
"city": "Boston",
"state_code": "MA",
"country_code": "US",
"postal_code": "02118"
},
"accepts_email_marketing": true,
"accepts_sms_marketing": true,
"integration": {
"store_name": "My Store",
"store_url": "https://mystore.example.com"
},
"created_at": "2026-06-01T12:00:05Z",
"updated_at": "2026-06-01T12:00:05Z"
}
}Changes
- warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
forbiddenenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status - warning
added the new
segment_builder_requiredenum value to the/response property for the response status
- warning
- breaking
the
//request property type changed fromnumbertostringnumbernull - breaking
the
//request property type changed fromnumbertostringnumber - breaking
the
//request property type changed fromnumbertostringnumber - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
//became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the response property
///became nullable for the status - breaking
the
/response's property type changed fromstringtostringintegerfor status - breaking
the
/response's property type changed fromstringtostringintegerfor status - breaking
the
///response's property type changed fromnumbertostringnumbernullfor status - breaking
the
///response's property type changed fromnumbertostringnumbernullfor status - breaking
the
///response's property type changed fromnumbertostringnumberfor status - breaking
the
///response's property type changed fromnumbertostringnumberfor status - breaking
the
///response's property type changed fromnumbertostringnumberfor status - breaking
the
///response's property type changed fromnumbertostringnumberfor status - warning
added the new
api_access_requiredenum value to the/response property for the response status - warning
added the new
api_access_requiredenum value to the/response property for the response status - warning
added the new
api_access_requiredenum value to the/response property for the response status - warning
added the new
api_access_requiredenum value to the/response property for the response status - warning
added the new
contacts_not_readyenum value to the/response property for the response status - warning
added the new
contacts_not_readyenum value to the/response property for the response status - warning
added the new
contacts_not_readyenum value to the/response property for the response status - warning
added the new
contacts_not_readyenum value to the/response property for the response status - warning
added the new
no_connected_storeenum value to the/response property for the response status - warning
added the new
no_connected_storeenum value to the/response property for the response status - warning
added the new
no_connected_storeenum value to the/response property for the response status - warning
added the new
no_connected_storeenum value to the/response property for the response status - warning
added the new
paid_plan_requiredenum value to the/response property for the response status - warning
added the new
paid_plan_requiredenum value to the/response property for the response status - warning
added the new
paid_plan_requiredenum value to the/response property for the response status - warning
added the new
paid_plan_requiredenum value to the/response property for the response status - warning
added the new
store_unavailableenum value to the/response property for the response status - warning
added the new
store_unavailableenum value to the/response property for the response status - warning
added the new
store_unavailableenum value to the/response property for the response status - warning
added the new
store_unavailableenum value to the/response property for the response status - info
added the new optional
headerrequest parameterPrivy-Account-Id - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
//became nullable - info
the request property
//became nullable - info
the request property
//became nullable - info
the request property
//became nullable - info
the request property
//became nullable - info
the request property
//became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
/became nullable - info
the request property
//became nullable - info
the request property
//became nullable
- breaking