---
title: "Terminate user-based products"
method: POST
path: "/user/products/terminate"
tags: ["plaid"]
---

# Terminate user-based products

`POST /user/products/terminate`

Terminates user-based recurring subscription bundles or products (Financial Management, Plaid Protect, and CRA Cash Flow Updates) associated with a `user_id`. After you call this endpoint, the user will no longer be billed for these products. For CRA Monitoring, the subscription is canceled but historical data remains available for future report requests.

## Request body

- UserProductsTerminateRequest — UserProductsTerminateRequest defines the request schema for `/user/products/terminate`
  - `client_id` string — 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.
  - `secret` string — 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_id` string, required — 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_code` 'FRAUD_FIRST_PARTY' | 'FRAUD_FALSE_IDENTITY' | 'FRAUD_ABUSE' | 'FRAUD_OTHER' | 'FRAUD_TRANSACTION' | 'CONSUMER_LOAN_PAID_OFF' | 'CONSUMER_ACCOUNT_CLOSED' | 'CONSUMER_CHARGE_OFF' | 'CONSUMER_PAYMENT_METHOD_SWITCHED' | 'USER_OFFBOARDING' | 'DUPLICATE_ITEM' | 'BILLING_TERMINATION' | 'OTHER', required — 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_note` string, nullable — 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`.

## Response `200`

OK

- UserProductsTerminateResponse — UserProductsTerminateResponse defines the response schema for `/user/products/terminate`
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

## Other responses

- `default` — Error response

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/revisions/64c4514ea59b/schema)
