Invalid Input Errors
Guide to troubleshooting invalid input errors
DIRECT_INTEGRATION_NOT_ENABLED
An attempt was made to create an Item without using Link.
Server-Side1http code 4002{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_AMOUNTS
The user submitted incorrect Manual Same-Day micro-deposit amounts during Item verification in Link.
Server-SideorClient-SideCommon causes
- Your user submitted incorrect micro-deposit amounts when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1http code 4002{3 "error_type": "INVALID_INPUT",4 "error_code": "INCORRECT_DEPOSIT_AMOUNTS",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, 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
1http code 4002{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
Server-SideCommon 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 newaccount_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.
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.
1http code 4002{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.
Server-SideCommon 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 4002{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.
Server-SideCommon 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 4002{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.
Server-Side1http code 4002{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.
Server-SideCommon causes
- 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 4002{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.
Server-SideCommon causes
- The
link_token
has expired. Alink_token
lasts at least 30 minutes before expiring. - The
link_token
was already used. Alink_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 Sandboxlink_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 4002{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.
Server-Side1http code 4002{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.
Server-SideCommon 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.
- 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 4002{3 "error_type": "INVALID_INPUT",4 "error_code": "INVALID_PRODUCT",5 "error_message": "products must either be null or a list of strings containing at least one valid product",6 "display_message": null,7 "request_id": "HNTDNrA8F1shFEW"8}
Was this helpful?
INVALID_PRODUCTS
The pre-authenticated returning user flow was initiated with a restricted product.
Client-SideCommon 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
1http code 4002{3 "error_type": "INVALID_INPUT",4 "error_code": "INVALID_PRODUCTS",5 "error_message": "The following products are not allowed for pre-authed items: ['auth'].",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 4002{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
Server-SideCommon 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.
1http code 4002{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_WEBHOOK_VERIFICATION_KEY_ID
The key_id
provided to the webhook verification endpoint was invalid.
Server-SideCommon causes
- A request was made to
/webhook_verification_key/get
using an invalidkey_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 4002{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?
PRODUCT_UNAVAILABLE
Additional products may not be added to Items created in the pre-auth returning user flow.
Server-SideCommon 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
1http code 4002{3 "error_type": "INVALID_INPUT",4 "error_code": "PRODUCT_UNAVAILABLE",5 "error_message": "Additional products may not be added to this pre-authed item.",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 amounts more than 3 times and their Item is now permanently locked. The user must retry submitting their account information in Link.
Server-SideorClient-SideCommon causes
- Your user repeatedly submitted incorrect micro-deposit amounts when verifying an account via Manual Same-Day micro-deposits.
Troubleshooting steps
1http code 4002{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.
Server-SideCommon causes
- You may not be enabled for the environment you are using.
- Your code may be calling a deprecated endpoint.
Troubleshooting steps
1http code 4002{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.
Server-SideCommon causes
- The endpoint you are trying to access must be manually enabled for your account.
Troubleshooting steps
1http code 4002{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.
Server-SideCommon causes
- The end user revoked access to their data via the Plaid consumer portal at my.plaid.com.
Troubleshooting steps
1http code 4002{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}