AirtimeDeal Payments
All systems operational

Collect M-Pesa straight into
your paybill, till or bank.

One API call puts a PIN prompt on your customer's phone. Safaricom settles the money to your own shortcode — we never hold it. No Daraja app, no Safaricom paperwork, no go-live wait.

3destination types
35banks supported
KES 1minimum charge
Freeto start

Live in four steps

Most people are taking their first payment within ten minutes.

1

Create an account

Email, phone and a password. Nothing to pay, nothing to install.

2

Add a destination

Your paybill, Buy Goods till, or a bank account. That is where the money lands.

3

Take your keys

Each destination gets its own API key pair. The secret is shown once.

4

Charge someone

One POST, and we notify your server with a signed webhook when it settles.

The whole integration

This is not a simplified excerpt — it is the entire request.

# Send the prompt
curl -X POST https://api.airtimedeal.co.ke/v1/initatestk \
  -H "X-API-Key: pk_live_..." \
  -H "X-API-Secret: sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"amount":100,"msisdn":"0712345678","reference":"INV-001"}'

# We POST this to your webhook once the customer pays
{
  "event": "payment.completed",
  "reference": "INV-001",
  "amount": 100,
  "mpesa_receipt": "SGH7XY12AB",
  "msisdn": "254712345678"
}

Built for money, not demos

Nothing gets lost

Every callback is stored before it is applied, and a reconciler settles anything Safaricom failed to deliver. A dropped callback delays a payment; it never loses one.

Webhooks that keep trying

Signed with HMAC-SHA256 and retried with backoff for six hours. Failed deliveries are visible in your dashboard and can be replayed with one click.

Replays cannot double-count

Safaricom retries what it thinks we missed. Only a pending payment is ever updated, so your totals stay honest.

Test before you ship

Send a real prompt to your own phone from the dashboard and watch it settle, through the exact code path your integration will use.