Skip to Content
Gift cards

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

OperationJSON shape
Catalog, quote, availabilitystatus, code, message, data
Purchase & order statusstatus, 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
QueryDescription
searchFilter by product title or category
brandFilter by brand name, e.g. Netflix
currencyFilter by currency code, e.g. USD
categoryFilter by UI category, e.g. Gaming
featuredSet to true for featured products only

Each item includes:

FieldDescription
plan_idCatalog id for this face value. Use it for quote, availability, and purchase
titleDisplay name — includes country when known (e.g. Adidas €5 ES)
brandNormalized brand
regionCountry / market code when known (US, UK, ES, FR, …)
ui_categoryCategory grouping
face_valueFixed denomination (when applicable)
min_price / max_priceAllowed range for variable-denomination products
currency_codeProduct currency
ngn_priceNGN amount debited per card from your wallet on purchase
fixed_pricetrue when denomination is fixed
featuredHighlighted product

Country in titles

Most catalog titles include a short country code so markets are easy to tell apart:

  • Adidas €5 ES — Spain
  • Adidas €5 FR — France
  • Nike €20 DE — Germany
  • PlayStation $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}/quote

Or:

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=1

plan_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:

fulfillmentMeaningPurchase
immediateIn stock. The card is returned on the order.Allowed
standardIn stock. The card can take a few minutes. If purchase returns 02, poll the order.Allowed
out_of_stockOut of stock.Rejected
preorderPre-order only.Rejected

Purchase

POST /v1/giftcards/orders

On 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 }'
FieldRequiredDescription
request_idYesYour idempotency key (unique per merchant)
plan_idYesCatalog id for one face value
quantityNoNumber of cards (default 1, max 5). Wallet debit = per-card ngn_price × quantity
send_viaNoHow the card is sent: email, sms, or whatsapp. Leave it out to receive the card only on the order response
destinationIf send_via is setEmail address or phone number that receives the card

Response codes

response_codestatusMeaning
00successSuccess — card details in data
02pendingPending — poll order status
01failedFailed

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

  1. GET /v1/giftcards/catalog → browse or cache products (note title + region)
  2. Choose the plan_id for the customer’s country — not the title alone
  3. Optional: GET /v1/giftcards/plans/{plan_id}/quote → confirm NGN price per card
  4. Check wallet balance
  5. POST /v1/giftcards/orders with that plan_id and a unique request_id
  6. If response_code is 02, poll GET /v1/giftcards/orders/{request_id} until 00 or 01

Errors

HTTPMeaning
400Invalid plan_id, price out of range, out of stock, or bad request body
401Missing or invalid merchant credentials
422Duplicate request_id for this merchant
502Catalog or fulfillment unavailable
503Gift card service disabled
Last updated on