How to Set Up an ISP Billing System in Kenya: 6 Steps
Six steps from choosing a platform to going live: connecting your MikroTik, setting up M-Pesa, creating packages, importing subscribers and what breaks.
Jasiyo Team
Published 18 February 2026
What You Need Before You Start
Before setting up your ISP billing system, have these ready:
- A MikroTik router running RouterOS 6 or 7, already online
- An M-Pesa Paybill or Till number from Safaricom Business
- Your subscriber list — names, phone numbers and current packages
- Terminal or Winbox access to the router
You do not need a public IP address, a static IP, or a server of your own. Modern cloud billing systems reach the router through an agent that dials outward, which also means the setup works behind CGNAT.
Step 1: Choose Your Billing Platform
Pick a cloud-based ISP billing system that supports MikroTik and M-Pesa natively rather than through a plugin. Sign up for a trial and run it before committing — a billing system is difficult to change once subscribers are on it. Jasiyo offers a 7-day free trial, setting up yourself is free, and no credit card is required.
Step 2: Connect Your MikroTik Router
With Jasiyo the flow is: name the router, let the platform scan it, choose how to configure it, then paste one generated script.
The scan reads what is already on the device — RouterOS version, WAN interface, existing bridges, IP pools, and any PPPoE or Hotspot configuration. It changes nothing.
You then choose a setup mode. A fresh setup builds bridges, pools and services from scratch. An existing setup leaves your current configuration alone and installs only the agent — the right choice if you already have customers running.
Finally you paste the generated script into the MikroTik terminal once. It applies the configuration and installs the agent, which connects outward to the platform and keeps the router in sync from then on.
Step 3: Set Up M-Pesa
Register your Paybill on the Safaricom Daraja portal and point the confirmation and validation callback URLs at your billing system's payment endpoint. Then send one small real payment and watch it arrive.
Do not skip that test. A callback URL that is wrong by one character produces exactly the same silence as a callback URL that is right but not yet activated, and the difference only shows up when a customer pays.
Step 4: Create Your Packages
Define each package with a name, price, upload and download limits, and a duration. Map every package to a bandwidth profile on the router so that a customer on a 5 Mbps plan gets 5 Mbps rather than whatever is spare.
Keep the list short at first. Three or four well-chosen packages sell better than a dozen, and every extra package is another thing to reconcile when something goes wrong.
Step 5: Import Your Subscribers
Add existing subscribers manually or by CSV import, assigning each their current package and their real expiry date. Getting expiry dates right matters more than it looks: import everyone with today's date and you will either cut off paid customers or hand out a free month.
Step 6: Go Live
Send subscribers their new payment instructions — the Paybill number and their account reference, or how STK Push will reach them. Then watch the first few payments end to end: payment received, callback processed, subscriber reactivated on the router.
What Usually Goes Wrong
- Payments arrive but nothing activates — almost always the Daraja callback URL. Check it before blaming the router.
- Wrong expiry dates after import — costs you a month of revenue or a month of angry customers.
- Customers pay but never get online on Hotspot — usually the captive portal never opened on their phone, not a billing fault.
- Nobody tells the customers — the new Paybill and account number need to reach every subscriber before the first billing date, by SMS.
How M-Pesa Actually Connects
Step 3 above is the mechanics. This is the part worth understanding before you choose, because the two methods give your subscribers very different experiences.
Paybill with an account number
The subscriber sends money to your Paybill using their account number — usually their phone number or subscriber ID — as the reference. Safaricom posts a callback to your billing system, which matches the reference to a subscriber and updates their package. It works, and it is how most people pay. It also depends on the subscriber typing the reference correctly, which is the single most common reason a payment arrives and nobody gets reconnected.
STK Push
Your system initiates the request and an M-Pesa prompt appears on the subscriber's phone. They approve the amount — no Paybill number, no account reference, nothing to mistype. It is the smoother path, and for hotspot sales at a login page it is effectively the only one that converts.
What goes wrong, and what to ask about
- Safaricom API downtime — callbacks need to be queued and retried, not dropped. Ask how the system behaves when Daraja is unreachable.
- Duplicate payments — a double-charge has to be detected and ignored rather than extending someone's package twice.
- Wrong account references — there should be somewhere these land for a human to resolve, instead of vanishing.
How Long It Takes
Most Kenyan ISPs complete this in a day. The router connection is minutes; the parts that take time are getting Daraja credentials from Safaricom and cleaning up your subscriber list before import.
Ready to transform your ISP?
Start your free 7-day trial — no credit card required. Connect your MikroTik and go live today.
Start 7-day free trial →