Online payments in Benin: aggregators or orchestrator — how to choose?
When you go looking for a payment solution for a Beninese project, you run into FedaPay, KKiaPay, CinetPay, Moneroo.
It feels like choosing between competitors.
They're not competitors. They're two different layers of the same stack.
The Mobile Money payment stack — as it actually exists
Operators → MTN, Moov, Orange, Wave
↓
Aggregators → FedaPay, KKiaPay, CinetPay
↓
Orchestrators → Moneroo, HUB2
↓
Merchants → your site, your SaaS
An aggregator connects several operators (MTN, Moov, Orange, Wave) and exposes a unified API. You integrate FedaPay once — you get access to every operator it supports.
An orchestrator connects to several aggregators and exposes an even broader API. You integrate Moneroo once — you get access to 12 payment gateways, in 30 countries, with 20 payout methods.
FedaPay is inside Pixel-Mart. Via Moneroo.
Aggregators — when to use them directly
FedaPay
Benin, Burkina Faso, Côte d'Ivoire, Guinea, Mali, Niger, Senegal, Togo. Commissions 2–3%, negotiable depending on volume. MTN Money, Moov Money, Orange Money, Wave, and bank cards. Pricing transparency — a real advantage in a market where prices are often murky.
Good fit if: you want to integrate directly without an extra layer, you operate in 1–3 countries, you don't need payouts in countries outside FedaPay's coverage.
KKiaPay
PCI DSS 3.2 certified, licensed by BCEAO. Strong in Benin. Solid reputation on regulatory compliance.
Good fit if: PCI DSS compliance is an explicit requirement (fintech, regulated transaction flows).
CinetPay
64+ payment methods, 25,000+ active clients, WooCommerce / Magento / PrestaShop plugins. Strong in Côte d'Ivoire, present across Francophone Africa.
Good fit if: you're building on an existing platform (WooCommerce, PrestaShop) and need a ready-made plugin.
Moneroo — when to use the orchestrator
Moneroo doesn't compete with FedaPay. It builds on top of it.
12 gateways. 30 countries. 20 payout methods. One integration.
What that means in practice: if your product needs to accept a payment in Côte d'Ivoire via CinetPay, refund a seller in Senegal via Wave, and record a sale in Benin via MTN — without Moneroo, that's three different integrations, three webhooks to manage, three codebases to maintain. With Moneroo, it's one.
Good fit if: your product covers several countries with different gateways, you want a single API for both incoming payments and payouts, you're building in TypeScript (the official moneroo SDK on npm, zero dependencies, exists).
The failover. This is the resilience argument aggregators alone can't offer. If FedaPay goes down right when your customer is paying, Moneroo automatically relays to another compatible gateway. In production, aggregators have incidents — minutes of downtime that make customers abandon their carts. An orchestrator absorbs these incidents without your customer noticing.
What Moneroo isn't: a cheap aggregator for a single-country project. If you only sell in Benin and don't need multi-country payouts, integrating FedaPay or KKiaPay directly is simpler.
The rule
Single-country project, simple needs?
→ Direct aggregator. FedaPay or KKiaPay in Benin.
Multi-country project or payouts across multiple currencies/operators?
→ Orchestrator. Moneroo: one integration, everything else follows.
Existing WooCommerce / PrestaShop site?
→ CinetPay. The plugin already exists.
What nobody mentions
No matter which layer of the stack you use, the Mobile Money flow stays asynchronous.
The customer initiates on your site. They confirm on their phone via USSD. The operator sends a webhook. Your backend verifies it, then credits the order.
This flow — and the error cases it generates — is your responsibility, not the gateway's. I documented the full flow, with code, in a separate article.
Need help integrating one of these aggregators or Moneroo into your project? I've built this integration several times (Pixel-Mart, RendezApp) — webhooks, error cases, tests with real MTN numbers included.
→ How to integrate Mobile Money on your site — the full flow → The Next.js + Convex + Moneroo tutorial with all the code → The Moneroo SDK — why it didn't exist and how I built it