Moins d’envois au mauvais numéro
Affichez le nom du titulaire à l’expéditeur avant de confirmer.
Envoyez des gourdes vers les portefeuilles NatCash depuis votre plateforme, vérifiez le nom du titulaire avant de confirmer et recevez la confirmation du dépôt, généralement immédiatement.
NatCash est le portefeuille mobile de Natcom, l’un des deux grands opérateurs de téléphonie d’Haïti. L’API NatCash de LevaPay permet à votre plateforme d’envoyer des gourdes (HTG) vers n’importe quel portefeuille NatCash avec seulement le numéro de téléphone du bénéficiaire.
Votre système utilise une API REST avec des réponses JSON : il vérifie le titulaire du portefeuille, demande un devis avec le total exact, confirme le transfert et reçoit le statut final. La plupart des transferts NatCash sont crédités immédiatement, vous pouvez donc afficher la confirmation au client sans attente.
Elle convient parfaitement aux apps de transfert d’argent, aux portefeuilles numériques, aux plateformes de paiements P2P et aux entreprises qui paient des agents, des fournisseurs ou des collaborateurs en Haïti et veulent proposer NatCash avec MonCash grâce à une seule intégration.
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 vers les portefeuilles NatCash. Ce n’est pas un produit officiel de Natcom.
Inscrivez-vous gratuitement et générez un utilisateur API et une PRIVATE_KEY de test. Dans le sandbox, utilisez le portefeuille de test 50940885084.
GratuitGET /wallets/{wallet}?network=natcash renvoie le nom du titulaire pour que l’expéditeur confirme que le numéro est correct.
GET /wallets/{wallet}Demandez un devis avec POST /transfers/quote (network "natcash") puis confirmez le quote_id avec POST /transfers et une idempotency_key unique.
POST /transfersLa réponse arrive généralement avec le statut completed. Sinon, appelez GET /transfers/{id}.
completedVérification du titulaire, devis et transfert avec l’API NatCash en mode TEST. En production, remplacez /test/v1 par /prod/v1 et utilisez vos clés PROD.
# 1) Vérifier le titulaire
curl "https://api.levapay.dev/test/v1/wallets/50940885084?network=natcash" \
-H "X-Api-User: votre_utilisateur_api" \
-H "X-Api-Key: votre_PRIVATE_KEY"
# 2) 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":"natcash","wallet":"50940885084","amount_htg":5000}'
# 3) 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"}'
<?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);
}
$holder = levapay('GET', '/wallets/50940885084?network=natcash')['data'];
echo $holder['beneficiary']; // nom du titulaire
$quote = levapay('POST', '/transfers/quote', [
'network' => 'natcash', 'wallet' => '50940885084', 'amount_htg' => 5000,
'note' => 'Commande 10025',
])['data'];
$transfer = levapay('POST', '/transfers', [
'quote_id' => $quote['quote_id'],
'idempotency_key' => 'commande-10025',
])['data'];
echo $transfer['status']; // généralement "completed"
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: holder } = await api('GET', '/wallets/50940885084?network=natcash');
console.log(holder.beneficiary); // nom du titulaire
const { data: quote } = await api('POST', '/transfers/quote', {
network: 'natcash', wallet: '50940885084', amount_htg: 5000,
note: 'Commande 10025',
});
const { data: transfer } = await api('POST', '/transfers', {
quote_id: quote.quote_id,
idempotency_key: 'commande-10025',
});
console.log(transfer.status); // généralement "completed"
Utilisez le numéro haïtien associé à NatCash : 8 chiffres, avec ou sans le préfixe 509 (par exemple 40885084 ou 50940885084). Les montants sont en gourdes, entiers, à partir de 1 HTG.
GET /wallets/{wallet}?network=natcash renvoie le nom du titulaire et crée un devis de vérification de 100 HTG. Confirmez-le avec POST /transfers seulement si vous voulez envoyer ce montant ; sinon, laissez-le expirer. Un devis classique avec POST /transfers/quote inclut aussi le champ beneficiary.
Les transferts NatCash reviennent généralement completed dans la même réponse. Votre intégration doit tout de même gérer pending et failed. Si le transfert échoue, le montant revient sur votre solde.
Dans le sandbox, utilisez le portefeuille de test 50940885084 : le transfert est completed immédiatement et débité de votre solde TEST, sans argent réel.
Le champ note (64 caractères maximum) définit le texte que le bénéficiaire verra sur son dépôt. Sans note, LEVAPAY est utilisé.
Affichez le nom du titulaire à l’expéditeur avant de confirmer.
La plupart des transferts reviennent avec le statut completed dans la même réponse.
Montant, commission et total dans le devis, sans surprise pour votre client.
L’idempotency_key obligatoire évite de débiter deux fois quand votre système réessaie.
Le même code fonctionne pour les deux réseaux : seule la valeur de network change.
Testez tout le parcours avec des clés TEST et sans argent réel.
Vous payez 3,5 % du montant de chaque transfert, sans frais d’ouverture, sans abonnement et sans frais d’approvisionnement. La vérification du titulaire n’a pas de coût propre. Par exemple, pour que le bénéficiaire reçoive 5 000 HTG sur NatCash :
Non. LevaPay est un service indépendant qui permet aux entreprises d’envoyer de l’argent vers les portefeuilles NatCash grâce à sa propre API. NatCash est une marque de Natcom.
Oui. Appelez GET /wallets/{wallet}?network=natcash ou consultez le champ beneficiary du devis avant de confirmer le transfert.
Non. La vérification crée un devis de 100 HTG qui n’est débité que si vous le confirmez avec POST /transfers. Sinon, il expire sans frais.
Il est généralement crédité immédiatement et la réponse de POST /transfers arrive déjà avec le 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.
Créez un compte gratuit, générez des clés TEST et utilisez le portefeuille 50940885084. Si votre solde TEST est à 0, demandez du solde TEST à votre contact LevaPay.
Oui. Avec la même intégration, vous envoyez vers MonCash en indiquant network "moncash". Les transferts MonCash peuvent rester quelques instants en pending.
Créez un compte gratuit, testez l’API NatCash avec le portefeuille de test et passez en production quand vous êtes prêt.