Standard Bundles API Ghana — MTN, Telecel & AirtelTigo Internet Bundles

List the live bundle catalog per network and family, then buy a bundle from your wallet at face price. You earn a share of the provider commission into your Commission Wallet after delivery. Orders are delivered in the background; use webhooks for the final status (or poll sparingly). Orders that cannot be delivered are refunded to your wallet automatically.

Endpoints

Base URL: https://api.kingflexygh.com/api/v2 · Requires a Commission Services API key (kf_cs_live_...) sent raw in the Authorization header.

  • GET /bundles/catalog

    List live Standard Bundles for a network

  • POST /bundles/purchase

    Buy a Standard Bundle, a Special Bundle (by pack_id) or a Telecel Broadband top-up

  • GET /bundles/orders

    List your recent Standard Bundle orders

  • GET /bundles/orders/{reference}

    Check one Standard Bundle order's status

Example request

curl -X POST 'https://api.kingflexygh.com/api/v2/bundles/purchase' \
  -H 'Authorization: kf_cs_live_your_commission_key_here' \
  -H 'Content-Type: application/json' \
  -d '{
  "network": "MTN",
  "beneficiary_phone": "0200000000",
  "value": "value-from-/bundles/catalog",
  "amount": 20,
  "reference": "bundle-1001"
}'

Special Bundle example

curl -X POST 'https://api.kingflexygh.com/api/v2/bundles/purchase' \
  -H 'Authorization: kf_cs_live_your_commission_key_here' \
  -H 'Content-Type: application/json' \
  -d '{
  "pack_id": "pack_id-from-/bundles/catalog",
  "beneficiary_phone": "0200000000",
  "reference": "bundle-1002"
}'

Tips & recommendations

  • Cache GET /bundles/catalog and refresh it every few minutes to an hour; do not call it before every purchase. Use the ETag with If-None-Match for cheap revalidation. Excessive catalog or status polling is rate limited.
  • Prefer webhooks (order.completed / order.failed, product "bundles", verify the X-KFT-Signature HMAC-SHA256 of the raw body, deduplicate on event_id) over polling. If you poll an order, do it sparingly with back-off and stop at a terminal status (completed, failed, refunded).
  • Send a unique reference per purchase and reuse the SAME reference on any retry; never generate a new reference for a retry. A repeat returns the original order (is_duplicate: true); a 409 means the first attempt is still being processed.
  • If you get a 429, wait the time in the response (Retry-After header) and slow your overall request rate.
  • Pass a bundle's value and amount back exactly as the catalog returned them, or send only pack_id for a Special Bundle.

Also on USSD

Customers can also buy this on USSD by dialling *713*9939#. Shop owners can activate their own USSD code branded with their shop name from Dashboard > Shop > USSD.

More about USSD for resellers

Get started

More from KiNG FLEXY GH