Finix API

The Finix API is resource oriented, relying heavily on common REST principles. Our API uses JSON encoded requests and responses.

You will receive separate Sandbox and Live accounts, as well as corresponding API credentials to access the Finix API.


Authentication

To communicate with the Finix API, you must authenticate your requests via HTTP Basic Authentication with a username:password combination, which you can get from your Finix Dashboard. If you do not have a Dashboard yet, you can test our APIs with the Sandbox credentials below.

ParameterValue
Sandbox UsernameUSsRhsHYZGBPnQw8CByJyEQW
Sandbox Password8a14c2f9-d94b-4c72-8f5c-a62908e5b30e
Request Format
curl "https://finix.sandbox-payments-api.com/" \
    -H "Content-Type: application/json" \
    -H "Finix-Version: 2022-02-01" \
    -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e

Environments

Finix provides two environments with distinct base URLs to make API requests.

  1. A Sandbox environment for developing and testing your integration.
  2. A Live environment for processing payments.

These environments are entirely separate and do not share API Credentials.

EnvironmentEndpoint URL
Sandboxhttps://finix.sandbox-payments-api.com
Livehttps://finix.live-payments-api.com
Live Access

To get access to the Live environment, please reach out to your Finix point-of-contact.


HTTP Codes and Errors

Finix uses HTTP codes to communicate whether requests succeeded or failed. Requests to Finix's API return responses within less than one second.

However, communications between card networks and processors can increase response latency. Additionally, response latency for card-present devices can be higher depending on how quickly buyers complete the transaction on payment terminals.

Due of this, requests to the Finix API have a maximum timeout of 5 minutes.

For more details, see Error Codes. Also, you can test for specific errors and responses.

Code Definition Explanation
400Bad RequestWe could not parse your request. Verify you are providing valid JSON.
401UnauthorizedWe could not authenticate your request. Verify your username and password are correct.
402Upstream Processor ErrorErrors caused by 3rd-party service(s).
403ForbiddenYour credentials do not have the correct permissions to perform the request.
404Not FoundWe could not find the specified resource.
405Method Not AllowedThe specified resource does not support the HTTP Method used to submit the request.
406Not AcceptableThe server could accept the submitted request. Confirm how the request was formatted and submitted.
409ConflictThe submitted request conflicts with the current state of the server.
422Unprocessable EntityThe parameters were valid, but the request failed. Usually, the error involves misunderstanding of how to perform the request (e.g., creating a transfer with a seller that is not-yet-approved).
500Internal Server ErrorWe had a problem with our server. Try again later.

Idempotent Requests

The Authorization and Transfer resources both have an idempotency_id field. Use this field to ensure the API Request is performed only once.

Why is this important? We've all experienced a checkout page that hangs on a request or payment, and feared that if we refresh or submit the payment again, we'd be charged twice.

Finix removes this ambiguity with the idempotency_id. You or the user can generate a unique ID that can be included as an idempotency_id with the usual request payload. If anyone attempts a request with the same idempotency_id, the response will raise an exception.

By passing an idempotency_id in the body of your requests, you can be rest assured that when you create an Authorization or Transfer, the user will be protected from potential network issues.

idempotency_id is available on the following three endpoints:

  • /transfers
  • /authorizations
  • /transfers/{id}/reversals
`idempotency_id` scope

idempotency_id checks against previous requests made on the same endpoint.


Query Parameters

Every Finix resource (e.g., Authorizations, Transfers) can be listed and reviewed using GET requests. Additionally, every endpoint has query parameters available to help you filter the resources that are returned.

See the following example of how to query the Transfers endpoint for Transfer resources with type: DEBIT.

Query Parameter Example
curl "https://finix.sandbox-payments-api.com/transfers?type=DEBIT" \
    -H "Finix-Version: 2022-02-01" \
    -u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e

Tags

All Finix resources (e.g., Authorization, Transfer) let you include tags to add key-value metadata to your Finix API resources. For example, when creating a Transfer, you might include customerId: Customer123 to tag the Transfer with your internal customer ID. You can update tags as many times as needed, as well as filter resources by tags.

Tags Example
{
    ...,
    "tags": {
        "card-type": "business card",
        "order_number": "H-1257",
        "customer_order_reference": "order1234",
        "item_type": "hardware",
        "vendor": "finix"
    }
}

The tags object accepts up to 50 key: value pairs to annotate resources with custom metadata.

  • Maximum character length for individual keys is 40.
  • Maximum character length for individual values is 500.
Special Characters

