Paiements

Suivre une transaction

Statuts, consultation et liste.

curl -X GET https://api.secure.payment.loov-solutions.com/v2/payments/PAYHBN2MJVPY32K7MSZXXN9 \
  -H "Authorization: Bearer $LOOV_API_KEY" \
  -H "Accept: application/json"

Utilisez /v2/payouts/{reference} pour un transfert. Consulter une transaction en cours interroge l'opérateur et renvoie son état le plus récent.

Statuts

StatutFinalDescription
pendingnonCréée, pas encore acceptée par l'opérateur.
processingnonEn attente du résultat.
succeededouiRéussie. Pour un encaissement, votre solde est crédité.
failedouiÉchouée ; voir failure.code, failure.message et failure.reason.
expiredouiLe client n'a pas payé à temps.

Pourquoi une transaction a échoué

Une transaction échouée ou expirée porte un objet failure ; il vaut null tant que rien n'a échoué.

{
  "reference": "PAYHBN2MJVPY32K7MSZXXN9",
  "type": "payin",
  "status": "failed",
  "livemode": false,
  "currency": "XAF",
  "amount": 5000,
  "fee": 150,
  "customer_fee": 0,
  "counterparty_amount": 5000,
  "merchant_amount": 4850,
  "method": "mobile_money",
  "operator": "mtn-cm",
  "phone_number": "237650000000",
  "checkout_url": null,
  "merchant_reference": "order-42",
  "failure": {
    "code": "provider_failed",
    "message": "The payment failed: Solde insuffisant.",
    "reason": "Solde insuffisant"
  },
  "created_at": "2026-10-04T10:12:00+00:00",
  "completed_at": "2026-10-04T10:13:07+00:00"
}
ChampTypeDescription
failure.codestringCode stable, à utiliser dans votre code (voir ci-dessous).
failure.messagestringPhrase complète, en anglais.
failure.reasonstring|nullLa raison seule, telle que l'opérateur ou la banque l'a donnée (« Solde insuffisant », « Paiement refusé par la banque »). Peut être montrée à votre client. Notre propre phrase quand l'opérateur n'a pas donné de raison.
CodeFinalDescription
provider_declinedouiL'opérateur a refusé la demande (numéro invalide, compte non autorisé…).
provider_failedouiLe paiement a échoué chez l'opérateur (solde insuffisant, refus de la banque, client qui n'a pas validé…).
amount_mismatchouiLe montant payé ne correspond pas au montant demandé.
expiredouiLe client n'a pas payé à temps.
Fiez-vous à failure.code pour décider quoi faire ; failure.reason dépend de l'opérateur et peut changer de formulation.

Lister

curl -X GET https://api.secure.payment.loov-solutions.com/v2/transactions?type=payin&status=succeeded&limit=25 \
  -H "Authorization: Bearer $LOOV_API_KEY" \
  -H "Accept: application/json"

La liste est paginée par curseur : passez la valeur meta.next_cursor dans le paramètre cursor pour la page suivante.

Soldes

curl -X GET https://api.secure.payment.loov-solutions.com/v2/balances \
  -H "Authorization: Bearer $LOOV_API_KEY" \
  -H "Accept: application/json"