Plaid logo
Docs
ALL DOCS

Auth

  • Introduction to Auth
  • Add Auth to your app
  • Move money with our partners
  • Add institution coverage
Plaid logo
Docs
Plaid.com
Get API keys
Open nav

Introduction to Auth

Instantly retrieve account information to set up online payments via ACH and more.

Link an account
Fetch account info
Initiate a payment

Explore API

API Reference

View Auth requests, responses, and example code

View Auth API

Quickstart

Learn about Plaid's key concepts and run starter code

Get started

Auth allows you to request a user's checking or savings account information, making it easy for you to initiate credits or debits. For example, your app might allow users to accumulate a credit balance that they can cash out to a bank account, or it might allow users to pay you using their bank account information. With Auth, a user can provide this information in a frictionless way, simply by authenticating into their bank account.

You can perform an ACH transfer end-to-end by pairing Plaid Auth with one of our ACH processing partners, such as Stripe or Dwolla, and avoid having to access or store a user's bank account information. For more information, see Auth Partnerships.

Note that Auth can only be used with checking or savings accounts, and not with other types of depository accounts, such as money market accounts. Credit-type accounts, including credit cards, cannot receive payments directly via electronic interbank transfers, and Auth data cannot be used to set up credit card payments.

Prefer to learn by watching? Get an overview of how Auth works in just 3 minutes!

Enhancing Auth with related products

Auth is commonly used in combination with other Plaid APIs that reduce risk and support compliance.

For more information, see Balance (to verify accounts have sufficient funds), Signal (to calculate the risk of ACH returns with ML-powered analysis), and Identity (to verify ownership information on the account).

For account funding use cases, see Identity Verification for an end-to-end KYC compliance solution with optional AML capabilities.

Auth integration process

Below is a high level overview of the Auth integration process. For a more detailed walkthrough, see Add auth to your app or (if applicable) the docs for the specific partner you are using.

  1. Create a Link token by calling /link/token/create with auth in the products parameter. You may also set optional parameters here to extend coverage to more banks. For details, see Additional auth coverage. If you want to limit the user to linking only a single account, you can do so via a Link customization. For details, see Configuring Link with Auth.
  2. Initialize Link with the Link token from the previous step. Once the user has successfully completed the Link flow, exchange the public_token for an access_token. For more details, see Link.
  3. If using a Plaid partner for payment processing, ensure the partner is enabled on your Plaid Dashboard, then call /processor/token/create or /processor/stripe/bank_account_token/create to obtain a token that you will provide to the partner to enable funds transfers. For more detailed instructions, including a full walkthrough, see Auth payment partners.
  4. If not using a Plaid partner, call /auth/get to obtain the account and routing number, then provide these fields to your payment processing system.
  5. (Optional) To reduce fraud and complement know-your-customer processes, call /identity/get to verify that the identity information held by the bank matches the information that the user has provided to you. For more details, see Identity.
  6. (Optional) If you plan to transfer funds from the linked bank account, check the account's balance beforehand by calling /accounts/balance/get to avoid risk of an overdraft. For more details, see Balance.

Using a payments service

When using Auth, you will send Auth data to a payments service to initiate an interbank transfer; Plaid does not function as the payment processor. While Plaid is processor-agnostic and allows you to work with any partner you want, one easy way to make transfers is to work with a payments platform that partners with Plaid, such as Dwolla or Stripe. Working with these partners, you will not call the /auth/get endpoint, so you will not obtain a user's bank account information and do not need to worry about storing it securely. Instead, you will call /processor/token/create or /processor/stripe/bank_account_token/create to obtain a Plaid token that you will provide to the partner and that allows them to make these Plaid API calls as needed. For detailed instructions on how to set up Auth with a Plaid partner, as well as a list of supported funds transfer partners, see Auth Partnerships.

If you choose to use a payments provider who is not a Plaid partner, you will need to obtain bank account numbers and codes using /auth/get.

Looking for bank-to-bank transfer capabilities and don't have a payment processor yet? Check out Transfer (beta, US only) for a money movement solution with built-in payment processing capabilities.

Covering more institutions

When used in its default configuration, Auth provides access to approximately 90% of financial institution accounts in supported countries. In the US, Plaid also offers additional flows you can implement to cover more institutions with Auth. For more information, see Full Auth coverage.

Configuring Link with Auth

By default, only checking and savings accounts will appear when using Auth, and institutions that do not support these accounts will not appear in the Institution Select pane.

When using Auth, you will typically only need access to the one specific account that the end user wants to use to fund the payment, rather than all checking and savings accounts they may have at the same institution. Because of this, it is recommended to use the Account Select Link customization when configuring Link for use with Auth, to limit unnecessary access to user accounts. You can enable Account Select from the Dashboard.

