Early access · test mode open

Accept MTN MoMo, Orange Money and cards with a single integration.

Your customer enters their number and approves on their phone. Your server receives a signed confirmation as soon as the operator accepts, and your dashboard updates itself.

Your test key arrives when you sign up. No paperwork needed to try it.

  • Online shops
  • Property rentals
  • Ticketing
  • School fees
  • Online courses
  • Delivery
  • Restaurants
  • Subscriptions
  • Events
  • Crafts
  • Home services

Payment methods

The three ways your customers already pay.

One payment page offers all three. Your customer chooses, Kola talks to the operator.

MTN

MTN Mobile Money

A USSD prompt opens on the customer's phone. They enter their PIN and the payment goes through.

OM

Orange Money

Same flow, same page. Kola recognises the operator from the first digits of the number.

•••• •••• •••• 4242

Bank card

For customers who prefer their bank card. Same page, same notification on your side.

How it works

From order to payment, in three steps.

  1. 1

    You create the payment

    Your server sends the amount and the order reference. Kola replies with the address of the payment page.

  2. 2

    Your customer approves

    They choose MTN, Orange or their card, enter their number and confirm with their PIN, on their own phone.

  3. 3

    You deliver

    Kola notifies your server with a signed webhook. You mark the order as paid and serve your customer.

Developers

Eight lines between the order and the payment.

A TypeScript SDK with zero dependencies, and test keys kept apart from live keys from day one.

  • Safe retriesAfter a network drop, replay the call with the same idempotency key: Kola returns the existing payment instead of creating a second one.
  • Whole-number amounts15000 means 15,000 F. Kola rejects 150.50 rather than rounding it without a word.
  • Errors in English or FrenchEvery rejection names the field at fault and says what to fix, in the language you choose. The SDK also tells you whether the call can be retried.
order.ts
1import { Kola } from "@kola/checkout-sdk";2 3const kola = new Kola(process.env.KOLA_SECRET_KEY);4 5const payment = await kola.payments.create({6  amount: 15000,           // 15,000 F, a whole number7  reference: "ORD-1042",8  returnUrl: "https://my-shop.cm/thank-you",9});10 11res.redirect(payment.checkoutUrl);

Response · 201 Created

{  "id": "pi_8Kq2vN4rTx",  "status": "requires_payment_method",  "amount": 15000,  "currency": "XAF",  "checkoutUrl": "https://…/pay/pi_8Kq2vN4rTx?cs=…"}

After the payment

Everything you need once the money is in.

Net collected · 30 days

1,284,500 FCFA

94% success rate

A dashboard that answers your questions

Net collected, success rate, daily volume and each operator's share. CSV export filtered by status, method and period.

Illustrative figures.

Payment15,000 F
Refunded− 5,000 F
Net10,000 F

Refunds

In full or in part, from the dashboard or through the API. The money goes back to the customer's Mobile Money account.

Webhooks that keep trying

Your server is not answering? Kola retries seven times over twenty hours. Every delivery carries an HMAC-SHA256 signature that the SDK checks for you.

Platform mode

Do you host your clients' shops? Create their merchant accounts through the API and collect payments for each of them with a single key.

The operator, recognised from the number

A customer picks MTN, then types an Orange number? The page corrects the choice before they wait for a prompt that would never reach their phone.

Security

What Kola protects, and how.

Your customer pays from their Mobile Money account or card at the moment of purchase. No wallet to top up.

  • Passwords

    Hashed with argon2id, today's recommended algorithm against cracking.

  • API keys

    Kola only keeps their fingerprint. Nobody can display them again, not even us.

  • Webhook secrets

    Encrypted with AES-256-GCM in the database, decrypted only at the moment of signing.

  • Audit log

    Every sensitive action records its author: API key, merchant account or platform.

FAQ

What people often ask us.

Do I need paperwork to get started?

No. Signing up opens test mode and generates your test key on the spot. Your business is only verified when you move to live payments.

Does my customer need an account?

No. They enter their number on the payment page and approve on their phone, just like a transfer.

Some of my customers speak French.

The payment page follows the language of your customer's phone, English or French, and they can switch with one tap. You can also set the language when you create the payment.

How do I test without real money?

In test mode, the last four digits of the number decide the outcome: 0001 simulates insufficient funds, 0003 an unreachable operator, 0004 a customer refusal. You see every failure before your customers do.

What if my server does not respond?

Kola retries the webhook seven times over twenty hours. In the meantime, your server can ask for the payment status at any time.

I run shops for several clients.

Platform mode lets you create and manage their merchant accounts through the API, with your own key alone. Bikus Group turns it on upon request.

Connect your shop tonight, take test payments in ten minutes.

A test key as soon as you sign up, and a payment page ready to use.