neo-pays

Rückerstattungen

Einen Einzug ganz oder teilweise zurückgeben.

Eine Rückerstattung anlegen

POST /v1/refunds
Feld Pflicht Beschreibung
payment_id ja Der ursprüngliche Einzug: seine Kennung oder seine Referenz
amount_minor — Zeichenkette, in kleinsten Einheiten. Fehlt = der Restbetrag
reason — customer_request, duplicate, fraudulent oder other
description — Freitext, im Dashboard sichtbar

Die Rückerstattung ist eine vollwertige Operation: eigene id, eigener Status, eigenes Webhook-Ereignis (refund.success / refund.failed).

Regeln

  • Nur ein erfolgreicher Einzug lässt sich erstatten.
  • Die Summe der Rückerstattungen darf den eingezogenen Betrag nicht überschreiten — darüber antwortet die API 422 refund_exceeds_refundable.
  • Einzugsgebühren werden nicht zurückgegeben: sie bleiben bei Ihnen.
  • Eine Teilerstattung lässt den ursprünglichen Einzug einsehbar, mit vollständiger Historie.
  • Die Mittel werden zum Zeitpunkt des Aufrufs Ihrem verfügbaren Guthaben entnommen, wie bei einer Auszahlung.

Ein Idempotenzschlüssel je Rückerstattung. Nie die Kennung der ursprünglichen Zahlung: ein Einzug kann in mehreren Schritten erstattet werden, und ein Schlüssel mit der Kennung des übergeordneten Objekts ließe die zweite Teilerstattung wie eine Wiederholung der ersten aussehen.

Lesen und auflisten

GET /v1/refunds/{id}
GET /v1/refunds                     — Liste; ?payment_id= für einen einzelnen Einzug
GET /v1/payments/{id}/refunds        — die Erstattungen eines Einzugs

GET /v1/payments/{id}/refunds und GET /v1/refunds?payment_id= liefern dasselbe Objekt wie die Liste, mit derselben Paginierung. Der Einzug wird über seine Kennung oder seine Referenz benannt; der eines anderen Kontos antwortet 404 auf der Unterressource und eine leere Liste beim Filter.

Ablehnungscodes

Eine abgelehnte Erstattung antwortet 422, in der üblichen Fehlerhülle:

Code Bedeutung
refund_exceeds_refundable Der Betrag übersteigt den noch erstattbaren Betrag. Der Fehler enthält amount_refundable_minor.
wave_partial_refund_window_closed Wave-Einzug: die Frist für Teilerstattungen ist abgelaufen; nur noch eine vollständige Erstattung ist möglich, sofern nichts erstattet wurde.
wave_partial_refunds_disabled Wave-Teilerstattungen sind nicht freigeschaltet; eine vollständige Erstattung bleibt möglich.
wave_refund_window_closed Wave-Einzug bereits teilweise erstattet, Frist abgelaufen: keine weitere Erstattung.
payer_not_found Wave nennt den Zahler nicht: eine Teilerstattung, die an den Zahler geht, kann nicht ausgeführt werden.
insufficient_funds Ihr verfügbares Guthaben deckt die Erstattung nicht.

Wave: Teilerstattungen

Wave erstattet eine Transaktion nur vollständig. Eine Teilerstattung eines Wave-Einzugs wird daher an die Wave-Nummer des Zahlers gezahlt, und nur innerhalb der Frist, die partial_refund_deadline am Einzug angibt. Danach ist nur noch eine vollständige Erstattung möglich, und nur, wenn nichts erstattet wurde.