On create, reseller rate-card pricing computes `net_payable` and debits the main wallet. Commission/charge rules are configured in the admin panel.
net_payable ≈ amount − commission (+ charge if configured)
# Fail / cancel / timeout → wallet credit (cashback) of the debited amount
HTTP Status Codes & Response Reference
Common HTTP status codes from Public API v1:
Code
Status
Description
200
OK / SUCCESS
Request accepted / completed. TrxID returned.
400
BAD_REQUEST
Invalid payload or phone number.
401
UNAUTHORIZED
Missing or invalid API key.
402
INSUFFICIENT_BALANCE
Reseller wallet balance is insufficient.
403
FORBIDDEN
Inactive key or API access facility blocked.
API Sandbox (All Endpoints)
Sandbox
Test recharge, MFS, drive, balance, status & webhook here. Browser demo does not call live API; use `mtc_test_…` keys for real sandbox server responses.
Use keys starting with `mtc_test_` (environment=test).
Works for ALL endpoints: recharge, MFS, drive, balance, status.
No wallet debit and no live USSD/gateway — responses include `"sandbox": true`.
Generate a test key from the user panel API credentials.
POST /packages — list active drive + regular packs and MFS operators.
Use this to sync packages onto a peer/white-label site (API Gateways → MTC Upstream → Sync Packages).
Optional filters: operator, pack_kind=drive_offer|regular_pack.
Auth: same live/test key + IP whitelist.
Live keys (mtc_live_) must be created with an IP whitelist.
Only listed IPs/CIDRs can call the API; others get HTTP 403.
Peer sites: whitelist the child server public IP on the parent merchant key.
Test keys (mtc_test_) may omit whitelist for sandbox.
# Generate live key with whitelist in Merchant API management
# Example whitelist: 203.0.113.10, 198.51.100.0/24