Skip to content

Top-ups

Create a Taura top-up for a phone number and read the result from the returned status.

Top-up statuses

StatusWhat your integration should do
pendingWait and check the top-up again before updating the customer order.
completedMark the customer order as successful.
failedRead failure_reason. Use a new ref only if the customer wants another attempt.
under_reviewDo not submit a duplicate. Keep the uuid and ref, and contact Xash support if needed.

Top-up fields

FieldTypeNotes
uuidstringTaura Xashpay top-up identifier.
refstringYour reference for the customer request.
recipientstringRecipient phone number.
unitsnumberTop-up amount in UNITS.
statusstringpending, completed, failed, or under_review.
wallet_transaction_uuidstring|nullRelated wallet transaction identifier.
vendor_referencestring|nullCompletion reference when available.
failure_reasonstring|nullReason supplied for an unsuccessful or reviewed top-up.
created_atstring|nullISO 8601 timestamp.

POST/api/v1/taura/topups

Create a top-up.

Request body

FieldTypeRequiredNotes
recipientstringYesPhone number in E.164 format, such as +263775696233. Maximum 16 characters.
unitsnumberYesPositive amount in UNITS.
refstringYesYour unique reference. Maximum 120 characters.

Use the same ref for the same request

If you retry the same customer request, send the same ref. The API returns the existing top-up instead of creating another one. Use a new ref only for a new customer request.

Example request

bash
curl --request POST "https://taura.xashpay.com/api/v1/taura/topups" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer TOKEN" \
  --data '{
    "recipient": "+263775696233",
    "units": 25.00,
    "ref": "ORDER-10045"
  }'

Response: 201

json
{
  "topup": {
    "uuid": "2236170a-85fb-4354-ab0b-941871ecfab0",
    "ref": "ORDER-10045",
    "recipient": "+263775696233",
    "units": 25.0,
    "status": "completed",
    "wallet_transaction_uuid": "9cbce09d-0d13-4cad-a7aa-537f51f5ef23",
    "vendor_reference": "TXN-10045",
    "failure_reason": null,
    "created_at": "2026-08-31T08:20:00+00:00"
  }
}

Always branch on status. Do not treat HTTP 201 alone as confirmation that the top-up completed.

Request errors

  • HTTP 422 means a request field is invalid or the wallet balance cannot cover the amount.
  • HTTP 429 means the rate limit was reached. Wait for Retry-After, then retry with the same ref.

See Errors for the response format.

GET/api/v1/taura/topups

List your top-ups, newest first.

Query parameters

ParameterTypeRequiredNotes
per_pageintegerNoDefault 20.
pageintegerNoPage number, starting at 1.

Example request

bash
curl "https://taura.xashpay.com/api/v1/taura/topups?per_page=20" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer TOKEN"

The response contains a topups array. Each item uses the fields listed in Top-up fields. Request the next page with ?page=2. An empty array means that page has no records.

Taura Xashpay vendor API documentation. Contact Xash support for access.