Create a channel order in the POS

Import an immediate pickup/delivery order from your server using orders:write.

The business comes from the token. Supply its branch, menu and Kivly product IDs.
Prices and totals are gross integer cents declared by your channel; Kivly validates
arithmetic and resolves taxes and kitchen routing from its own configuration.
PAID_EXTERNALLY records payment collected outside Kivly; this endpoint never charges
a card. Unpaid orders enter the POS for collection. The menu's acceptance mode applies.
The order source is api; metadata.integration_channel identifies your website.
Reuse channel + external_id and the same body after a timeout (200 replay); a changed
body returns 409. A 503 can mean the order is saved but POS synchronization is pending:
retry the identical request. No provider dispatch, scheduled orders or table orders here.
Existing GET /orders/{order_id}, PATCH /orders/{order_id}/status and order.* webhooks
provide follow-up. A 201 confirms server/POS persistence, not physical printing.

Integration access is restricted to the credential's location. Pagination, monetary units and response envelopes are endpoint-specific; use the schema below. Do not assume that POST/PATCH requests are safe to retry after a timeout.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required
length between 1 and 128

Stable order ID in your channel. Reuse it with exactly the same body after a timeout.

string
required
^[a-z0-9][a-z0-9_-]{0,63}$

Your channel identifier, e.g. my-website. Deduplication is scoped to business + channel + external_id.

string
required
^[0-9a-f]{24}$
string
required
^[0-9a-f]{24}$
string
enum
required
Allowed:
items
array of objects
required
length between 1 and 100
Items*
string
required
^[0-9a-f]{24}$
string
required
length between 1 and 200

External product label; the Kivly catalog name takes precedence.

integer
required
1 to 100
integer
required
0 to 100000000

Gross unit price charged by your channel, excluding options; not a Kivly price quote.

options
array of objects
length ≤ 50
Options
length ≤ 1000
string
required
^[A-Z]{3}$
integer
0 to 100000000
Defaults to 0
integer
0 to 100000000
Defaults to 0
integer
required
0 to 100000000
string
enum
required

Records external payment or amount to collect. Does not initiate a charge or refund.

Allowed:
^[0-9a-f]{24}$
string
required
length between 1 and 200
length between 1 and 50
ChannelDeliveryAddress | null
length ≤ 2000
Responses

409

Reference already used with different content, or inactive branch/menu.

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
*/*