— AGRÉGATION DE PAIEMENTS

Tous les moyens de paiement.

Une seule intégration.

MainMoney vous connecte directement aux opérateurs Mobile Money de la région ainsi qu'à Visa, Mastercard et American Express. Vous développez avec une seule API, détenez un seul jeu d'identifiants et réconciliez en un seul endroit.

Ajouter un réseau plus tard est un changement de configuration, pas une mise en production.

5
Opérateurs Mobile Money
3
Réseaux de cartes
1
Intégration à maintenir
CE QUE VOIT VOTRE CLIENTMainMoney Checkout
Montant dû25 000 CDF
Orange Money
Sélectionné au paiement
Confirmer le paiement
ON THIS PAGE
VisaAmerican ExpressM-PesaAirtel MoneyOrange MoneyMTN MoMoAfriMoneyVisaAmerican ExpressM-PesaAirtel MoneyOrange MoneyMTN MoMoAfriMoney
— LA FORME D'UNE SEULE INTÉGRATION

Six réseaux de paiement entrent.
Une seule ligne ressort vers votre entreprise.

M-PesaM-PesaMMM-PesaAirtel MoneyMMAfriMoneyMMOrange MoneyMMMTN MoMoMMVisaCARDMainMoneyONE APIYour business
Paiements en flux en temps réel
Opérateur Mobile Money
Réseau de carte
Point d'intégration MainMoney
6 connections → 1 API
— L'ANCIENNE MÉTHODE VS. MAINMONEY

Arrêtez d'assembler cinq intégrations différentes.

Cette approche unifiée simplifie considérablement l'intégration technique, réduit les coûts opérationnels et offre une expérience rapide, sécurisée et fluide pour votre entreprise comme pour vos clients.

SANS AGRÉGATEUR

Cinq relations à gérer

✕Un contrat séparé pour chaque opérateur
✕Un SDK et une API séparés à maintenir pour chacun
✕Une réconciliation éparpillée sur cinq tableaux de bord
✕Des semaines d'ingénierie avant le lancement
AVEC MAINMONEY

Une intégration, tous les réseaux

✓Un contrat, une API
✓Un tableau de bord pour chaque transaction
✓De nouveaux opérateurs ajoutés sans nouveau code
✓Opérationnel en quelques jours, pas en mois
01

Pourquoi agréger

Une seule intégration, toutes les méthodes

Connectez-vous une fois et acceptez tous les portefeuilles et cartes pris en charge. Lorsqu'un nouvel opérateur rejoint le réseau, vous l'acceptez sans déployer de code.

Coût d'exploitation réduit

Un seul contrat et une seule intégration au lieu d'un accord, d'un développement et d'une réconciliation mensuelle séparés pour chaque opérateur que vous souhaitez accepter.

Personne n'est refusé

Quel que soit le portefeuille ou la carte déjà détenu par un client, il fonctionne à votre paiement. Vous cessez de perdre des ventes à cause d'une méthode de paiement non prise en charge.

02

Comment ça marche

MainMoney est votre acquéreur pour les cartes comme pour le Mobile Money, il n'y a donc aucun tiers entre vous et l'argent. Nous gérons les relations avec les opérateurs et les réseaux, acheminons chaque paiement vers le bon canal, et réglons tout dans votre compte professionnel MainMoney sous forme de grand livre unique.

ÉTAPE 1

Le client passe à la caisse

Sur votre site ou votre application, via un lien de paiement, ou en scannant un code QR au comptoir.

ÉTAPE 2

Vous appelez MainMoney

Une seule requête contenant le montant et la méthode choisie par votre client.

STEP 3

Nous acheminons et confirmons

Vers le bon opérateur ou réseau de carte, puis retour vers votre webhook avec le résultat.

STEP 4

Vous êtes payé

Les fonds sont réglés sur votre compte professionnel, chaque réseau dans un grand livre unique.

03

Couverture et moyens d'encaissement

Le même compte couvre les paiements en ligne, dans l'application et au comptoir. Tous les commerçants n'ont pas de développeur, donc deux des trois voies ne nécessitent aucun code.

MOBILE MONEY
M-Pesampesa
Airtel Moneyairtel_money
AfriMoneyafrimoney
Orange Moneyorange_money
MTN MoMomtn_momo
RÉSEAUX DE CARTES
VisaVisacard
Mastercardcard
American Expresscard

Les cartes sont acceptées en ligne et sur les terminaux POS MainMoney, aux côtés du Mobile Money, du QR et des paiements biométriques par empreinte palmaire.

— WHY A SINGLE INTEGRATION

Une approche unifiée qui simplifie tout.

Cette approche unifiée simplifie considérablement l'intégration technique, réduit les coûts opérationnels et offre une expérience de paiement rapide, sécurisée et fluide, tant pour les entreprises que pour leurs clients.

Intégration

Un contrat, une API

Aucun besoin de négocier et de maintenir une connexion technique séparée par opérateur ou banque.

