> ## Documentation Index
> Fetch the complete documentation index at: https://docs.centipidbilling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Paybill (without API keys)

> Collect M-Pesa paybill payments into your own paybill without holding Daraja 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)**.

<Note>
  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](/billing/payment-gateways/safaricom). 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.
</Note>

## 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](/billing/payment-gateways/bank) instead.
2. **Link a MikroTik router and bring it online.** This gateway will not send a
   payment prompt otherwise — see the warning below.

<Warning>
  Paybill, Till, Bank, and Centipid Collections all require a linked MikroTik
  router that is currently online. If none is linked, checkout stops with
  *"Link a MikroTik router and bring it online before sending payment prompts."*
  and no prompt is sent. See [Routers](/network/routers).
</Warning>

## Configure the gateway

<Steps>
  <Step title="Open Settings → Payments → Paybill - Without API keys">
    Select the method from the payment marketplace.
  </Step>

  <Step title="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.
  </Step>

  <Step title="Save and switch">
    The paybill is the only field that gates the switch. Switching gateways may
    require an OTP confirmation.
  </Step>

  <Step title="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.
  </Step>
</Steps>

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

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

## How a payment completes

<Steps>
  <Step title="Request">
    Centipid Billing raises the STK push against your paybill using the
    platform's Daraja app, as a `CustomerPayBillOnline` transaction.
  </Step>

  <Step title="Authorization">
    The payer enters their M-Pesa PIN.
  </Step>

  <Step title="Confirmation">
    Safaricom posts the result to the platform callback, which records the
    payment and applies the subscriber's package asynchronously.
  </Step>
</Steps>

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

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                                                                                                                                                                   |
| ------------------------------------------------------------------------------ | -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| *"Link a MikroTik router and bring it online before sending payment prompts."* | No linked MikroTik is online. No prompt was sent.        | Link a router and bring it online — see [Routers](/network/routers).                                                                                                         |
| *"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.                                                                                                                                           |
| Payer paid, service not applied                                                | The callback did not arrive or did not match a checkout. | See [Payment troubleshooting](/billing/payment-gateways/troubleshooting).                                                                                                    |

To hold your own Daraja keys instead, see
[Safaricom M-Pesa](/billing/payment-gateways/safaricom). For every gateway's
fields in one place, see the
[credential reference](/billing/payment-gateways/credentials-reference).