Finix does not allow special characters on tags (e.g., \, ,, ", ')


Versioning

As Finix improves our products and features, we will make changes to our APIs. When breaking changes are made to Finix's API, we may release a new dated API version.

The API version your requests use controls how API responses and webhooks behave (for example, the values you see in responses and the parameters you can include in requests). For more information, see Versioning.


Languages
Servers
Sandbox server
https://finix.sandbox-payments-api.com/
Production server
https://finix.live-payments-api.com/

Authorizations

Operations

Compliance Forms

To process payments, your Merchants must validate their compliance with PCI DSS requirements annually. To do this, your Merchants must attest to PCI Self-Assessment Questionnaire (SAQ) compliance forms.

Related Guides: Managing PCI Compliance, PCI DSS Compliance

Operations

Devices

Operations

Disputes

Disputes, also known as chargebacks, represent any customer-disputed charges. A core part of the dispute lifecycle is the ability for a Merchant to upload Dispute evidence that supports their side of the Dispute.

Related Guides: Managing Disputes

Operations

Fees

A Fee is a charge levied against a Merchant. It represents how a platform charges its sellers for all various types of Fees. Payment transactions generate Fee resources.

Operations

Fee Profiles

A fee_profiles represents a pricing scheme that automatically applies fees to each transaction. Changes to fee_profiles go into effect immediately.

Related Guides: Collecting Fees

Operations

Files

Operations

Identities

Operations

Instrument Updates

With Finix's instrument_updates API, you can update the credit card information you have saved for customers without needing to contact each individual cardholder.

Related Guides: Account Updater

Operations

Merchants

A Merchant resource represents the entity's merchant account on a processor. Your Merchant must be APPROVED to process payments.

Related Guides: Getting Started, Onboarding Sellers

Operations

Onboarding Forms

Finix offers and hosts pre-built onboarding forms that you can use to collect onboarding and identity verification information from your users.

Related Guides: Onboarding, Onboarding Forms.

Operations

Payment Instruments

A Payment Instrument resource represents the payment details of a credit card or bank account. Payment details get tokenized multiple times and each tokenization produces a unique Payment Instrument.

A Payment Instrument is associated with a single Identity. Once a Payment Instrument is created, the Identity it's associated with can't be changed.

Including an address when creating a Payment Instrument can lower interchange on credit card transactions.

Related Guides: Using Hosted Fields, Getting Started

Operations

Settlements

A Settlement is a logical construct representing a collection (i.e. batch) of Settlement Entries that will get paid out to a specific Merchant. A Settlement Entry can represent Transfers or Split Transfers

Related Guides: Payouts

Operations

Settlement Queue Entries

A Settlement Queue Entry resource represents an entry in the settlement queue used to track when and how a transfer is queued to be processed.

If a merchant's settlement_queue_mode is set to MANUAL, all transfers will have a Settlement Queue Entry created and will not be placed into settlement until the Settlement Queue Entry is explicitly released using a PUT Update Settlement Queue Entries request.

Related Guides: Account Structures and Settlements

Operations

Split Transfers

Transfers can be split among several different Merchants. A split_transfer represents how the funds from a split Transfer were distributed into a Merchants Settlement.

Related Guides: Online Payments Quickstart, Split a Transaction

Operations

Transfers

Operations

Create a Transfer

Request

Create a Transfer.

Headers
Finix-Versionstring

Specify the API version of your request. For more details, see Versioning.

Default 2018-01-01
Example: 2022-02-01
Bodyapplication/json
Any of:
additional_buyer_chargesobject or null(AdditionalBuyerCharges)

Object detailing any Buyer Charges that got included in the Authorization.

additional_purchase_dataobject(AdditionalPurchaseData)
adjustment_requestboolean or null

Details if the transfer was created to adjust funds.

amountinteger(int64)required

The total amount that will be debited in cents (e.g. 100 cents to debit $1.00).

currencystring(Currency)required

ISO 4217 3 letter currency code.

Enum"AED""AFN""ALL""AMD""ANG""AOA""ARS""AUD""AWG""AZN"
destinationstring or null

ID of the Payment Instrument where funds will be sent.

devicestring or null

The ID of the activated device.

feeinteger(int64)

The minimum amount of the Transfer you'd like to collect as your fee in cents. Defaults to zero (must be less than or equal to the amount).

  • If the fees applied by the 'Fee Profile' are higher than the value passed in 'fee', 'fee' will not be applied and have no effect.
  • If the fees applied by the 'Fee Profile' are lower than the value passed in 'fee', an additional fee is be applied, in addition to the fees generated by the Fee Profile.
    • The additional fee is equal to the difference between the value passed in 'fee' and the fees generated by the Fee Profile.
fee_profilestring or null

Optional field to specify which fee_profile to use for this transfer. If not provided the currently assigned Fee Profile will be used.

fraud_session_idstring(FraudSessionID)

The fraud_session_session ID you want to review for fraud. For more info, see Fraud Detection.

idempotency_idstring or null

A randomly generated value that gets tied with the request.

merchantstring or nullrequired

ID of the Merchant the Transfer was created under.

operation_keystring or null

Details the operation that is be performed in the transaction.

Enum"PUSH_TO_CARD""PULL_FROM_CARD""CARD_PRESENT_DEBIT""CARD_PRESENT_UNREFERENCED_REFUND""SALE""UNREFERENCED_REFUND""MERCHANT_CREDIT_ADJUSTMENT""MERCHANT_DEBIT_ADJUSTMENT"
processorstring

Name of the transaction processor.

sourcestringrequired

ID of the Payment Instrument where funds get debited.

security_codestring or null

The 3-4 digit security code for the card (i.e. CVV code). Include the CVV code of the card to include Card Verification Checks with the created Transfer.

statement_descriptorstring or null<= 20 characters
  • The description of the seller that appears on the buyer's bank or card statement.
  • If you are on our Flex Product, statement_descriptors for Transfers in live environments will have a FI * prefix if you are on LITLE_V1 or VANTIV_V1. If you are using a FINIX_V1 processor, there will be no FI * prefix.
supplemental_feeinteger or null(int64)

If provided an additional fee for this amount in cents will be created in addition to any fees created from the assigned fee profile.

tagsobject or null(tags)

Include up to 50 key: value pairs to annotate requests with custom metadata.

  • Maximum character length for individual keys is 40.
  • Maximum character length for individual values is 500. (For example, order_number: 25, item_type: produce, department: sales)
3d_secure_authenticationobject or null

The 3D secure information required to create a 3D secure Transfer.

split_transfersArray of objects or null or null(SplitTransferRequest)
  • An array used to detail how funds from the Transfer will split and the amount Merchants receive.
  • The combined amounts under split_transfers must be equal to the amount submitted in the parent Transfer.
  • For more information, see Split Transactions.
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": 662154,
    "currency": "USD",
    "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm",
    "source": "PI6iQcTtJNCS8GZAVKYi5Ueb",
    "tags": {
      "test": "Sale"
    }
  }'

