Pesapal
Pesapal is East Africa's leading payment gateway. Connect it to Tranzo POS to accept Visa, Mastercard, and online M-Pesa from any customer with a phone.
What Pesapal handles
- Card payments — Visa, Mastercard, AmEx
- M-Pesa online — checkout via STK push
- Airtel Money (where supported)
- Bank transfers (selected banks)
What Pesapal does NOT handle
- Cash — that's manual
- M-Pesa till payments at counter — that's your manual till, not Pesapal
- Refunds — those go through Pesapal's merchant dashboard, not Tranzo
Setting up Pesapal
Step 1 — Sign up with Pesapal
Go to pesapal.com and create a merchant account. They'll issue you a Consumer Key and Consumer Secret.
Step 2 — Connect to Tranzo
- Drawer → Settings → Pesapal
- Choose environment: Sandbox for testing, Live for real payments
- Paste in your Consumer Key and Consumer Secret
- Save
- Tap Test connection — confirms credentials work
Step 3 — Test a transaction
In sandbox mode, ring up a sale, choose Card, and use Pesapal's test card numbers (provided in their docs). Verify the sale completes and the receipt shows Pesapal confirmation.
Step 4 — Go live
Once tests are clean, switch the environment to Live and re-enter your live credentials. Real payments now flow through.
How a Pesapal transaction works
- Cashier rings up the sale, taps Pay → Card
- Tranzo creates a Pesapal payment link (deep link or QR code)
- Customer scans the QR with their phone or taps the link
- Pesapal hosts the checkout — Visa, Mastercard, M-Pesa, etc.
- Customer completes payment on their phone
- Pesapal sends an IPN (Instant Payment Notification) back to Tranzo
- Tranzo marks the sale as paid, prints the receipt
The IPN endpoint
Tranzo registers an IPN URL with Pesapal during setup. This is the URL Pesapal calls to notify us of payment status changes. You don't need to think about this — it's automatic. Just don't change your domain without re-registering.
Refunds
Card refunds happen through Pesapal's own merchant dashboard, not through Tranzo. Tranzo can mark a sale as voided (and reverse stock and loyalty), but the actual money refund is initiated by you on Pesapal's side.
Settlement
Pesapal settles funds to your bank account on a schedule defined in your contract with them — usually T+1 or T+2. They take a fee per transaction (typically 2.5–3.5% for cards, lower for M-Pesa). Check your Pesapal statement, not Tranzo.
Common issues
"Connection failed"
Wrong key/secret, or you're using sandbox creds in live mode (or vice versa). Re-check Settings → Pesapal.
Customer paid but Tranzo doesn't show it
IPN didn't reach us. Tranzo polls Pesapal as a fallback, so the sale will mark paid within ~30 seconds. If it stays stuck for 5+ min, manually refresh from Sales → tap the sale → Refresh status.
Customer scanned the QR but checkout never appeared
Their browser blocked the redirect, or the payment link expired (15 min lifetime). Cancel the sale on the POS and start over.
Who can manage Pesapal
- Owner + Manager — settings, IPN registration, environment switching
- Cashier — initiates Pesapal payments at POS but can't change settings