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 startedBoth Transfer and Transfer UI are currently in closed beta and approval is required to participate. They are only available to senders and recipients based in the United States. If you're interested in learning more about either product and potentially participating in the beta program, please contact Sales or, for existing customers, your Plaid Account Manager.
For transfer capabilities with general availability, see Auth.
Transfer and Transfer UI are only supported in Plaid's Sandbox and Production environments.
Overview
Transfer
Transfer (beta) enables developers to seamlessly initiate and manage bank-to-bank payments for loan disbursement or servicing. 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.
Transfer UI
Transfer UI (beta) 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.
Guarantee
Guarantee is an optional feature that can be used with both Transfer and Transfer UI. When you use Guarantee, Plaid analyzes proposed transfers and guarantees a subset of them. If a guaranteed transfer is returned, Plaid will cover the cost of the ACH return. Guarantee also allows faster money movement: once Plaid guarantees a transfer, the funds will be included in the next sweep, even if the transfer is not yet settled. Additionally, there is no holding period for guaranteed debit transfers. To learn more about Guarantee, see Guarantee documentation.
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
.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.