Coût

Charges opérationnelles réduites

Un point d'intégration unique réduit le temps de développement et les coûts de maintenance.

Expérience

Rapide, sécurisé, fluide

Pour votre équipe comme pour vos clients, chaque paiement suit le même chemin fiable.

04

Ouverture d'un compte professionnel

Vos identifiants et la documentation d'intégration se trouvent tous deux dans le tableau de bord, et le tableau de bord nécessite un compte professionnel MainMoney. Il existe deux façons d'en obtenir un, et la différence réside dans le fait qu'une personne soit vérifiée avant l'entreprise, ou l'inverse.

VOIE ALE PLUS RAPIDE

Depuis le tableau de bord web

Vous allez directement à l'entreprise. Aucun compte individuel, aucun KYC.

1
Créez votre compte professionnel avec les informations de votre entreprise.
2
Soumettez votre KYB — les documents prouvant que l'entreprise est enregistrée.
3
KYB validé et le tableau de bord complet s'ouvre, documentation incluse.
VOIE BMOBILE D'ABORD

Depuis l'application MainMoney

Idéal si vous utilisez déjà MainMoney personnellement, ou si vous souhaitez l'application dès le premier jour.

1
Créez un compte individuel dans l'application.
2
Passez le KYC — votre pièce d'identité et un selfie, vérifiés avant de continuer.
3
Créez votre compte professionnel depuis l'application.
4
Passez le KYB, puis connectez-vous au tableau de bord avec les mêmes identifiants.
— CHOISISSEZ VOTRE VOIE

Choisissez l'intégration adaptée à vos besoins.

Deux façons de vous connecter, selon le niveau de contrôle dont votre équipe a besoin sur le flux de paiement.

INTÉGRATION SIMPLE

Liens de paiement, sans code

Idéal pour les entreprises qui souhaitent accepter les paiements facilement, sans complexité technique. Créez un lien depuis le tableau de bord et acceptez le Mobile Money, les cartes et le QR en quelques secondes.

INTÉGRATION AVANCÉE

Accès complet à l'API

Pour les équipes qui souhaitent automatiser les paiements, les remboursements et la réconciliation directement depuis leurs propres systèmes, avec un contrôle total sur l'expérience de paiement.

05

Le guide d'intégration

Huit étapes de l'inscription à votre premier paiement en production. Les étapes 1 et 2 concernent le compte, les étapes 3 à 6 vous mènent à la documentation, et les étapes 7 et 8 sont le développement. Choisissez une étape pour le détail.

Les étapes
01
Créez votre compte professionnel MainMoney
Inscrivez-vous en tant qu'entreprise avec les informations de votre société. Chaque application et identifiant que vous créez ensuite se trouve sous ce compte.
02
Soumettez vos documents KYB
Preuve d'enregistrement de l'entreprise et de bénéficiaire effectif. Le KYB peut rester en attente en Sandbox, mais doit être validé avant de passer en production.
UNE FOIS LE KYB VALIDÉ — CHOISISSEZ VOTRE VOIE
MainMoney
SANS CODE
Cliquez sur MainMoney pour les liens de paiement. Créez un lien, partagez-le, soyez payé — rien à développer. Vous avez terminé ici.
Plateforme Développeur
INTÉGRATION COMPLÈTE
Cliquez sur Plateforme Développeur pour les clés API, les webhooks et la documentation d'intégration. Continuez avec l'étape 03.
03
Créez une application Sandbox et développez avec
Prenez votre clé secrète de test, intégrez, et déclenchez des paiements de test sur chaque méthode. Sandbox ne touche jamais aux fonds réels.
04
Créez une application Live et passez en production
Remplacez par vos identifiants Live et commencez à accepter des paiements réels. Même API, mêmes charges utiles.

— CONSTRUIT POUR LES DÉVELOPPEURS

Acceptez votre premier paiement en quelques minutes.

Créez un lien de paiement en une seule requête. Chaque réponse inclut une URL de paiement hébergée sur laquelle vos clients peuvent payer immédiatement.

