neo-pays

Remboursements

Rendre tout ou partie d'un encaissement.

Créer un remboursement

POST /v1/refunds
Champ Requis Description
payment_id oui L'encaissement d'origine : son identifiant ou sa référence
amount_minor — Chaîne, en unités mineures. Absent = le solde restant
reason — customer_request, duplicate, fraudulent ou other
description — Texte libre, visible dans le tableau de bord

Le remboursement est une opération à part entière : son propre id, son propre statut, son propre événement webhook (refund.success / refund.failed).

Règles

  • Seul un encaissement réussi se rembourse.
  • Le cumul des remboursements ne peut pas dépasser le montant encaissé — l'API répond 422 refund_exceeds_refundable au-delà.
  • Les frais d'encaissement ne sont pas rendus : ils restent à votre charge.
  • Un remboursement partiel laisse l'encaissement d'origine consultable, avec son historique complet.
  • Les fonds sont prélevés sur votre solde disponible au moment de l'appel, comme un versement.

Une clé d'idempotence par remboursement. Jamais l'identifiant du paiement d'origine : un encaissement peut être remboursé en plusieurs fois, et une clé portant l'identifiant du parent ferait passer le second remboursement partiel pour un rejeu du premier.

Lire et lister

GET /v1/refunds/{id}
GET /v1/refunds                     — liste ; ?payment_id= pour un seul encaissement
GET /v1/payments/{id}/refunds        — les remboursements d'un encaissement

GET /v1/payments/{id}/refunds et GET /v1/refunds?payment_id= rendent le même objet que la liste, avec la même pagination. L'encaissement se désigne par son identifiant ou sa référence ; celui d'un autre compte répond 404 sur la sous-ressource, et une liste vide sur le filtre.

Codes de refus

Un remboursement refusé répond 422, dans l'enveloppe d'erreur habituelle :

Code Signification
refund_exceeds_refundable Le montant dépasse ce qui reste remboursable. L'erreur porte amount_refundable_minor.
wave_partial_refund_window_closed Encaissement Wave : le délai de remboursement partiel est dépassé ; seul le remboursement total reste possible, si rien n'a été remboursé.
wave_partial_refunds_disabled Les remboursements partiels Wave ne sont pas ouverts ; le remboursement total reste possible.
wave_refund_window_closed Encaissement Wave déjà remboursé en partie, délai dépassé : plus aucun remboursement.
payer_not_found Wave ne nomme pas le payeur : un remboursement partiel, versé au payeur, ne peut pas partir.
insufficient_funds Votre solde disponible ne couvre pas le remboursement.

Wave : remboursements partiels

Wave ne rembourse une transaction qu'en totalité. Un remboursement partiel d'un encaissement Wave est donc versé au numéro Wave du payeur, et seulement pendant le délai indiqué par partial_refund_deadline sur l'encaissement. Passé ce délai, seul le remboursement total reste possible, et seulement si rien n'a été remboursé.