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 invalid_request 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