Reserve now.
Pay gradually.
Escrow protected.
Ahadi Pay sits between your checkout and your customer's wallet. Installment reservations — with automatic escrow, M-Pesa collection, and guaranteed refunds — in one API.
Platform fee
5%
Refund trigger
Automatic
Integration time
~30 min
Payment rail
M-Pesa + Card
How it works
Four steps to installment payments
Register and get keys
Sign up, create an app, get test API keys immediately. No approval needed to start building.
Register your product
Call POST /products with price, deposit percent, and refund policy. Get back a product_id. Store it on your item.
Add Ahadi Pay at checkout
Drop in the widget script. Call AhadiPay.open() when the customer selects installment payment. The widget handles the rest.
React to webhooks
Listen on your webhook endpoint. Create locked tickets on deposit, unlock on full payment, handle cancellations automatically.
Integration
Register a product,
get a product ID.
That's the integration.
Your event, flight, or hotel lives in your database. We never store your domain data. You pass us price, deposit percent, and refund policy. We give back a product_id. That single ID is the bridge between your system and ours.
See full API reference →import requests
# Register a ticket type as a product
product = requests.post(
"https://api.loniwacapital.com/ahadipay/v1/products",
headers={"X-Api-Key": "sk_live_..."},
json={
"name": "VIP Ticket — Jazz Festival",
"industry_type": "events",
"price_cents": 800000,
"deposit_percent": 40,
"max_reservations": 200,
"refund_policy": {
"deadline_minutes": 43200,
"refundable_percent": 80,
"release_percent": 15,
},
}
).json()
# Store product["id"] on your ticket type
print(product["id"]) # prod_8f3k2jxPlatform
Everything handled for you
Escrow-backed installments
Every payment is split into protected and released portions. Customers get guaranteed refunds on cancellation. Merchants get immediate partial release.
Plug in with three lines
One script tag. One API call per product. One webhook endpoint. Your existing checkout stays untouched — Ahadi Pay appears as an additional payment method.
M-Pesa native
STK push fires the moment a customer reserves. The entire installment lifecycle runs over M-Pesa. No card infrastructure needed.
Automatic money movement
Every payment is split, held, and released automatically. On full payment, escrow releases instantly. On cancellation, refund fires without human intervention.
Any reservation-based industry
Events, flights, hotels, training courses, travel packages. If money changes hands before a future service, Ahadi Pay fits.
Real-time webhooks
payment.received, reservation.cancelled, reservation.expired. HMAC-signed. Retry with exponential backoff. You react, we handle the rest.
Industries
Any industry. One integration.
Events & ticketing
Jazz festivals, conferences, comedy shows
Training & courses
Bootcamps, certifications, workshops
Travel packages
Safari packages, holiday bundles
Flights
Advance seat reservations
Hotels
Future-date room reservations
Any future delivery
If you deliver later, Ahadi Pay fits
Escrow model
Every payment, split three ways
On a KES 8,000 ticket with 80% refundable and 15% release — every payment is split automatically.
80%
Held in escrow
15%
Released to merchant
5%
Platform fee
Start building in minutes.
Go live when ready.
Test keys are instant. Live keys require a webhook URL and one click. No approval process. No waiting.