Paybill (without API keys)
Collect payments with your paybill, without API keys
PAYBILL sends a real M-Pesa STK push to the payer, using the platform’s
Daraja credentials rather than your own. You supply only your paybill number —
no Daraja onboarding required.
Available to ISPs in Kenya (KE).
A SACCO paybill, or any paybill you share with other businesses, is supported: add your account number on that paybill and every payment is filed against it. Leave it blank when the paybill is yours alone.
Before you start
- Have an active M-Pesa paybill registered to your business. It must be a Safaricom paybill — not a bank paybill. To collect into a bank account, use Bank instead.
- If that paybill belongs to a SACCO, or is shared with other businesses, have the account number the paybill files your money under. Your SACCO or the paybill’s owner issues it — it is usually your member or account number, and it is what you would type yourself when paying into that paybill by hand.
Configure the gateway
Open Settings → Payments → Paybill - Without API keys
Select the method from the payment marketplace.
Enter your paybill number
Paybill number (required) is digits only, at least 4 and at most 20 characters. It is shown to subscribers and is the account the money lands in.
Add an account number, if the paybill is a SACCO's or shared
Account number (optional) is your account on that paybill — up to 20 characters, made of letters, digits, hyphens and slashes. Set it and every payment, collected or paid out, carries it as the account reference, so the SACCO allocates the money to you.
Leave it blank when the paybill is yours alone. Payments then keep the default account reference they have always used, and nothing changes.
Save and switch
The paybill is the only field that gates the switch. Switching gateways may require an OTP confirmation.
Run a controlled test payment
Pay a small amount from the captive portal, and confirm the prompt shows your paybill and that the money arrives in it.
Credentials
| Field | Required | Notes |
|---|---|---|
| Paybill number | Yes | Digits only, 4–20 characters. Your own Safaricom paybill, not a bank paybill. No Daraja keys are requested. |
| Account number | No | Only for a SACCO paybill, or one shared with other businesses. Up to 20 characters: letters, digits, hyphens and slashes. Blank keeps the default account reference. |
Callback URLs
None. The callback address is sent with every payment request, so there is nothing to register with Safaricom.
What the payer must provide
A Safaricom phone number, which receives the STK prompt. The account reference is filled in for the payer — your Account number when you have set one, and a default reference otherwise. The payer never types it.
How a payment completes
Request
Centipid Billing raises the STK push against your paybill using the platform’s Daraja app, as a
CustomerPayBillOnlinetransaction.Authorization
The payer enters their M-Pesa PIN.
Confirmation
Safaricom posts the result to the platform callback, which records the payment and applies the subscriber’s package asynchronously.
Payments typed in by hand
Not every payment on this method starts as an STK prompt. An invoice can offer pay-by-hand instructions, and a TV screen shows a number the customer types into M-Pesa themselves. On this method that number is the Centipid paybill, not yours — money paid that way is collected by the platform against the subscriber’s account reference and remitted to you.
That remittance is a paybill-to-paybill transfer into your paybill, and it carries your Account number as the reference when you have set one. This is what makes a SACCO or shared paybill work: without an account number the SACCO receives the transfer with nothing to allocate it against.
Prove where money lands, in both flows, with a controlled test payment before you move subscribers onto this method.
Troubleshooting
| Symptom | What it means | What to do |
|---|---|---|
| “Unable to process payment. Please try again later.” | The STK push failed or Safaricom was unreachable. | Confirm the paybill is active and accepts Buy Goods/Paybill payments, then retry. If it persists, raise it with support — the platform credentials are not yours to correct. |
| The prompt shows an unexpected paybill | The saved paybill is wrong. | Correct it in Settings → Payments. |
| Money reaches the SACCO or shared paybill but is not credited to you | No account number is saved, or the saved one is not the account that paybill knows you by. | Set Account number in Settings → Payments to the account your SACCO issued you, then re-test. |
| Payer paid, service not applied | The callback did not arrive or did not match a checkout. | See Payment troubleshooting. |
To hold your own Daraja keys instead, see Safaricom M-Pesa. For every gateway’s fields in one place, see the credential reference.
