Skip to main content

Create Bulk Order

Facilitates the creation of a new bulk order by specifying products and quantities. This API operates asynchronously; once the client submits a request, the API accepts the order immediately without initiating fulfillment. The fulfillment process occurs subsequently through asynchronous processing. Please be advised that there will be a waiting period for order fulfillment.

The Create Bulk Order API now supports multiple currencies beyond USD. If you have wallets in other currencies like GBP or EUR, you can place orders using your preferred currency. However, please note that one API order can only contain products in a single currency. For example, if you're ordering 3 products in one API request, all products must share the same currency. Otherwise, you will receive an error response.

POST /v2/orders​

Request​

HTTP Headers​

To use this endpoint, you must include the following headers for authentication and authorization:

HeaderTypeRequiredDescription
x-api-keyStringYesAPI key assigned to your account for service access.
AuthorizationStringYesBearer token to authenticate the API request.

Payload​

PropertyTypeRequiredDefault ValueDescription
clientOrderNumberStringNoNoneThe order number assigned by the client, used for tracking and reference purposes.
enableClientOrderNumberDupCheckBooleanNofalseEnable to prevent duplicate clientOrderNumber
productsProductRequest[]YesList of products included in the order.
payWithCurrency 🆕StringNo*NoneSettlement currency (ISO-4217). See rules below. Required only when the product currency is not in the customer’s balance currencies.

*payWithCurrency is required only when the product currency is not present in the customer’s balance currencies. If omitted otherwise, the system defaults to the product currency; if the customer has a single balance currency equal to the product currency, the default is applied automatically. If payWithCurrency is provided but not in the customer’s balances, the API returns UNSUPPORTED_CURRENCY.

Cross-currency settlement (payWithCurrency)​

Settle an order in a currency different from the product’s currency.

Property: payWithCurrency (ISO‑4217, e.g., USD)

Rules

  • If the product currency is in your balances and payWithCurrency is omitted, the order settles in the product currency (default).
  • If the product currency is not in your balances, payWithCurrency is required; omitting it returns UNSUPPORTED_CURRENCY.
  • If payWithCurrency is provided but not in your balances, the API returns UNSUPPORTED_CURRENCY.
  • If you have a single balance currency equal to the product currency, the system defaults to that currency; you may still override it.

ProductRequest​

PropertyTypeRequiredDefault ValueDescription
skuStringYesThe Stock Keeping Unit identifier for the product.
quantityIntegerYesThe quantity of the product requested in the order.

Example Request​

POST /v2/orders HTTP/1.1
Host: api.example.com
Content-Type: application/json
x-api-key: <API_KEY>
Authorization: Bearer <BEARER_ACCESS_TOKEN>

{
"clientOrderNumber": "po-1234",
"products": [
{
"sku": "TTR-WI-YWN",
"quantity": 1
},
{
"sku": "ELX-BF-85S",
"quantity": 1
}
]
}

Example Request (Cross-Currency)​

POST /v2/orders HTTP/1.1
Host: api.example.com
Content-Type: application/json
x-api-key: <API_KEY>
Authorization: Bearer <BEARER_ACCESS_TOKEN>

{
"clientOrderNumber": "po-1234",
"products": [
{
"sku": "TTR-WI-YWN",
"quantity": 1
},
{
"sku": "ELX-BF-85S",
"quantity": 1
}
],
"payWithCurrency": "USD"
}

Responses​

HTTP Status Codes​

Status CodeDescription
200OK
400Bad Request
409Conflict (e.g., duplicate clientOrderNumber when duplication check is enabled)
422Unprocessable Entity (e.g., invalid or missing payWithCurrency when required)
500Internal Server Error

Schema​

PropertyTypeNullableDescription
requestIdStringNoUnique identifier assigned to each request for tracking purposes.
dataOrderResponseNoOrder response.

OrderResponse​

PropertyTypeNullableDescription
transactionIdStringNoThe transaction identifier.
clientOrderNumberStringNoThe client's order number.
payWithCurrencyStringNoThe currency used to settle/charge the order.
grandTotalMoneyResponseNoThe grand total amount and currency.
createdAtStringNoTimestamp of when the order was created.
statusOrderStatusNoThe status of the order.
productsProductResponse[]NoList of products in the order.
fxSummaryFxEntry[]YesSummary of FX pairs/rates used when cross-currency conversion is applied. Omitted for same-currency orders.

ProductResponse​

PropertyTypeNullableDescription
skuStringNoThe SKU of the product.
quantityIntegerNoAlways 1 for Instant orders.
unitPriceOriginalMoneyResponseYesUnit price in the product’s native currency before FX. Optional; omitted when same-currency.
unitPriceMoneyResponseNoThe unit price of the product.
totalPriceMoneyResponseNoThe total price of the product.
statusOrderStatusNoThe status of the product.

MoneyResponse​

PropertyTypeNullableDescription
amountStringNoThe monetary amount.
currencyStringNoThe currency of amount.

FxEntry​

PropertyTypeNullableDescription
pairStringNoCurrency pair used (e.g., EUR/USD).
rateNumberNoApplied FX rate for the pair.
asOfDateStringNoISO date/time when the rate was effective.

OrderStatus​

ValueTypeDescription
PROCESSINGStringThe order is currently being processed.
COMPLETEDStringThe order has been completed successfully.
CANCELLEDStringThe order has been cancelled and will not be processed.

Example 200 OK Response​

{
"requestId": "c4c7b997-79a5-4bde-9f17-47ad7eac9ed4",
"data": {
"transactionId": "1234",
"clientOrderNumber": "po-1234",
"grandTotal": {
"amount": "1,197.5",
"currency": "USD"
},
"createdAt": "2025-10-06T09:00:00Z",
"status": "PROCESSING",
"products": [
{
"sku": "TTR-WI-YWN",
"quantity": 1,
"unitPriceOriginal": { "amount": "9.70", "currency": "EUR" },
"unitPrice": { "amount": "11.48", "currency": "USD" },
"totalPrice": { "amount": "11.48", "currency": "USD" },
"status": "PROCESSING"
},
{
"sku": "ELX-BF-85S",
"quantity": 1,
"unitPriceOriginal": { "amount": "4.55", "currency": "EUR" },
"unitPrice": { "amount": "5.39", "currency": "USD" },
"totalPrice": { "amount": "5.39", "currency": "USD" },
"status": "COMPLETED"
}
],
"fxSummary": [
{ "pair": "EUR/USD", "rate": 1.1829, "asOfDate": "2025-10-06" }
]
}
}

Example Error Responses​

UNSUPPORTED_CURRENCY (product currency not in balances and payWithCurrency missing or not supported)

{ "error": "UNSUPPORTED_CURRENCY", "message": "payWithCurrency is required or not supported for this account." }

CLIENT_ORDER_NUMBER_DUPLICATE (dup-check enabled)

{ "error": "CLIENT_ORDER_NUMBER_DUPLICATE", "clientOrderNumber": "1234" }