Developers
One REST API for every Malawian rail. Idempotent, signed, sandboxed. SDKs and clear docs included.
Create a charge against Airtel Money or TNM Mpamba in three steps. Use sandbox keys until go-live.
curl -X POST https://api.lunafinance.mw/v1/charges \ -H "Authorization: Bearer sk_test_…" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "amount": 25000, "currency": "MWK", "method": "airtel_money", "customer": { "phone": "+265991234567" }, "metadata": { "order_id": "ord_9f2a" } }'
Supported methods and currencies.
airtel_money — Airtel Money
tnm_mpamba — TNM Mpamba
bank_transfer — NatSwitch EFT
card — Visa / Mastercard
MWK — Malawian Kwacha
(primary)
USD — US DollarEUR — EuroGBP /
ZAR
HMAC-SHA256 signed events with rotating secrets. Always verify the signature.
{
"id": "evt_3k9m2",
"type": "charge.succeeded",
"created": 1748000000,
"data": {
"object": {
"id": "ch_8x2p1",
"amount": 25000,
"currency": "MWK",
"method": "airtel_money",
"status": "succeeded"
}
}
}
Full parity with production. Simulate success, failure, timeout and dispute states without moving real money.
Use dedicated numbers that auto-succeed or fail so you can cover happy and edge paths.
Replay the same Idempotency-Key and receive the original response — never double-charge.
Point a tunnel or use our dashboard to inspect signed events in real time.
Official and community libraries (early access).
npm i @lunafinance/node
pip install lunafinance
composer require lunafinance/lunafinance
Request early access and we will issue test credentials and invite you to the private docs portal.
Request access →