LE CLIENT PAIE AVEC
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "mobile_money",
    "provider": "orange_money "
  }'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "mobile_money",
  provider: "o"
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "o",
  amount: 25000,
  currency: "CDF"
}
then your webhook fires
status: "succeeded"
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "mobile_money",      
                    "provider": "orange_money",    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "o",
  amount: 25000,
  currency: "CDF"
}
then your webhook fires
status: "succeeded"
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'mobile_money',
  'provider' => 'o'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "o",
  "amount": 25000,
  "currency": "CDF"
}
then your webhook fires
status: "succeeded"
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "mobile_money",
    "provider": "mpesa"
  }'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "mpesa",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "mobile_money",
  provider: "mpesa"
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "mpesa",
  amount: 25000,
  currency: "CDF"
}
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "mobile_money",      
                    "provider": "mpesa",    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "mpesa",
  amount: 25000,
  currency: "CDF"
}
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'mobile_money',
  'provider' => 'mpesa'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "mpesa",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "mobile_money",
    "provider": "airtel_money"
  }'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "airtel_money",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "mobile_money",
  provider: "airtel_money"
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "airtel_money",
  amount: 25000,
  currency: "CDF"
}
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "mobile_money",      
                    "provider": "airtel_money",    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "airtel_money",
  amount: 25000,
  currency: "CDF"
}
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'mobile_money',
  'provider' => 'airtel_money'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "airtel_money",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "mobile_money",
    "provider": "mtn_momo"
  }'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "mtn_momo",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "mobile_money",
  provider: "mtn_momo"
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "mtn_momo",
  amount: 25000,
  currency: "CDF"
}
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "mobile_money",      
                    "provider": "mtn_momo",    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "mtn_momo",
  amount: 25000,
  currency: "CDF"
}
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'mobile_money',
  'provider' => 'mtn_momo'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "mtn_momo",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "mobile_money",
    "provider": "afrimoney"
  }'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "afrimoney",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "mobile_money",
  provider: "afrimoney"
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "afrimoney",
  amount: 25000,
  currency: "CDF"
}
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "mobile_money",      
                    "provider": "afrimoney",    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "mobile_money",
  provider: "afrimoney",
  amount: 25000,
  currency: "CDF"
}
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'mobile_money',
  'provider' => 'afrimoney'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "mobile_money",
  "provider": "afrimoney",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
curl -X POST $BASE/payments \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "CDF",
    "method": "card"
}'
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "card",
  "amount": 25000,
  "currency": "CDF"
}
REQUEST
const res = await mainmoney.payments.create({
  amount: 25000,
  currency: "CDF",
  method: "card",
});
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "card", 
  amount: 25000,
  currency: "CDF"
}
REQUEST
requests.post(  
          f"{BASE}/payments",    
           headers={"Authorization": f"Bearer {access_token}"},  
          json={        
                  "amount": 25000,      
                    "currency": "CDF",        
                    "method": "card"    
           },
    )
RESPONSE · 201
{
  id: "pay_8Kf2mQ4Ln",
  status: "pending",
  method: "card",
  amount: 25000,
  currency: "CDF"
}
REQUEST
$res = $mainmoney->payments->create([
  'amount' => 25000,
  'currency' => 'CDF',
  'method' => 'card'
]);
RESPONSE · 201
{
  "id": "pay_8Kf2mQ4Ln",
  "status": "pending",
  "method": "card",
  "amount": 25000,
  "currency": "CDF"
}
Changez la méthode et un seul champ change. Le reste de votre code ne change pas.
06SANDBOX ET LIVE

Deux applications, un tableau de bord.

Même API, mêmes charges utiles — seuls les identifiants que vous envoyez changent.

SANDBOX
LIVE
MONEY
Aucun
Réel
KYB
Peut être en attente
Doit être validé
SWITCH
Remplacez par les identifiants de l'application Live. Rien d'autre.
07SÉCURITÉ ET CONFORMITÉ

Conçu pour être fiable.

Chaque entreprise est vérifiée avant de pouvoir déplacer de l'argent, et le trafic de test ne touche jamais la production.

KYB sur chaque compte
Aucune entreprise n'atteint le mode Live sans documents validés.
Identifiants que vous contrôlez
Une clé secrète distincte par application, tournée ou révoquée depuis le tableau de bord.
Sandbox isolé
Le trafic de test n'atteint jamais de fonds ou de clients réels.
Tokenization at capture
Les informations de carte sont échangées contre un jeton dès leur saisie. Nous stockons le jeton, jamais le numéro.

Questions

Pour tout ce qui n'est pas couvert ici, l'équipe d'intégration répond directement.

Contactez-nous →
Which Mobile Money operators are supported?+
MainMoney est directement connecté à M-Pesa, Airtel Money, AfriMoney, Orange Money et MTN Mobile Money (MoMo), ainsi qu'au réseau de cartes Visa.
Do I need a personal MainMoney account to open a business account?+
Non. Un compte professionnel est créé indépendamment et n'est pas lié à un portefeuille personnel.
Where is the integration documentation?+
Dans le tableau de bord, une fois le mode Développeur activé — aucune connexion séparée requise.
Can I accept payments without writing any code?+
Oui. Les liens de paiement peuvent être créés et partagés en quelques secondes depuis le tableau de bord, avec les trois méthodes de paiement activées automatiquement.
How do I know a payment succeeded?+
Votre webhook se déclenche avec le statut final, et le même résultat est visible dans le registre de votre tableau de bord.
Is there a test environment?+
Oui. Sandbox reproduit exactement Live, avec des identifiants de test et aucun mouvement d'argent réel.

Ouvrez un compte et commencez à développer dès aujourd'hui.

Sandbox est gratuit, la documentation est à un clic, et passer en production ne demande qu'un changement d'identifiants.