Total exact avant l’envoi
Le devis indique le montant, la commission et le total : votre client sait ce que recevra le bénéficiaire.
Connectez votre app de transfert d’argent, de paiements ou fintech à MonCash avec une API REST simple : devis, envoi et suivi de chaque transfert jusqu’à ce que l’argent arrive sur le portefeuille du bénéficiaire.
MonCash est le portefeuille mobile le plus utilisé en Haïti : des millions de personnes y reçoivent et y gardent leur argent sur leur téléphone. L’API MonCash de LevaPay permet à votre plateforme d’envoyer des gourdes (HTG) vers n’importe quel portefeuille MonCash avec seulement le numéro de téléphone haïtien du bénéficiaire.
Au lieu de construire et de maintenir une connexion distincte avec chaque réseau, votre système communique avec une seule API REST. Vous demandez un devis, vous voyez le total exact qui sera débité de votre solde prépayé, vous confirmez le transfert et vous consultez son statut. LevaPay se charge de livrer l’argent sur le portefeuille.
Elle est conçue pour les entreprises qui envoient de l’argent en Haïti : apps de transfert depuis la République dominicaine, les États-Unis ou ailleurs, portefeuilles numériques, plateformes de paiements P2P et entreprises qui paient des collaborateurs ou des fournisseurs haïtiens.
MonCash est une marque de Digicel Haïti et NatCash est une marque de Natcom. LevaPay est un service indépendant. L’API LevaPay sert à envoyer de l’argent (paiements sortants) vers les portefeuilles MonCash. Ce n’est pas l’API marchande de Digicel pour encaisser des paiements dans une boutique en ligne.
Inscrivez-vous gratuitement et générez dans le panneau un utilisateur API et une PRIVATE_KEY de test. Le sandbox ne déplace jamais d’argent réel.
GratuitAppelez POST /transfers/quote avec network "moncash", le numéro et le montant en HTG. Vous recevez la commission, le total et un quote_id valable environ 120 secondes.
POST /transfers/quoteEnvoyez le quote_id à POST /transfers avec une idempotency_key unique. Si votre système réessaie, vous n’êtes jamais débité deux fois.
POST /transfersMonCash peut répondre pending pendant la confirmation du dépôt. Appelez GET /transfers/{id} jusqu’au statut completed ou failed.
GET /transfers/{id}Devis, envoi et suivi du statut avec l’API MonCash en mode TEST. Pour utiliser de l’argent réel, remplacez /test/v1 par /prod/v1 et utilisez vos clés PROD.
# 1) Devis
curl -X POST https://api.levapay.dev/test/v1/transfers/quote \
-H "Content-Type: application/json" \
-H "X-Api-User: votre_utilisateur_api" \
-H "X-Api-Key: votre_PRIVATE_KEY" \
-d '{"network":"moncash","wallet":"50937123456","amount_htg":5000}'
# 2) Envoyer
curl -X POST https://api.levapay.dev/test/v1/transfers \
-H "Content-Type: application/json" \
-H "X-Api-User: votre_utilisateur_api" \
-H "X-Api-Key: votre_PRIVATE_KEY" \
-d '{"quote_id":"qt_...","idempotency_key":"commande-10025"}'
# 3) Consulter le statut (pending → completed)
curl https://api.levapay.dev/test/v1/transfers/tr_... \
-H "X-Api-User: votre_utilisateur_api" \
-H "X-Api-Key: votre_PRIVATE_KEY"
<?php
const BASE = 'https://api.levapay.dev/test/v1';
function levapay(string $method, string $path, ?array $body = null): array {
$ch = curl_init(BASE . $path);
$opts = [
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Api-User: votre_utilisateur_api',
'X-Api-Key: votre_PRIVATE_KEY',
],
];
if ($body !== null) {
$opts[CURLOPT_POSTFIELDS] = json_encode($body);
}
curl_setopt_array($ch, $opts);
return json_decode((string) curl_exec($ch), true);
}
$quote = levapay('POST', '/transfers/quote', [
'network' => 'moncash', 'wallet' => '50937123456', 'amount_htg' => 5000,
])['data'];
$transfer = levapay('POST', '/transfers', [
'quote_id' => $quote['quote_id'],
'idempotency_key' => 'commande-10025',
])['data'];
// MonCash peut répondre pending : interrogez jusqu’au statut final
for ($i = 0; $i < 12 && $transfer['status'] === 'pending'; $i++) {
sleep(5);
$transfer = levapay('GET', '/transfers/' . $transfer['id'])['data'];
}
echo $transfer['status'];
const base = 'https://api.levapay.dev/test/v1';
const headers = {
'Content-Type': 'application/json',
'X-Api-User': 'votre_utilisateur_api',
'X-Api-Key': process.env.LEVAPAY_KEY,
};
const api = (method, path, body) =>
fetch(base + path, { method, headers, body: body && JSON.stringify(body) })
.then((r) => r.json());
const { data: quote } = await api('POST', '/transfers/quote', {
network: 'moncash', wallet: '50937123456', amount_htg: 5000,
});
let { data: transfer } = await api('POST', '/transfers', {
quote_id: quote.quote_id,
idempotency_key: 'commande-10025',
});
// MonCash peut répondre pending : interrogez jusqu’au statut final
for (let i = 0; i < 12 && transfer.status === 'pending'; i++) {
await new Promise((r) => setTimeout(r, 5000));
({ data: transfer } = await api('GET', `/transfers/${transfer.id}`));
}
console.log(transfer.status);
Utilisez le numéro de téléphone haïtien associé à MonCash : 8 chiffres, avec ou sans le préfixe 509 (par exemple 37123456 ou 50937123456). Les montants sont en gourdes, entiers, à partir de 1 HTG.
Un transfert MonCash peut rester quelques instants en pending pendant la confirmation du dépôt. Votre intégration doit consulter le statut et afficher le résultat final au client. Si le transfert échoue, le montant revient sur votre solde.
La vérification du nom du titulaire avant l’envoi est disponible pour NatCash, pas pour MonCash. Demandez donc à l’expéditeur de confirmer le numéro dans votre app avant d’appeler l’API.
Dans le sandbox, les transferts MonCash restent en pending et le montant est réservé sur votre solde TEST. Vous pouvez ainsi tester la gestion d’un transfert qui n’est pas encore terminé.
Le champ note (64 caractères maximum) définit le texte que le bénéficiaire verra sur son dépôt, par exemple le nom de votre app ou un numéro de commande.
Le devis indique le montant, la commission et le total : votre client sait ce que recevra le bénéficiaire.
L’idempotency_key obligatoire fait qu’une nouvelle tentative renvoie le même transfert au lieu d’en créer un autre.
Votre solde prépayé n’est débité que lorsque le transfert est accepté.
Le même code fonctionne pour les deux réseaux : seule la valeur de network change.
Des clés TEST pour développer et tester sans argent réel.
Solde, historique des transferts, approvisionnement et clés API au même endroit.
Vous payez 3,5 % du montant de chaque transfert, sans frais d’ouverture, sans abonnement et sans frais d’approvisionnement. Votre solde prépayé en HTG s’approvisionne par virement Banreservas, USDT ou Binance Pay. Par exemple, pour que le bénéficiaire reçoive 5 000 HTG sur MonCash :
Non. LevaPay est un service indépendant qui permet aux entreprises d’envoyer de l’argent vers les portefeuilles MonCash grâce à sa propre API. MonCash est une marque de Digicel Haïti.
Non. L’API LevaPay sert à envoyer de l’argent vers les portefeuilles MonCash (paiements sortants). Encaisser des clients dans une boutique en ligne relève d’un bouton de paiement marchand, un produit différent.
Il est généralement crédité rapidement, mais il peut rester quelques instants en pending. Appelez GET /transfers/{id} jusqu’au statut completed.
Si le transfert n’est pas accepté, votre solde n’est pas débité. S’il échoue après acceptation, le statut passe à failed et le montant revient sur votre solde.
Demandez l’accès à la production depuis le panneau et complétez la vérification : informations du représentant, pièce d’identité et selfie. Le mode TEST est disponible dès l’inscription.
Avec tout langage capable de faire des requêtes HTTPS : PHP, Node.js, Python, Java, Go ou C#. La documentation inclut des exemples en cURL, PHP et Node.js.
Oui. Avec la même intégration, vous envoyez vers NatCash en indiquant network "natcash", et vous pouvez vérifier le titulaire avant l’envoi.
Créez un compte gratuit, testez l’API MonCash en mode TEST et passez en production quand vous êtes prêt.