Developers

An overview of what developers can build with Paysasa: REST v1 APIs across checkout, invoices, subscriptions, Lengo, Deni, WaaS and more, plus API keys, idempotency and signed webhooks.
Payments are rarely a separate activity. They happen inside an online shop, a marketplace, a school system, an ERP or a mobile app. The Paysasa developer platform lets you bring Paysasa into your own products through REST APIs and webhooks, so payments flow automatically.
This deep dive gives developers and technical decision-makers an overview of what is possible.
Keys must stay on the server. Never expose them in client-side code or public repositories, and revoke them from the Businesses page if needed.
Create checkout sessions with a hosted payment page and redirects, initiate payments for cashier flows, cancel sessions and create reusable payment links. Optional split payouts route portions of each payment to other wallets in the same business.
Issue itemised invoices with a hosted `payment_url`, send them by email or SMS, and build recurring billing with customers, products, prices and subscriptions.
Create Lengo save-now-buy-later offers and resolve them for embed widgets. Record Deni IOUs with public pay pages, reminders and acknowledgements.
Run end-user balances through one master wallet with virtual accounts, M-Pesa deposits and withdrawals.
Manage payroll employees and runs, connect POS Lite to your catalogue, create donation campaigns and work with eTIMS fiscal documents where enabled. Reconciliation endpoints help match payments to your records.
All money-moving APIs use integer minor units. For KES and USD, 100 = 1.00. Zero-decimal currencies such as UGX use 1 = 1. Only currencies enabled for your account are accepted.
Send an `X-Idempotency-Key` on money-moving requests. It is required for P2P transfers and checkout payments, and recommended for payouts, conversions and invoice payments. Replays return the original result.
Money movement is gated by verification. Unverified businesses receive `403` responses with codes such as `business_unverified` or `owner_kyc_unverified`. Treat these as onboarding states. Trust tiers (Gold and Platinum) are read-only in the API.
M-Pesa checkout and withdrawals require KES; PayPal settles USD.
Configure endpoints in your business webhook settings and Paysasa will `POST` events to your server — for example, checkout payments, invoices and subscriptions, Lengo and Deni lifecycle events, and WaaS deposits and withdrawals.
Business API calls use a tenant signature header, so a captured request cannot be replayed from another host — one of the controls described on the Paysasa security page.
Most integrations follow the same pattern. Your server creates the payment object — a checkout session, invoice or Lengo offer — and stores its ID alongside your own order or customer record using metadata. The customer completes payment on a Paysasa hosted page. Your webhook handler verifies the signature, looks up the record by ID or metadata and updates it. A periodic reconciliation job then compares your records with Paysasa's to catch anything missed.
The Paysasa developer platform turns payments into building blocks: checkout, billing, savings, IOUs, wallets and payouts, all with clear authentication, idempotency and signed webhooks. Build the experience your users need, and let Paysasa handle the money movement.
Ready to start building? Explore the Paysasa API docs or contact the Paysasa partnerships team about your integration.
#API #webhooks #developers #integration #REST #features