Introduction to Transfer and Transfer UI
Intelligently process transfers between accounts
API Reference
View Transfer requests, responses, and example code
View Transfer APIQuickstart
Learn about Plaid's key concepts and run starter code
Get startedOverview
Transfer
Transfer enables developers to seamlessly initiate and manage bank-to-bank payments. Transfer makes ACH easy by providing a built-in authorization engine to minimize clawback of funds due to returns. All of this is accomplished with a simple set of APIs so you can get started with ACH quickly and easily.
Transfer is best suited for developers interested in building custom Nacha-compliant user interfaces that require full control of the transfer experience. For a simpler integration using a less customizable user experience, see Transfer UI.
Transfer is available only to senders and recipients within the US. To apply for Transfer, complete the Production access request form and select Transfer as a requested product. For more information, you can also contact Sales or, for existing customers, your Plaid Account Manager.
Transfer UI
Transfer UI is an intuitive user interface that enables end users to authorize transfers within your application. It is easy to integrate and fully handles the transfer execution experience for you. It also utilizes the same built-in authorization engine used by Transfer to minimize return risks.
Transfer UI is best suited for developers interested in quickly launching a payments interface that is easy to use.
Transfer process overview
The process below is for Transfer only. For the Transfer UI process overview, see Transfer UI.
(Optional) Create a Payment Profile using
/payment_profile/create
and receive apayment_profile_token
. While this step is optional, it is recommended to maximize conversion by allowing users to avoid re-entering payment information. We recommend using a Payment Profile if you are not using Transfer UI and do not need to use other Plaid Products with the Item you are creating. Payment Profiles cannot be used with Transfer UI.Call
/link/token/create
, specifyingtransfer
in theproducts
parameter. If using a payment profile, provide thepayment_profile_token
in thetransfer.payment_profile_token
field and the user's phone number in theuser.phone_number
field.Initialize a Link instance using the
link_token
created in the previous step. For more details for your specific platform, see the Link documentation.The user will now go through the Link flow. The
onSuccess
callback will indicate they have completed the Link flow.(If not using a Payment Profile) You will receive a
public_token
from theonSuccess
callback. Call/item/public_token/exchange
to exchange this public token for anaccess_token
. You will also need to obtain the account id of the account you wish to transfer funds to or from; this can also be obtained from theonSuccess
callback, withinmetadata.accounts
, or by calling/accounts/get
.Determine the transfer failure risk by calling
/transfer/authorization/create
and providing either theaccess_token
andaccount_id
pair, or thepayment_profile_token
./transfer/authorization/create
will return anauthorization
object.Check the
authorization.decision
. If it isdeclined
, you cannot complete the transfer. If it isapproved
, check theauthorization.decision_rationale
field. Ifauthorization.decision_rationale
isnull
, proceed to the next step. If it is non-null
, Plaid was unable to collect enough data to make a thorough risk evaluation; decide whether to proceed with creating the transfer based on your own risk assessment protocols.Create the transfer by calling
/transfer/create
using theauthorization.id
. Plaid will execute the transfer and automatically sweep funds into your account once they are available to be swept.(Optional) To monitor the progress of the sweep, use
/transfer/sweep/list
and/or/transfer/sweep/get
. For more information, see Sweeping funds.(Optional) To monitor and sync transfer updates, use
/transfer/list
,/transfer/get
,/transfer/event/list
, and/or/transfer/event/sync
. For more information, see Reconciling transfers.
Testing Transfer
Transfer is available only in the Sandbox and Production environments; it cannot be used in Development. You should automatically get access to Transfer in Sandbox after signing up for your free Plaid API keys. Transfer endpoints typically work the same in Sandbox as they do in Production; to get started with Transfer, see adding Transfer to your app. Plaid also offers a number of Sandbox-specific endpoints for testing Transfer; for more details, see the Sandbox API reference.
To request access to Transfer in Production, complete the Production access request form.