Plaid logo
Docs
ALL DOCS

Transfer (beta)

  • Introduction to Transfer and Transfer UI
  • Payment Profiles
  • Sending or receiving funds
  • Sweeping funds
  • Guarantee
  • Reconciling transfers
  • Recurring transfers
  • Transfers in the Dashboard
  • ACH requirements
  • Transfers using Transfer UI
  • Transfer webhooks
  • Add transfer to your app
Plaid logo
Docs
Plaid.com
Get API keys
Open nav

Introduction to Transfer and Transfer UI

Intelligently process transfers between accounts

API Reference

View Transfer requests, responses, and example code

View Transfer API

Quickstart

Learn about Plaid's key concepts and run starter code

Get started

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

  1. (Optional) Create a Payment Profile using /payment_profile/create and receive a payment_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.

  2. Call /link/token/create, specifying transfer in the products parameter. If using a payment profile, provide the payment_profile_token in the transfer.payment_profile_token field and the user's phone number in the user.phone_number field.

  3. Initialize a Link instance using the link_token created in the previous step. For more details for your specific platform, see the Link documentation.

  4. The user will now go through the Link flow. The onSuccess callback will indicate they have completed the Link flow.

  5. (If not using a Payment Profile) You will receive a public_token from the onSuccess callback. Call /item/public_token/exchange to exchange this public token for an access_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 the onSuccess callback, within metadata.accounts, or by calling /accounts/get.

  6. Determine the transfer failure risk by calling /transfer/authorization/create and providing either the access_token and account_id pair, or the payment_profile_token.

  7. Check the authorization.decision. If it is declined, you cannot complete the transfer. If it is approved, check the authorization.decision_rationale field. If authorization.decision_rationale is null, 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.

  8. Create the transfer by calling /transfer/create using the authorization_id. Plaid will execute the transfer and automatically sweep funds into your account once they are available to be swept.

  9. (Optional) To monitor the progress of the sweep, use /transfer/sweep/list and/or /transfer/sweep/get. For more information, see Sweeping funds.

  10. (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.

Was this helpful?
Developer community
GitHub
GitHub
Stack Overflow
Stack Overflow
YouTube
YouTube
Twitter
Twitter
Discord
Discord