V
Vendly
Banking

Banking

M-Pesa — Paybill, Till and settlement

Treat M-Pesa as its own bank account. The Safaricom statement, the settlement to your bank, and how to match customer payments to invoices.

M-Pesa — Paybill, Till and settlement

Treat M-Pesa as its own bank account. The Safaricom statement, the settlement to your bank, and how to match customer payments to invoices.

M-Pesa is the most common payment rail in Kenya — and the most common source of reconciliation pain because it's NOT a bank. It's a holding float with its own statement, its own fees and its own settlement schedule. Model it correctly and reconciliation becomes routine.

Paybill vs Till vs Buy Goods

ProductUse caseCustomer pays to
Paybill (Lipa Na M-Pesa)B2B / invoice paymentsA Business Number, optionally with an account reference
Till (Buy Goods)Retail / counter salesA Till Number — no account reference
Send MoneyPerson-to-personA phone number — high fees, B2B prohibited
M-Pesa for Business (API)Programmatic payments + collectionsA shortcode tied to an API user

Modelling M-Pesa in Vendly

Create the Paybill / Till as a Bank Account in Vendly. Set its GL account to a dedicated 'M-Pesa Float' asset account separate from your KES bank current account — this matters because the float and the bank balance move on different schedules.

1

Add the M-Pesa Bank Account

Bank Accounts

The customer-payment flow

  1. Customer pays the Paybill with your account reference (typically the invoice number).
  2. Safaricom records the transaction in the daily M-Pesa statement: amount, customer phone, account reference, transaction ID.
  3. Money sits in your M-Pesa float (not in your bank yet).
  4. Once per day (or per a settlement schedule you've configured), Safaricom transfers the day's net (collections minus charges) to your nominated bank account.

Matching M-Pesa receipts to invoices

  1. Download the daily M-Pesa statement.
  2. Banking → Transactions → Import for the M-Pesa account.
  3. Vendly auto-matches each Paybill collection to the invoice with the same number — the account reference is the link.
  4. Lines without a clean match (customer entered a typo, or no reference) need manual matching. Click the line, pick the invoice.
  5. Once matched, Vendly creates a Payment Receipt for that invoice and clears AR.

Settlement reconciliation

Safaricom transfers your net M-Pesa float to your bank. That settlement appears as a CREDIT on your bank statement and a SETTLEMENT TRANSFER on the M-Pesa statement. Match the two — they should be equal (minus charges, which Safaricom records as separate fee lines).

DayM-Pesa floatBank account
Day 0 — customer pays KES 10,000+10,000
Day 0 — Safaricom charges KES 23−23
Day 1 — settlement to bank−9,977+9,977

If you never reconcile the M-Pesa float, you'll never know when Safaricom mis-charges you (it happens), when a customer payment didn't actually arrive (also happens) or when you've paid M-Pesa fees that should have been refunded. Treat M-Pesa with the same discipline as a bank.

Customer customer-not-found

If a customer paid with the wrong account reference (or none), the auto-match misses. Look up the phone number on the customer list — most established customers' phones are already on file. Match manually to the right invoice. If the customer is brand new, create the client first, then match.