Places an asynchronous purchase and reserves its total from the wallet. Name the purchase in exactly one of two ways: item prices it now and orders it at that price in the same call, optionally refusing a total above maximumTotal; quoteId orders against a quote you created. Requires the orders.create scope and an Idempotency-Key header. The key space is the workspace's and a key that placed an order is spent for good: a retry under it is answered 202 with the order it placed, as it stands now, and nothing is priced, reserved or charged again — with quoteId when the quote, clientReference and purchaseInput are the same; with item when the request it repeats is the same (productId, variantId, value or its absence, quantity, currency, clientReference, purchaseInput) and its maximumTotal, when given, is not below the order's total. When the key's order kept no record of the request — one placed before Xegora began recording it, or one placed from a quoteId, which is not an item request — an item retry is judged from the order itself instead: one line, the same productId, variantId, quantity, settlement currency, clientReference and purchaseInput, for the amount named (an omitted value being the product's default face value, as a fresh quote would read it), within the retry's maximumTotal. Such a key therefore answers a matching one-call purchase rather than conflicting. Anything else under a spent key is 409 idempotency_conflict; a quoteId request never answers for an item order, since a one-call purchase quotes for itself and its quote id is never presented again. On a 409 idempotency_conflict, look the order up by clientReference before using a new key — a new key for a purchase already placed buys it twice. A refused request places nothing and leaves the key unused. Fulfillment proceeds in the background; follow the status via GET /api/v1/orders/{orderId} or webhooks.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||