---
title: "CreateOrderRequest"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.cardzone.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateOrderRequest

Path: Cardzone B2B API

## Fields

- `product_id` (`CreateOrderRequest.product_id`; string, required) — Sellable variant UUID: use the id returned by the products endpoint. For sandbox keys, this selects the static response scenario: - `018f0000-0000-7000-8000-000000000001` (`sandbox-success-voucher`): Static sandbox product that returns a fulfilled voucher order. Poll it with order_id `1CAYVN8V9qVvrLwnnSZsPE`. - `018f0000-0000-7000-8000-000000000002` (`sandbox-wallet-topup-required`): Static sandbox product that returns an action-required wallet order. Poll it with order_id `1CAYVN8V9qVvrLwnnSZsPF`. - `018f0000-0000-7000-8000-000000000003` (`sandbox-merchant-attention-required`): Static sandbox product that returns a fulfillment action-required order. Poll it with order_id `1CAYVN8V9qVvrLwnnSZsPG`. - `018f0000-0000-7000-8000-000000000004` (`sandbox-manual-review-required`): Static sandbox product that returns a manual-review action-required order. Poll it with order_id `1CAYVN8V9qVvrLwnnSZsPH`. - `018f0000-0000-7000-8000-000000000005` (`sandbox-failed-order`): Static sandbox product that returns a failed fulfillment response. Poll it with order_id `1CAYVN8V9qVvrLwnnSZsPJ`.
  - format `uuid`
- `quantity` (`CreateOrderRequest.quantity`; integer, required)
  - min 1
- `merchant_order_ref` (`CreateOrderRequest.merchant_order_ref`; string, optional, nullable) — Optional store-scoped merchant order reference. Reusing the same value for the same store returns `409 merchant_order_ref_already_used` and does not create another order. If you lose the create response, pass this value as `{id}` when polling order status.
  - maxLength 128
- `recipient` (`CreateOrderRequest.recipient`; object, optional) — For voucher products, name/email/mobile are optional delivery details. For top-ups, send every canonical key advertised in recipient_fields by the catalog. PUBG normally requires player_id; Mobile Legends requires player_id and zone_id. Other products may require region_id or arbitrary configured safe keys. Send values as nonblank strings to preserve leading zeros. Missing and unconfigured fields return 422 validation_failed before order creation or fulfillment. Never substitute provider-specific keys such as userId or account_id unless that exact canonical key is configured on the Product.
  - `name` (`CreateOrderRequest.recipient.name`; string, optional)
    - example `"Customer Name"`
  - `email` (`CreateOrderRequest.recipient.email`; string, optional)
    - format `email`
  - `mobile` (`CreateOrderRequest.recipient.mobile`; string, optional)
    - example `"+966500000000"`
  - `player_id` (`CreateOrderRequest.recipient.player_id`; string, optional)
    - example `"123456789"`
  - `zone_id` (`CreateOrderRequest.recipient.zone_id`; string, optional)
    - example `"1234"`
  - `server_id` (`CreateOrderRequest.recipient.server_id`; string, optional)
    - example `"5678"`
  - `region_id` (`CreateOrderRequest.recipient.region_id`; string, optional)
    - example `"eu"`
  - `account_tag` (`CreateOrderRequest.recipient.account_tag`; string, optional)
    - example `"main"`
- `webhook_url` (`CreateOrderRequest.webhook_url`; string, optional, nullable) — Optional HTTPS callback URL for this order.
  - format `uri`


Source: https://docs.cardzone.ai/reference/schemas/CreateOrderRequest/index.md
