Betting
Operator names (no plan IDs): Catalog.
Fund a customer’s betting wallet. Use product BETTING, put the betting customer / account ID in customer_msisdn, and send a catalog plan_code.
POST /v1/transactionsExternal create is sync — the response includes the final outcome. Response shapes: Field conventions.
1. List betting plans
GET /v1/plans/bills/bettingOptional filter: ?network=BET9JA.
curl "https://api.breezeinnovations.io/v1/plans/bills/betting?network=BET9JA" \
-H "X-Merchant-Key: mk_your_key_id" \
-H "X-Merchant-Secret: your_issued_secret"Use the returned plan id as plan_code on verify and purchase. plan_code and network must match — e.g. 9002 is Bet9ja (BET9JA), 9001 is SportyBet (SPORTYBET).
Betting network values
BET9JA, SPORTYBET, 1XBET, BETKING, BETWAY, NAIRABET, MERRYBET, BANGBET
2. Verify betting account (optional)
Validate a betting customer ID without creating a transaction. You may skip this and go straight to purchase. No client_request_id on verify.
POST /v1/transactions/verifycurl -X POST "https://api.breezeinnovations.io/v1/transactions/verify" \
-H "Content-Type: application/json" \
-H "X-Merchant-Key: mk_your_key_id" \
-H "X-Merchant-Secret: your_issued_secret" \
-d '{
"merchant_code": "YOUR_MERCHANT",
"customer_msisdn": "TESTBET001",
"network": "BET9JA",
"product": "BETTING",
"plan_code": "9002"
}'| Field | Required | Description |
|---|---|---|
merchant_code | Yes | Your merchant profile |
customer_msisdn | Yes | Betting platform customer / account ID |
network | Yes | Platform code (e.g. BET9JA) |
product | Yes | BETTING |
plan_code | Yes | Catalog id from plans list |
HTTP 200:
{
"status": "success",
"code": 200,
"message": "customer verified",
"data": {
"product": "BETTING",
"network": "BET9JA",
"msisdn": "TESTBET001",
"customer_name": "Test Customer",
"customer_username": "test_user"
}
}On test credentials this is the body for TESTBET001. On live credentials the call checks a real betting customer ID and returns that account’s customer_name. customer_username is included when the account has one. Empty values are omitted.
HTTP 400 — the betting ID was rejected, or the request was invalid. This is not an outage. Do not retry as if the API is down.
HTTP 502 — verify could not be completed. Retry with backoff. message is generic.
3. Fund betting wallet
curl -X POST "https://api.breezeinnovations.io/v1/transactions" \
-H "Content-Type: application/json" \
-H "X-Merchant-Key: mk_your_key_id" \
-H "X-Merchant-Secret: your_issued_secret" \
-d '{
"merchant_code": "YOUR_MERCHANT",
"customer_msisdn": "TESTBET001",
"network": "BET9JA",
"product": "BETTING",
"plan_code": "9002",
"amount": "1000",
"phone": "08012345678",
"client_request_id": "breeze-betting-bet9ja-001"
}'| Field | Required | Description |
|---|---|---|
merchant_code | Yes | Your merchant profile |
customer_msisdn | Yes | Betting platform customer / account ID |
network | Yes | Platform code (e.g. BET9JA) |
product | Yes | BETTING |
plan_code | Yes | Catalog id from plans list |
amount | Yes | Top-up amount in Naira (string) |
phone | Yes | Customer mobile number (080… or 234…). Not the betting account ID |
client_request_id | Yes | Unique idempotency key |
4. Check status (optional)
To re-fetch a transaction later:
GET /v1/transactions/status?client_request_id={client_request_id}See Airtime Async — Check status.
Test betting accounts
On test credentials, only TESTBET001 is accepted as customer_msisdn. Purchase returns the same success envelope as live (response_code 00, response_message Successful). Verify returns customer_name Test Customer and customer_username test_user. Any other betting ID is rejected.
Live credentials always require a real betting customer ID.
Ask your account manager to enable betting on your merchant profile before go-live.