Skip to main content

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.
This is not a “show the customer instructions” method. The payer receives an STK prompt and enters their M-Pesa PIN, exactly as with Safaricom M-Pesa. The difference is where the Daraja API keys come from: with SAFARICOM they are yours, here they are the platform’s, so you can start collecting before Daraja onboarding is finished.

Before you start

  1. 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.
  2. 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

1

Open Settings → Payments → Paybill - Without API keys

Select the method from the payment marketplace.
2

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.
3

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.
4

Save and switch

The paybill is the only field that gates the switch. Switching gateways may require an OTP confirmation.
5

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

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

1

Request

Centipid Billing raises the STK push against your paybill using the platform’s Daraja app, as a CustomerPayBillOnline transaction.
2

Authorization

The payer enters their M-Pesa PIN.
3

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

To hold your own Daraja keys instead, see Safaricom M-Pesa. For every gateway’s fields in one place, see the credential reference.