Test data
The test environment (https://test.unipay.co.zw) has a sandbox service provider whose bills and accounts you can look up and pay
straight away, with your own test credentials. It exists only on the test environment — production has no sandbox, and these numbers
find nothing there.
| Provider | UniPay Sandbox |
| Provider number | 990000 |
| Short code | SBOX |
| Accepts | USD, ZWG (default USD) |
| Exchange rate | 1 USD = 25 ZWG, published every day |
Use your own client_id and client_secret: the sandbox is a provider you pay, not an organisation you sign in as, and it has no
credentials of its own. Nothing paid to it is real money, receipted or settled.
Bills and accounts
Section titled “Bills and accounts”Look a bill up by its billNo, or by account with "serviceProvider": "SBOX" (or "990000") and the accountNumber.
status is explained in Lookup status.
| Bill | Account | Currency | Balance | Lookup returns | Paying it |
|---|---|---|---|---|---|
SBXOWEUSD |
SBXA01 |
USD | 1,000,000.00 | status 1 Owing |
Accepted; the balance goes down. |
SBXOWEZWG |
SBXA02 |
ZWG | 25,000,000.00 | status 1 Owing |
Accepted. |
SBXDUALUSD |
SBXA03 |
USD | 500,000.00 | status 1 Owing. By account, otherCurrenciesAvailable is ["USD","ZWG"]; without currency you get the USD bill. |
Accepted. |
SBXDUALZWG |
SBXA03 |
ZWG | 12,500,000.00 | status 1 Owing — the same account’s ZWG bill; ask by account with "currency": "ZWG". |
Accepted. |
SBXSETTLED |
SBXA04 |
USD | 0.00 | status 2 NotOwing — Account is settled; nothing currently due by account. |
Accepted; the account goes into credit (status 4) until the next reset. |
SBXCREDIT |
SBXA05 |
USD | −75.50 | status 4 InCredit — Account is in credit by account. |
Accepted; the credit grows. |
SBXEXPIRED |
SBXA06 |
USD | 150.00 | By bill: status 1 with an expiryDate in the past — check it before debiting. By account: status 0, No outstanding bill found and no account on record for this number. |
Refused: Invoice has expired. |
SBXCONVERT |
SBXA07 |
USD | 1,000,000.00 | status 1 Owing. Ask with "currency": "ZWG" and the response adds conversionApplied: true, rate: 25 and convertedRemainingBalance. |
Pay in USD, or in ZWG: 250 ZWG is credited as 10.00 USD. See Currencies. |
| — | SBXA08 |
USD | — | By account: successful: false, status 3 Unknown, Account standing is stale; no current information for this number. |
Nothing to pay. |
A few more outcomes you can produce with the same data:
- Replay: pay again with the same
rrn, bill, amount and currency and you getsuccessful: true,isNewRecord: false,Duplicate notification; already processed.The samerrnwith a different amount is refused:RRN '…' was already used for a different payment. See Idempotency and retries. - A currency the provider doesn’t take: paying in
EURis refused withCurrency 'EUR' is not accepted by this service provider. Accepted currencies: USD, ZWG. - A bill that doesn’t exist: any other
SBX…number returnsBill 'SBX…' not found.
Balances move, then reset
Section titled “Balances move, then reset”The sandbox is shared by every partner on the test environment, so what you see includes everyone’s payments:
- A payment reduces the bill’s balance for the rest of the business day (Harare time) — look the bill up again and
totalPaidandremainingBalancereflect it. - At the start of the next business day each bill is reset to the balance in the table. Its
totalAmountrises by what was paid before that day so thatremainingBalanceis back where it started; the payments themselves stay on record. - The owing bills are large so that a day’s testing does not pay them off.
So write your tests against status, message and the field shapes, not against an exact balance.
UniPay API v1 · build e1eb5c49 · Powered by Axis Solutions