Invalid Input Errors

Guide to troubleshooting invalid input errors

Micro-deposit verification errors

Errors that can occur while verifying micro-deposits:

TOO_MANY_VERIFICATION_ATTEMPTS

The user attempted to verify their Manual Same-Day micro-deposit amounts more than 3 times and their Item is now permanently locked. The user must retry submitting their account information in Link.
Server-SideorClient-Side
Common causes
  • Your user repeatedly submitted incorrect micro-deposit amounts when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "TOO_MANY_VERIFICATION_ATTEMPTS",
"error_message": "",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

INCORRECT_DEPOSIT_AMOUNTS

The user submitted incorrect Manual Same-Day micro-deposit amounts during Item verification in Link.
Server-SideorClient-Side
Common causes
  • Your user submitted incorrect micro-deposit amounts when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INCORRECT_DEPOSIT_AMOUNTS",
"error_message": "",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

Unauthorized access errors

Errors that can occur if you are not enabled for a particular environment, Item, or endpoint:

UNAUTHORIZED_ENVIRONMENT

Your client ID does not have access to this API environment. See which environments you are enabled for from the Dashboard.
Server-Side
Common causes
  • You may not be enabled for the environment you are using.
  • Your code may be calling a deprecated endpoint.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "UNAUTHORIZED_ENVIRONMENT",
"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.",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

INVALID_PRODUCT

Your client ID does not have access to this product.
Server-Side
Common causes
  • The endpoint you are trying to access must either be manually enabled for your account or requires a different pricing plan.
  • Your integration is using a partner endpoint integration that has not yet been enabled in the Dashboard.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_PRODUCT",
"error_message": "products must either be null or a list of strings containing at least one valid product",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

UNAUTHORIZED_ROUTE_ACCESS

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

DIRECT_INTEGRATION_NOT_ENABLED

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

USER_PERMISSION_REVOKED

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

Invalid key errors

Errors that can occur due to invalid API keys:

INVALID_API_KEYS

The client ID and secret included in the request body were invalid. Find your API keys in the Dashboard.
Server-Side
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
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_API_KEYS",
"error_message": "invalid client_id or secret provided",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

Invalid token errors

Errors that can occur due to invalid API tokens:

INVALID_ACCESS_TOKEN

Server-Side
Common causes
  • Access tokens are in the format: access-<environment>-<identifier>
  • This error can happen when the access_token you provided is invalid, pertains to a different API environment, or has been removed, either via an /item/remove request or by the end user through my.plaid.com.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_ACCESS_TOKEN",
"error_message": "could not find matching access token",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

INVALID_PUBLIC_TOKEN

Server-Side
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
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_PUBLIC_TOKEN",
"error_message": "could not find matching public token",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

INVALID_LINK_TOKEN

The linktoken provided to initialize Link was invalid.
Server-Side
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.
  • 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.

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

INVALID_PROCESSOR_TOKEN

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

INVALID_AUDIT_COPY_TOKEN

The audit copy token supplied to the server was invalid.
Server-Side
Common causes
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_AUDIT_COPY_TOKEN",
"error_message": null,
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

Invalid account ID errors

Errors that can result from having an invalid account ID:

INVALID_ACCOUNT_ID

The supplied account_id is not valid
Server-Side
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.
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.

Either repeat the call you made that received this error without the optional account_ids object, or make a call to /item/get to return all of the current account_id(s) for the Item. You may then present this updated list of accounts to the user so that they may select which of their accounts they would like to use with your integration.

If the underlying account has not been closed or changed at the bank and the account_id no longer appears, Plaid may have erroneously removed the account entirely or assigned the account a new account_id. This "account churn" is unexpected behavior in the API. If it occurs, please file a case with Support.

Some common causes for account churn are:

  • 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.
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_ACCOUNT_ID",
"error_message": "failed to find requested account ID for requested item",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

INVALID_STRIPE_ACCOUNT

The supplied Stripe account is invalid
Server-Side
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.

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

Institution data errors

Errors that can result from having an invalid or misconfigured institution:

INVALID_INSTITUTION

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

INVALID_CREDENTIAL_FIELDS

The credential fields provided do not match the requirements of the institution.
Server-Side
Common causes
  • The institution has changed the format in which it provides data to Plaid.
Troubleshooting steps

If the steps above do not resolve the problem, [contact Support]((https://dashboard.plaid.com/support/new/).

1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_CREDENTIAL_FIELDS",
"error_message": null,
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

Returning user errors

Errors that can occur for returning users with matched Items:

INVALID_PRODUCTS

The pre-authenticated returning user flow was initiated with a restricted product.
Client-Side
Common causes
  • For a returning user, Link was initiated with a product that is restricted from the pre-authenticated returning user flow, e.g. auth.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_PRODUCTS",
"error_message": "The following products are not allowed for pre-authed items: ['auth'].",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

PRODUCT_UNAVAILABLE

Additional products may not be added to Items created in the pre-auth returning user flow.
Server-Side
Common causes
  • A request was made to an Item created via the pre-authenticated returning user flow for a product that the Item was not initialized with during the original Link flow.
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "PRODUCT_UNAVAILABLE",
"error_message": "Additional products may not be added to this pre-authed item.",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}

Other invalid identifier errors

Errors that can occur due to invalid identifiers not otherwise specified:

INVALID_WEBHOOK_VERIFICATION_KEY_ID

The key_id provided to the webhook verification endpoint was invalid.
Server-Side
Common causes
Troubleshooting steps
1
2
3
4
5
6
7
8
http code 400
{
"error_type": "INVALID_INPUT",
"error_code": "INVALID_WEBHOOK_VERIFICATION_KEY_ID",
"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",
"display_message": null,
"request_id": "HNTDNrA8F1shFEW"
}