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



Explore API
API Reference
View Auth requests, responses, and example code
View Auth APIQuickstart
Learn about Plaid's key concepts and run starter code
Get startedAuth 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.
Auth must be used with a third-party payment processor to move money: either a Plaid Partner or another third party. For more information, see Using a Payments Service. For an all-in-one solution that includes payment processor functionality, see Transfer (US-only).
Note that Auth can only be used with checking or savings accounts. Auth cannot be used with other 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.
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.
- Create a Link token by calling
/link/token/create
withauth
in theproducts
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. - Initialize Link with the Link token from the previous step. Once the user has successfully completed the Link flow, exchange the
public_token
for anaccess_token
. For more details, see Link. - 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. - 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. - (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. - (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
Looking for bank-to-bank transfer capabilities and don't have a payment processor yet? Check out Transfer (US only) for a money movement solution with built-in payment processing capabilities.
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. 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
. Given the sensitive nature of this information, we recommend that you consult the Open Finance Data Security Standard for security best practices. We also recommend that you do not store account numbers. You can integrate with one of Plaid's Data Security partners to process and share tokenized bank account numbers instead of raw bank account numbers. Contact your Account Manager to learn more about these partnerships.
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.
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.
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.
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.
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.