Aller au contenu principal

Plateforme de paiement · Afrique de l'Ouest

L'API de paiement
de la Guinée.

Orange Money, MTN Money, cartes Visa et Mastercard — derrière une seule API. Pour les marchands qui veulent encaisser sans intégrer dix opérateurs.

Sandbox ouverte

Sans engagement,
sans frais cachés.

Inscription immédiate, clés sandbox prêtes à l'emploi, contrat marchand activé en quelques jours après KYC.

Latence p99

< 300ms

temps de réponse moyen

Wallet · GNF

12,4M

disponible aujourd'hui

Activité en direct

Live
  • OM

    INV-0142

    Conakry

    +500k
  • MT

    INV-0141

    Kindia

    +250k
  • INV-0140

    Visa

    +1,5M

4

pays · 3 devises

payments-initiate.sh
# Authentification HMAC-SHA256, idempotente, sandbox
curl -X POST https://sandbox-api.saalapay.com/api/v1/payments/initiate \
  -H "X-SP-CLIENT-ID: pk_sandbox_..." \
  -H "X-SP-SIGNATURE: $SIGNATURE" \
  -H "Idempotency-Key: $UUID" \
  -d '{ "amount": 500000, "currency": "GNF", "method": "MOBILE_MONEY", "provider": "orange_money" }'
Orange Money MTN Mobile Money Visa Mastercard Virement bancaire Webhooks signés HMAC Orange Money MTN Mobile Money Visa Mastercard Virement bancaire Webhooks signés HMAC

Pour qui ?

Une API,
trois usages très concrets.

Établissement scolaire

Frais T2 2026

847 / 1 200 parents

Encaissé

211,7M GNF

Restant

88,3M GNF

Derniers paiements

  • Diallo Aïssata · Orange +250k
  • Camara Mohamed · MTN +250k
  • Barry Mariama · Visa +250k

École Lumière — Conakry

Encaisser les frais de scolarité
sans courir après les parents.

Chaque trimestre, l'École Lumière facture 1 200 familles. Avant SaalaPay, le secrétariat encaissait en espèces, perdait des reçus, passait deux semaines à pointer les retards. Aujourd'hui, chaque parent paie depuis son téléphone, le wallet de l'école se crédite automatiquement.

  • Lien de paiement par parentEnvoyé par SMS ou WhatsApp avec montant et échéance pré-remplis.
  • Réconciliation automatiqueChaque paiement reçu rapproché de la facture, zéro saisie manuelle.
  • Sous-wallets par classeCantine, transport, papeterie — ventilation native, sans table externe.
E-commerce

Pagne wax bleu indigo

2 yards · 100% coton

185 000 GNF

Mode de paiement

Webhook reçu payment.succeeded

POST /shop/orders/482/confirm · 142ms · 200 OK

Boutique Niani — Marché de Madina

Vendre en ligne sans renoncer
au Mobile Money.

Niani vend des pagnes wax depuis son site WooCommerce. Ses clients sont à Conakry, à Dakar, à Paris — chacun avec sa méthode préférée. Une seule intégration SaalaPay : Orange Money pour les locaux, Visa pour la diaspora, MTN pour les voisins.

  • Plug-in WooCommerce ou RESTIntégration en 50 lignes, ou plug-in officiel maintenu par l'équipe.
  • Webhooks idempotentsPas de double-confirmation, même si le webhook arrive deux fois.
  • GNF · XOF · EUR convertiblesAu taux du jour, traçé sur chaque transaction.
ONG · Association

Campagne Ramadan 2026

Cantine scolaire pour 380 enfants

Objectif

50M

Collecté

38,4M

Donateurs

412

Audit log immuable

  • 14:32 · don.received · 50 000 GNF · Diaspora-FR
  • 14:31 · don.received · 25 000 GNF · Conakry
  • 14:28 · don.received · 100 000 GNF · Anonyme
  • 14:24 · don.received · 10 000 GNF · Conakry

Action Santé Guinée — Conakry

Collecter des dons,
tracer chaque centime.

Une ONG ne peut pas se permettre de perdre un donateur faute de moyen de paiement. Action Santé Guinée collecte sur Mobile Money pour la base locale, par carte pour la diaspora. Chaque transaction écrit une ligne dans un journal immuable — auditable au centime près.

  • Pages de collecte hébergéesCampagne ponctuelle ou récurrente, partageables par lien.
  • Audit log immuableSnapshots avant/après par mouvement, export CSV en un clic.
  • Tarif préférentiel associationCommission réduite sur les dons éligibles.

Production-grade

Pensé pour tenir la charge
et survivre aux pannes opérateurs.

Auth HMAC-SHA256

Signature sur chaque requête, fenêtre anti-replay 60s, rotation à chaud.

Idempotence native

Header Idempotency-Key respecté, même appel = même réponse, toujours.

Webhooks signés

HMAC + déduplication par event-id côté SaalaPay, bouton rejouer dispo.

Ledger immuable

Snapshots avant/après par mouvement, intégrité vérifiée à chaque écriture.