Responses

Single Transfer object

Headers
finix-apiuser-rolestring
Enum"ROLE_ADMIN""ROLE_PLATFORM""ROLE_PARTNER""ROLE_MERCHANT"
datestring
x-request-idstring

A unique ID for this specific API request attempt.

Bodyapplication/json
idstring

The ID of the Transfer resource.

created_atstring(date-time)(CreatedAt)

Timestamp of when the object was created.

updated_atstring(date-time)(UpdatedAt)

Timestamp of when the object was last updated.

additional_buyer_chargesobject or null(AdditionalBuyerCharges)

Object detailing any Buyer Charges that got included in the Authorization.

additional_healthcare_dataobject or null(AdditionalHealthcareData)

Object detailing any additional healthcare amounts included in the Authorization or Transfer. Only non-healthcare merchant category codes (MCCs) are required to pass in additional healthcare data and have the necessary SIGIS certification.

additional_purchase_dataobject(AdditionalPurchaseData)
address_verificationstring or null

Details the results of the Address Verification checks.

amountnumber(double)(Amount)

The total amount in cents of the resource. Note: For fees fractional amounts (2.393) can be returned.

amount_requestedinteger

Details the amount that was requested to get debited from the source when the transaction was created.

applicationstring

The ID of the Application the Transfer was created under.

bank_return_detailsobject or null(BankReturnDetails)

Details about a transfer that was returned and was unable to be processed. Only present when state is RETURNED

card_present_detailsobject or null(CardPresentDetails)

Details needed to process card present transactions.

currencystring(Currency)

ISO 4217 3 letter currency code.

Enum"AED""AFN""ALL""AMD""ANG""AOA""ARS""AUD""AWG""AZN"
destinationstring or null

The ID of the destination.

devicestring

The ID of the Device resource the Transfer was created under.

externally_fundedstring

Details if the Transfer will be settled externally by card processors.

failure_codestring or null(FailureCode)

The code of the failure so the decline can be handled programmatically. For more info on how to handle the failure, see Failure Codes.

failure_messagestring or null(FailureMessage)

A human-readable description of why the transaction was declined. This will also include a suggestion on how to complete the payment.

feeinteger(int64)

The minimum amount of the Transfer you'd like to collect as your fee in cents. Defaults to zero (must be less than or equal to the amount).

  • If the fees applied by the 'Fee Profile' are higher than the value passed in 'fee', 'fee' will not be applied and have no effect.
  • If the fees applied by the 'Fee Profile' are lower than the value passed in 'fee', an additional fee is be applied, in addition to the fees generated by the Fee Profile.
    • The additional fee is equal to the difference between the value passed in 'fee' and the fees generated by the Fee Profile. fraud_session_id:
fee_typestring(FeeType)

Details the type of fee if the Transfer includes a fee.

Enum"ACH_BASIS_POINTS""ACH_CREDIT_RETURN_FIXED_FEE""ACH_DEBIT_RETURN_FIXED_FEE""ACH_FIXED""ACH_MAX_FIXED""ACH_NOTICE_OF_CHANGE_CREDIT_FIXED""ACH_NOTICE_OF_CHANGE_DEBIT_FIXED""AMERICAN_EXPRESS_ASSESSMENT_BASIS_POINTS""AMERICAN_EXPRESS_BASIS_POINTS""AMERICAN_EXPRESS_FIXED"
fee_profilestring

The ID of the Fee Profile that will be used for calculating fees for this transfer.

Example: "FPxxxxxxxxx"
idempotency_idstring or null(IdempotencyId)

Pass any randomly generated or internal ID to idempotently identify Transfers, Authorizations, and refund requests.

merchantstring

The ID of the Merchant resource the Transfer was created under.

Example: "MUxxxxxxxxxxxxxxxxxxxxxxx"
merchant_identitystring

The ID of Identity resource used by the Merchant the Transfer was created under.

Example: "IDxxxxxxxxxxxxxxxxxxxxxxxx"
operation_keystring or null(OperationKey)

Details the operation that's performed in the transaction (Card present transactions only) .

