Debit a Bank Account (ie eCheck)
Returns: Note eCheck transactions can be rejected for up to sixty days for a variety of reasons including insufficient funds, closed accounts, or a revoked authorization (i.e. dispute). Because of the 60 day threshold, Finix can configure a delay in the settling of an eCheck. For example, your application can implement a six day delay in order to feel more confident that the eCheck will not be rejected.
attention
By default, Finix implements a 3 day business day delay on eCheck.
warning
Ensure that you create an additional buyer Identity separate from the merchant Identity. Associate the buyer Identity with the bank account you tokenize.
When a return occurs a Transfer of type REVERSAL
with a subtype SYSTEM
is automatically created and will negatively impact the future settlement.
attention
This API is available for Finix Flex and Finix Core customers.
A Transfer
representing a customer payment where funds are obtained from a
bank account (i.e. ACH Debit, eCheck). These specific Transfers
are
distinguished by their type which return DEBIT.
Learn how to prevent duplicate transfers by passing an idempotency ID in the payload.
curl https://finix.sandbox-payments-api.com/transfers \
-H "Content-Type: application/vnd.json+api" \
-u USsRhsHYZGBPnQw8CByJyEQW:8a14c2f9-d94b-4c72-8f5c-a62908e5b30e \
-d '
{
"fee": 603,
"currency": "USD",
"merchant": "MUeDVrf2ahuKc9Eg5TeZugvs",
"tags": {
"order_number": "21DFASJSAKAS"
},
"source": "PIk3AG7aUSCyNgYpDwCKkwDC",
"amount": 6031,
"processor": "DUMMY_V1"
}'
Example Response:
{
"id" : "TRubKc2ZDXYYXvo2uydTnMmq",
"amount" : 6031,
"tags" : {
"order_number" : "21DFASJSAKAS"
},
"state" : "PENDING",
"trace_id" : "fb3dccd6-0f01-4133-a765-c1882c56df92",
"currency" : "USD",
"application" : "APgPDQrLD52TYvqazjHJJchM",
"source" : "PIk3AG7aUSCyNgYpDwCKkwDC",
"destination" : null,
"ready_to_settle_at" : null,
"externally_funded" : "UNKNOWN",
"fee" : 603,
"statement_descriptor" : "FNX*DUNDER MIFFLIN",
"type" : "DEBIT",
"messages" : [ ],
"raw" : null,
"created_at" : "2022-01-27T07:37:08.65Z",
"updated_at" : "2022-01-27T07:37:09.06Z",
"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/TRubKc2ZDXYYXvo2uydTnMmq"
},
"merchant_identity" : {
"href" : "https://finix.sandbox-payments-api.com/identities/IDpYDM7J9n57q849o9E9yNrG"
},
"payment_instruments" : {
"href" : "https://finix.sandbox-payments-api.com/transfers/TRubKc2ZDXYYXvo2uydTnMmq/payment_instruments"
},
"reversals" : {
"href" : "https://finix.sandbox-payments-api.com/transfers/TRubKc2ZDXYYXvo2uydTnMmq/reversals"
},
"fees" : {
"href" : "https://finix.sandbox-payments-api.com/transfers/TRubKc2ZDXYYXvo2uydTnMmq/fees"
},
"disputes" : {
"href" : "https://finix.sandbox-payments-api.com/transfers/TRubKc2ZDXYYXvo2uydTnMmq/disputes"
},
"source" : {
"href" : "https://finix.sandbox-payments-api.com/payment_instruments/PIk3AG7aUSCyNgYpDwCKkwDC"
},
"fee_profile" : {
"href" : "https://finix.sandbox-payments-api.com/fee_profiles/FPbDSnEPtaT8Nttxj9NJk7eC"
}
}
}
HTTP Request
POST https://finix.sandbox-payments-api.com/transfers
Request Arguments
Field | Type | Description |
---|---|---|
source |
string, required | ID of the Payment Instrument that will be debited |
merchant_identity |
string, required | Identity ID of the merchant whom you're charging on behalf of |
amount |
integer, required | The total amount that will be debited in cents (e.g. 100 cents to debit $1.00) |
fee |
integer, optional | The amount of the Transfer you would like to collect as your fee in cents. Defaults to zero (Must be less than or equal to the amount) |
currency |
string, required | 3-letter ISO code designating the currency of the Transfers (e.g. USD)processor |
processor |
string, optional | If the Application has more than one processor association, it's required to pass the processor (e.g. DUMMY_V1) |
idempotency_id |
string, optional | A randomly generated value that you want associated with the request |