neo-pays

Refunds

Give back all or part of a collection.

Create a refund

POST /v1/refunds
Field Required Description
payment_id yes The original collection: its identifier or reference
amount_minor — String, in minor units. Absent = the remaining balance
reason — customer_request, duplicate, fraudulent or other
description — Free text, visible in the dashboard

A refund is a full operation in its own right: its own id, its own status, its own webhook event (refund.success / refund.failed).

Rules

  • Only a successful collection can be refunded.
  • Refunds cannot add up to more than the amount collected — the API answers 422 refund_exceeds_refundable beyond that.
  • Collection fees are not given back: they stay with you.
  • A partial refund leaves the original collection readable, with its full history.
  • Funds are taken from your available balance at the time of the call, like a payout.

One idempotency key per refund. Never the original payment's identifier: a collection can be refunded in several parts, and a key carrying the parent's identifier would make the second partial refund look like a replay of the first.

Read and list

GET /v1/refunds/{id}
GET /v1/refunds                     — list; ?payment_id= for one collection
GET /v1/payments/{id}/refunds        — one collection's refunds

GET /v1/payments/{id}/refunds and GET /v1/refunds?payment_id= return the same object as the list, with the same pagination. The collection is named by its identifier or its reference; another account's answers 404 on the sub-resource, and an empty list on the filter.

Refusal codes

A refused refund answers 422, in the usual error envelope:

Code Meaning
refund_exceeds_refundable The amount is above what remains refundable. The error carries amount_refundable_minor.
wave_partial_refund_window_closed Wave collection: the partial-refund period has passed; only a full refund remains possible, if nothing was refunded.
wave_partial_refunds_disabled Wave partial refunds are not open; a full refund remains possible.
wave_refund_window_closed Wave collection already partly refunded and the period has passed: no further refund.
payer_not_found Wave does not name the payer: a partial refund, paid to the payer, cannot be sent.
insufficient_funds Your available balance does not cover the refund.

Wave: partial refunds

Wave only refunds a transaction in full. A partial refund of a Wave collection is therefore paid to the payer's Wave number, and only within the period given by partial_refund_deadline on the collection. After it, only a full refund remains possible, and only if nothing was refunded.