How Deposits Work
Pesavoucher deposits are designed to be simple and secure. Follow these steps to correctly handle deposits in your system.
Generate an internal order_id in your system.
This ID is only for your tracking and internal use — it is not sent to Pesavoucher.
your internal order_idyour user reference
Send the deposit request including:
- User phone number
- Amount
- Callback URL
Note: You do not need to send your
order_id— Pesavoucher will handle the official transaction reference.
{"phone_number": "254712345678","amount": 1000.00,"callback_url": "https://yourapp.com/webhook/deposit"}
Pesavoucher will return an official payment_id — the transaction reference. Save this alongside your internal order and user reference:
Your order_id | Your user | Pesavoucher payment_id |
|---|---|---|
| ORD-2026-001 | 123 | PV-XYZ-987654321 |
Pesavoucher will send a webhook to your specified callback_url with:
payment_id- Final status (
Success,Failed,Cancelled,Timeout)
{"payment_id": "PV-XYZ-987654321","status": "Success","amount": 1000.00}
Only credit the user if the webhook status is Success.
Do not credit for:
FailedCancelledTimeout
Always rely on the webhook to confirm the final status.
- Your
order_id→ internal tracking only - Pesavoucher
payment_id→ official transaction reference - Link them together in your database
- Credit user only when webhook status is
Success
This ensures accurate reconciliation and avoids duplicate or incorrect credits.