Rate limiting natif

Limites par clé, par IP, par endpoint. Lua atomique côté Redis.

Secrets chiffrés

libsodium XSalsa20-Poly1305 sur les clés et secrets en base.

Pour les développeurs

Une API REST
sans surprise.

Pas de SDK obligatoire. Vous appelez un endpoint, vous recevez une réponse JSON déterministe, vous écoutez un webhook signé. C'est tout.

  • Authentification HMAC-SHA256

    Signature sur chaque requête, fenêtre anti-replay de 60 secondes, rotation de clés à chaud.

  • Idempotence native

    Header Idempotency-Key pris en charge — le même appel donne la même réponse.

  • Webhooks signés et rejouables

    Signature HMAC, déduplication serveur, bouton « rejouer » dans le dashboard.

  • Sandbox illimitée

    Sous-domaine isolé (sandbox-api.saalapay.com), clés distinctes du live.

payments-initiate.sh
# Authentification HMAC-SHA256, idempotente, sandbox
curl -X POST https://sandbox-api.saalapay.com/api/v1/payments/initiate \
  -H "X-SP-CLIENT-ID: pk_sandbox_..." \
  -H "X-SP-SIGNATURE: $SIGNATURE" \
  -H "X-SP-TIMESTAMP: $TIMESTAMP" \
  -H "Idempotency-Key: $UUID" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 500000,
    "currency": "GNF",
    "method": "MOBILE_MONEY",
    "provider": "orange_money",
    "customer_phone": "+224611223344"
  }'
initiate-payment.js
// Pas de SDK obligatoire — fetch standard suffit
const res = await fetch('https://sandbox-api.saalapay.com/api/v1/payments/initiate', {
  method: 'POST',
  headers: {
    'X-SP-CLIENT-ID': process.env.SP_CLIENT_ID,
    'X-SP-SIGNATURE': signature,
    'X-SP-TIMESTAMP': timestamp,
    'Idempotency-Key': crypto.randomUUID(),
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    amount: 500000,
    currency: 'GNF',
    method: 'MOBILE_MONEY',
    provider: 'orange_money',
  }),
});

const { id, status, redirect_url } = await res.json();
InitiatePayment.php
// Avec n'importe quel client HTTP (cURL, Guzzle, fetch...)
$ch = curl_init('https://sandbox-api.saalapay.com/api/v1/payments/initiate');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-SP-CLIENT-ID: ' . $clientId,
        'X-SP-SIGNATURE: ' . $signature,
        'X-SP-TIMESTAMP: ' . $timestamp,
        'Idempotency-Key: ' . bin2hex(random_bytes(16)),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'amount'    => 500000,
        'currency'  => 'GNF',
        'method'    => 'MOBILE_MONEY',
        'provider'  => 'orange_money',
    ]),
]);
$payment = json_decode(curl_exec($ch), true);

Estimation

Combien ça coûte
sur votre volume ?

Tarifs publics, sans engagement. Au-delà de 50 M XOF/mois, un contrat négocié peut s'appliquer.

GNF

≈ 10 M GNF · 117 € · 76 700 XOF

Mobile Money 70%
Cartes 25%
Virement 5%

Coût total estimé

287 500 GNF

soit 2,88% du volume

Mobile Money · 7 M × 2,5% 175 000
Cartes · 2,5 M × 3,5% + 1k 112 500
Virement · 0,5 M Gratuit
Voir tous les tarifs

FAQ

Les questions qui reviennent

Combien de temps pour intégrer ?
Une journée pour un POC sur la sandbox, une semaine pour un passage en production avec gestion des webhooks et des erreurs métier. Aucun SDK obligatoire — un client HTTP standard suffit.
Que se passe-t-il si l'opérateur Mobile Money tombe ?
L'API renvoie une erreur explicite avec un code provider_unavailable. Vous pouvez retomber sur un autre moyen côté UI sans relancer toute la transaction (idempotence garantie).
Comment se passent les versements ?
Mobile Money à J+1 ouvré, cartes à J+2 ouvrés. Versement vers compte bancaire ou wallet — gratuit dans les deux cas, sans frais de retrait.
SaalaPay est-il agréé par la BCRG ou la BCEAO ?
SaalaPay opère via des partenariats bancaires et opérateurs licenciés dans chaque juridiction. Les agréments propres à la plateforme sont en cours d'instruction.
Quels pays au-delà de la Guinée ?
Sénégal, Mali, Côte d'Ivoire opérationnels (XOF). Burkina Faso et Togo prévus selon les accords opérateurs en cours.
Y a-t-il un environnement de test ?
Sandbox illimitée dès l'inscription. Sous-domaine isolé, clés distinctes, rejet strict côté middleware si vous tentez d'utiliser une clé sandbox sur le live.

Une question qui n'est pas listée ? Contactez l'équipe

Encaissez ce trimestre,
pas dans six mois.

Sandbox immédiate à l'inscription, contrat marchand activé en quelques jours après vérification KYC. Aucun frais d'installation.