Skip to content

Endpoints ​

Base URL: https://partners.xash.co.zw/api/v1. Send Authorization: Bearer <key> and JSON bodies. Full schemas: openapi.json.

Account ​

MethodPathWhat it doesAbility
GET/meWho am I. Your partner, the environment this key is for, your tier, abilities and how much of each limit is used today.any
GET/balancesBalance. Available and reserved balance in USD.balance:read
GET/statementStatement. Ledger entries (top-ups, sales, collections, releases, reversals) with the running balance. Filter with from and to.balance:read

Catalogue ​

MethodPathWhat it doesAbility
GET/productsList products. Everything you can sell, with your price, limits and the recipient fields each product needs. Filter with category, operator and currency.catalogue:read
GET/products/{code}One product. A single product by its code, e.g. econet.airtime.catalogue:read
POST/lookups/mobileIdentify a phone number. Returns the operator for a phone number and the products you can sell to it.catalogue:read
GET/branchesList branches. Your branches, for tagging sales and collections.catalogue:read

Sales ​

MethodPathWhat it doesAbility
POST/quotesQuote a sale. Step 1 of every sale. Validates the recipient (meter name, biller account) and returns the price, fee and total debit. Quotes last 5 minutes.transactions:write
POST/transactionsMake a sale. Step 2: spend a quote. 201 means completed. 202 means pending: wait for the webhook or GET it, and never buy again. Replaying the same reference and Idempotency-Key returns the original sale. Needs Idempotency-Key.transactions:write
GET/transactionsList or find sales. Filter by reference, status, branch_id, from and to.transactions:read
GET/transactions/{id}One sale. The authoritative status of a sale, with the token or PIN and receipt data once completed.transactions:read

Collections ​

MethodPathWhat it doesAbility
POST/collectionsCollect from a customer. Starts an EcoCash, OMari or InnBucks payment from your customer into your balance. Always 202 pending first; next_action says what happens next. Collections are free, and the money is spend-only. Needs Idempotency-Key.collections:write
POST/collections/{id}/confirmConfirm an OMari collection. Submit the OTP your customer received.collections:write
GET/collectionsList or find collections. Filter by reference, status, method, branch_id, from and to.collections:read
GET/collections/{id}One collection. The authoritative status of a collection.collections:read

Top-ups ​

MethodPathWhat it doesAbility
POST/fundingsTop up by mobile money or USDT. Starts a top-up of your own balance. Bank transfers are matched by Finance using your partner code as the payment reference. Needs Idempotency-Key.funding:write
GET/fundings/{id}One top-up. The status of a top-up.funding:write

Webhooks ​

MethodPathWhat it doesAbility
POST/webhooks/testSend a test event. Sends a signed test event to your webhook URL so you can check your verification code.any

Xash Partners API. Sandbox keys never move real money.