Valsoria Pay Console →
Documentation

Démarrer

IntroductionDémarrageAuthentification

API

PaiementsRemboursementsWebhooksRéférenceErreurs

Outils

Numéros de testSDK JavaScriptVersions

Référence de l'API

Base : https://qkmvexkljdcfarulydao.supabase.co/functions/v1

Cette page est dérivée de la spécification OpenAPI, qui décrit exactement ce qui répond aujourd'hui. Le fichier brut est téléchargeable pour vos outils.

Encaissement mobile money en Côte d'Ivoire, par une intégration unique.

Conventions

Ce qui n'existe pas encore : payouts, lots, bénéficiaires, règlements, pagination. Ne pas coder contre ces routes : elles ne répondent pas.

POST /v1-payments

Créer un encaissement

Crée une intention d'encaissement. La réponse ne dit pas que l'argent est arrivé : le paiement naît created, passe pending pendant que le connecteur travaille, et n'est succeeded qu'une fois la preuve reçue de l'opérateur. Écoutez le webhook, ou interrogez GET.

Corps de la requête

ChampTypeRequisDescription
amountintegerouiUnité mineure, entier strict. 10000 = 10 000 F.
currencystringnon
operatorstringnonOpérateur visé, p. ex. orange_ci, mtn_ci.
counterpartyobjectnonLe payeur.
merchant_referencestringnonVotre référence. Unique par marchand : une seconde transaction portant la même valeur est refusée en 409. C'est une protection contre le double encaissement, pas une gêne.
descriptionstringnon
metadataobjectnon
simulatestringnonSandbox uniquement : force l'issue sans passer par le connecteur. Ignoré en live.

Réponses

StatutDescription
201Paiement créé. Un rejeu d'idempotence rend AUSSI 201. Même clé, même corps : la réponse d'origine est restituée telle quelle, statut compris, et aucun second mouvement n'a lieu. N'en déduisez donc pas qu'un paiement vient d'être créé — 201 signifie « voici le paiement qui correspond à cette clé », pas « un de plus ». Fiez-vous à l'id.
400idempotency_key_required — l'en-tête est obligatoire. invalid_body — corps JSON illisible.
401authentication_required — aucune clé fournie. invalid_api_key — clé inconnue, révoquée ou malformée. Les trois cas rendent le même code : les distinguer aiderait à deviner des clés valides.
403merchant_inactive — le compte ne peut pas encaisser.
409idempotency_in_progress — une requête identique est en cours. duplicate_reference — ce merchant_reference désigne déjà une autre transaction.
422invalid_amount, invalid_currency, ou idempotency_key_reused (même clé, corps différent).

GET /v1-payments

Lire un paiement

L'identifiant se place en fin de chemin : …/v1-payments/txn_XXXXXXXX.

Un paiement appartenant à un autre marchand rend 404, jamais 403 : répondre 403 confirmerait son existence.

Réponses

StatutDescription
200Le paiement.
404resource_not_found — inconnu, ou appartenant à un autre marchand.
422invalid_id — l'identifiant ne ressemble pas à un txn_….

POST /v1-refunds

Rembourser un encaissement

Rembourse tout ou partie d'un paiement réussi. Sans amount, le reste remboursable est rendu en totalité.

Tous les connecteurs ne savent pas rembourser. Un paiement encaissé par un canal sans opération inverse est refusé en 422 refund_unsupported, avant toute écriture — mieux vaut un refus immédiat qu'une promesse qu'on ne tient pas.

Corps de la requête

ChampTypeRequisDescription
payment_idstringoui
amountintegernonAbsent ⇒ remboursement total du reste.

Réponses

StatutDescription
201Remboursement créé.
409already_refunded, ou paiement non remboursable dans son état actuel.
422invalid_payment_id, invalid_amount, amount_too_large (au-delà du reste remboursable), ou refund_unsupported.

L'objet paiement

ChampType
idstring
objectstring
amountinteger
currencystring
statusstring
operatorstring ou null
merchant_referencestring ou null
failure_codestring ou null
failure_messagestring ou null
livemodeboolean
created_atstring
succeeded_atstring ou null
failed_atstring ou null

Version d'API 2026-08-25 · changements · spécification OpenAPI