Gift cards
Brand names and face amounts (no plan IDs): Catalog.
Purchase third-party digital gift cards — Apple, Netflix, PlayStation, Amazon, and others — through the Breeze gift cards API. Each product has a stable plan_id and an NGN checkout price.
Always purchase with plan_id. Do not choose a product by title alone. The same brand and face value often exist for several countries (for example Adidas €5 ES vs Adidas €5 FR); each has its own plan_id and redeemability.
Supported brands
The catalog is filtered to the brands below. Availability, countries, and denominations vary by product — always fetch the live catalog before purchase.
Apple & Google
Apple · Google Play · Microsoft
Streaming
Netflix · Spotify · Disney+ · Hulu · Twitch
Gaming
PlayStation · Xbox · Xbox Game Pass · Nintendo · Roblox · Steam · Blizzard · Epic Games · EA · PUBG Mobile · Free Fire · Mobile Legends · Razer Gold · Riot · Bigo Live · Meta Quest · GameStop
Shopping
Amazon · Walmart · Target · Macy’s · ASOS · Shein · Visa · Mastercard · eBay
Crypto
Binance · CryptoVoucher
Travel & lifestyle
Uber · Uber Eats · Airbnb · Nike · Adidas · Sephora · Starbucks · Canva · Booking.com
Currencies
Products are offered in USD, EUR, GBP, CAD, or AED. Each catalog item includes currency_code, face value, and ngn_price (NGN debit amount).
Response shapes
| Operation | JSON shape |
|---|---|
| Catalog, quote, availability | status, code, message, data |
| Purchase & order status | status, response_code, response_message, data |
On purchase and order status, status is the outcome word (success, failed, pending) and response_code is 00, 01, or 02. Create and poll use the same envelope. See also Errors & codes — Gift cards.
Catalog API
List catalog
GET /v1/giftcards/catalog| Query | Description |
|---|---|
search | Filter by product title or category |
brand | Filter by brand name, e.g. Netflix |
currency | Filter by currency code, e.g. USD |
category | Filter by UI category, e.g. Gaming |
featured | Set to true for featured products only |
Each item includes:
| Field | Description |
|---|---|
plan_id | Catalog id for this face value. Use it for quote, availability, and purchase |
title | Display name — includes country when known (e.g. Adidas €5 ES) |
brand | Normalized brand |
region | Country / market code when known (US, UK, ES, FR, …) |
ui_category | Category grouping |
face_value | Fixed denomination (when applicable) |
min_price / max_price | Allowed range for variable-denomination products |
currency_code | Product currency |
ngn_price | NGN amount debited per card from your wallet on purchase |
fixed_price | true when denomination is fixed |
featured | Highlighted product |
Country in titles
Most catalog titles include a short country code so markets are easy to tell apart:
Adidas €5 ES— SpainAdidas €5 FR— FranceNike €20 DE— GermanyPlayStation $20 BH— Bahrain
region carries the same code when available. plan_id is the purchase key. The same brand and amount in another country is a different plan.
Example response (truncated):
{
"status": "success",
"code": 200,
"message": "catalog retrieved",
"data": [
{
"plan_id": 1076,
"title": "Adidas €5 ES",
"brand": "Adidas",
"region": "ES",
"ui_category": "Travel & Lifestyle",
"face_value": 5,
"currency_code": "EUR",
"ngn_price": "12500.00",
"fixed_price": true,
"featured": false
},
{
"plan_id": 1082,
"title": "Adidas €5 FR",
"brand": "Adidas",
"region": "FR",
"ui_category": "Travel & Lifestyle",
"face_value": 5,
"currency_code": "EUR",
"ngn_price": "12500.00",
"fixed_price": true,
"featured": false
}
]
}Get NGN quote
GET /v1/giftcards/plans/{plan_id}/quoteOr:
POST /v1/giftcards/quote{ "plan_id": 1001 }Returns the current NGN debit amount for a plan_id before you purchase.
Check availability
GET /v1/giftcards/plans/{plan_id}/availability?quantity=1plan_id is the catalog id for one face value. Quantity defaults to 1 and must not exceed 5. The face value is taken from that plan.
{
"status": "success",
"code": 200,
"message": "availability retrieved",
"data": {
"available": true,
"detail": "available",
"fulfillment": "immediate"
}
}data.fulfillment is the stock status for that plan:
fulfillment | Meaning | Purchase |
|---|---|---|
immediate | In stock. The card is returned on the order. | Allowed |
standard | In stock. The card can take a few minutes. If purchase returns 02, poll the order. | Allowed |
out_of_stock | Out of stock. | Rejected |
preorder | Pre-order only. | Rejected |
Purchase
POST /v1/giftcards/ordersOn test credentials, purchase is simulated after catalog validation (availability always succeeds) and usually returns 00 immediately with placeholder card fields. See Environments — Test gift cards.
Pass plan_id from the catalog. Face value and price are taken from that plan. Pick the row whose region / title country matches the customer’s market.
curl -X POST "https://api.breezeinnovations.io/v1/giftcards/orders" \
-H "Content-Type: application/json" \
-H "X-Merchant-Key: mk_your_key_id" \
-H "X-Merchant-Secret: your_issued_secret" \
-d '{
"request_id": "gc-order-20260818-001",
"plan_id": 1076,
"quantity": 1
}'| Field | Required | Description |
|---|---|---|
request_id | Yes | Your idempotency key (unique per merchant) |
plan_id | Yes | Catalog id for one face value |
quantity | No | Number of cards (default 1, max 5). Wallet debit = per-card ngn_price × quantity |
send_via | No | How the card is sent: email, sms, or whatsapp. Leave it out to receive the card only on the order response |
destination | If send_via is set | Email address or phone number that receives the card |
Response codes
response_code | status | Meaning |
|---|---|---|
00 | success | Success — card details in data |
02 | pending | Pending — poll order status |
01 | failed | Failed |
HTTP 200 — successful purchase:
{
"status": "success",
"response_code": "00",
"response_message": "Successful",
"data": {
"request_id": "gc-order-20260818-001",
"product": "giftcard",
"internal_reference": "019262ab-7c4d-7000-8000-000000000099",
"reference_code": "EZ-REF-12345",
"product_title": "Adidas €5 ES",
"amount": "12500.00",
"merchant_id": 10,
"cards": [
{
"card_number": "XXXX-XXXX-XXXX",
"pin_code": "1234",
"claim_url": "https://example.com/redeem/abc"
}
]
}
}cards contents vary by product (number, PIN, claim URL, etc.). Pending orders omit card details until fulfillment completes.
Poll order status
GET /v1/giftcards/orders/{request_id}Use the same request_id you sent on purchase. Response uses the same envelope as purchase.
Integration flow
GET /v1/giftcards/catalog→ browse or cache products (notetitle+region)- Choose the
plan_idfor the customer’s country — not the title alone - Optional:
GET /v1/giftcards/plans/{plan_id}/quote→ confirm NGN price per card - Check wallet balance
POST /v1/giftcards/orderswith thatplan_idand a uniquerequest_id- If
response_codeis02, pollGET /v1/giftcards/orders/{request_id}until00or01
Errors
| HTTP | Meaning |
|---|---|
400 | Invalid plan_id, price out of range, out of stock, or bad request body |
401 | Missing or invalid merchant credentials |
422 | Duplicate request_id for this merchant |
502 | Catalog or fulfillment unavailable |
503 | Gift card service disabled |