Sandbox test credentials
Simulate different flows using Sandbox credentials
You can browse the test users on this page, and create and manage your own, from the Sandbox tool in the Plaid Dashboard. For more details, see Customizing account data using the Sandbox Studio.
When using special Sandbox test credentials described on this page (other than user_good / pass_good), use the /sandbox/public_token/create flow or a non-OAuth test institution, such as First Platypus Bank (ins_109508). Special test credentials may be ignored when using the Sandbox Link OAuth flow.
Sandbox simple test credentials
Use the username user_good and password pass_good.
These provide basic account access to most Plaid products. Certain Plaid products also have specialized credentials that can be used for more advanced testing or for getting more useful and realistic testing data. These specialized credentials can be found below.
Transactions testing credentials
Use the username user_transactions_dynamic and any non-blank password to test checking, credit card, and loan account transactions. For persona-based testing, use user_ewa_user, user_yuppie, or user_small_business.
These credentials have realistic transaction history and may update transactions and fire webhooks when /transactions/refresh is called. For more details, including information on how often new transactions are triggered or how to add your own custom transactions, see Testing Transactions in Sandbox and testing pending and posted transactions.
Auth micro-deposit testing credentials
Use the username user_good and the password microdeposits_good.
For more details, see Institution details for Auth testing.
Credit and Income testing credentials
Plaid provides a variety of pre-populated test users designed for use with Bank Income and other underwriting-related products.
| Username | Password | Description |
|---|---|---|
user_bank_income | {} | User with wide variety of income streams of different types |
user_credit_bonus | Any | Has two salary streams: one with bonuses included in the paycheck, one with bonuses as separate transactions |
user_credit_joint_account | Any | Has two salary streams and two identities on the account |
user_credit_profile_poor | Any | Net loss cash flow over time, no consistent source of income |
user_credit_profile_good | Any | Neutral cash flow over time, multiple gig economy income streams |
user_credit_profile_excellent | Any | Positive cash flow over time, high salary-based income with secondary rental income stream |
user_prism_1 through user_prism_8 | Any | For testing Partner Insights reports, these users return a variety of consistent partner insights values |
Sandbox Studio also includes custom user templates for testing credit products, such as the Bank Income templates. You can modify these users as you need. For instructions, see Custom users.
For details on testing Bank Income with custom data, see Testing Bank Income.
Plaid Check Instant Link testing phone numbers
To test retrieving a PLAID_NETWORK report with /cra/report/get in Sandbox, create the user with one of the following phone numbers in identity.phone_numbers. For details on this flow, see Retrieving a report without Link.
| Phone number | Scenario | Response |
|---|---|---|
+14155550011 | Success | Stubbed data for each requested product. In cra_qualify, lend_scores returns a score of 65 with the variant GENERAL |
+14155550031 | Partial success | Same as +14155550011, except lend_scores in cra_qualify returns a null score with the error_reason "User must have at least 30 days of transaction history" |
+14155550032 | Partial success | Same as +14155550011, except lend_scores in cra_qualify returns a null score with the error_reason "Unable to compute insights because of an internal server error" |
+14155550041 | Failure | REPORT_NOT_FOUND error |
+14155550042 | Failure | NO_ELIGIBLE_ITEMS_ON_PROFILE error |
| Any other phone number | Failure | NO_MATCHING_USER error |
Liabilities testing credentials
Use the username user_loan_loc and password pass_good to create an Item containing general-purpose, commercial, and home-equity loans and lines of credit. Initialize the Item with the liabilities product, then call /liabilities/get to retrieve the pre-populated liability details.
In the Dashboard, select Loans and lines of credit from the Sandbox test users or open the Loan and line of credit liabilities Sandbox scenario. When calling /sandbox/public_token/create directly, use a non-OAuth institution such as First Platypus Bank (ins_109508).
{
"institution_id": "ins_109508",
"initial_products": ["liabilities"],
"options": {
"override_username": "user_loan_loc",
"override_password": "pass_good"
}
}Auth limited purpose checking test credentials
Use the username user_limited_purpose_checking and the password pass_good.
For more details, see Limited purpose checking.
Monitor and Identity Verification testing users
Monitor and Identity Verification have product-specific Sandbox users that can be used for testing. For Identity Verification, you can also create custom sample identities in the Plaid Dashboard for more targeted testing scenarios. For more details, see Testing Monitor and Testing Identity Verification.
Sandbox multi-factor credentials
You can trigger any multi-factor authentication (MFA) flow that Plaid
supports when creating an Item by using username user_good and modifying the password.
These credentials work only in Link at a non-OAuth institution; /sandbox/public_token/create returns ITEM_LOGIN_REQUIRED for them.
To simulate an institution that presents a multi-factor challenge on every login attempt, use a custom user with has_perpetual_otp.
Multi-factor device OTP
username: 'user_good'
password: 'mfa_device'
# Code for all devices: 1234
code: 1234Multi-factor questions
# n-rounds of m-questions per round, where 0 <= i, j < 9
username: 'user_good'
password: 'mfa_questions_<n>_<m>'
# answer_<i>_<j>, for j-th question in i-th round.
answer: 'answer_<i>_<j>'Multi-factor selections
username: 'user_good'
password: 'mfa_selections'
# Two questions: answer 'tomato' to the first and 'ketchup' to the second
answers: 'tomato', 'ketchup'# n-rounds of m-questions with o-answers per question
# 0 < n, m < 10 and 2 <= o < 10
username: 'user_good'
password: 'mfa_selections_<n>_<m>_<o>'
# answer_<i>_<j>_0, for j-th question in i-th round, where 0 <= i < n and 0 <= j < m
answer: 'answer_0_0_0'ReCAPTCHA testing credentials
You may trigger a reCAPTCHA in Plaid Link in the Sandbox environment by setting the test account password to a JSON object with a recaptcha field. Setting recaptcha to good will result in successful Item creation, while setting it to bad will result in a RECAPTCHA_BAD error to simulate a failed reCAPTCHA. Both values require the reCAPTCHA to be manually solved within Plaid Link.
username: user_good
password: {"recaptcha":"bad"}Error testing credentials
You can trigger a number of the errors that you may encounter when creating an Item by using username user_good and modifying the password.
error_[ERROR_CODE]For example, the password error_ITEM_LOCKED allows you to simulate an ITEM_LOCKED error.
Note that error testing credentials are not compatible with institutions that use OAuth. If you are not sure whether an institution uses OAuth flows, see the list of Sandbox institutions to find an institution that is guaranteed not to use OAuth.
The list of errors that can be simulated in this way is below:
"ACCESS_NOT_GRANTED"
"COUNTRY_NOT_SUPPORTED"
"INSTITUTION_NOT_RESPONDING"
"INSTITUTION_NO_LONGER_SUPPORTED"
"INSTITUTION_REGISTRATION_REQUIRED"
"INSUFFICIENT_CREDENTIALS"
"INTERNAL_SERVER_ERROR"
"INVALID_CREDENTIALS"
"INVALID_MFA"
"INVALID_SEND_METHOD"
"ITEM_LOCKED"
"ITEM_NOT_SUPPORTED"
"MFA_NOT_SUPPORTED"
"NO_ACCOUNTS"
"PAYMENT_INSUFFICIENT_FUNDS"
"PAYMENT_INVALID_RECIPIENT"
"PAYMENT_INVALID_REFERENCE"
"PAYMENT_INVALID_SCHEDULE"
"PAYMENT_REJECTED"
"PAYMENT_SCHEME_NOT_SUPPORTED"
"UNAUTHORIZED_INSTITUTION"
"USER_INPUT_TIMEOUT"
"USER_SETUP_REQUIRED"
"USER_SHOULD_VERIFY_DEPOSIT_ALLOCATIONS"To test errors with an OAuth institution, use the First Platypus OAuth screen, which appears after selecting any OAuth institution. Its drop-down selector offers the errors below, and its custom error code field accepts any code from the list above. Other codes aren't supported and typically return INVALID_CREDENTIALS.
"INSUFFICIENT_CREDENTIALS"
"ACCESS_NOT_GRANTED"
"NO_AUTH_ACCOUNTS"NO_AUTH_ACCOUNTS connects an Item whose only account is a credit card, so Link returns the NO_AUTH_ACCOUNTS error only when the Link token was created with Auth. Without Auth, the Item connects normally.
