Docs
Get a paid checkout working
Create a sandbox account, take a test key, start a hosted checkout, then confirm the payment with a webhook or a verify call. Money never lands with Steadi Pay.
What you are integrating
Your app sends the customer to a Steadi Pay checkout page. They pick Airtel Money, TNM Mpamba, a bank transfer or a card. Steadi Pay routes the payment to the merchant's own provider account and tells you when it is paid.
- MWK only. Send amounts in kwacha (for example 15000 or 15000.50). We store integer tambala. Never send a floating-point number.
- Never send card numbers, CVVs or PINs to this API.
- Never mark an order paid until Steadi Pay confirms it.
1. Create a sandbox account
Sign up at steadipay.ltd/signup. You get sandbox keys immediately. Steadi Pay is not live yet, so live mode is not open. When it opens, it needs a paid sandbox payment, a failed sandbox payment, and an approved account. See Go live.
2. Create a checkout session
Call POST /v1/checkout_sessions with a test key. Amounts are kwacha: 15,000 is MWK 15,000.
curl -X POST https://api.steadipay.ltd/v1/checkout_sessions \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": "15000",
"currency": "MWK",
"merchant_reference": "ORDER-1",
"return_url": "https://your.app/orders/1/return"
}'You get a checkout_url. Redirect the customer there. Full request and response fields are on Checkout.
3. Confirm the payment
Do not trust the return URL alone. Confirm in one of these ways:
Fulfil the order only when status is Paid.
Base URLs
| Use | URL |
|---|---|
| API | https://api.steadipay.ltd/v1 |
| Hosted checkout | https://pay.steadipay.ltd |
| Merchant portal | https://app.steadipay.ltd |
| These docs | https://docs.steadipay.ltd |
| OpenAPI | https://api.steadipay.ltd/v1/docs |