Skip to main content
Every response includes a status field and a human-readable message. Always branch on status rather than HTTP code alone.

Status values

statusMeaning
successThe service was delivered and your wallet was debited.
failThe transaction did not go through. Read message for the reason. No charge, or an automatic refund, applies.
pendingThe transaction is being processed. The final outcome is delivered via webhook.

Example failure

{
  "status": "fail",
  "message": "Insufficient wallet balance.",
  "request-id": "Data_12345678900"
}

Common errors

Missing or invalid token. Send Authorization: Token <your_api_key> — see Authentication.
Top up your wallet from the dashboard before retrying.
A transaction with that request-id already exists — the original result is returned instead of charging again. Use a fresh request-id for a new purchase.
Check the plan ID / network ID against the catalog endpoints or the dashboard’s Pricing & Plan IDs page.
For pending transactions, never re-send the purchase — wait for the webhook, or re-query using the same request-id.