Any payment processed through Finix can be refunded, either in full or partially.
Similar to Transfers
and capture requests, refunds get detailed in Settlements
and debited from the seller's Payouts. If a payout doesn't have enough funds to cover refunds, any remaining amount gets debited from the seller's bank account.
- There are no fees to process refunds. However the processing and platform/program fees from the original transaction don't get returned.
- Refunds get processed immediately and can’t be canceled.
- Buyers see the refund as a credit 5-10 business days later, depending on their bank.
- Some refunds (e.g., those issued shortly after the original charge) appear as a reversal instead of a refund. In the case of a reversal, the original charge drops off the buyer’s statement, and they won't see a separate credit.
- More than one refund can be processed against a charge. However, you can’t reimburse a total greater than the original charge amount.
Refunds can be placed:
- With the Dashboard
- With the API
See Refunding Payments on the Dashboard for details on how to manage refunds on the dashboard.
Refund with the API
To refund a Transfer
using the Finix API, create a Transfer
reversal using the id
of the original Transfer
you want to refund.
If you are performing separate Authorizations
and captures, you'll need to refund the Transfer
that was created as part of capturing the Authorization
. If you haven't captured it yet, void the Authorization
instead.
curl https://finix.sandbox-payments-api.com/transfers/TRacB6Q6GcW6yvFUKawSnMEP/reversals \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
-d '{
"refund_amount": 100,
"tags": {
"test": "refund"
}
}'
A successful response returns 201 and a new Transfer
that represents the refund.
{
"id": "TRtLhSEAHak7isKjZu9x7Gjh",
"created_at": "2022-10-10T04:16:27.47Z",
"updated_at": "2022-10-10T04:16:27.57Z",
"additional_buyer_charges": null,
"additional_healthcare_data": null,
"address_verification": null,
"amount": 100,
"amount_requested": 100,
"application": "APgPDQrLD52TYvqazjHJJchM",
"currency": "USD",
"destination": "PIe2YvpcjvoVJ6PzoRPBK137",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"idempotency_id": null,
"merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
"merchant_identity": "IDuqZpDw28f2KK6YuDk4jNLg",
"messages": [],
"raw": null,
"ready_to_settle_at": null,
"security_code_verification": null,
"source": null,
"state": "PENDING",
"statement_descriptor": "FNX*FINIX FLOWERS",
"subtype": "API",
"tags": {
"test": "refund"
},
"trace_id": "e200c5b9-3ac9-4a21-a69e-cd0ffb6c2490",
"type": "REVERSAL",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRtLhSEAHak7isKjZu9x7Gjh"
},
"parent": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRacB6Q6GcW6yvFUKawSnMEP"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIe2YvpcjvoVJ6PzoRPBK137"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDuqZpDw28f2KK6YuDk4jNLg"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TRtLhSEAHak7isKjZu9x7Gjh/payment_instruments"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPvCQUcnsueN3Bc3zR1qCBG8"
}
}
}
The Transfer#state
will update to SUCCEEDED when the refund gets successfully processed. Buyers will see the refund returned as a credit within 5-10 business days, depending on their bank. Refunds can’t get canceled once processed.
-
The
id
of the originalTransfer
that was reversed is available under_links
withparent
.
Refunding Card Present Payments
Refunds that include information about the original Transfer
like the id
are also known as Referenced Refunds (the refund request references the original transaction).
For transactions where a card got physically used, Finix also enables merchants to create refunds without the information of the original Transfer
. These Unreferenced Refunds can only get processed if the cardholder swipes their card to authorize the Transfer
.
Reference Refunds
Below are the different scenarios that outline whether a user needs to swipe their card for a refund.
- Included in the open batch or not, the payment type was credit , and the transaction is within 45 days.
- If the payment type was debit and the transaction is in the current open batch.
To perform the refund, create a reversal on the original Transfer
:
curl https://finix.sandbox-payments-api.com/transfers/TRn9pzzn1NVLdwwBwVrqSwAX/reversals \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u USjHFGYvecE4LBitYG8KDE2g:b698f403-d9b7-4157-82d8-162cea8c8cc3 \
-d '{
"device": "DVtk6E4eWHsMzgZXvFaaUigM",
"refund_amount": 150
}'
A successful response returns 201 and a new Transfer
that represents the refund.
{
"id": "TRh57kBu89GbiaPmQ243DMUV",
"created_at": "2022-10-10T04:21:41.67Z",
"updated_at": "2022-10-10T04:21:42.98Z",
"additional_buyer_charges": null,
"additional_healthcare_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": null,
"raw": null,
"ready_to_settle_at": null,
"security_code_verification": null,
"source": null,
"state": "SUCCEEDED",
"statement_descriptor": "FIN*FINIX FLOWERS",
"subtype": "API",
"tags": {},
"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"
}
}
}
Unreferenced Refunds
- Details of the original transaction are not linked to the refund.
-
The
Transfer
refund essentially acts as a separate transaction, requiring the cardholder to swipe their card again. Unreferenced refunds are only available for transactions where a card got physically swiped. - Card-not-present transactions do not support Unreferenced refunds (e.g., ecommerce transactions).
To perform the unreference refund, create a transfer with the operation_key
of CARD_PRESENT_UNREFERENCED_REFUND:
- If the payment type is debit and the transaction is no longer in the batch.
- If the payment type is credit and the transaction is no longer in the batch and older than 45 days.
curl https://finix.sandbox-payments-api.com/transfers \
-H "Content-Type: application/json" \
-H 'Finix-Version: 2022-02-01' \
-u USjHFGYvecE4LBitYG8KDE2g:b698f403-d9b7-4157-82d8-162cea8c8cc3 \
-d '
{
"amount": 150,
"currency": "USD",
"device": "DVf2H8sh4LZZC52GTUrwCPPf",
"operation_key": "CARD_PRESENT_UNREFERENCED_REFUND",
"tags": {
"order_number": "testing123"
}
}'
A successful response returns 201 and a Transfer
that represents the unreferenced refund.
{
"id": "TR7PnzegtJ1uk9Zpc7Gny7G6",
"created_at": "2022-10-10T04:22:56.38Z",
"updated_at": "2022-10-10T04:22:57.59Z",
"additional_buyer_charges": null,
"additional_healthcare_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": "PIdk3BzKSmtMXAN42W6mvD3Y",
"device": "DVf2H8sh4LZZC52GTUrwCPPf",
"externally_funded": "UNKNOWN",
"failure_code": null,
"failure_message": null,
"fee": 0,
"idempotency_id": null,
"merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
"merchant_identity": "IDsbTBawhnLBAVeinRb84vFR",
"messages": null,
"raw": null,
"ready_to_settle_at": null,
"security_code_verification": null,
"source": null,
"state": "SUCCEEDED",
"statement_descriptor": "FIN*FINIX FLOWERS",
"subtype": "API",
"tags": {
"order_number": "testing123"
},
"trace_id": "FNXoXopxGC9Bk8cwmiHRxBUaV",
"type": "CREDIT",
"_links": {
"application": {
"href": "https://finix.sandbox-payments-api.com/applications/APeUbTUjvYb1CdPXvNcwW1wP"
},
"self": {
"href": "https://finix.sandbox-payments-api.com/transfers/TR7PnzegtJ1uk9Zpc7Gny7G6"
},
"merchant_identity": {
"href": "https://finix.sandbox-payments-api.com/identities/IDsbTBawhnLBAVeinRb84vFR"
},
"device": {
"href": "https://finix.sandbox-payments-api.com/devices/DVf2H8sh4LZZC52GTUrwCPPf"
},
"payment_instruments": {
"href": "https://finix.sandbox-payments-api.com/transfers/TR7PnzegtJ1uk9Zpc7Gny7G6/payment_instruments"
},
"reversals": {
"href": "https://finix.sandbox-payments-api.com/transfers/TR7PnzegtJ1uk9Zpc7Gny7G6/reversals"
},
"fees": {
"href": "https://finix.sandbox-payments-api.com/transfers/TR7PnzegtJ1uk9Zpc7Gny7G6/fees"
},
"disputes": {
"href": "https://finix.sandbox-payments-api.com/transfers/TR7PnzegtJ1uk9Zpc7Gny7G6/disputes"
},
"destination": {
"href": "https://finix.sandbox-payments-api.com/payment_instruments/PIdk3BzKSmtMXAN42W6mvD3Y"
},
"fee_profile": {
"href": "https://finix.sandbox-payments-api.com/fee_profiles/FPrATYzpomaTRtdo2BssRoGx"
}
}
}