Blog

Wallet-as-a-Service on Paysasa: Offer User Balances Without Building a Wallet Stack

News

Platforms, marketplaces and apps can keep end-user balances on Paysasa through one master wallet and virtual sub-accounts, with M-Pesa deposits, withdrawals and webhooks handled for them.

Many apps and platforms want to give their users a balance: a loyalty app with reward balances, a savings app, a marketplace that holds seller earnings, a school system that tracks pocket money, a SACCO tool. Building a full wallet system from scratch — with deposits, withdrawals, reconciliation and notifications — is a large and risky project.

Wallet-as-a-Service (WaaS) on Paysasa offers a simpler route, and it is available for verified businesses today. This update explains what WaaS is, how it works and who it is for.

What is Wallet-as-a-Service?

With WaaS, your platform holds funds in one master business wallet on Paysasa while tracking virtual sub-accounts for each of your end-users. Real money moves only through the master wallet. Your platform keeps its own internal user balances and updates them from WaaS webhooks.

Paysasa handles the payment plumbing: M-Pesa deposits, STK checkout, withdrawals and event notifications — without the need for a full Paysasa wallet per end-user.

How Wallet-as-a-Service pools funds and tracks each user
How Wallet-as-a-Service pools funds and tracks each user

How deposits work

Each virtual account gets two Paybill account references that customers can use on M-Pesa: a readable one (for example, `WAAS-MATHEW`) and a numeric serial reference. Both credit the same virtual account when the deposit is confirmed.

Platforms can control deposit channels:

  • Manual deposits — customers pay through Paybill or the SIM toolkit using their virtual account reference.
  • API deposits — your app starts a deposit through checkout or an STK prompt.

Both channels are on by default and can be toggled. When manual deposits are switched off, unmatched Paybill payments are rejected and refunded to the payer rather than credited.

How withdrawals work

Withdrawals can be sent from the master wallet to M-Pesa or to a wallet, and withdrawal webhooks include the destination type. Money-moving requests support idempotency keys, so retries do not create duplicate payouts.

Visibility for the merchant

WaaS gives platforms clear views of their money:

  • The master wallet balance, spendable amount and reserved amount.
  • Each virtual account's attributed balance, with an optional ledger view.
  • Per-user transaction history for deposits and withdrawals.

Webhook events such as `waas.deposit.success` and `waas.withdrawal.success` (plus failure variants) keep your internal balances in sync in real time.

What WaaS gives a platform out of the box
What WaaS gives a platform out of the box

Who is WaaS for?

  • Marketplaces that hold seller earnings before payout.
  • Savings and investment apps that track user contributions.
  • Education platforms managing student or parent balances.
  • Community platforms, clubs and associations tracking member funds.
  • Gaming, rewards and loyalty apps with in-app credits.

An illustrative example

Imagine a school canteen app. Each student has a virtual account with its own Paybill reference. Parents top up through M-Pesa using that reference, the app receives a deposit webhook and updates the student's balance, and canteen purchases are deducted inside the app. All the real money sits in one master wallet the school can see and reconcile.

WaaS or a regular business wallet?

A regular business wallet is ideal when the money belongs to your business — sales, collections and payouts. WaaS is designed for when your platform needs to track money that is attributed to your users, such as balances, credits or contributions, while still holding the real funds in one place. If you are unsure which model fits, start by mapping who owns each shilling in your product: if the answer is "our users", WaaS is likely the better fit.

Requirements

  • Your business must be verified on Paysasa before using WaaS.
  • WaaS is enabled per business in its settings or via the API.
  • API requests use a business API key and your `business_id`.

Getting started

  1. Create and verify your business on Paysasa.
  2. Generate an API key from the Businesses page.
  3. Enable WaaS for the business.
  4. Create virtual accounts for your users and share their Paybill references.
  5. Configure your webhook endpoint and start listening for deposit and withdrawal events.

Full endpoint details are in the WaaS section of the Paysasa API docs. For pricing, see the pricing page.

Conclusion

Wallet-as-a-Service lets your platform offer balances, deposits and withdrawals without building and maintaining a wallet system from scratch. You focus on your product; Paysasa handles the money movement.

Ready to add wallets to your platform? Explore Wallet-as-a-Service or talk to the Paysasa team about your integration.

#WaaS #wallet as a service #developers #platforms #M-Pesa