Enum"PUSH_TO_CARD""PULL_FROM_CARD""CARD_PRESENT_DEBIT""CARD_PRESENT_UNREFERENCED_REFUND""SALE""UNREFERENCED_REFUND""MERCHANT_CREDIT_ADJUSTMENT""MERCHANT_DEBIT_ADJUSTMENT""CARD_PRESENT_AUTHORIZATION"
parent_transferstring or null
  • ID of the original parent Transfer where the transaction occurred.
  • Only appears for Transfers:type REVERSAL and FEE.
parent_transfer_trace_idstring or null
  • trace_id of the original parent Transfer where the transaction occurred.
  • Only appears for Transfers:type REVERSAL and FEE.
messagesArray of strings(Messages)

Message field that provides additional details.

Default []
raw(Raw (object or null)) or (Raw (string or null))(Raw)

Raw response from the processor.

Any of:

Raw response from the processor.

object or null(Raw)

Raw response from the processor.

ready_to_settle_atstring or null(date-time)

Timestamp of when the Transfer is ready to be settled at.

receipt_last_printed_atstring or null(date-time)

Timestamp when the receipt was last printed.

security_code_verificationstring or null

Details the results of the Security Code Verification checks.

sourcestring or null

The ID of the Payment Instrument that will be debited and performing the Transfer.

split_transfersArray of strings
  • Array containing the resource IDs of the Split Transfers generated from the Transfer.
  • Only used for Split Transactions. For more information, see Split Transactions.
Default []
statestring

The status of the Transfer.

Enum"CANCELED""PENDING""FAILED""SUCCEEDED""UNKNOWN""RETURNED"
statement_descriptorstring or null
  • The description of the seller that appears on the buyer's bank or card statement.
  • If you are on our Flex Product, statement_descriptors for Transfers in live environments will have a FI * prefix if you are on LITLE_V1 or VANTIV_V1. If you are using a FINIX_V1 processor, there will be no FI * prefix.
subtypestring

Additional information describing the payment_type.

Enum"API""APPLICATION_FEE""DISPUTE""MERCHANT_CREDIT""MERCHANT_CREDIT_ADJUSTMENT""MERCHANT_DEBIT""MERCHANT_DEBIT_ADJUSTMENT""PLATFORM_CREDIT""PLATFORM_CREDIT_ADJUSTMENT""PLATFORM_DEBIT"
supplemental_feestring or null

Amount in cents for which an additional fee will be created in addition to any fees created from the assigned fee profile.

tagsobject or null(tags)

Include up to 50 key: value pairs to annotate requests with custom metadata.

  • Maximum character length for individual keys is 40.
  • Maximum character length for individual values is 500. (For example, order_number: 25, item_type: produce, department: sales)
tip_amountinteger or null

The tip amount included in the total amount.

trace_idstring or null

Trace ID of the Transfer. The processor sends back the trace_id so you can track the Transfer end-to-end.

typestring

Type of Transfer.

Enum"DEBIT""CREDIT""REVERSAL""FEE""ADJUSTMENT""DISPUTE""RESERVE""SETTLEMENT""UNKNOWN"
_linksobject

For your convenience, every response includes several URLs which link to resources relevant to the request. You can use these _links to make your follow-up requests and quickly access relevant IDs.

Response
application/json
{ "id": "TRaWgycn5FEpESUkkFaC6tMx", "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": 662154, "amount_requested": 662154, "application": "APc9vhYcPsRuTSpKD9KpMtPe", "currency": "USD", "destination": null, "externally_funded": "UNKNOWN", "failure_code": null, "failure_message": null, "fee": 0, "fee_profile": "FPvCQUcnsueN3Bc3zR1qCBG8", "idempotency_id": null, "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm", "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H", "messages": [], "operation_key": "CARD_NOT_PRESENT_SALE", "parent_transfer": null, "parent_transfer_trace_id": null, "raw": null, "ready_to_settle_at": "2024-12-24T05:54:04.21Z", "receipt_last_printed_at": null, "security_code_verification": null, "source": "PI6iQcTtJNCS8GZAVKYi5Ueb", "split_transfers": [], "state": "SUCCEEDED", "statement_descriptor": "FLX*FINIX FLOWERS", "subtype": "API", "supplemental_fee": 0, "tags": { "test": "Sale" }, "tip_amount": null, "trace_id": "ab8efc62-4fee-4d7c-a4e0-ac98a3f0767d", "type": "DEBIT", "_links": { "application": {}, "self": {}, "merchant_identity": {}, "payment_instruments": {}, "reversals": {}, "fees": {}, "disputes": {}, "source": {}, "fee_profile": {} } }

List Transfers

Request

Retrieve a list of Transfers.

For details on how to query endpoints using the available parameters, see Query Parameters.

Query
after_cursorstring

Return every resource created after the cursor value.

Example: after_cursor=TRnasXQ5AmjsLnPMwnme7TL4
before_cursorstring

Return every resource created before the cursor value.

Example: before_cursor=TRnasXQ5AmjsLnPMwnme7TL4
limitinteger

The numbers of items to return.

Example: limit=10
amountinteger

Filter by an amount equal to the given value.

Example: amount=100
amount.gtinteger

Filter by an amount greater than.

Example: amount.gt=100
amount.gteinteger

