Passer au contenu principal
POST
Créer une transaction
Cette opération enregistre une demande de paiement pour le compte authentifié et renvoie les références à conserver. Elle ne prend en charge que Ipay-Payment-Type: mobile (mobile money) ; les autres moyens de paiement passent par les liens de paiement. La liste des moyens est dans Reversement et frais.
Le statut renvoyé à la création n’est pas définitif. Vérifiez toujours le statut final côté serveur, avec Consulter une transaction ou via les webhooks, avant de livrer une commande.
  • Compte validé. Le compte doit être validé pour l’environnement ciblé, sinon l’API répond 403 sans créer de transaction.
  • Environnements. Sandbox et Live sont deux comptes distincts, avec des clés distinctes : une clé Sandbox utilisée avec Ipay-Target-Environment: live est refusée, et inversement. Voir Authentification.
  • transaction_id. C’est votre propre référence de commande, unique pour votre compte. Vous la retrouverez sous le nom external_reference, et elle est acceptée comme identifiant par Consulter une transaction.
  • Montant minimum. 25 XOF en Live pour mobile. Le minimum diffère en Sandbox : voir Sandbox et tests.
  • Références à conserver. reference est l’identifiant iMoney Encaissement de la transaction, accepté par les opérations de consultation. public_reference est la référence affichable à votre client.

Doublons et idempotence

Il n’existe pas d’en-tête de clé d’idempotence. La création applique une détection de doublon au niveau applicatif sur external_reference, c’est-à-dire sur le transaction_id que vous envoyez. En Live, un second appel avec la même valeur reçoit 422 ({"status": "failed", "message": "External Reference Not Valid"}) et ne crée pas de seconde transaction. En Sandbox, la forme de la réponse à un doublon n’est pas garantie identique à celle du Live : à confirmer auprès du support avant d’en faire une assertion de test automatisé.
Cette détection n’est pas garantie sous appels concurrents : deux requêtes envoyées au même instant avec le même transaction_id peuvent toutes les deux réussir. Générez un transaction_id unique par tentative, et vérifiez le statut avec Consulter une transaction avant de retenter une transaction dont vous n’avez pas reçu la réponse.

Limites

Aucune limite de débit n’est documentée pour cette opération : à confirmer auprès du support avant un envoi massif. Les messages d’erreur communs à toutes les opérations sont regroupés dans Erreurs.

Autorisations

Authorization
string
header
requis

Clé secrète du compte Sandbox ou Live

En-têtes

Ipay-Target-Environment
enum<string>
requis
Options disponibles:
sandbox,
live
Ipay-Payment-Type
string
requis

Méthode de paiement. POST /payments ne prend en charge que mobile (mobile money). Les autres moyens de paiement (carte bancaire et autres canaux) ne s'utilisent pas ici : ils sont disponibles via les liens de paiement (POST /external_payments). Liste complète : moyens de paiement.

Allowed value: "mobile"
Exemple:

"mobile"

Corps

application/json

Corps requis pour créer un paiement mobile money (Ipay-Payment-Type: mobile). Le montant minimum est de 25 XOF (50 XOF en Sandbox). En dessous, l'API répond 400 Bad Request: Amount Not Valid. Pour les autres moyens de paiement, utilisez les liens de paiement.

amount
integer
requis

Montant à débiter, en XOF (entier). Minimum : 25 XOF en Live, 50 XOF en Sandbox.

Plage requise: x >= 25
Exemple:

1000

country
enum<string>
requis
Options disponibles:
NE,
BJ
Exemple:

"NE"

currency
string
requis
Allowed value: "XOF"
msisdn
string
requis
Exemple:

"40410000000"

transaction_id
string
requis

Référence unique dans le compte

customer_name
string
requis

Réponse

Transaction enregistrée. Le statut final doit être vérifié séparément.

status
string
requis
Exemple:

"succeeded"

reference
string
requis
public_reference
string
requis
meta_data
object