Ginger Payments

Refunds

Return the full or a partial amount of a completed payment to your customer.

A refund returns money to your customer after a payment has been completed. You can refund the full amount or part of it, and you can refund an order several times as long as the total doesn't exceed the original amount.

To cancel a pre-authorization that you haven't captured yet, void it instead.

Create a refund

Send a POST request to the refunds endpoint of the original order:

curl https://api.dev.gingerpayments.com/v1/orders/$ORDER_ID/refunds/ \
  --user "$API_KEY:" \
  --header "Content-Type: application/json" \
  --data '{
    "amount": 1337,
    "description": "Example refund"
  }'
FieldRequiredDescription
amountYesAmount to refund in the smallest currency unit. Send the original amount for a full refund, or less for a partial refund.
descriptionNoDescription of the refund. Without it, the description of the original order is used.
merchant_order_idNoYour own reference for the refund.
extraNoAdditional data you want to store with the refund.

You don't send a currency: the refund always uses the currency of the original order.

The refund order

A refund is a new order of its own, with a transaction that uses the refund variant of the original payment method, such as credit-card-refund. The API responds with 201 Created and the refund order:

{
  "id": "97e825b2-c77d-4d56-aeaf-7af9c7c4087f",
  "created": "2026-10-12T11:48:59.630958+00:00",
  "completed": "2026-10-12T11:48:59.912726+00:00",
  "currency": "EUR",
  "amount": 1337,
  "description": "Example refund",
  "refund_of_order_id": "8189619d-748e-4333-81ee-fca65b1f47bc",
  "status": "completed",
  "transactions": [
    {
      "id": "8deb1542-fbe7-442e-9510-ea7c819e3bea",
      "amount": 1337,
      "currency": "EUR",
      "payment_method": "credit-card-refund",
      "refund_of_transaction_id": "6fbaeb49-6c55-408b-82ac-1b410db9fe1c",
      "status": "accepted"
    }
  ]
}

The response is shortened. The refund order is linked to the original payment in both directions:

FieldOnRefers to
refund_of_order_idRefund orderThe original order
refund_of_transaction_idRefund transactionThe original transaction
refund_ordersOriginal orderThe refund orders created for it

Like any order, a refund order can take time to complete. Track its status with a status request or a webhook.

List the refunds of an order

Retrieve all refunds of an order with a GET request:

curl https://api.dev.gingerpayments.com/v1/orders/$ORDER_ID/refunds/ \
  --user "$API_KEY:"

The response contains the refund orders created for the original order.

On this page