Skip to content

Issuing Refunds

This page walks through refunding a captured payment from the transaction detail page. Only roles with the initiate_refunds permission (Owner, Admin, Finance — see Team Members & Roles) can run this flow.

Transaction detail page showing the red Refund button on a captured payment

When the Refund button appears

The red Refund button shows on the transaction detail page when the transaction's status is one of:

  • captured — full balance still available to refund.
  • partially_refunded — some has already been refunded; you can refund up to the remaining balance.

If the status is authorized (the funds are held but not settled), use the Void button instead — see Captures & Voids. Voiding is cheaper than refunding because the money never moved.

The refund modal

Click Refund to open the modal. It has two inputs:

  • Amount — pre-filled with the full transaction amount. Edit it for a partial refund.
  • Reason — optional. Free text. Useful for your own records and for the audit log.

The amount field is locale-aware: it's a plain text input with inputmode="decimal". You can type either 10.50 or 10,50 and both are parsed correctly. This matters because some browsers render type="number" using the operating system locale, which silently rewrites your input on Spanish, French, and Portuguese systems.

Click Confirm to submit. The button is disabled while processing.

What happens behind the scenes

  1. Genius Checkout records a Refund record in created state.
  2. It calls the original gateway with a refund request, referencing the gateway transaction id.
  3. On success, the Refund moves to completed, the transaction moves to partially_refunded or refunded (depending on whether anything's left), and a refund.created (and on completion, refund.completed) webhook fires. See the webhook events for the payload.
  4. The card network credits the buyer's funding instrument. Most card networks complete the credit in 5–10 business days, though some debit cards settle within hours.

INFO

We never re-charge the card on a refund. Refunds reverse the original capture; they do not initiate a new payment.

Full refund vs partial refund

You can issue multiple partial refunds against a single capture, as long as the cumulative refunded amount does not exceed the captured amount. Each partial refund creates its own Refund record visible under the Refunds section on the transaction detail page.

After the cumulative total equals the captured amount, the transaction's status flips to refunded and the Refund button disappears.

Refund failure modes

If the gateway rejects the refund request, the Refund record stays in failed state and a flash message shows the gateway's reason. Common causes:

  • The original transaction is too old. Some acquirers cap the refund window at 120–180 days.
  • The card has been closed or reissued. The acquirer may still process it, but the credit may bounce back; if so, you'll need to refund the buyer out-of-band.
  • The gateway's refund endpoint is down. Retry after a few minutes.
  • The merchant's gateway account doesn't have refund permissions enabled.

WARNING

If a refund's status is failed and you don't know why, check the Technical DetailsRaw gateway response panel on the transaction detail page for the acquirer's full message, then contact support with both the transaction id and the failed refund id.

Refunds and customer notifications

We do not email the buyer automatically when you issue a refund. If you'd like to confirm with them, do so from your own channel — your customer's bank statement will show the credit when the network settles it.

Released under the proprietary Genius Checkout license.