Checking eligibility

Before you request a refund you should check whether a refund can be given for the payment.  Examples of where a payment may not be eligible could be if you’ve already processed a full or partial refund, or its status is neither RECEIVED or SETTLED

Request location
  • Sandbox
  • Production
GET https://api.sandbox.volt.io/payments/{paymentId}/refund-details
GET https://api.volt.io/payments/{paymentId}/refund-details
Response

The response will contain the following information if the refund is available:

{
  "refundAvailable": true,
  "remainingDays": 365,
  "availableAmount": 500,
  "refundedAmount": 0,
  "numberOfRefunds": 0,
  "message": null,
  "code": null
}

Or a message and code if it’s not:

{
  "refundAvailable": false,
  "remainingDays": 365,
  "availableAmount": 0,
  "refundedAmount": 500,
  "numberOfRefunds": 1,
  "message": "Payment with id: 0da43922-e01d-4c7f-8a63-0d8da56459be has been fully refunded.",
  "code": "PaymentRefundBalanceIsNotAvailable"
}
Response fields
refundAvailable a flag that tells you whether a refund can be created for this payment
remainingDays the number of days before a refund can no longer be processed
availableAmount the amount that can still be refunded
refundedAmount the corresponding amount that has been refunded already
numberOfRefunds the number of refunds applied to the original payment
message optional field that will contain detailed information about why you cannot create a refund for this payment
code optional field that will contain a code for why you cannot create a refund for this payment
Error codes
PaymentRefundBalanceIsNotAvailable Refund could not be processed due to insufficient funds in the Connect account

Requesting a refund

To request a refund via the API you need to use the endpoint below.

Request location
  • Sandbox
  • Production
https://api.sandbox.volt.io/payments/{paymentId}/request-refund
https://api.volt.io/payments/{paymentId}/request-refund

Full refunds

If you want to refund the full payment amount, the request body should be an empty JSON (as no additional data is required):

{}

Partial refunds

If you want to refund only a part of the payment you need to specify the amount and assign your unique external reference.

Creating a partial refund for the full payment amount is equivalent to creating a full refund.

{
  "amount": 1,
  "externalReference": "my-external-reference"
}
Request form parameters
  • amount is the amount you want to refund (in minor units)
  • externalReference should be a maximum of 40 characters and should contain letters and numbers only. It is the reference you want to use for this refund