Filter by an amount greater than or equal.

Example: amount.gte=100
amount.ltinteger

Filter by an amount less than.

Example: amount.lt=100
amount.lteinteger

Filter by an amount less than or equal.

Example: amount.lte=100
bank_return_reason_codestring

Filter bank reversals by ACH Return Code. Use comma-separation to query for multiple values.

Example: bank_return_reason_code=R03,R07
buyer_business_namestring

Filter by the Buyer Identity's business name (exact match).

Example: buyer_business_name=Finix%20Flowers
buyer_business_name.likestring

Filter by the Buyer Identity's business name (partial match).

Example: buyer_business_name.like=finix
buyer_doing_business_asstring

Filter by the Buyer Identity's Doing Business As (exact match).

Example: buyer_doing_business_as=Finix%20Flowers
buyer_doing_business_as.likestring

Filter by the Buyer Identity's Doing Business As (partial match).

Example: buyer_doing_business_as.like=finix
buyer_identity_first_namestring

Filter by the Buyer Identity's first name (exact match).

Example: buyer_identity_first_name=John
buyer_identity_first_name.likestring

Filter by the Buyer Identity's first name (partial match).

Example: buyer_identity_first_name.like=joh
buyer_identity_idstring

Filter by the Buyer Identity's ID.

Example: buyer_identity_id=ID6Qm3BQUxGFcCWZ185TS8sn
buyer_identity_last_namestring

Filter by the Buyer Identity's last name (exact match).

Example: buyer_identity_last_name=Doe
buyer_identity_last_name.likestring

Filter by the Buyer Identity's last name (partial match).

Example: buyer_identity_last_name.like=do
buyer_identity_namestring

Filter by the Buyer Identity's full personal name (exact match).

Example: buyer_identity_name=John%20Doe
buyer_identity_name.likestring

Filter by the Buyer Identity's full personal name (partial match).

Example: buyer_identity_name.like=john
created_at.gtestring(date-time)

Filter where created_at is after the given date.

Example: created_at.gte=2022-09-27T11:21:23
created_at.ltestring(date-time)

Filter where created_at is before the given date.

Example: created_at.lte=2022-09-27T11:21:23
currencystring

Filter by the currency of the resource.

Example: currency=USD
devicestring

Filter by the device's ID.

Example: device=DVsEanpBtsAVvCHbNXkFaH6f
idstring

Filter by id.

idempotency_idstring

Filter by Idempotency ID.

Example: idempotency_id=15d32948-c766-4033-8d87-dfbdcabcbc5c
instrument_account_last4string

For BANK_ACCOUNT Payment Instruments, filter by the last-4 digits of the bank account number (i.e., from the Payment Instrument's masked_account_number).

Example: instrument_account_last4=1234
instrument_binstring

For PAYMENT_CARD Payment Instruments, filter by the first-6 digits of the card's number (i.e., the Payment Instrument's bin).

Example: instrument_bin=601100
instrument_brand_typestring

For PAYMENT_CARD Payment Instruments, filter by the card's brand.

Example: instrument_brand_type=MASTERCARD
instrument_card_last4string

For PAYMENT_CARD Payment Instruments, filter by the last-4 digits of the card's number (i.e., the Payment Instrument's last_four).

Example: instrument_card_last4=4242
instrument_issuer_countrystring

For PAYMENT_CARD Payment Instruments, filter by the card's issuing country (i.e., the Payment Instrument's issuer_country). Use comma-separation to query for multiple values.

Example: instrument_issuer_country=USA,CAN
instrument_namestring

Filter by the Payment Instrument's name (exact match).

Example: instrument_name=Business%20Card
instrument_typestring

Filter by the Payment Instrument's type.

Enum"PAYMENT_CARD""BANK_ACCOUNT"
Example: instrument_type=PAYMENT_CARD
merchant_idstring

Filter by the Merchant's ID (i.e., the Transfer's merchant).

Example: merchant_id=MUtAWVfXkf149BVi2cL2HvPU
merchant_identity_idstring

Filter by the Merchant's Identity ID (i.e., the Transfer's merchant_identity).

Example: merchant_identity_id=IDtX3ciHPq2DDquCQJRwj7VW
merchant_identity_namestring

Filter by the Merchant's name (i.e., the Merchant's merchant_name).

Example: merchant_identity_name=Finix%20Flowers
merchant_midstring

Filter by the Merchant's Merchant Identification Number (MID) (i.e., the Merchant's mid).

Example: merchant_mid=FNXkitpwdmgMJ8Vz9FxKBCSza
merchant_processor_idstring

Filter by the Merchant's processor (i.e., the Merchant's processor).

Example: merchant_processor_id=DUMMY_V1
ready_to_settle_at.gtestring(date-time)

Filter where ready_to_settle_at is after the given date. Only available on Finix-Version: 2022-02-01. For more details, see Versioning.

Example: ready_to_settle_at.gte=2023-06-28T00:00:00
ready_to_settle_at.ltestring(date-time)

Filter where ready_to_settle_at is before the given date. Only available on Finix-Version: 2022-02-01. For more details, see Versioning.

Example: ready_to_settle_at.lte=2023-06-28T00:00:00
statestring