Auth details by country

Just as there are multiple systems for bank codes and account numbers, there are also multiple systems for moving money from bank to bank. These systems are known as interbank transfer systems. The interbank transfer system used for an account depends on which country it is located in. Depending on the country, a bank account may participate in multiple interbank transfer systems and thus have multiple bank codes. For example, UK bank accounts participate in both SEPA and BACS payments. By calling /auth/get, you will receive all account numbers and bank codes associated with an Item.

United States (ACH)

In the United States, the bank code is known as a routing number, and the interbank transfer system is the Automated Clearing House (ACH) system. Because the ACH system can take several days to move money and can only be used within the United States, banks also have a second routing number, known as the wire transfer routing number, used to accept wire transfers. Wire transfers can be used to receive international payments and are faster than ACH transfers, but often involve a fee.

For a detailed, comprehensive guide to ACH transfers and payments, see Plaid's Modern Guide to ACH.

Copy
1"numbers": {
2 "ach": [
3 {
4 "account": "1111222233330000",
5 "account_id": "bWG9l1DNpdc8zDk3wBm9iMkW3p1mVWCVKVmJ6",
6 "routing": "011401533",
7 "wire_routing": "021000021"
8 }
9 ],
10 "bacs": [],
11 "eft": [],
12 "international": []
13}
Canada (EFT)

In Canada, the bank code is also known as a routing number, but it is in a different format than US routing numbers and broken into two pieces: the transit number (also known as the branch number), followed by the institution number. The interbank transfer system in Canada is the Electronic Funds Transfer (EFT) system, which can transfer funds instantaneously.

Copy
1"numbers": {
2 "ach": [],
3 "bacs": [],
4 "eft": [
5 {
6 "account": "111122220000",
7 "account_id": "qVZ3Bwbo5wFmoVneZxMksBvN6vDad6idkndAB",
8 "branch": "01533",
9 "institution": "114"
10 }
11 ],
12 "international": []
13}
Europe (SEPA transfers)

In the European Economic Area member states (which includes Euro zone nations, as well as the United Kingdom), the bank code is called a Bank Identifier Code (BIC), also known as a SWIFT code. Each bank account has a number in a standard format, known as the International Bank Account Number (IBAN), which is used along with the BIC for funds transfers. Many bank accounts also have internal, non-IBAN account numbers that cannot be used for funds transfers. The funds transfer system is known as the Shared European Payment Area (SEPA), and it supports three types of funds transfers: SEPA credit transfer, SEPA instant credit transfer, and SEPA direct debit.

Copy
1"numbers": {
2 "ach": [],
3 "bacs": [],
4 "eft": [],
5 "international": [
6 {
7 "account_id": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo",
8 "bic": "IE64BOFI90583812345678",
9 "iban": "IE64BOFI90583812345678"
10 }
11 ]
12}
United Kingdom (BACS)

The UK uses the SEPA system as well as its own system, known as the Bankers Automated Clearing System (BACS), in which the bank code is known as a sort code. Similar to the ACH system, payments within the BACS system cannot be made outside the UK and take several days to process. BACS payments are typically used for recurring direct debit payments, such as payroll. UK bank accounts will typically have both a BACS sort code and an IBAN and support both BACS transfers and SEPA transfers.

Copy
1"numbers": {
2 "ach": [],
3 "bacs": [
4 {
5 "account": "80000000",
6 "account_id": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo",
7 "sort_code": "040004"
8 }
9 ],
10 "eft": [],
11 "international": [
12 {
13 "account_id": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo",
14 "bic": "MONZGB21XXX",
15 "iban": "GB23MONZ04000480000000"
16 }
17 ]
18}

For UK-based implementations, also consider the Payment Initiation API, which allows end-to-end payments directly, without having to integrate an additional payment processor.

Sample app code

For a real-life example of an app that incorporates Auth, see the Node-based Plaid Pattern Account Funding sample app. Pattern Account Funding is a sample account funding app that fetches Auth data in order to set up funds transfers. The Auth code can be found in items.js.

Testing Auth

Plaid provides a GitHub repo with test data for testing Auth in Sandbox, helping you test configuration options beyond those offered by the default Sandbox user. For more information on configuring custom Sandbox data, see Configuring the custom user account.

For details on testing Auth with more complex Auth flows such as micro-deposit-based Auth, first familiarize yourself with Adding Institution Coverage, then see Test in Sandbox.

Next steps

Now that you understand Auth, add Auth to your app, or see Move Money with Auth partners to see specific instructions for configuring Auth with Plaid partners.

If you are using Auth as part of an account funding use case, see the Plaid Account Funding Guide for an overview of all required steps.

If you're ready to launch to Production, see the Launch checklist.

Launch checklist

Recommended steps to take before launching in Production

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