Create a Gift Card or subscription voucher order after reviewing Gift Card Quote. A valid new purchase debits your Pay2New wallet and can issue real vouchers. Send requests from your registered backend, not from the documentation page.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
request_id | string | Yes | 8–30 characters: letters, digits, _ or -. Unique in your account across environments and transaction services. Preserve it throughout retries. |
product_code | integer | Yes | Current Pay2New product code returned by List Gift Card Brands. |
denomination_details | array | Yes | 1–100 denomination/quantity entries. All current brand limits still apply. |
denomination_details[].denomination | number | Yes | Positive amount in INR, with at most 2 decimal places. Select an allowed fixed value or stay within the flexible voucher range. |
denomination_details[].quantity | integer | Yes | Positive integer, at most 1000 per submitted entry, and within the brand's quantity limits. Duplicate denominations are merged before validation. |
customer_details | object | Yes | Customer details for the order. |
customer_details.name | string | Yes | 2–50 Unicode letters/spaces. Numbers and punctuation are not accepted. |
customer_details.phone | string | Yes | Indian mobile: exactly 10 digits beginning with 6–9; omit country code and spaces. |
customer_details.email | string | No | Valid email of at most 100 characters. Omit or send empty to use the system default. |
amount | number | No | If supplied, it must equal the sum of denomination × quantity. |
expected_wallet_debit | number | Recommended | Exact data.wallet_debit from the reviewed quote. A changed debit is rejected before creating a new purchase/debit. |
For FIXED brands, select from meta.amountRestrictions.denominations. For FLEXIBLE brands, stay between minVoucherAmount and maxVoucherAmount. In both cases, follow minOrderAmount, maxOrderAmount, maxVouchersPerOrder, maxVouchersPerDenomination and maxDenominationsPerOrder when present. The catalogue can change; refresh brand details before forming an order.
The example uses a catalogue product code observed when this documentation was prepared. Replace it with the current code and current limits returned to your account. Examples and monetary values are illustrative, not fixed commercial terms.
Idempotency
Use the same request_id and the same normalized purchase details after a timeout. An existing matching order is returned without another debit. A changed payload with the same ID is rejected. Use a new ID only for a deliberate separate purchase, after resolving any earlier uncertain result. Request IDs cannot be reused across environments or other Pay2New transaction services.
The server validates active account/KYC/wallet, package/slab settings, current brand rules and sufficient available wallet balance. A successful quote alone does not guarantee the purchase.
Result handling
| JSON result | Meaning | Action |
|---|---|---|
status: 1 with an order response | Successful purchase with validated vouchers. | Record completion once and securely deliver/display the returned credentials. |
status: 2 with gift_order_id and a failed/reversed order | Confirmed failure/reversal with the Pay2New wallet refund recorded. | Record the failed/refunded result. A deliberate new purchase needs a new request ID. |
status: 3 or needs_review: true | Processing, unresolved confirmation or manual review required. | Keep the original references. Check the same order; do not create a replacement purchase. |
status: 2 with only message | Authentication, validation, activation, account, IP or lookup error. | Correct the reported issue. A lookup error is not evidence that an existing order failed or was refunded. |
HTTP success alone does not establish purchase success. Match request_id, gift_order_id and order_id; read the numeric JSON status. order_status adds context and may be UNSUBMITTED, UNKNOWN, PROCESSING, SUCCESS, FAILED, REVERSED or CANCELLED. A cancellation may remain unresolved until the refund is confirmed. Use the numeric result and needs_review to decide the client state.
Response fields
| Field | Type | Description |
|---|---|---|
status | integer | 1 success, 2 failure/refund or a request error, 3 processing/unresolved. |
message | string | Human-readable result; do not branch on exact wording. |
gift_order_id | integer | Pay2New Gift Card order ID. Use it or request_id for status lookup. |
order_id | string | Pay2New transaction ID. This is not a status lookup input for this API. |
request_id | string | Your original idempotency reference. |
order_status | string | Detailed order state. |
environment | string | production for live orders; historical test orders may return uat. |
product_code | integer | Pay2New product code from the catalogue. |
amount | decimal string | Total face value. |
wallet_debit | decimal string | Wallet debit stored for this order. |
commission, surcharge, tds, gst | decimal strings | Stored amounts for this order; not percentage rates. |
balance | decimal string | Wallet balance at the time this response was assembled; it can change with other transactions. |
needs_review | boolean | If true, the result is unresolved and needs reconciliation. |
vouchers | array | Issued credentials on confirmed success; otherwise empty. |
Voucher credentials
cardType | Required redemption fields |
|---|---|
CARD_NUMBER_SECURED | cardNumber |
PIN_NO_SECURED | cardPin |
CARD_AND_PIN_NO_SECURED | Both cardNumber and cardPin |
id, amount and brand-supplied validTill describe each issued voucher. Do not assume both credentials exist for every brand. Vouchers are returned in the response only after validated success; handle customer delivery in your own application. This endpoint does not send SMS, email or WhatsApp delivery.
On a network timeout or status: 3, begin checking the original order after one minute, then use controlled intervals/backoff. Do not create a replacement order. A confirmed failed/reversed order is refunded through the existing Pay2New wallet flow. Cancellation or timeout alone does not confirm a refund.
Response examples
Illustrative values only. Always inspect the numeric JSON status and matching order references.
Processing order
{
"status": 3,
"gift_order_id": 123,
"order_id": "P2F_SAMPLE_ORDER",
"request_id": "GC_PARTNER_20261016_0001",
"order_status": "PROCESSING",
"environment": "production",
"product_code": 1004489,
"message": "Gift Card order is processing.",
"amount": "1000.0000",
"wallet_debit": "985.3000",
"commission": "15.0000",
"surcharge": "0.0000",
"tds": "0.3000",
"gst": "0.0000",
"balance": "4014.7000",
"needs_review": false,
"vouchers": []
}
Successful order
{
"status": 1,
"gift_order_id": 123,
"order_id": "P2F_SAMPLE_ORDER",
"request_id": "GC_PARTNER_20261016_0001",
"order_status": "SUCCESS",
"environment": "production",
"product_code": 1004489,
"message": "Gift Card generated.",
"amount": "1000.0000",
"wallet_debit": "985.3000",
"commission": "15.0000",
"surcharge": "0.0000",
"tds": "0.3000",
"gst": "0.0000",
"balance": "4014.7000",
"needs_review": false,
"vouchers": [
{
"id": "SAMPLE_VOUCHER_001",
"cardType": "CARD_AND_PIN_NO_SECURED",
"amount": 1000,
"validTill": "2027-10-15",
"cardNumber": "EXAMPLE_CARD_NUMBER",
"cardPin": "EXAMPLE_CARD_PIN"
}
]
}
Failed and refunded
{
"status": 2,
"gift_order_id": 123,
"order_id": "P2F_SAMPLE_ORDER",
"request_id": "GC_PARTNER_20261016_0001",
"order_status": "FAILED",
"environment": "production",
"product_code": 1004489,
"message": "Gift Card order failed/reversed; wallet refunded.",
"amount": "1000.0000",
"wallet_debit": "985.3000",
"commission": "15.0000",
"surcharge": "0.0000",
"tds": "0.3000",
"gst": "0.0000",
"balance": "5000.0000",
"needs_review": false,
"vouchers": []
}
Review required
{
"status": 3,
"gift_order_id": 123,
"order_id": "P2F_SAMPLE_ORDER",
"request_id": "GC_PARTNER_20261016_0001",
"order_status": "PROCESSING",
"environment": "production",
"product_code": 1004489,
"message": "Gift Card service confirmation requires review.",
"amount": "1000.0000",
"wallet_debit": "985.3000",
"commission": "15.0000",
"surcharge": "0.0000",
"tds": "0.3000",
"gst": "0.0000",
"balance": "4014.7000",
"needs_review": true,
"vouchers": []
}
Price changed
{
"status": 2,
"message": "The wallet price has changed. Review the order again."
}
Headers
| Header | Required | Description |
|---|---|---|
secret | Yes | Your Pay2New-issued partner API secret. |
Content-Type | For JSON POST requests | application/json |
Accept | Recommended | application/json |
Your account, KYC, wallet, API access and Gift Card service must be active. Send requests from your registered backend IP. No outletId, browser session, or separate subscription credential is required by these endpoints.
cURL request
curl --request POST \
--url 'https://pay2new.in/apis/v1/giftcards/orders' \
--header 'secret: YOUR_PAY2NEW_SECRET' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"request_id": "GC_PARTNER_20261016_0001",
"product_code": 1004489,
"denomination_details": [
{
"denomination": 1000,
"quantity": 1
}
],
"customer_details": {
"name": "Sample Customer",
"phone": "9000000001",
"email": "[email protected]"
},
"expected_wallet_debit": 985.3
}'
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