Filter by the transfer's state.

Enum"ALL""CANCELED""FAILED""PENDING""RETURNED""SUCCEEDED"
Example: state=SUCCEEDED
statement_descriptorstring

Filter by statement_descriptor.

Example: statement_descriptor=Finix%20Flowers
trace_idstring

Filter by trace_id.

Example: trace_id=021fc4ed-f0a8-4932-820c-b22b542526f8
typestring

Filter by type.

Enum"ALL""DEBIT""CREDIT""REVERSAL""SETTLEMENT"
Example: type=REVERSAL
updated_at.gtestring(date-time)

Filter where updated_at is after the given date.

Example: updated_at.gte=2022-09-27T11:21:23
updated_at.ltestring(date-time)

Filter where updated_at is before the given date.

Example: updated_at.lte=2023-01-21T10:17:22
tags.keystring

Filter by the tag's key. For more information, see Tags.

Example: tags.key=card_type
tags.valuestring

Filter by the tag's value. For more information, see Tags.

Example: tags.value=business_card
curl "https://finix.sandbox-payments-api.com/transfers" \
-H "Finix-Version: 2022-02-01" \
-u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda

Responses

List of Transfer objects

Headers
finix-apiuser-rolestring
Enum"ROLE_ADMIN""ROLE_PLATFORM""ROLE_PARTNER""ROLE_MERCHANT"
datestring
x-request-idstring

A unique ID for this specific API request attempt.

Bodyapplication/json
pageobject(PageCursor)

Details the page that's returned.

_embeddedobject

List of Transfer objects.

_linksobject(ListLinks)

For your convenience, every response includes several URLs which link to resources relevant to the request. You can use these _links to make your follow-up requests and quickly access relevant IDs.

Response
application/json
{ "_embedded": { "transfers": [] }, "_links": { "self": {} }, "page": { "limit": 100, "next_cursor": "TR4AyjeiKwML2rZ6fWyVaQST" } }

Fetch a Transfer

Request

Retrieve a Transfer.

Path
transfer_idstringrequired

ID of Transfer resource.

Example: TRvypRNBeqM597Zi4DcqJ2Vh
curl "https://finix.sandbox-payments-api.com/transfers/TRnErBfrHLgdAi3BqAkWLN27" \
  -u USfdccsr1Z5iVbXDyYt7hjZZ:313636f3-fac2-45a7-bff7-a334b93e7bda \
  -H "Content-Type: application/json" \
  -H "Finix-Version: 2022-02-01"

Responses

Single Transfer object

Headers
finix-apiuser-rolestring
Enum"ROLE_ADMIN""ROLE_PLATFORM""ROLE_PARTNER""ROLE_MERCHANT"
datestring
x-request-idstring

A unique ID for this specific API request attempt.

Bodyapplication/json
idstring

The ID of the Transfer resource.

created_atstring(date-time)(CreatedAt)

Timestamp of when the object was created.

updated_atstring(date-time)(UpdatedAt)

Timestamp of when the object was last updated.

additional_buyer_chargesobject or null(AdditionalBuyerCharges)

Object detailing any Buyer Charges that got included in the Authorization.

additional_healthcare_dataobject or null(AdditionalHealthcareData)

Object detailing any additional healthcare amounts included in the Authorization or Transfer. Only non-healthcare merchant category codes (MCCs) are required to pass in additional healthcare data and have the necessary SIGIS certification.

additional_purchase_dataobject(AdditionalPurchaseData)
address_verificationstring or null

Details the results of the Address Verification checks.

amountnumber(double)(Amount)

The total amount in cents of the resource. Note: For fees fractional amounts (2.393) can be returned.

amount_requestedinteger

Details the amount that was requested to get debited from the source when the transaction was created.

applicationstring

The ID of the Application the Transfer was created under.

bank_return_detailsobject or null(BankReturnDetails)

Details about a transfer that was returned and was unable to be processed. Only present when state is RETURNED

card_present_detailsobject or null(CardPresentDetails)

Details needed to process card present transactions.

currencystring(Currency)

ISO 4217 3 letter currency code.

Enum"AED""AFN""ALL""AMD""ANG""AOA""ARS""AUD""AWG""AZN"
destinationstring or null

The ID of the destination.

devicestring

The ID of the Device resource the Transfer was created under.

externally_fundedstring

Details if the Transfer will be settled externally by card processors.

failure_codestring or null(FailureCode)

The code of the failure so the decline can be handled programmatically. For more info on how to handle the failure, see Failure Codes.

failure_messagestring or null(FailureMessage)

A human-readable description of why the transaction was declined. This will also include a suggestion on how to complete the payment.

feeinteger(int64)

The minimum amount of the Transfer you'd like to collect as your fee in cents. Defaults to zero (must be less than or equal to the amount).

  • If the fees applied by the 'Fee Profile' are higher than the value passed in 'fee', 'fee' will not be applied and have no effect.
  • If the fees applied by the 'Fee Profile' are lower than the value passed in 'fee', an additional fee is be applied, in addition to the fees generated by the Fee Profile.
    • The additional fee is equal to the difference between the value passed in 'fee' and the fees generated by the Fee Profile. fraud_session_id:
fee_typestring(FeeType)

