In the API, an invoice is a payment link — the endpoints and field names below say
paymentLink. Same thing; this guide says “invoice” because that’s what your customer sees.Before you start: You need a payment in the
SUCCEEDED state — only successful payments can be refunded. Follow Send an Invoice and Get Paid to create one in the sandbox.1
Refund the payment
Call The response is the updated payment:
POST /payment/{paymentId}/refund with the amount to give back. For a full refund, pass the payment’s full amountInCents; for a partial refund, pass less. The reason is optional and shows up in your records:2
Check whether it voided
Look at
refunds[].voided in the response:"voided": true— the original charge was cancelled before it settled. The money movement never completes, and no processing fee applies. This is possible within minutes to a few hours of the payment, while the card charge hasn’t been submitted for settlement (or the ACH debit hasn’t been sent to the network)."voided": false— the charge already settled, so this is a true refund: the money travels back to your customer. For card payments the original processing fee still applies, because the card networks charged it when the payment was made.
3
Watch for the webhook
Your webhook subscription receives
payment.voided when the charge was cancelled, or payment.refunded for a true refund. Either way, fetch the payment with GET /payment/{paymentId} for the current state — see Webhook Events.4
Know what happens to the invoice
A fully refunded payment reopens its invoice: the invoice’s
status returns to ACTIVE and the amount becomes payable again, so your customer can re-pay the corrected version. If you don’t want that, delete the invoice with DELETE /paymentLink/{paymentLinkId} or leave it to expire.Don’t confuse refunds with ACH returns
A refund is something you initiate. An ACH return is initiated by your customer’s bank — insufficient funds, a closed account, or a disputed debit — and moves the payment toFAILED, not REFUNDED. Returns can arrive up to 60 days after the payment. How Payments Work covers what happens to the money in each case.
When an ACH refund itself gets returned
If you refunded an ACH payment, the refund is sent as an ACH credit back to your customer’s bank account. That credit can itself be returned by their bank — usually because the account was closed or the account details are no longer valid. When that happens:- The refund is marked as failed, and the refunded amount is restored to the payment’s refundable balance so you can re-issue it (typically to a corrected destination).
- If the refund had moved the payment to
REFUNDED, the payment reverts toSUCCEEDED. Apayment.failedwebhook fires so you can react — see Webhook Events. - Nickel’s payments team is paged automatically so they can help you reach the customer and confirm a new destination before you retry.
Where to go next
Track your payouts
What refunds and returns mean for the money that reaches your bank.
Webhook events
Subscribe to payment.refunded and payment.voided.
