Skip to content

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.

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 get successful: true, isNewRecord: false, Duplicate notification; already processed. The same rrn with 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 EUR is refused with Currency 'EUR' is not accepted by this service provider. Accepted currencies: USD, ZWG.
  • A bill that doesn’t exist: any other SBX… number returns Bill 'SBX…' not found.

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 totalPaid and remainingBalance reflect it.
  • At the start of the next business day each bill is reset to the balance in the table. Its totalAmount rises by what was paid before that day so that remainingBalance is 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