Refunding Payments

Learn how to refund a payment.


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 ayout 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.
  • Buyers see the refund as a credit 5-10 business days later, depending on their bank. Refunds can’t get canceled after they’re issued.
  • 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.
  • Refunds get processed immediately and can’t be canceled.
  • 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:

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.

Copy
Copied
curl https://finix.sandbox-payments-api.com/transfers/TRacB6Q6GcW6yvFUKawSnMEP/reversals \
    -H "Content-Type: application/vnd.json+api" \
    -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.

Copy
Copied
{
  "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_identity" : "IDuqZpDw28f2KK6YuDk4jNLg",
  "messages" : [ ],
  "raw" : null,
  "ready_to_settle_at" : null,
  "security_code_verification" : null,
  "source" : null,
  "state" : "PENDING",
  "statement_descriptor" : "FNX*DUNDER MIFFLIN",
  "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 original Transfer that was reversed is available under _links with parent .

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.

No swipe needed: Included in the open batch or not, the payment type was credit, and the transaction is within 45 days.

No swipe needed: If the payment type was debit and the transaction is in the current open batch.

Swipe needed: If the payment type is debit and the transaction is no longer in the batch.

Swipe needed: If the payment type is credit and the transaction is no longer in the batch and older than 45 days.

To perform the refund, create a reversal on the original Transfer:

Copy
Copied
curl https://finix.sandbox-payments-api.com/transfers/TRn9pzzn1NVLdwwBwVrqSwAX/reversals \
    -H "Content-Type: application/vnd.json+api" \
    -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.

Copy
Copied
{
  "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_identity" : "IDsbTBawhnLBAVeinRb84vFR",
  "messages" : null,
  "raw" : null,
  "ready_to_settle_at" : null,
  "security_code_verification" : null,
  "source" : null,
  "state" : "SUCCEEDED",
  "statement_descriptor" : "FIN*GOLDS GYM",
  "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:

Copy
Copied
curl https://finix.sandbox-payments-api.com/transfers \
    -H "Content-Type: application/vnd.json+api" \
    -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.

Copy
Copied
{
  "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_identity" : "IDsbTBawhnLBAVeinRb84vFR",
  "messages" : null,
  "raw" : null,
  "ready_to_settle_at" : null,
  "security_code_verification" : null,
  "source" : null,
  "state" : "SUCCEEDED",
  "statement_descriptor" : "FIN*GOLDS GYM",
  "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"
    }
  }
}