Docs
ENFR
Tableau de bord
Produits

Remittance

Rechargez un solde remittance en monnaie locale et envoyez de l’argent vers d’autres pays d’Afrique, depuis le tableau de bord ou par API.

La remittance permet à votre entreprise de faire circuler de l’argent entre pays africains. Vous rechargez un solde remittance par mobile money ou virement dans un pays, puis vous envoyez depuis ce solde vers des portefeuilles mobile money et des comptes bancaires dans d’autres pays. Le solde est tenu dans la devise de votre entreprise (par exemple XAF pour une entreprise immatriculée au Cameroun).

Accès sur demande. La remittance s’ouvre entreprise par entreprise, après un court examen. Faites la demande depuis Remittance dans le tableau de bord. Tant que l’accès n’est pas validé, tous les points d’accès ci-dessous renvoient 403 remittance_not_enabled.

Fonctionnement

  1. Demandez un devis. Créez une recharge ou un envoi. Monerails renvoie un devis : montant, frais, montant crédité ou débité de votre solde et taux appliqué. Un devis est valable environ 9 minutes (quote_expires_at).
  2. Confirmez. Confirmez le devis. Pour un envoi, le débit est alors réservé sur votre solde ; s’il ne le couvre pas, la confirmation échoue avec 400 insufficient_balance et rien n’est envoyé.
  3. Suivez l’issue. L’opération passe en processing, puis succeeded ou failed. Vous recevez un webhook dans les deux cas. Un envoi en échec rend automatiquement le montant réservé à votre solde.

Pour sauter l’étape de vérification, envoyez "confirm": true à la création : le devis est confirmé dans la même requête.

Trouver un réseau

Listez les opérateurs mobile money et les banques disponibles pour un pays et un sens :

bash
curl "https://api.monerails.com/v1/remittances/options?type=transfer&country=CI" \
  -H "Authorization: Bearer $MONERAIL_KEY"

Chaque élément a un id (à envoyer dans network), un channel (mobile_money ou bank), le format de compte attendu (phone ou account_number) et le fee_percent appliqué.

Recharger votre solde

Le payeur valide le paiement sur son téléphone. Votre solde est crédité dès réception.

bash
curl https://api.monerails.com/v1/remittances/topups \
  -H "Authorization: Bearer $MONERAIL_KEY" \
  -H "Idempotency-Key: topup-0001" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "CM",
    "amount": 500000,
    "network": "NETWORK_ID",
    "payer": { "name": "Alpha SARL", "phone": "+237670000000" }
  }'

Envoyer de l’argent

amount est le montant reçu par le bénéficiaire, dans la devise du pays d’arrivée, en unités mineures.

bash
curl https://api.monerails.com/v1/remittances/transfers \
  -H "Authorization: Bearer $MONERAIL_KEY" \
  -H "Idempotency-Key: transfer-inv-204" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "CI",
    "amount": 50000,
    "network": "NETWORK_ID",
    "beneficiary": { "name": "Kouassi Yao", "phone": "+2250700000000" },
    "reason": "Supplier invoice 204",
    "client_reference": "inv_204"
  }'

La réponse est un objet remittance au statut quoted :

JSON
{
  "id": "7c1f0d0e-5d2b-4a43-9b1e-2f3f9a9d1c10",
  "object": "remittance",
  "type": "send",
  "status": "quoted",
  "country": "CI",
  "currency": "XOF",
  "amount": 50000,
  "balance_currency": "XAF",
  "fee": 1750,
  "balance_debit": 51750,
  "rate": 1,
  "network": "Orange Money",
  "beneficiary": { "name": "Kouassi Yao", "phone": "+2250700000000" },
  "quote_expires_at": "2026-11-22T10:09:00Z",
  "created_at": "2026-11-22T10:00:00Z"
}

Confirmez-le :

bash
curl -X POST https://api.monerails.com/v1/remittances/7c1f0d0e-5d2b-4a43-9b1e-2f3f9a9d1c10/confirm \
  -H "Authorization: Bearer $MONERAIL_KEY" \
  -H "Idempotency-Key: confirm-inv-204"

Solde, liste et détail

Point d’accès Description
GET /v1/remittances/balance Montants available (disponible) et pending (réservé), dans la devise de votre solde.
GET /v1/remittances Vos recharges et envois, du plus récent au plus ancien. Filtres : type=topup ou type=transfer, limit, starting_after.
GET /v1/remittances/{id} Une opération.

Statuts

Statut Signification
quoted Devis prêt, en attente de confirmation.
processing Confirmée et en cours. Pour un envoi, le débit est réservé.
succeeded Recharge créditée, ou envoi livré.
failed N’a pas abouti. Un débit réservé revient sur votre solde.
expired Le devis n’a pas été confirmé à temps. Rien n’a bougé.

Webhooks

Événement Quand
remittance.topup_succeeded Une recharge est créditée sur votre solde.
remittance.topup_failed Une recharge n’a pas abouti.
remittance.transfer_succeeded Un envoi est livré.
remittance.transfer_failed Un envoi a échoué et son montant est revenu sur votre solde.

Le champ data de l’événement est l’objet remittance.

Frais

Les frais sont un pourcentage de l’opération, par pays et par sens, affichés dans Paramètres › Tarifs une fois l’accès validé, et dans chaque devis. Ils sont prélevés dans la devise de votre solde : déduits d’une recharge, ajoutés à un envoi.

Mode test

Avec une clé mr_test_, rien ne bouge réellement. L’issue dépend du numéro :

Numéro Issue
Mobile money se terminant par 1111111111 (par exemple +2371111111111) succeeded
Mobile money se terminant par 0000000000 failed
Compte bancaire 1111111111 succeeded
Compte bancaire 0000000000 failed