POST
/user/products/terminateTerminate user-based products
Terminates recurring subscription bundles or products associated with a user, including Financial Management, Plaid Protect, and CRA Servicing. Supply user_id and a reason_code; CRA Servicing subscriptions are canceled while historical data remains available for future report requests.
- RetriesRetries up to 2×, 500ms backoff, 30s timeout.
Request to terminate user-based recurring products. user_id and reason_code are required.
client_idstringoptional
Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
secretstringoptional
Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
user_idstringrequired
A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).
reason_codestringrequired
The reason for terminating products.
`FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud using their real identity
`FRAUD_FALSE_IDENTITY`: The connection was created using a false or stolen identity
`FRAUD_ABUSE`: The end user is abusing the client's service or platform (for example, automation or excessive retries) through their connected account
`FRAUD_OTHER`: Fraud-related, but not covered by the specific fraud categories above; `reason_note` should clarify
`FRAUD_TRANSACTION`: Fraud occurred at the transaction level, such as an unauthorized transaction, card testing, chargeback, ACH return, or dispute
`CONSUMER_LOAN_PAID_OFF`: The end user paid off their loan and no longer needs the product
`CONSUMER_ACCOUNT_CLOSED`: The end user closed their account with the client and no longer needs the product
`CONSUMER_CHARGE_OFF`: The end user's account has been charged off
`CONSUMER_PAYMENT_METHOD_SWITCHED`: The end user switched to a different payment method and no longer needs the product
`USER_OFFBOARDING`: The user is offboarding from the client's service or platform
`DUPLICATE_ITEM`: This Item is a duplicate of another active Item for the same user
`BILLING_TERMINATION`: The client's billing or subscription relationship with the end user has ended
`OTHER`: None of the above; `reason_note` should clarify
reason_notestringoptional
Additional context or details about the reason for terminating user-based products. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`.
200Returns a response containing the unique `request_id` for the termination.
request_idstringrequired
A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
defaultReturned when the request cannot be processed; inspect the error response's `error_type`, `error_code`, and `error_message` fields.
error_typestringrequired
A broad categorization of the error. Safe for programmatic use.
error_codestringrequired
The particular error code. Safe for programmatic use.
error_code_reasonstringoptional
The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; `null` will be returned otherwise. Safe for programmatic use.
Possible values:
`OAUTH_INVALID_TOKEN`: The user's OAuth connection to this institution has been invalidated.
`OAUTH_CONSENT_EXPIRED`: The user's access consent for this OAuth connection to this institution has expired.
`OAUTH_USER_REVOKED`: The user's OAuth connection to this institution is invalid because the user revoked their connection.
error_messagestringrequired
A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
display_messagestringrequired
A user-friendly representation of the error code. `null` if the error is not related to user action.
This may change over time and is not safe for programmatic use.
request_idstringoptional
A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
causesarrayoptional
In this product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.
`causes` will be provided for the `error_type` `ASSET_REPORT_ERROR` or `CHECK_REPORT_ERROR`. `causes` will also not be populated inside an error nested within a `warning` object.
statusintegeroptional
The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
documentation_urlstringoptional
The URL of a Plaid documentation page with more information about the error
suggested_actionstringoptional
Suggested steps for resolving the error
required_account_subtypesarray<string>optional
A list of the account subtypes that were requested via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product.
provided_account_subtypesarray<string>optional
A list of the account subtypes that were extracted but did not match the requested subtypes via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product.
Error handling
user_id and reason_code are required. reason_code must be one of the documented fraud, consumer-account, offboarding, duplicate-item, or billing-termination values, and reason_note must contain at most 512 characters.