Details the type of fee if the Transfer includes a fee.

Enum"ACH_BASIS_POINTS""ACH_CREDIT_RETURN_FIXED_FEE""ACH_DEBIT_RETURN_FIXED_FEE""ACH_FIXED""ACH_MAX_FIXED""ACH_NOTICE_OF_CHANGE_CREDIT_FIXED""ACH_NOTICE_OF_CHANGE_DEBIT_FIXED""AMERICAN_EXPRESS_ASSESSMENT_BASIS_POINTS""AMERICAN_EXPRESS_BASIS_POINTS""AMERICAN_EXPRESS_FIXED"
fee_profilestring

The ID of the Fee Profile that will be used for calculating fees for this transfer.

Example: "FPxxxxxxxxx"
idempotency_idstring or null(IdempotencyId)

Pass any randomly generated or internal ID to idempotently identify Transfers, Authorizations, and refund requests.

merchantstring

The ID of the Merchant resource the Transfer was created under.

Example: "MUxxxxxxxxxxxxxxxxxxxxxxx"
merchant_identitystring

The ID of Identity resource used by the Merchant the Transfer was created under.

Example: "IDxxxxxxxxxxxxxxxxxxxxxxxx"
operation_keystring or null(OperationKey)

Details the operation that's performed in the transaction (Card present transactions only) .

Enum"PUSH_TO_CARD""PULL_FROM_CARD""CARD_PRESENT_DEBIT""CARD_PRESENT_UNREFERENCED_REFUND""SALE""UNREFERENCED_REFUND""MERCHANT_CREDIT_ADJUSTMENT""MERCHANT_DEBIT_ADJUSTMENT""CARD_PRESENT_AUTHORIZATION"
parent_transferstring or null
  • ID of the original parent Transfer where the transaction occurred.
  • Only appears for Transfers:type REVERSAL and FEE.
parent_transfer_trace_idstring or null
  • trace_id of the original parent Transfer where the transaction occurred.
  • Only appears for Transfers:type REVERSAL and FEE.
messagesArray of strings(Messages)

Message field that provides additional details.

Default []
raw(Raw (object or null)) or (Raw (string or null))(Raw)

Raw response from the processor.

Any of:

Raw response from the processor.

object or null(Raw)

Raw response from the processor.

ready_to_settle_atstring or null(date-time)

Timestamp of when the Transfer is ready to be settled at.

receipt_last_printed_atstring or null(date-time)

Timestamp when the receipt was last printed.

security_code_verificationstring or null

Details the results of the Security Code Verification checks.

sourcestring or null

The ID of the Payment Instrument that will be debited and performing the Transfer.

split_transfersArray of strings
  • Array containing the resource IDs of the Split Transfers generated from the Transfer.
  • Only used for Split Transactions. For more information, see Split Transactions.
Default []
statestring

The status of the Transfer.

Enum"CANCELED""PENDING""FAILED""SUCCEEDED""UNKNOWN""RETURNED"
statement_descriptorstring or null
  • The description of the seller that appears on the buyer's bank or card statement.
  • If you are on our Flex Product, statement_descriptors for Transfers in live environments will have a FI * prefix if you are on LITLE_V1 or VANTIV_V1. If you are using a FINIX_V1 processor, there will be no FI * prefix.
subtypestring

Additional information describing the payment_type.

Enum"API""APPLICATION_FEE""DISPUTE""MERCHANT_CREDIT""MERCHANT_CREDIT_ADJUSTMENT""MERCHANT_DEBIT""MERCHANT_DEBIT_ADJUSTMENT""PLATFORM_CREDIT""PLATFORM_CREDIT_ADJUSTMENT""PLATFORM_DEBIT"
supplemental_feestring or null

Amount in cents for which an additional fee will be created in addition to any fees created from the assigned fee profile.

tagsobject or null(tags)

Include up to 50 key: value pairs to annotate requests with custom metadata.

  • Maximum character length for individual keys is 40.
  • Maximum character length for individual values is 500. (For example, order_number: 25, item_type: produce, department: sales)
tip_amountinteger or null

The tip amount included in the total amount.

trace_idstring or null

Trace ID of the Transfer. The processor sends back the trace_id so you can track the Transfer end-to-end.

typestring

Type of Transfer.

Enum"DEBIT""CREDIT""REVERSAL""FEE""ADJUSTMENT""DISPUTE""RESERVE""SETTLEMENT""UNKNOWN"
_linksobject

For your convenience, every response includes several URLs which link to resources relevant to the request. You can use these _links to make your follow-up requests and quickly access relevant IDs.

