Real-time M-Pesa collections
Every STK push, Paybill and Till payment lands in your dashboard the moment it happens.
We enable Kenyan businesses to collect money via M-Pesa, bank transfer and cards — settled straight to your account, without the usual hustle.
Track your collections and payouts in real time
Collect on M-Pesa with your own Paybill or Till — reconcile automatically and track every shilling in your dashboard.
Every STK push, Paybill and Till payment lands in your dashboard the moment it happens.
Each merchant gets a dedicated Paybill or Till — funds settle to your shortcode, not a shared pool.
Prepaid service credit, holds, charges and releases — every shilling auditable in an append-only ledger.
Fire an STK push straight to your customer's phone at checkout. No apps to install, no card details — just one tap and a PIN.
A request of KSh 2,450.00 to FORTPESA MERCHANT for account ORDER-1042.
Enter M-PESA PIN:
We provision your shortcode as a dedicated payment channel. STK requests always route with an explicit channel ID — never a shared default.
A production REST API with HMAC-signed webhooks — clean docs, real endpoints, and snippets you can paste. First payment in minutes, not days.
Read the docscurl -X POST https://fortpesa.co.ke/api/v1/payments/stk \
-H "Authorization: Bearer pb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 15000,
"phone": "0712345678",
"account_reference": "INV-2041"
}'
const res = await fetch("https://fortpesa.co.ke/api/v1/payments/stk", {
method: "POST",
headers: {
Authorization: "Bearer pb_live_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 15000, // minor units: KES 150.00
phone: "0712345678",
account_reference: "INV-2041",
}),
});
const { data } = await res.json(); // status: "pending"
$res = Http::withToken('pb_live_YOUR_KEY')
->post('https://fortpesa.co.ke/api/v1/payments/stk', [
'amount' => 15000, // minor units: KES 150.00
'phone' => '0712345678',
'account_reference' => 'INV-2041',
]);
$tx = $res->json('data'); // status: "pending"
import requests
res = requests.post(
"https://fortpesa.co.ke/api/v1/payments/stk",
headers={"Authorization": "Bearer pb_live_YOUR_KEY"},
json={
"amount": 15000, # minor units: KES 150.00
"phone": "0712345678",
"account_reference": "INV-2041",
},
timeout=30,
)
tx = res.json()["data"] # status: "pending"
Works with your stack — connect any CMS, framework, or store
Any platform with an internet connection can integrate today via the REST API.Official plugins coming soon
Merchants collecting payments every single day.
Uptime on M-Pesa payment rails.
Average time from STK push to paid.
From market stalls to e-commerce stores, discover how Kenyan businesses collect and reconcile effortlessly with Fortpesa.
"Reconciliation that used to eat my whole morning is now done before my first cup of chai!"
"Since switching to Fortpesa, our M-Pesa collections are confirmed in seconds on our own Paybill. The fee ledger means no more guessing what we paid."
"The STK push checkout lifted our online sales by 40% — customers just tap, enter PIN, done!"
From market stalls in Gikomba to e-commerce in Nairobi, Kenyan businesses collect with Fortpesa every day — and you can be live in under 10 minutes.