Plaid logo
Docs
ALL DOCS

Errors

  • Overview
  • Item errors
  • Institution errors
  • Transactions errors
  • Transfer errors
  • Income errors
  • Sandbox errors
  • API errors
  • Assets errors
  • Payment errors (UK/EU)
  • Virtual Accounts errors (UK/EU)
  • Check Report errors
  • Invalid Request errors
  • Invalid Input errors
  • Invalid Result errors
  • Rate Limit Exceeded errors
  • Recaptcha errors
  • OAuth errors
  • Microdeposits errors
  • Partner errors
Plaid logo
Docs
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
  • Can you show code for getting real-time balance in Node?
  • What is Remember Me?
  • Can you show code for getting transactions in Python?
Note: Bill isn't perfect. He's just a robot platypus that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.
Plaid.com
Log in
Get API Keys
Open nav

Invalid Input Errors

Guide to troubleshooting invalid input errors

DIRECT_INTEGRATION_NOT_ENABLED

An attempt was made to create an Item without using Link.
Common causes
  • /item/create was called directly, without using Link.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "DIRECT_INTEGRATION_NOT_ENABLED",
5 "error_message": "your client ID is only authorized to use Plaid Link. head to the docs (https://plaid.com/docs) to get started.",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INCORRECT_DEPOSIT_VERIFICATION

The user submitted an incorrect Manual Same-Day micro-deposit verification input during Item verification in Link.
Sample user-facing error message
Code is incorrect, 2 attempts remaining: Check the bank statement of your account ending in •••0000 for the $0.01 deposit and try again.
Common causes
  • Your user submitted an incorrect micro-deposit verification input when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INCORRECT_DEPOSIT_VERIFICATION",
5 "error_message": "",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_ACCESS_TOKEN

Common causes
  • Access tokens are in the format: access-<environment>-<identifier>
  • This error can happen when the access_token you provided is invalid or pertains to a different API environment
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_ACCESS_TOKEN",
5 "error_message": "could not find matching access token",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_ACCOUNT_ID

The supplied account_id is not valid
Common causes

One of the account_id(s) specified in the API call's account_ids object is invalid or does not exist.

  • Your integration is passing a correctly formatted, but invalid account_id for the Item in question.
  • The underlying account may have been closed at the bank, and thus removed from our API.
  • The Item affected is at an institution that uses OAuth-based connections, and the user revoked access to the specific account.
  • The account_id was erroneously removed from our API, either completely or a new account_id was assigned to the same underlying account.
  • You are requesting an account that your user has de-selected in the Account Select v2 update flow.
Troubleshooting steps

Ensure that your integration only uses account_id(s) that belong to the Item in question. Early on in your development it is important to verify that your integration only uses account_id(s), and other Plaid identifiers like item_id, for the Item that they belong to.

Also be sure to preserve the case of any non-numeric characters in Plaid identifiers, as they are case sensitive.

Account churn

If the underlying account has not been closed or changed at the bank and the account_id no longer appears, Plaid may have removed the account entirely or assigned the account a new account_id, a situation known as "account churn".

Some common causes for account churn are:

  • The Item was in an unhealthy state for an extended period of time. If an Item has remained in an error state for over a year, its underlying data may be removed. If the Item is then later refreshed, the Item data will be re-generated, resulting in new account_id data.
  • The bank or user drastically changing the name of the account, e.g. an account named "Savings account" becomes "Jane's vacation fund".
  • The account's mask is changed by the bank, which can occur when banks change their backend systems.

Account churn caused by the latter two reasons is unexpected API behavior. If you experience account churn on an Item that was otherwise healthy, file a Support ticket.

1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_ACCOUNT_ID",
5 "error_message": "failed to find requested account ID for requested item",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_API_KEYS

The client ID and secret included in the request body were invalid. Find your API keys in the Dashboard.
Common causes
  • The API keys are not valid for the environment being used, which can commonly happen when switching between development environments and forgetting to switch API keys
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_API_KEYS",
5 "error_message": "invalid client_id or secret provided",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_AUDIT_COPY_TOKEN

The audit copy token supplied to the server was invalid.
Common causes
  • You attempted to access an Asset Report using an audit_copy_token that is invalid or was revoked using /asset_report/audit_copy/remove or /asset_report/remove.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_AUDIT_COPY_TOKEN",
5 "error_message": null,
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_INSTITUTION

The institution_id specified is invalid or does not exist.
Common causes
  • The institution_id specified is invalid or does not exist.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_INSTITUTION",
5 "error_message": "invalid institution_id provided",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_LINK_CUSTOMIZATION

The Link customization is not valid for the request.
Common causes
  • The Link customization is missing a use case and the session is enabled for Data Transparency Messaging.
  • This error can happen when requesting to update account selections with a Link customization that does not enable Account Select v2.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_LINK_CUSTOMIZATION",
5 "error_message": "requested link customization is not set to update account selection",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_LINK_TOKEN

