The same idempotency key always returns the original payout, so a retry never sends money twice.
Every destination your payees use
Send to M-Pesa through Daraja B2C, SasaPay or KCB Buni; to Airtel Money and wallets through SasaPay; and to bank accounts through SasaPay or KCB Buni. Routing picks an enabled method that supports the channel and currency.
Safe to retry
Send the same idempotency key and you get the original payout back. Change the request under the same key and Pay refuses it. A timeout leaves the payout in an unknown state, and Pay never sends it again until the provider answers or your statement settles it.
Know where each payout is
Every payout moves through recorded states with an immutable event history. Your systems get a signed webhook at each step, and anyone on the team can check a payout's status with the provider from the dashboard.
Check balances before a payout run
SasaPay and Paystack balances are available from the dashboard and the API, so you can see what is there before you send money out.
M-Pesa Daraja (B2C), SasaPay (M-Pesa, Airtel Money, bank and wallet) and KCB Buni (M-Pesa and bank).
Does Noria hold the money I pay out?
No. Payouts are sent from your own provider account with your own credentials. Noria never holds funds.
What if a payout request times out?
Pay records the outcome as unknown and settles it when the provider answers, or from your statement. It never sends a second payout to cover a first one that may have gone through.