Rembourser ou annuler un paiement
https://staging.mobupay.nc/api/v1/payments/{id}/refundCe que fait cet appel
Rembourse tout ou partie d'un paiement capturé (crédit réel vers la carte), ou annule (void) une autorisation non encore capturée (aucun débit n'a eu lieu). L'opération est déterminée automatiquement par l'état du paiement. amountCents est optionnel, exprimé dans la devise d'origine du paiement : absent = remboursement/annulation de ce qui reste.
Plusieurs remboursements partiels : un paiement se rembourse en une ou plusieurs fois (un article, puis un autre), jusqu'au montant payé. Chaque réponse indique le cumul remboursé (totalRefundedAmount) et ce qui reste (remainingAmount), dans la devise d'origine ; GET /api/v1/payments/{id} les donne aussi (refundedAmount, refundableAmount). Le remboursement qui solde le paiement le fait passer refunded, même s'il est lui-même partiel.
Mobupay émet le webhook correspondant : payment.partially_refunded tant qu'il reste un montant, payment.refunded au solde, payment.cancelled pour une annulation. Pour les modes de financement plateforme (marchand absorbe / plateforme absorbe / split) et le cas net carte = 0, voir la section Cas d'usage (/docs/usecases/distant/plateforme/cas-particuliers).
Authorization: Bearer sk_test_XXXXLe pool est déduit du préfixe de la clé
Il n'y a pas d'interrupteur test et production sur cette page. sk_test_* ne traite aucun paiement réel, sk_live_* encaisse.
Paramètres
1 en-têteidstringRequispathIdentifiant du paiement (`pay_*`) en statut `authorized`, `captured` ou `partially_refunded`.
Corps de la requête
application/jsonamountCentsintegerOptionnelMontant à rembourser dans la devise d'origine du paiement (XPF francs ou EUR cents, comme `order.currency`). **Optionnel** : absent ⇒ remboursement/annulation de ce qui reste. Ne peut pas excéder ce qui reste à rembourser.
reasonstringOptionnelMotif libre du remboursement (max 500 caractères). Conservé dans `audit_log`.
platformConfigarray[object]OptionnelQui finance le remboursement d'un paiement de type `platform`. Une entrée par financeur : le marchand absorbe (son `merchantId`), la plateforme absorbe (le `merchantId` de la plateforme elle-même), ou les deux se partagent le montant. La somme des `amount` doit égaler le montant remboursé. **Requis** sur un paiement réparti entre plusieurs marchands (`REFUND_PLATFORM_CONFIG_REQUIRED`). L'ancienne forme objet `{ platformAccountId, segmentation }` est dépréciée et sera refusée à partir du 05/11/2026 (`REFUND_PLATFORM_CONFIG_LEGACY_FORM`) ; `platformAccountId` n'est plus requis.
Codes de retour
Remboursement ou annulation effectué.
Montant invalide, statut paiement incompatible, incohérence de platformConfig ou de items (SEGMENTATION_AMOUNT_MISMATCH, REFUND_PLATFORM_CONFIG_REQUIRED, REFUND_MERCHANT_NOT_IN_PAYMENT, REFUND_PLATFORM_CONFIG_LEGACY_FORM), ou remboursement partiel d'un paiement à net 0 (PARTIAL_REFUND_UNSUPPORTED_NET0). Montant au-delà de ce qui reste : REFUND_AMOUNT_EXCEEDS_PAYMENT au premier remboursement, REFUND_AMOUNT_EXCEEDS_REMAINING ensuite (le détail porte refundedAmount et remainingAmount). Paiement déjà entièrement remboursé : INVALID_PAYMENT_STATUS.
Paiement introuvable.
Langage
Cliquez sur Essayer pour lancer la requête et voir la réponse ici. Ou choisissez un exemple :
application/json