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.
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.
- Sandbox serverhttps://finix.sandbox-payments-api.com/transfers/{transfer_id}/reversals
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,
"tags": {
"test": "Refund"
}
}'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.
{
"id": "TRi87Kgx6NdZFXkQtLXQ9NMJ",
"created_at": "2025-08-05T17:22:50.40Z",
"updated_at": "2025-08-05T17:22:50.44Z",
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": null,
"amount": 50,
"amount_requested": 50,
"application": "APc9vhYcPsRuTSpKD9KpMtPe",
"currency": "USD",
"destination": "PImXAVgkKVshKWWHUk4xXbve",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"fee_profile": "FPmtT4MYmiAs1qjLjneQmk4d",
"idempotency_id": null,
"merchant": "MUcgYZswyRfqSSbvMsxuaHxZ",
"merchant_identity": "IDgCoio3FfaMSKPNM35atXPU",
"messages": [],
"operation_key": "CARD_NOT_PRESENT_REFUND",
"parent_transfer": "TRjAnCNNSxDCW8GDsxYobHHe",
"parent_transfer_trace_id": null,
"raw": null,
"ready_to_settle_at": null,
"receipt_last_printed_at": null,
"security_code_verification": null,
"source": null,
"split_transfers": [],
"state": "PENDING",
"statement_descriptor": "FLX*FINIX FLOWERS",
"subtype": "API",
"supplemental_fee": null,
"tags": {
"test": "Refund"
},
"tip_amount": null,
"trace_id": "d1cb23da-3368-473d-bf8e-68d8e093839b",
"type": "REVERSAL",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRi87Kgx6NdZFXkQtLXQ9NMJ"
},
"parent": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRjAnCNNSxDCW8GDsxYobHHe"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PImXAVgkKVshKWWHUk4xXbve"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDgCoio3FfaMSKPNM35atXPU"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRi87Kgx6NdZFXkQtLXQ9NMJ/payment_instruments"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPmtT4MYmiAs1qjLjneQmk4d"
}
}
}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.
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.
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:
- Sandbox serverhttps://finix.sandbox-payments-api.com/transfers/{transfer_id}/reversals
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.- Under
_links.parent, you can find the originalTransferthat was reversed.
{
"id": "TRh57kBu89GbiaPmQ243DMUV",
"created_at": "2024-12-23T05:54:03.62Z",
"updated_at": "2024-12-23T05:54:03.62Z",
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": null,
"amount": 150,
"amount_requested": 150,
"application": "APeUbTUjvYb1CdPXvNcwW1wP",
"card_present_details": {
"emv_data": null,
"masked_account_number": null,
"name": null,
"brand": null,
"entry_mode": null,
"payment_type": "NONE",
"approval_code": null
},
"currency": "USD",
"destination": "PInUwPXf1MYj7xJ8jfmdksa5",
"device": "DVtk6E4eWHsMzgZXvFaaUigM",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"idempotency_id": null,
"merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
"merchant_identity": "IDsbTBawhnLBAVeinRb84vFR",
"messages": [],
"raw": null,
"ready_to_settle_at": null,
"receipt_last_printed_at": null,
"security_code_verification": null,
"source": null,
"state": "SUCCEEDED",
"statement_descriptor": "FIN*FINIX FLOWERS",
"subtype": "API",
"tags": {},
"tip_amount": null,
"trace_id": "FNX9HJndPy6MvvHwRszcyPsPW",
"type": "REVERSAL",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APeUbTUjvYb1CdPXvNcwW1wP"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRh57kBu89GbiaPmQ243DMUV"
},
"parent": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRn9pzzn1NVLdwwBwVrqSwAX"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PInUwPXf1MYj7xJ8jfmdksa5"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDsbTBawhnLBAVeinRb84vFR"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRh57kBu89GbiaPmQ243DMUV/payment_instruments"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPrATYzpomaTRtdo2BssRoGx"
}
}
}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.
- Sandbox serverhttps://finix.sandbox-payments-api.com/transfers
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.
Unlike referenced refunds, there is no _links.parent property — a new Transfer was created instead of reversing an existing one.
{
"id": "TRo5JpCqMY26ufvRdTJ8715j",
"created_at": "2025-11-19T20:31:16.48Z",
"updated_at": "2025-11-19T20:31:16.48Z",
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"additional_purchase_data": null,
"address_verification": null,
"amount": 150,
"amount_requested": 150,
"application": "APc9vhYcPsRuTSpKD9KpMtPe",
"card_present_details": {
"emv_data": {
"application_identifier": "A0000000041010",
"application_label": "Mastercard Debit",
"application_preferred_name": null,
"application_transaction_counter": "01D2",
"cryptogram": "ARQC 579B6893AADF6245",
"issuer_code_table_index": null,
"network_emv_response": null,
"pin_verified": false,
"tags": null
},
"masked_account_number": "523499******4130",
"name": null,
"brand": "UNKNOWN",
"entry_mode": "CONTACTLESS",
"payment_type": "CREDIT",
"approval_code": "674313",
"digital_signature_file_id": null
},
"currency": "USD",
"destination": "PInqirmUHFh1FmPNa8reirAb",
"device": "DVoDo7F6yYCnX2d6Fj9hvsd",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"fee_profile": "FPmtT4MYmiAs1qjLjneQmk4d",
"idempotency_id": null,
"ip_address_details": null,
"merchant": "MUsMvN47nRtdgUkE23SRHDC6",
"merchant_identity": "IDgu8uaRpVnfSEcRcZFXqpjK",
"messages": [],
"network_details": null,
"operation_key": "CARD_PRESENT_UNREFERENCED_REFUND",
"parent_transfer": null,
"parent_transfer_trace_id": null,
"raw": null,
"ready_to_settle_at": "2025-11-20T20:32:38.76Z",
"receipt_last_printed_at": null,
"security_code_verification": null,
"source": null,
"split_transfers": [],
"state": "SUCCEEDED",
"statement_descriptor": "FLX*FINIX FLOWERS",
"subtype": "API",
"supplemental_fee": null,
"tags": {},
"third_party_details": null,
"tip_amount": null,
"trace_id": "23f1fdf9-2783-4bbe-8de2-afd7a7502aad",
"type": "CREDIT",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APc9vhYcPsRuTSpKD9KpMtPe"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRo5JpCqMY26ufvRdTJ8715j"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDgu8uaRpVnfSEcRcZFXqpjK"
},
"device": {
"href": "https://finix.sandbox-payments-api.com/devices/DVoDo7F6yYCnX2d6Fj9hvsd"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRo5JpCqMY26ufvRdTJ8715j/payment_instruments"
},
"reversals": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRo5JpCqMY26ufvRdTJ8715j/reversals"
},
"fees": {
"href": "https://finix.sandbox-payments-api.com/fees?linked_to=TRo5JpCqMY26ufvRdTJ8715j"
},
"disputes": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRo5JpCqMY26ufvRdTJ8715j/disputes"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PInqirmUHFh1FmPNa8reirAb"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPmtT4MYmiAs1qjLjneQmk4d"
}
}
}