Payment links
Fixed price, or let the customer choose the amount for a deposit or a donation. Close it after one payment, cap it at a hundred, or leave it open.
Zimbabwe · USD and ZWG
EcoCash, InnBucks, OneMoney, O'mari, SmileCash, ZB eWallet and card — through one account, settled into your bank. Share a link and get paid this afternoon, or integrate the API when you are ready.
Settled through ZB Bank's Smile&Pay. Verification is required before you can accept live payments.
Not a subset. If a customer can pay with it in Zimbabwe, you can accept it — and you choose which to offer on each payment.
No developer required
A payment link is a web address. Send it on WhatsApp, print it as a QR code, read it down the phone. The customer opens it, chooses how to pay, and the money lands in your balance.
Fixed price, or let the customer choose the amount for a deposit or a donation. Close it after one payment, cap it at a hundred, or leave it open.
Numbered sequentially, with VAT applied to the subtotal so the document adds up when your client checks it. Issuing one produces a page they can pay on. An ageing report shows what you are owed and how late it is.
Bill the same customer on a schedule. Each cycle raises an invoice and sends them a link — we do not charge a stored card, because the rails in this market do not offer one, and we would rather say so than let you promise it.
Block a number or an address. Cap how many payments one customer can push through in an hour. Start a rule in observation and watch what it would have stopped before you let it refuse anybody.
For developers
A REST API with idempotency, signed webhooks and a sandbox that behaves like
production. Change method and the same request reaches a different
rail.
curl https://api.payflow.co.zw/v1/payments \ -H "X-API-Key: pk_live_..." \ -H "X-API-Secret: sk_live_..." \ -H "Idempotency-Key: order-4172" \ -d '{ "reference": "ORDER-4172", "amount": "45.00", "currency": "USD", "method": "ecocash", "item_name": "Handwoven basket", "payer": { "mobile": "0771234567" } }'
201 Created { "id": "pay_06GAKSH836AD7RJWA3DF", "status": "awaiting_payment", "next_action": { "type": "await_payer", "message": "A prompt has been sent to the customer's phone." }, "platform_fee": { "minor": 88, "formatted": "0.88" }, "net": { "minor": 4412, "formatted": "44.12" } }
Retry a create with the same Idempotency-Key and you get the
original payment back, not a second charge.
HMAC-signed with a timestamp, so a replayed delivery is detectable. Failed deliveries retry for 24 hours and are visible in your dashboard.
Test keys work the moment you register, before verification. Same API, same responses, no money.
Every response says which version served it. A version scheduled for retirement says so in the headers, at least twelve months ahead.
Pricing
No monthly fee, no setup fee, no charge for a payment that fails. Our standard rates, in USD:
| Method | Fee | Minimum | On USD 45.00 |
|---|---|---|---|
| EcoCash, OneMoney, InnBucks | 0.20 + 1.50% | 0.15 | 0.88 |
| Other mobile wallets | 0.30 + 1.90% | 0.25 | 1.16 |
| Visa & Mastercard | 0.30 + 2.90% | 0.50 | 1.61 |
Absorb the fee, or add it to what the customer pays — per account, or per transaction. A shop absorbs it; a school collecting fees usually passes it on.
Both currencies are supported with their own rates and caps. Your exact schedule is always visible in your dashboard.
These are the standard rates. If you are processing at scale, talk to us — rates are set per account.
Every movement is a balanced posting. Balances are derived from the entries that justify them, never stored and never adjusted by hand.
Isolation is enforced twice — in the application and again by the database itself, so a bug in one cannot expose another business's money.
A PAN passes through to the bank and is discarded. We keep the last four digits and the brand, because that is all anyone needs.
Every account passes KYC before it can take live payments, reviewed by two people. It is what keeps the platform clean for everyone on it.
Registration takes a few minutes and gives you sandbox keys immediately. Business verification unlocks live payments, usually within two business days.