Refunds
Refunds let you reverse a completed deposit back toward the customer who paid it. There is a single integration surface — one endpoint to start a refund, one endpoint to check its status, and one endpoint to list refund history.
How refunds work
You always call the same endpoint with the transaction_reference of the completed deposit you want to reverse. The API resolves that transaction, applies the eligibility rules for its currency, and processes the refund.
Important — use
transaction_reference, nottransaction_idPass the deposit's
transaction_reference— the human-readable reference returned when the collection completed (for exampleTRGSS12345orORDER-12345). This applies to all refund types, including GBP and EUR collection refunds.Do not pass the internal
transaction_id(UUID). That identifier appears in transaction list/detail responses and refund history for your records, but it is not accepted byPOST /client/payment/refund. Sending a UUID intransaction_referencereturns404(payment not found).
There are two rule sets, summarized below:
If your deposit doesn't meet the rules for its currency, POST /client/payment/refund returns 400 with a message describing why (see Common eligibility errors).
Note: Refunds are not currently pushed to you via webhook. Poll Check refund status or Refund history to track progress until you see a terminal status (
COMPLETED,FAILED, orCANCELLED).
Initiate refund
POST /client/payment/refund
Request body
Success response
Note: A successful
200response means the refund request was accepted, not that funds have moved yet. Always confirm completion via Check refund status before treating the refund as final. A small number of responses may include additional informational fields beyond the ones documented here — only rely on the fields listed in this page.
Common eligibility errors
All eligibility failures return 400 with a message in error:
Other possible responses:
Check refund status
GET /client/payment/refund/status/:refund_reference
Use the refund_reference returned from Initiate refund.
Optional query parameter business_code if you manage multiple businesses.
Response
Refund history
GET /client/payment/refund/history
Lists refunds for the authenticated user, most recent first.
Response
Refund status values
Notes for integrators
- Use
transaction_reference, nottransaction_id. The initiate-refund body field istransaction_reference. Thetransaction_idUUID in list/history responses is informational only — do not send it when starting a refund. - One deposit, one refund reference at a time. You can't start a new refund for a deposit while a previous refund on it is still pending, processing, or already completed.
- Amounts are decimal strings. Always send
refund_amountas a string (e.g."90.00") - No webhook for refunds today. Poll Check refund status or Refund history until you observe a terminal status.
- Deposit status after a full refund. Once a deposit has been refunded in full, it will show as reversed if you look it up via your transaction/deposit records.
- GBP/EUR collections are full-refund only. These currencies do not support partial refund.