Refunding and Cancelling Payments

Any payment processed through Finix can be refunded, either in whole or partially.

Similar to transfers and capture requests, refunds get detailed in Settlements and debited from the merchant's Payouts. If a Payout doesn't have enough funds to cover refunds, any remaining amount gets debited from the merchant'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.

Processing Refunds

Refunds can be issued using the Finix API or on the Transfers tab of the Finix Dashboard.

  • 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.

    Processing Refunds with the API

Refunding Transfers

To refund a Transfer using the API, create a Transfer reversal using the id of the original Transfer you want to refund.

Copy
Copied
curl https://finix.sandbox-payments-api.com/transfers/TRacB6Q6GcW6yvFUKawSnMEP/reversals \
    -H "Content-Type: application/vnd.json+api" \
    -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
    -d  '
  {
  "refund_amount" : 100,
  "tags" : {
      "test" : "refund"
    }
  }'

Example Response

Copy
Copied
{
  "id" : "TR3K7CdXeHyqjaeofubVN2fm",
  "amount" : 100,
  "tags" : {
    "test" : "refund"
  },
  "state" : "PENDING",
  "trace_id" : "73b43a34-04ff-4d0f-9b2d-628434f77248",
  "currency" : "USD",
  "application" : "APgPDQrLD52TYvqazjHJJchM",
  "source" : null,
  "destination" : "PIe2YvpcjvoVJ6PzoRPBK137",
  "ready_to_settle_at" : null,
  "externally_funded" : "UNKNOWN",
  "fee" : 0,
  "statement_descriptor" : "FNX*DUNDER MIFFLIN",
  "type" : "REVERSAL",
  "messages" : [ ],
  "raw" : null,
  "created_at" : "2022-05-12T13:36:43.23Z",
  "updated_at" : "2022-05-12T13:36:43.45Z",
  "idempotency_id" : null,
  "merchant_identity" : "IDuqZpDw28f2KK6YuDk4jNLg",
  "subtype" : "API",
  "_links" : {
    "application" : {
      "href" : "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "self" : {
      "href" : "https://finix.sandbox-payments-api.com/transfers/TR3K7CdXeHyqjaeofubVN2fm"
    },
    "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/TR3K7CdXeHyqjaeofubVN2fm/payment_instruments"
    },
    "fee_profile" : {
      "href" : "https://finix.sandbox-payments-api.com/fee_profiles/FPvCQUcnsueN3Bc3zR1qCBG8"
    }
  }
}

HTTP Request

POST https://finix.sandbox-payments-api.com/transfers/:TRANSFER_ID:/reversals

URL Parameters

Parameter Description
:TRANSFER_ID: ID of the original Transfer you want to refund

Request Arguments

Field Type Description
refund_amount integer, required The amount of the refund in cents (Must be equal to or less than the amount of the original Transfer)
tags object, optional Key value pair for annotating custom metadata (e.g. order numbers)

The state of the Transfer reversal will update to SUCCEEDED when the refund is 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 Authorizations

If an Authorization gets captured, create a Transfer reversal using the ID in transfer. A captured Authorization has the id of a Transfer saved in transfer.

If an Authorization has null in transfer, it hasn't been captured. Authorizations that aren't captured can be voided to stop transactions.

Copy
Copied
curl https://finix.sandbox-payments-api.com/authorizations/AU2UkcVZU94rNqonfcLGZRSJ \
    -H "Content-Type: application/vnd.json+api" \
    -u  USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
    -X PUT \
    -d '
	{
	    "void_me": true
	}'

Example Response

Copy
Copied
{
  "id" : "AU2UkcVZU94rNqonfcLGZRSJ",
  "application" : "APgPDQrLD52TYvqazjHJJchM",
  "amount" : 100,
  "tags" : {
    "order_number" : "21DFASJSAKAS"
  },
  "state" : "SUCCEEDED",
  "currency" : "USD",
  "transfer" : null,
  "messages" : [ ],
  "raw" : null,
  "created_at" : "2022-01-27T07:37:28.10Z",
  "updated_at" : "2022-01-27T07:37:29.15Z",
  "trace_id" : "710b6745-c424-4101-84e5-4a49cf317dc7",
  "source" : "PIe2YvpcjvoVJ6PzoRPBK137",
  "merchant_identity" : "IDpYDM7J9n57q849o9E9yNrG",
  "3ds_redirect_url" : null,
  "is_void" : true,
  "void_state" : "PENDING",
  "expires_at" : "2022-02-03T07:37:28.10Z",
  "idempotency_id" : null,
  "_links" : {
    "self" : {
      "href" : "https://finix.sandbox-payments-api.com/authorizations/AU2UkcVZU94rNqonfcLGZRSJ"
    },
    "application" : {
      "href" : "https://finix.sandbox-payments-api.com/applications/APgPDQrLD52TYvqazjHJJchM"
    },
    "merchant_identity" : {
      "href" : "https://finix.sandbox-payments-api.com/identities/IDpYDM7J9n57q849o9E9yNrG"
    }
  }
}

HTTP Request

PUT https://finix.sandbox-payments-api.com/authorizations/:AUTHORIZATION_ID:

URL Parameters

Parameter Description
:AUTHORIZATION_ID: ID of the Authorization you want to void

Request Arguments

Field Type Description
void_me boolean, required Set to true to void the Authorization

A successful request will return the Authorization with is_void updated to true. Voided Authorizations can't get captured.

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.

Referenced Refund:

  • Includes details of the original transaction, and the cardholder's information persists with the refund.
  • Refunds can be initiated without requiring additional action or information from the cardholder.

Unreferenced Refund:

  • 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).

Create unreferenced refunds to process reversals for customers quickly if they're available.