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"
}'| Field | Required | Description |
|---|---|---|
amount | Yes | Amount to refund in the smallest currency unit. Send the original amount for a full refund, or less for a partial refund. |
description | No | Description of the refund. Without it, the description of the original order is used. |
merchant_order_id | No | Your own reference for the refund. |
extra | No | Additional 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:
| Field | On | Refers to |
|---|---|---|
refund_of_order_id | Refund order | The original order |
refund_of_transaction_id | Refund transaction | The original transaction |
refund_orders | Original order | The 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.