Refunds

Learn how to refund an order.

You can refund all or part of an Order after it succeeds.

Refunds use your available Ivy balance (not including pending amounts). The refund will fail if your available balance does not cover the amount. You can set a reserve amount to ensure that there is always enough money on your Ivy balance.

We submit refund requests to the user's bank account. Depending on the user's bank, we always try to use instant payment rails (e.g., FasterPayments, SEPA Instant) for refunds. Successful refund requests usually appear on the user's bank statement in real-time.

You can view your refunded orders under https://merchant.getivy.de/dashboard/orders.

Issue Refunds

You can issue refunds by using the Refunds API or the Dashboard. You can issue more than one refund against an Order, but you can't refund a total greater than the original amount.

Dashboard

To refund a payment using the Dashboard:

  1. Find the Order you want to refund on the Order page.
  2. Click the overflow menu (...) to the right of the Order, then select Refund Order.
  3. By default, you’ll issue a full refund. For a partial refund, enter a different refund amount.
  4. Optionally, you can pass a description for the refund. Click Refund.

API

To refund an Order using the API, create a refund providing the orderId or referenceId.

When you use a CheckoutSession to collect payment from a customer, Ivy creates an Order object behind the scenes. To refund an Order after the CheckoutSession has succeeded, create a refund using the Order. Optionally, you can also refund part of an Order by specifying an amount.

curl --request POST \
     --url https://api.getivy.de/api/service/merchant/payment/refund \
     --header 'X-Ivy-Api-Key: YOUR_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
	"orderId": "abc"
}
'

To refund part of an Order, provide an amount parameter as an integer in decimals:

curl --request POST \
     --url https://api.getivy.de/api/service/merchant/payment/refund \
     --header 'X-Ivy-Api-Key: YOUR_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "orderId": "abc",
  "amount": 100
}
'

If you want to overwrite the payment reference which will be displayed on the user's bank statement, provide a string in the displayedPaymentReference field:

curl --request POST \
     --url https://api.getivy.de/api/service/merchant/payment/refund \
     --header 'X-Ivy-Api-Key: YOUR_API_KEY' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "orderId": "abc",
  "displayedPaymentReference": "display this to user!"
}
'