Skip to content
Developer preview: the API may change before general availability. Request access

Create a test order (sandbox only)

POST
/sandbox/orders
curl --request POST \
--url https://sandbox.partners.loops.sa/v1/sandbox/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Loops-Merchant-Id: mer_7Hq2Lw8Z' \
--data '{ "location_id": "loc_2Xf9K", "channel": "example" }'

Creates a realistic order on a test location, so you receive real order.* events. Available on the sandbox server only.

Loops-Merchant-Id
string

The merchant you are acting for (mer_…). Required for platform applications; optional for direct integrations, which have a single merchant.

Media typeapplication/json
object
location_id
required
string
channel

Simulated channel to create the order on. Defaults to the location’s first channel connection.

string

The test order.

Media typeapplication/json
object
id
required
string
version
required

Increases on every change. Use it to discard stale updates.

integer
merchant_id
required
string
location_id
required
string
channel
required

Channel ID from GET /channels.

string
channel_connection_id
string
channel_ref
required

The order number shown on the channel, for staff and support.

string
type
required
string
Allowed values: delivery pickup dine_in
status
required

Channel-neutral order status.

string
Allowed values: placed accepted preparing ready picked_up delivered rejected cancelled
status_history
Array<object>
object
status
required

Channel-neutral order status.

string
Allowed values: placed accepted preparing ready picked_up delivered rejected cancelled
at
required
string format: date-time
scheduled_for
string | null format: date-time
items
required
Array<object>
object
name
required

Text in the languages the merchant provided.

object
en
string | null
ar
string | null
sku
string | null
quantity
required
integer
unit_price
required

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
modifiers
Array<object>
object
name

Text in the languages the merchant provided.

object
en
string | null
ar
string | null
quantity
integer
unit_price

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
notes
string | null
totals
required
object
subtotal
required

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
discount

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
delivery_fee

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
tax

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
total
required

An amount in minor units (halalas for SAR).

object
amount
required
integer
currency
required

ISO 4217 code.

string
payment
object
method
string
Allowed values: online cash card_on_delivery
paid
boolean
notes
string | null
created_at
required
string format: date-time
updated_at
required
string format: date-time
extensions

Channel-specific fields, keyed by channel ID. Safe to ignore.

object
key
additional properties
any
Example
{
"id": "ord_01J9QW3T8M",
"version": 3,
"channel_ref": "CH-88213",
"type": "delivery",
"status": "placed",
"status_history": [
{
"status": "placed"
}
],
"items": [
{
"sku": "CB-01",
"quantity": 2,
"unit_price": {
"amount": 4550,
"currency": "SAR"
},
"modifiers": [
{
"unit_price": {
"amount": 4550,
"currency": "SAR"
}
}
]
}
],
"totals": {
"subtotal": {
"amount": 4550,
"currency": "SAR"
},
"discount": {
"amount": 4550,
"currency": "SAR"
},
"delivery_fee": {
"amount": 4550,
"currency": "SAR"
},
"tax": {
"amount": 4550,
"currency": "SAR"
},
"total": {
"amount": 4550,
"currency": "SAR"
}
},
"payment": {
"method": "online"
}
}

The access token is missing, expired or invalid.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended channel_not_permitted not_found merchant_not_found rate_limited upstream_unavailable
detail
string
request_id
required
string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/scope_not_granted",
"title": "Scope not granted",
"status": 403,
"code": "invalid_request",
"detail": "The merchant has not granted orders:read to this application.",
"request_id": "req_01J9X7P2QK"
}

Not found, or not accessible with this connection.

Media typeapplication/problem+json

RFC 9457 Problem Details with a stable code.

object
type
required
string format: uri
title
required
string
status
required
integer
code
required

Stable machine-readable error code. Switch on this, not on title.

string
Allowed values: invalid_request merchant_required unauthorized insufficient_scope scope_not_granted connection_not_active application_suspended channel_not_permitted not_found merchant_not_found rate_limited upstream_unavailable
detail
string
request_id
required
string
errors

Field errors, for invalid_request.

Array<object>
object
field
string
message
string
Example
{
"type": "https://docs.partners.loops.sa/errors/scope_not_granted",
"title": "Scope not granted",
"status": 403,
"code": "invalid_request",
"detail": "The merchant has not granted orders:read to this application.",
"request_id": "req_01J9X7P2QK"
}