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

# Till number (without API keys)

> Collect M-Pesa Buy Goods payments into your own till without holding Daraja API keys.

# Collect payments with your till, without API keys

`TILL_NUMBER` sends a real M-Pesa Buy Goods STK push to the payer, using **the
platform's Daraja credentials** rather than your own. You supply only your till
number; the money settles into that till.

Available to ISPs in **Kenya (KE)**.

<Note>
  The payer receives an STK prompt and enters their M-Pesa PIN — this is not an
  instructions-only method. The difference from
  [Safaricom M-Pesa](/billing/payment-gateways/safaricom) in till mode is that
  the Daraja API keys are the platform's, so you can collect before your own
  Daraja onboarding is finished.
</Note>

## Before you start

1. Have an active M-Pesa Buy Goods till registered to your business.
2. **Link a MikroTik router and bring it online.** This gateway will not send a
   payment prompt otherwise.

<Warning>
  Till, Paybill, 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 → Till Number - Without API keys">
    Select the method from the payment marketplace.
  </Step>

  <Step title="Enter your till number">
    **Till number** (required, maximum 20 characters) is the M-Pesa till shown
    to subscribers and the account the money lands in. No Daraja keys are
    requested.
  </Step>

  <Step title="Save and switch">
    The till number 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 money arrives in
    the till.
  </Step>
</Steps>

## Credentials

| Field       | Required | Notes                                           |
| ----------- | -------- | ----------------------------------------------- |
| Till number | Yes      | Maximum 20 characters. Your own Buy Goods till. |

## 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 Buy Goods STK prompt.

## How a payment completes

<Steps>
  <Step title="Request">
    Centipid Billing raises a `CustomerBuyGoodsOnline` STK push against your
    till, using the platform's Daraja app.
  </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

A till has no account-number field, so there is no pay-by-hand instruction for
an invoice on this method — a customer paying by hand cannot tell you which
subscriber the money is for. TV payments are the exception: the TV screen shows
the Centipid paybill, and that money is collected by the platform against the
TV code and remitted to you.

Prove where money lands with a controlled test payment before moving 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 till is active and accepts Buy Goods payments, then retry. If it persists, raise it with support — the platform credentials are not yours to correct. |
| The prompt names an unexpected till                                            | The saved till number 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).
