Invalid Input Errors
Guide to troubleshooting invalid input errors
DIRECT_INTEGRATION_NOT_ENABLED
An attempt was made to create an Item without using Link.
1http 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_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 4002{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 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
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 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.
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 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.
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 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.
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 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.
1http 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.
Common 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.
Sample user-facing error message
Username or password incorrect: Check that your credentials are the same that you use for this institutionCommon 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.
1http 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.
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 4002{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?
INVALID_PRODUCTS
The pre-authenticated returning user flow was initiated with a restricted product.
Sample user-facing error message
Something went wrong: There was a problem and we couldn't connect your account. Try entering your username and password again.Common causes
- For a returning user, Link was initiated with a product that is restricted from the pre-authenticated returning user flow.
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?
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 4002{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 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
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 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_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 4002{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 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.
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
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 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 bankCommon causes
- Your user repeatedly submitted incorrect micro-deposit codes 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.
Sample user-facing error message
Unauthorized environment: Your Client ID is not authorized to access this API environment. Contact Support to gain accessCommon 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.
Common 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.
Common 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}