Refunding with the API
Refunding with the API
You can refund transactions processed with Finix programmatically using the Finix API instead of a user interface. The API supports refunds for both online and in-person payments.
Refunding Online Payments
To refund a Transfer via API, create a reversal Transfer. Pass the id query parameter set to the original Transfer you want to refund.
Include an amount equal to or less than the payment to refund. Enter a value less than the payment amount for a partial refund.
- Example
- API Definition
post
/transfers/{transfer_id}/reversals
Sandbox server
https://finix.sandbox-payments-api.com/transfers/{transfer_id}/reversals
cURL
curl -i -X POST \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/transfers/TRnErBfrHLgdAi3BqAkWLN27/reversals \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"refund_amount": 662154
}'
A successful request returns a 201 Created status code, with the response body containing:
parent_transferrepresenting theTransferthat was reversed.state:- Initially set to
PENDINGto indicate that the refund is still processing. - Changes to
SUCCEEDEDwhen the refund is processed.
- Initially set to
typeset toREVERSAL.Example
API Definition
Transfer - Reversal
{
"id": "TRi87Kgx6NdZFXkQtLXQ9NMJ",
"created_at": "2025-08-05T17:22:50.40Z",
"updated_at": "2025-08-05T17:22:50.44Z",
"amount": 50,
"currency": "USD",
"state": "PENDING",
"type": "REVERSAL",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
}
}
}
The state will be SUCCEEDED when the refund finishes processing. Buyers will see the refund credited within 5-10 business days, depending on their bank. Refunds can't be canceled once processed.
Refunding Card-Present Payments
Which refund method to use for card-present payments depends on how much time has passed since the original transaction. For debit transactions, the determining factor is whether the batch is still open; for credit transactions, whether it's within 45 days.
- Referenced Refunds — Reverse the original
Transferdirectly using its ID. No card swipe required in most cases. - Unreferenced Refunds — Create a new
Transferunlinked from the original. The cardholder must swipe their card to authorize the refund. Only available for physically swiped transactions.
Referenced Refunds
Use a referenced refund when:
- The payment type was
creditand the transaction is within 45 days (regardless of batch status). - The payment type was
debitand the transaction is in the current open batch.
To perform the refund, reverse the original Transfer:
- Example
- API Definition
post
/transfers/{transfer_id}/reversals
Sandbox server
https://finix.sandbox-payments-api.com/transfers/{transfer_id}/reversals
cURL
curl -i -X POST \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/transfers/TRnErBfrHLgdAi3BqAkWLN27/reversals \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"device": "DVtk6E4eWHsMzgZXvFaaUigM",
"refund_amount": 150
}'
A successful request returns a 201 Created status code, with the response body containing:
state:- Initially set to
PENDINGto indicate that the refund is still processing. - Changes to
SUCCEEDEDwhen the refund is processed.
- Initially set to
typeis set toREVERSAL.Example
API Definition
Reversed Card-Present Transfer Referencing Parent
{
"id": "TRh57kBu89GbiaPmQ243DMUV",
"created_at": "2024-12-23T05:54:03.62Z",
"amount": 150,
"currency": "USD",
"state": "SUCCEEDED",
"type": "REVERSAL",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APeUbTUjvYb1CdPXvNcwW1wP"
}
}
}
Unreferenced Refunds
Use an unreferenced refund when:
- The payment type is
debitand the transaction is no longer in the batch. - The payment type is
creditand the transaction is no longer in the batch and older than 45 days.
To perform the unreferenced refund, create a Transfer with operation_key: CARD_PRESENT_UNREFERENCED_REFUND. The cardholder must swipe their card to authorize the refund.
Card-not-present transactions (e.g., eCommerce) do not support unreferenced refunds.
- Example
- API Definition
post
/transfers
Sandbox server
https://finix.sandbox-payments-api.com/transfers
cURL
curl -i -X POST \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
https://finix.sandbox-payments-api.com/transfers \
-H 'Content-Type: application/json' \
-H 'Finix-Version: 2022-02-01' \
-d '{
"amount": 150,
"currency": "USD",
"device": "DVoDo7F6yYCnX2d6Fj9hvsd",
"operation_key": "CARD_PRESENT_UNREFERENCED_REFUND"
}'
A successful request returns a 201 Created status code, with the response body containing:
operation_keyis set toCARD_PRESENT_UNREFERENCED_REFUND.state:- Initially set to
PENDINGto indicate that the refund is still processing. - Changes to
SUCCEEDEDwhen the refund is processed.
- Initially set to
typeis set toCREDITorDEBITbased on the original transfer type, rather thanREVERSAL.Example
API Definition
Card Present Transfer without Parent Reference
{
"id": "TRo5JpCqMY26ufvRdTJ8715j",
"created_at": "2025-11-19T20:31:16.48Z",
"amount": 150,
"currency": "USD",
"state": "SUCCEEDED",
"type": "CREDIT",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
}
}
}