neo-pays

Démarrage rapide

Du compte au premier encaissement, en cinq étapes.

1. Créer votre compte marchand

Inscrivez-vous sur le tableau de bord. Votre compte démarre en statut pending : vous pouvez explorer le tableau de bord, créer des clés et des webhooks, mais les appels API répondent client_inactive tant que votre dossier n'est pas validé.

2. Compléter le dossier KYB

Dans Conformité, renseignez le représentant légal et les bénéficiaires effectifs, puis téléversez le registre de commerce (RCCM). Un document rejeté l'est toujours avec un motif — corrigez et re-soumettez, l'historique est conservé.

Une fois le dossier approuvé, votre compte passe en active et vos clés s'ouvrent. Aucune autre action n'est requise de votre côté.

3. Créer une clé API

Dans Développeurs → Clés API, créez une clé test puis, quand vous êtes prêt, une clé live. Le secret (sk_test_… ou sk_live_…) n'est affiché qu'une seule fois, à la création — stockez-le immédiatement dans votre gestionnaire de secrets.

4. Trouver vos identifiants d'actif et de plateforme

Avant le premier appel, demandez ce que votre compte peut emprunter :

curl https://api.neo-pays.com/v1/corridors \
  -H "Authorization: Bearer sk_test_..."

La réponse donne les asset_id et platform_id à utiliser, par pays et par sens. GET /v1/assets donne en plus le nombre de décimales de chaque actif — c'est lui qui dit ce que vaut une unité mineure.

5. Créer votre premier encaissement

curl https://api.neo-pays.com/v1/payments \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: commande-1042" \
  -d '{
    "asset_id": 1,
    "amount_minor": "500000",
    "country": "SN",
    "platform_id": 1,
    "client_ref": "commande-1042",
    "payer": { "name": "Adama Diop", "phone": "+221771234567", "country": "SN" }
  }'

La réponse contient une payment_url (ou un deeplink, ou un qrcode_url, selon le rail) : présentez-la à votre client.

Les montants sont des chaînes, en unités mineures. "500000" sur un actif à zéro décimale vaut 500 000. Toujours une chaîne, jamais un nombre à virgule flottante : l'API refuse ce qui ne se relit pas exactement.

6. Écouter le webhook

Ne confiez jamais la confirmation au retour navigateur — le client peut fermer l'onglet. La vérité est l'événement payment.success livré sur votre endpoint (le configurer), ou à défaut GET /v1/payments/{id}.

Et ensuite