The link_token provided to initialize Link was invalid.
Sample user-facing error message
Username or password incorrect: Check that your credentials are the same that you use for this institution
Common causes
  • The link_token has expired. A link_token lasts at least 30 minutes before expiring.
  • The link_token was already used. A link_token can only be used once, except when working in the Sandbox test environment.
  • The link_token was created in a different environment than the one it was used with. For example, a Sandbox link_token was used in Production.
  • A user entered invalid credentials too many times during the Link flow, invalidating the link_token.
Troubleshooting steps

For more detailed instructions on handling this error, see Handling invalid Link Tokens.

1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_LINK_TOKEN",
5 "error_message": "invalid link_token provided",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_PROCESSOR_TOKEN

The processor_token provided to initialize Link was invalid.
Common causes
  • The processor_token used to initialize Link was invalid.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_PROCESSOR_TOKEN",
5 "error_message": null,
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_PRODUCT

Your client ID does not have access to this product.
Common causes
  • The endpoint you are trying to access is not enabled for your account in the environment where you are trying to use it. For example, Identity Verification access is only available in Sandbox after you have received Production access.
  • Your integration is using a partner endpoint integration that has not yet been enabled in the Dashboard.
  • Your integration is attempting to call a processor endpoint on an Item that was initialized with products that are not compatible with processor endpoints.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_PRODUCT",
5 "error_message": "client is not authorized to access the following products: [\"identity_verification\"]",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

ADDITIONAL_CONSENT_REQUIRED

The end user has not provided consent to the requested product
Common causes
  • You are using a Link flow that is enabled for Data Transparency Messaging and are trying to access an endpoint you did not collect consent for.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "ADDITIONAL_CONSENT_REQUIRED",
5 "error_message": "client does not have user consent to access the PRODUCT_AUTH product",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_PUBLIC_TOKEN

Common causes
  • Public tokens are in the format: public-<environment>-<identifier>
  • This error can happen when the public_token you provided is invalid, pertains to a different API environment, or has expired.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_PUBLIC_TOKEN",
5 "error_message": "could not find matching public token",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_STRIPE_ACCOUNT

The supplied Stripe account is invalid
Common causes

After /processor/stripe/bank_account_token/create was called, Plaid received a response from Stripe indicating that the Stripe account specified in the API call's account_id is invalid.

Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_STRIPE_ACCOUNT",
5 "error_message": "",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_USER_TOKEN

The supplied user token is invalid
Common causes
  • The user token is not associated with the given user ID.
  • The user token is invalid or pertains to a different API environment.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_USER_TOKEN",
5 "error_message": "could not find matching user token",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

INVALID_WEBHOOK_VERIFICATION_KEY_ID

The key_id provided to the webhook verification endpoint was invalid.
Common causes
  • A request was made to /webhook_verification_key/get using an invalid key_id.
  • The call to /webhook_verification_key/get was made from an environment different than the one the webhook was sent from (for example, verification of a Sandbox webhook was attempted against Production).
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "INVALID_WEBHOOK_VERIFICATION_KEY_ID",
5 "error_message": "invalid key_id provided. note that key_ids are specific to Plaid environments, and verification requests must be made to the same environment that the webhook was sent from",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

TOO_MANY_VERIFICATION_ATTEMPTS

The user attempted to verify their Manual Same-Day micro-deposit codes more than 3 times and their Item is now permanently locked. The user must retry submitting their account information in Link.
Sample user-facing error message
No attempts remaining: You’ve used up all of your attempts. To continue, connect a different bank
Common causes
  • Your user repeatedly submitted incorrect micro-deposit codes when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "TOO_MANY_VERIFICATION_ATTEMPTS",
5 "error_message": "",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

UNAUTHORIZED_ENVIRONMENT

Your client ID does not have access to this API environment. See which environments you are enabled for from the Dashboard.
Sample user-facing error message
Unauthorized environment: Your Client ID is not authorized to access this API environment. Contact Support to gain access
Common causes
  • You may not be enabled for the environment you are using.
  • Your code may be calling a deprecated endpoint.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "UNAUTHORIZED_ENVIRONMENT",
5 "error_message": "you are not authorized to create items in this api environment. Go to the Dashboard (https://dashboard.plaid.com) to see which environments you are authorized for.",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

UNAUTHORIZED_ROUTE_ACCESS

Your client ID does not have access to this route.
Common causes
  • The endpoint you are trying to access must be manually enabled for your account.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "UNAUTHORIZED_ROUTE_ACCESS",
5 "error_message": "you are not authorized to access this route in this api environment.",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?

USER_PERMISSION_REVOKED

The end user has revoked access to their data.
Common causes
  • The end user revoked access to their data via the Plaid consumer portal at my.plaid.com.
Troubleshooting steps
1http code 400
2{
3 "error_type": "INVALID_INPUT",
4 "error_code": "USER_PERMISSION_REVOKED",
5 "error_message": "the holder of this account has revoked their permission for your application to access it",
6 "display_message": null,
7 "request_id": "HNTDNrA8F1shFEW"
8}
Was this helpful?
Developer community
GitHub
GitHub
Stack Overflow
Stack Overflow
YouTube
YouTube
Discord
Discord