Response
application/json
{ "id": "TRaWgycn5FEpESUkkFaC6tMx", "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": 662154, "amount_requested": 662154, "application": "APc9vhYcPsRuTSpKD9KpMtPe", "currency": "USD", "destination": null, "externally_funded": "UNKNOWN", "failure_code": null, "failure_message": null, "fee": 0, "fee_profile": "FPvCQUcnsueN3Bc3zR1qCBG8", "idempotency_id": null, "merchant": "MUmfEGv5bMpSJ9k5TFRUjkmm", "merchant_identity": "ID6UfSm1d4WPiWgLYmbyeo3H", "messages": [], "operation_key": "CARD_NOT_PRESENT_SALE", "parent_transfer": null, "parent_transfer_trace_id": null, "raw": null, "ready_to_settle_at": "2024-12-24T05:54:04.21Z", "receipt_last_printed_at": null, "security_code_verification": null, "source": "PI6iQcTtJNCS8GZAVKYi5Ueb", "split_transfers": [], "state": "SUCCEEDED", "statement_descriptor": "FLX*FINIX FLOWERS", "subtype": "API", "supplemental_fee": 0, "tags": { "test": "Sale" }, "tip_amount": null, "trace_id": "ab8efc62-4fee-4d7c-a4e0-ac98a3f0767d", "type": "DEBIT", "_links": { "application": {}, "self": {}, "merchant_identity": {}, "payment_instruments": {}, "reversals": {}, "fees": {}, "disputes": {}, "source": {}, "fee_profile": {} } }

Users

A User resource represents a pair of API keys which are used to perform authenticated requests against the Finix API. When making authenticated requests via HTTP basic access authentication the ID of a User resource maps to the username, while the password corresponds to the password (i.e. secret key).

The password field for a User resource is only returned during the initial creation. Any following GET requests to the resource returns the password field as null for security purposes.

Related Guides: Account Structure

Operations

Webhooks

Webhooks lets you build or set up integrations which subscribe to certain automated notifications (i.e. events) on the Finix API. When one of those events is triggered, a HTTP POST payload is sent to the webhook's configured URL.

Related Guides: Webhooks

Operations

Checkout Forms

Checkout Forms are a low-code solution that enables you to create a customizable payment page where buyers can easily enter their payment details and submit a payment on both desktop and mobile devices.

With Checkout Forms, you can quickly create checkout pages and accept payments from buyers with minimal development work.

Related Guides: Checkout Pages

Operations

Receipts

Operations

Subscriptions

A Subscription resource represents a recurring charge to a Payment Instrument at regular intervals. Subscribers can be buyers, customers, or merchants.

When creating a Subscription, you have the option to use a Subscription Plan.

Limitations:
- Supported countries: At this time, subscriptions are available in the United States.
- Supported payment methods: Subscriptions currently support recurring card payments and recurring bank account payments (ACH in the USA).
- Approved merchants: At this time, only approved merchants with one of the following processors can create subscriptions: DUMMY_V1 and FINIX_V1.

Related Guides: Creating Subscriptions, Creating Subscription Plans, Recurring Payments Guidelines

Operations

Subscription Plans

Operations

Transfer Attempts

A transfer_attempt is created when a buyer attempts to pay for a payment using a Payment Link or Checkout Form. Using Transfer Attempts, you can track the lifecycle of a payment or a series of payments if you are using a multi-use Payment Link.

Each transfer_attempt has as reference to a transfer_id to allow you to query it for additional data.

Operations

Balances

A Balance resource represents the current financial state of an Application identified by the linked_to query parameter.

It tracks the state of funds processed through the system, including amounts that are:

  • available_amount for immediate use or disbursement.
  • pending_amount due to processing times, holds, or other constraints.
  • posted_amount, which reflects the total sum (including both available and pending funds).
Operations

Balance Adjustments

A Balance Adjustment modifies the account Balance by adding funds (a 'top-up') or reducing funds for Payouts. Each adjustment is linked to a specific payment rail (e.g., ACH, card, wire).

Operations

Application Profiles

The application_profile resource is used to configure the Application's Fee Profile. The Application's Fee Profile configures what Fee gets applied to transactions processed by the application_profile.

Related Guides: Onboarding Process, Collecting Fees

Operations

Applications

The Application resource represents your app. For example, an iOS app, website, online marketplace, SaaS platform, etc. – any web service that connects buyers (i.e. customers) and sellers (i.e. merchants). In other words, an Application is a resource that represents the program you're integrating with Finix and using to connect with customers (i.e. buyers).

Related Guides: Getting Started

Operations

Balance Transfers

Our Balance Transfers API provides platforms the option to create a money movement between their FBO (For the Benefit Of) Settlement account and their operating account. This is only available for Finix Core customers with Litle V12 credentials.

If you have any questions, please reach out to your Finix point of contact or contact the Finix Support team.

Operations

Merchant Profiles

A merchant_profile links a merchant to it's risk_profile and fee_profile. Each merchant has a merchant_profile.

When a merchant gets created, a merchant_profile also gets created. This new merchant_profile automatically receives a new risk_profile and fee_profile that are copies of the risk and fee profiles on the application_profile.

Related Guides: Collecting Fees

Operations

Payout Profiles

A Payout Profile configures how fees and payouts get calculated and processed.

Related Guides: Configuring Payouts

Operations

Review Queue Items

Funds are released to sub-merchants when a Settlement's corresponding Review Queue Item is marked as ACCEPTED by a user with the appropriate role permissions.

Related Guides: Roles & Permissions

Operations

Verifications

Verifications are used to verify Identities and Payment Instruments.

For Identities, a verification represents an attempt to onboard and underwrite an identity.

For Payment Instruments, a verification represents getting additional information from the card brands to verify a card is eligible for push to card.

Related Guides: Onboarding with the API, Push to Card

Operations