Skip to main content
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.

Authorizations

Authorization
string
header
required

Clé secrète du compte Sandbox ou Live

Headers

Ipay-Target-Environment
enum<string>
required
Available options:
sandbox,
live
Ipay-Payment-Type
string
required

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"
Example:

"mobile"

Body

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
required

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

Required range: x >= 25
Example:

1000

country
enum<string>
required
Available options:
NE,
BJ
Example:

"NE"

currency
string
required
Allowed value: "XOF"
msisdn
string
required
Example:

"40410000000"

transaction_id
string
required

Référence unique dans le compte

customer_name
string
required

Response

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

status
string
required
Example:

"succeeded"

reference
string
required
public_reference
string
required
meta_data
object