Xendly Pay

Xendly Pay moves Rwandan francs over MTN MoMo and Airtel Money. One HTTPS API, signed webhooks, and a test mode you can build the whole thing against before anyone verifies anything.

What this is

Two things move money, and everything else is reporting on them:

What it doesEndpoint
Cash inTakes money from a customer's wallet. They approve a prompt on their phone.POST /v1/payments
Cash outSends money to a wallet: a supplier, a refund, a payout.POST /v1/payouts

Both are asynchronous. Both return a pending transaction and tell you the outcome by webhook.

What we support

CountryRwanda
CurrencyRWF only. Amounts are integers, so there are no cents.
NetworksMTN MoMo and Airtel Money. We route on the number; you do not choose.
SettlementAvailable 24 hours after a payment succeeds
Fee3.1% per successful cash in, dropping to 2.3% after 3 months. Withdrawals are free. Failed payments cost nothing.

RWF, and only RWF

There is no currency conversion here and no other market. If you need to charge someone in dollars, this is not the product, yet.

Base URL

https://api.xendlypay.com

Everything is HTTPS and JSON. There is one base URL for both test and live. The key decides which world you are in, not the hostname, so going live never means changing a URL.

Your first payment

curl https://api.xendlypay.com/v1/payments \
  -H "Authorization: Bearer $XENDLY_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-1043" \
  -d '{
    "amount": 5000,
    "currency": "RWF",
    "msisdn": "0788924941",
    "description": "Order #1043",
    "reference": "1043",
    "metadata": { "order_id": "1043" }
  }'

That returns a transaction in pending. Your customer now has a prompt on their phone. What happens next is worth two minutes before you build anything else.