Test vs Live mode
Every Merchant account has two separate modes, distinguished by API key
prefix: sk_test_... and sk_live_.... Data created under one mode (Checkout
Sessions, Payouts) is never visible or actionable under the other.
Test mode
Granted instantly at signup — no documents, no waiting. Test mode integrates against Provider sandboxes, so you can build and test your full integration before Verification is even submitted.
Live mode
Unlocked once your Verification submission is reviewed and approved:
Both tiers send a TIN and a photo of the TIN card, plus:
- Business accounts verify via company registration, and pay out via weekly bank transfer every Monday.
- Individual accounts verify via personal ID (FNPF card, passport, driver’s licence, or Voter ID), and pay out wallet-to-wallet to the Merchant’s own Provider wallet every day, since they typically have no business bank account.
Verification is reviewed asynchronously in the background — there’s no blocking modal or sales call. You can keep integrating in Test mode while it’s pending.
Live mode also opens one Provider at a time, as each Provider’s agreement with Transxact is signed. Until at least one Provider takes Live mode payments, the dashboard shows Live mode as a waitlist.
Getting a Live mode key
Once your account is verified and a Provider is live, the dashboard shows a Create Live mode key button. The key is shown once — copy it then. We only keep a hash of it.
Which Providers a customer sees
A Live mode Checkout Session only offers the Providers that are live — the hosted payment page hides the rest. Test mode Checkout Sessions always offer every Provider.
Creating a Live mode Checkout Session while no Provider is live returns
409 with a stable error code you can branch on:
Payouts
Set where you’re paid on the dashboard’s Where we pay you page: a bank account for a Business account, an M-PAiSA or MyCash number for an Individual account. Changing it needs a login through an emailed link.
Each Payout from GET /v1/payouts has a status:
pending— on its way to your payout destination.paid— sent.paidAtsays when.failed— the transfer didn’t go through.failureReasonsays why. The amount goes back on your balance and out again in your next Payout.
Test mode Payouts are always paid, since no real money moves. Live mode
money stays on your balance, with no Payout created, until you’ve set where
you’re paid.
Switching over
No code changes are needed beyond swapping which API key you use — the same
endpoints and request/response shapes work in both modes. Just point your
integration at sk_live_... once you have one.