The hosted checkout collects a payment from your customer on a Pokea Pay page — no card/wallet handling on your side. Three entry points:
| Entry | URL | Use |
|---|
| V3-compat redirect | /checkout?… | Existing V3 web-checkout integrations keep working unchanged (signed redirect). |
| Payment link | /l/{token} | Share a link generated from the dashboard (or invoice) — no integration code at all. |
| Checkout session | /c/{token} | The customer-facing page both entries land on: shows amount + M-Pesa STK push. |
Flow
- Customer lands on the checkout page (via signed redirect or payment link).
- They confirm their phone number; we fire an M-Pesa STK push (
POST /c/{token}/mpesa, rate-limited). - The page polls
GET /c/{token}/status until the rail confirms. - Money posts to your wallet in the ledger; a signed webhook notifies your backend; the customer is redirected to your return URL.
V4 checkout hash
New checkout integrations sign the redirect with HMAC-SHA256 over a canonical payload (version v4.checkout) that also binds a nonce and ts — closing the replay hole in the V3 SHA-1 hash. The legacy V3 formula remains available during the deprecation window.