From 5c2920e90333596e2dcdae174cc7771b9f956d21 Mon Sep 17 00:00:00 2001 From: Cedric Nixon Date: Wed, 10 Jun 2026 13:20:15 -0700 Subject: [PATCH] OpenAPI generated code at 2026-06-10T21:36:54Z (rebased to include 1.697.4) --- 2020-09-14.yml | 2187 ++++++++++++++++++++++++++++++++---------------- CHANGELOG.md | 96 +++ README.md | 11 + 3 files changed, 1588 insertions(+), 706 deletions(-) diff --git a/2020-09-14.yml b/2020-09-14.yml index 40e76f9..31fa510 100644 --- a/2020-09-14.yml +++ b/2020-09-14.yml @@ -6,7 +6,7 @@ servers: url: https://sandbox.plaid.com info: title: The Plaid API - version: 2020-09-14_1.688.6 + version: 2020-09-14_1.697.4 description: The Plaid REST API. Please see https://plaid.com/docs/api for more details. contact: name: Plaid Developer Team @@ -485,9 +485,9 @@ paths: $ref: '#/components/schemas/PlaidError' operationId: assetReportAuditCopyCreate description: |- - Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to the GSEs on your behalf if you participate in Fannie Mae's Day 1 Certainty™ program or utilize Freddie Mac’s Loan Product Advisor® (LPA®) Asset and Income Modeler (AIM). An Audit Copy contains the same underlying data as the Asset Report. + Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to the GSEs on your behalf if you participate in Fannie Mae's Day 1 Certainty™ program or utilize Freddie Mac's Loan Product Advisor® (LPA®) Asset and Income Modeler (AIM). An Audit Copy contains the same underlying data as the Asset Report. - To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report. + To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You'll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report. requestBody: required: true content: @@ -1601,7 +1601,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' operationId: creditAuditCopyTokenUpdate - description: The `/credit/audit_copy_token/update` endpoint updates an existing Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field. + description: The `/credit/audit_copy_token/update` endpoint updates an existing Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field. requestBody: required: true content: @@ -1866,7 +1866,7 @@ paths: url: /api/products/check/#cracheck_reportincome_insightsget operationId: craCheckReportIncomeInsightsGet description: |- - This endpoint allows you to retrieve the Income Insights report for your user. You should call this endpoint after you’ve received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. + This endpoint allows you to retrieve the Income Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. NOTE: The following schema was updated in April 2026 to reflect the response when the provided version is "II2". Please see [this document](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.0#heading=h.rudamzinus2i) for guidance on migrating to II2 if you are currently using the II1 version, and [this section](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.0#bookmark=id.tdcc2wpk0h60) for an example II1 response along with its [documentation](https://docs.google.com/document/d/1kQkQ7FOgFaC4n-sUGUk74hoXZNY_L_nJeCuMe7Keip4/edit?tab=t.36c85n2ircqk#heading=h.79dwr5c1iszl). requestBody: @@ -2986,7 +2986,7 @@ paths: url: /api/products/check/#cracheck_reportpartner_insightsget operationId: craCheckReportPartnerInsightsGet description: |- - This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. + This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. If you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive. requestBody: @@ -3026,7 +3026,7 @@ paths: url: /api/products/check/#cracheck_reportcashflow_insightsget operationId: craCheckReportCashflowInsightsGet description: |- - This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. + This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. If you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive. requestBody: @@ -3069,7 +3069,7 @@ paths: url: /api/products/check/#cracheck_reportlend_scoreget operationId: craCheckReportLendScoreGet description: |- - This endpoint allows you to retrieve the LendScore report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. + This endpoint allows you to retrieve the LendScore report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. If you did not initialize Link with the `cra_lend_score` product or call `/cra/check_report/create` with the `cra_lend_score` product, Plaid will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive. requestBody: @@ -3115,9 +3115,9 @@ paths: url: /api/products/check/#cracheck_reportnetwork_insightsget operationId: craCheckReportNetworkInsightsGet description: |- - This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. + This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. - If you did not initialize Link with the `cra_network_attributes` product or have generated a report using `/cra/check_report/create`, Plaid will generate the attributes when you call this endpoint. + If you did not initialize Link with the `cra_network_insights` product or have generated a report using `/cra/check_report/create`, Plaid will generate the attributes when you call this endpoint. requestBody: required: true content: @@ -3126,7 +3126,7 @@ paths: $ref: '#/components/schemas/CraCheckReportNetworkInsightsGetRequest' /cra/check_report/verification/get: post: - summary: Retrieve various home lending reports for a user. + summary: Retrieve various home lending reports for a user tags: - plaid responses: @@ -3320,7 +3320,7 @@ paths: You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. - If the most recent consumer report for the user doesn’t have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`." + If the most recent consumer report for the user doesn't have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`. requestBody: required: true content: @@ -3365,7 +3365,7 @@ paths: post: tags: - plaid - summary: Register loan applications and decisions. + summary: Register loan applications and decisions responses: "200": description: OK @@ -3397,7 +3397,7 @@ paths: post: tags: - plaid - summary: Register a list of loans to their applicants. + summary: Register a list of loans to their applicants responses: "200": description: OK @@ -3429,7 +3429,7 @@ paths: post: tags: - plaid - summary: Updates loan data. + summary: Update loan data responses: "200": description: OK @@ -3461,7 +3461,7 @@ paths: post: tags: - plaid - summary: Unregister a list of loans. + summary: Unregister a list of loans responses: "200": description: OK @@ -3505,6 +3505,7 @@ paths: example-1: value: request_id: eYupqX1mZkEuQRx + user_id: usr_123456abcdef warnings: [] report: date_retrieved: "2024-01-15T10:30:00Z" @@ -3534,7 +3535,7 @@ paths: post: tags: - plaid - summary: Retrieve a PDF Reports + summary: Retrieve PDF Reports responses: "200": description: OK @@ -3681,7 +3682,7 @@ paths: post: tags: - plaid - summary: Retrieve a list of all statements associated with an item. + summary: Retrieve a list of all statements associated with an Item. externalDocs: url: /api/products/statements#statementslist responses: @@ -3717,7 +3718,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' operationId: statementsList - description: The `/statements/list` endpoint retrieves a list of all statements associated with an item. + description: The `/statements/list` endpoint retrieves a list of all statements associated with an Item. requestBody: required: true content: @@ -3736,7 +3737,7 @@ paths: "200": description: OK content: - application/json: + application/pdf: schema: $ref: '#/components/schemas/StatementsDownloadResponse' default: @@ -3917,9 +3918,9 @@ paths: post: tags: - plaid - summary: List a user’s connected applications + summary: List a user's connected applications operationId: itemApplicationList - description: List a user’s connected applications + description: List a user's connected applications responses: "200": description: OK @@ -3943,12 +3944,12 @@ paths: post: tags: - plaid - summary: Unlink a user’s connected application + summary: Unlink a user's connected application externalDocs: url: none operationId: itemApplicationUnlink description: |- - Unlink a user’s connected application. On an unlink request, Plaid will immediately revoke the Application’s access to the User’s data. The User will have to redo the OAuth authentication process in order to restore functionality. + Unlink a user's connected application. On an unlink request, Plaid will immediately revoke the Application's access to the User's data. The User will have to redo the OAuth authentication process in order to restore functionality. This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default). @@ -4260,7 +4261,7 @@ paths: operationId: networkStatusGet description: |- The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. - This is useful for determining if a user is eligible for a streamlined experience, such as Layer. To access this endpoint, contact your Plaid Account Manager. + This is useful for determining if a user is eligible for a streamlined experience, such as Layer. To access this endpoint, contact your Plaid account manager. Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview). @@ -4387,7 +4388,7 @@ paths: description: |- The `/auth/verify` endpoint verifies bank account and routing numbers and (optionally) account owner names against Plaid's database via [Database Auth](https://plaid.com/docs/auth/coverage/database-auth/). It can be used to verify account numbers that were not collected via the Plaid Link flow. - This endpoint is currently in Early Availability; contact Sales or your Plaid account manager to request access. + This endpoint is currently in Early Availability; contact sales or your Plaid account manager to request access. responses: "200": description: success @@ -4698,6 +4699,8 @@ paths: Use the `/sandbox/transactions/create` endpoint to create new transactions for an existing Item. This endpoint can be used to add up to 10 transactions to any Item at a time. This endpoint can only be used with Items that were created in the Sandbox environment using the `user_transactions_dynamic` test user. You can use this to add transactions to test the `/transactions/get` and `/transactions/sync` endpoints. + + Custom transactions are only applied to the depository account. Support for per-account targeting may be added in the future. requestBody: required: true content: @@ -4731,7 +4734,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - `/cashflow_report/refresh` is an endpoint that initiates an on-demand extraction to fetch the newest transactions for an item (given an `item_id`). The item must already have Cashflow Report added as a product in order to call `/cashflow_report/refresh`. + `/cashflow_report/refresh` is an endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item (given an `item_id`). The Item must already have Cashflow Report added as a product in order to call `/cashflow_report/refresh`. After calling `/cashflow_report/refresh`, Plaid will fire a webhook `CASHFLOW_REPORT_READY` alerting clients that new transactions data can then be ingested via `/cashflow_report/get` or the webhook will contain an error code informing there was an error in refreshing transactions data. @@ -4953,7 +4956,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/cashflow_report/get` endpoint retrieves transactions data associated with an item. Transactions data is standardized across financial institutions. + The `/cashflow_report/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions. Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift. Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`. For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions). Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `cursor` parameters in conjunction with the `has_more` response body field to fetch all available transactions. Note that data isn't likely to be immediately available to `/cashflow_report/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `cashflow_report`, or if it wasn't, upon the first call to `/cashflow_report/refresh`. To be alerted when transaction data is ready to be fetched, listen for the `CASHFLOW_REPORT_READY` webhook. @@ -4969,7 +4972,7 @@ paths: post: tags: - plaid - summary: Gets transaction data in cashflow_report + summary: Gets transaction data in `cashflow_report` externalDocs: url: /api/products/transactions/#cashflowReportTransactionsGet operationId: cashflowReportTransactionsGet @@ -5172,7 +5175,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/cashflow_report/transactions/get` endpoint retrieves transactions data associated with an item. Transactions data is standardized across financial institutions. + The `/cashflow_report/transactions/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions. Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift. Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`. For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions). Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `cursor` parameters in conjunction with the `has_more` response body field to fetch all available transactions. Note that data isn't likely to be immediately available to `/cashflow_report/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `cashflow_report`, or if it wasn't, upon the first call to `/cashflow_report/refresh`. To be alerted when transaction data is ready to be fetched, listen for the `CASHFLOW_REPORT_READY` webhook. @@ -5338,7 +5341,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: Error response - description: The `/cashflow_report/insights/get` endpoint retrieves insights data associated with an item. Insights are only calculated on credit and depository accounts. + description: The `/cashflow_report/insights/get` endpoint retrieves insights data associated with an Item. Insights are only calculated on credit and depository accounts. requestBody: required: true content: @@ -5464,7 +5467,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. + The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user's checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. @@ -5642,7 +5645,7 @@ paths: This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead. - When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed. + When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/transactions/sync` fails when retrieving a paginated update (e.g. due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed. If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays. @@ -5815,7 +5818,7 @@ paths: request_id: req_xyz789 causes: [] status: 400 - documentation_url: https://plaid.com/docs/errors/item/item-login-required/ + documentation_url: https://plaid.com/docs/errors/item/#item_login_required suggested_action: Prompt the user to re-authenticate their account. default: description: Error response @@ -5874,7 +5877,7 @@ paths: request_id: req_xyz789 causes: [] status: 400 - documentation_url: https://plaid.com/docs/errors/item/item-login-required/ + documentation_url: https://plaid.com/docs/errors/item/#item_login_required suggested_action: Prompt the user to re-authenticate their account. default: description: Error response @@ -5932,7 +5935,7 @@ paths: description: |- Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated. - If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call. + If there is no overlap between an institution's enabled products and a client's enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call. requestBody: required: true content: @@ -6196,45 +6199,6 @@ paths: application/json: schema: $ref: '#/components/schemas/ItemProductsTerminateRequest' - /item/handle_fraud_report: - post: - tags: - - plaid - summary: Report fraud for an Item - externalDocs: - url: /api/items/#itemhandlefraudreport - operationId: itemHandleFraudReport - description: |- - Use this endpoint to create a fraud report and terminate the associated Item. The `access_token` associated with the Item will be deactivated and billing for the Item's products will be ended. - - This endpoint allows you to report various types of fraud incidents including account takeovers, identity fraud, unauthorized transactions, and other security events. - The reported data helps improve fraud detection models and provides valuable feedback to enhance the overall security of the Plaid network. - Reports can be created for confirmed incidents that have been fully investigated, or for suspected incidents that require further review. - You can associate reports with specific users, sessions, or transactions to provide comprehensive context about the incident. - responses: - "200": - description: success - content: - application/json: - schema: - $ref: '#/components/schemas/ItemHandleFraudReportResponse' - examples: - example-1: - value: - report_id: rpt_1234567890 - request_id: m8MDnv9okwxFNBV - default: - description: Error response. - content: - application/json: - schema: - $ref: '#/components/schemas/PlaidError' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ItemHandleFraudReportRequest' /accounts/get: post: tags: @@ -6244,7 +6208,7 @@ paths: url: /api/accounts/#accountsget operationId: accountsGet description: |- - The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance. + The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts -- that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link's [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you. `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older. @@ -6471,7 +6435,7 @@ paths: `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it. - `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given same day micro-deposit item is verified via SMS verification. + `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given Same-Day Micro-deposit Item is verified via SMS verification. `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app. @@ -6485,7 +6449,7 @@ paths: `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. - `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions’ consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item. + `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions' consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item. `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider's portal. This webhook is currently sent only for PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item. @@ -6597,9 +6561,9 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints, such as `/accounts/get`, return a balance object, `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests. + The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints, such as `/accounts/get`, return a balance object, `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid's other products. This endpoint can be used as long as Link has been initialized with any other product; `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests. - Note: If you are getting real-time balance for the purpose of assessing the return risk of a proposed ACH transaction, it is recommended to use `/signal/evaluate` instead of `/accounts/balance/get`. `/signal/evaluate` returns the same real-time balance information and also provides access to Signal Rules, which provides no-code transaction business logic configuration, backtesting and recommendations for tuning your transaction acceptance logic, and the ability to easily switch between Balance and Signal Transaction Scores as needed for ultra-low-latency, ML-powered risk assessments. For more details, see the [Balance documentation](/docs/balance/#balance-integration-options). + Note: If you are getting real-time balance for the purpose of assessing the return risk of a proposed ACH transaction, it is recommended to use `/signal/evaluate` instead of `/accounts/balance/get`. `/signal/evaluate` returns the same real-time balance information and also provides access to Signal Rules, which provides no-code transaction business logic configuration, backtesting and recommendations for tuning your transaction acceptance logic, and the ability to easily switch between Balance and Signal Transaction Scores as needed for ultra-low-latency, ML-powered risk assessments. For more details, see the [Balance documentation](https://plaid.com/docs/balance/#balance-integration-options). requestBody: required: true content: @@ -7000,7 +6964,7 @@ paths: $ref: '#/components/schemas/IdentityRefreshRequest' /dashboard_user/get: post: - summary: Retrieve a dashboard user + summary: Retrieve a Dashboard user tags: - plaid responses: @@ -7030,7 +6994,7 @@ paths: url: /api/kyc-aml-users/#dashboard_userget /dashboard_user/list: post: - summary: List dashboard users + summary: List Dashboard users tags: - plaid responses: @@ -7051,7 +7015,7 @@ paths: next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: dashboardUserList - description: The `/dashboard_user/list` endpoint provides details (such as email address) all Dashboard users associated with your account. This can use used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products. + description: The `/dashboard_user/list` endpoint provides details (such as email address) about all Dashboard users associated with your account. This can be used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products. requestBody: content: application/json: @@ -7170,6 +7134,18 @@ paths: first_name: match middle_name: match last_name: match + fraud_analysis_details: + type_supported: success + portrait_presence_check: success + portrait_details_check: success + image_composition_check: success + integrity_check: success + detail_check: success + issue_date_check: success + image_quality_details: + glare_check: success + blur_check: success + dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success @@ -7213,6 +7189,8 @@ paths: domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" + is_edu: no_data + includes_date_of_birth: no_data linked_services: - apple phone: @@ -7382,6 +7360,18 @@ paths: first_name: match middle_name: match last_name: match + fraud_analysis_details: + type_supported: success + portrait_presence_check: success + portrait_details_check: success + image_composition_check: success + integrity_check: success + detail_check: success + issue_date_check: success + image_quality_details: + glare_check: success + blur_check: success + dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success @@ -7425,6 +7415,8 @@ paths: domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" + is_edu: no_data + includes_date_of_birth: no_data linked_services: - apple phone: @@ -7596,6 +7588,18 @@ paths: first_name: match middle_name: match last_name: match + fraud_analysis_details: + type_supported: success + portrait_presence_check: success + portrait_details_check: success + image_composition_check: success + integrity_check: success + detail_check: success + issue_date_check: success + image_quality_details: + glare_check: success + blur_check: success + dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success @@ -7639,6 +7643,8 @@ paths: domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" + is_edu: no_data + includes_date_of_birth: no_data linked_services: - apple phone: @@ -7816,6 +7822,18 @@ paths: first_name: match middle_name: match last_name: match + fraud_analysis_details: + type_supported: success + portrait_presence_check: success + portrait_details_check: success + image_composition_check: success + integrity_check: success + detail_check: success + issue_date_check: success + image_quality_details: + glare_check: success + blur_check: success + dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success @@ -7859,6 +7877,8 @@ paths: domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" + is_edu: no_data + includes_date_of_birth: no_data linked_services: - apple phone: @@ -8076,6 +8096,7 @@ paths: list_code: EU_CON plaid_uid: uid_3NggckTimGSJHS source_uid: 26192ABC + sub_programs: [] analysis: documents: match email_addresses: match @@ -8522,6 +8543,8 @@ paths: list_code: US_SDN plaid_uid: uid_3NggckTimGSJHS source_uid: 26192ABC + sub_programs: + - SDGT analysis: dates_of_birth: match documents: match @@ -9215,7 +9238,7 @@ paths: timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconReportGet - description: Returns a Beacon report for a given Beacon report id. + description: Returns a Beacon Report for a given Beacon Report ID. externalDocs: url: /api/products/beacon/#beaconreportget /beacon/report_syndication/get: @@ -9388,7 +9411,7 @@ paths: post: x-hidden-from-docs: true summary: Create autofill for an Identity Verification - description: Try to autofill an Identity Verification based of the provided phone number, date of birth and country of residence. + description: Try to autofill an Identity Verification based on the provided phone number, date of birth and country of residence. tags: - plaid requestBody: @@ -9642,7 +9665,7 @@ paths: post: tags: - plaid - summary: Compute Protect Trust Index Score + summary: Compute Protect Trust Index scores and subscores externalDocs: url: /api/products/protect/#protectcompute responses: @@ -9671,9 +9694,9 @@ paths: request_id: saKrIBuEB9qJZng operationId: protectCompute description: |- - Use this endpoint to compute a Protect Trust Index score and retrieve fraud attributes. + Compute a Protect Trust Index score for a user. The model selected determines what is scored and what additional fields the response contains. For example, `ti-link-session-2.0` scores a completed Link session for fraud risk; `cash-advance-onboarding-1.0` scores repayment risk for a first-time cash advance and additionally populates per-amount-bucket subscores. Cash-advance models require that the user have a Plaid Item with Transactions enabled, or an Assets Report, before scoring. - For link-session models, if the Link session is not yet complete, the endpoint returns HTTP 400 with `error_type` = `INVALID_REQUEST` and `error_code` = `FAILED_PRECONDITION`. + The endpoint returns HTTP 400 with `error_type` = `INVALID_REQUEST` and `error_code` = `FAILED_PRECONDITION` when a required precondition is not met: for link-session models, when the Link session has not completed; for cash-advance models, when the user has not successfully linked any Item. requestBody: required: true content: @@ -9786,7 +9809,7 @@ paths: /business_verification/get: post: x-hidden-from-docs: true - summary: Get a business verification + summary: Get a Business Verification operationId: businessVerificationGet externalDocs: url: /api/products/business-verification/#businessverificationget @@ -9893,7 +9916,7 @@ paths: /business_verification/create: post: x-hidden-from-docs: true - summary: Create a business verification + summary: Create a Business Verification operationId: businessVerificationCreate externalDocs: url: /api/products/business-verification/#businessverificationcreate @@ -10840,7 +10863,7 @@ paths: This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead. - When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed. + When retrieving paginated updates, track both the `next_cursor` from the latest response and the original cursor from the first call in which `has_more` was `true`; if a call to `/processor/transactions/sync` fails when retrieving a paginated update (e.g. due to the [`TRANSACTIONS_SYNC_MUTATION_DURING_PAGINATION`](https://plaid.com/docs/errors/transactions/#transactions_sync_mutation_during_pagination) error), the entire pagination request loop must be restarted beginning with the cursor for the first page of the update, rather than retrying only the single request that failed. If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays. @@ -11011,7 +11034,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user’s checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. + The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user's checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. @@ -11808,9 +11831,9 @@ paths: outstanding_interest_amount: 6227.36 payment_reference_number: "4277075694" pslf_status: - estimated_eligibility_date: "2021-01-01" - payments_made: 200 - payments_remaining: 160 + estimated_eligibility_date: null + payments_made: null + payments_remaining: null repayment_plan: description: Standard Repayment type: standard @@ -12041,7 +12064,7 @@ paths: description: |- After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient. Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency). If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day. - Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am. + Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient's account, although at least 90% of standing order payments are sent by 6am. requestBody: required: true content: @@ -12268,7 +12291,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment. After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item. + `/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment. After calling `/sandbox/item/reset_login`, you can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item. In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called. requestBody: required: true @@ -12336,7 +12359,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow. + The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in the Sandbox in order to simulate the Automated Micro-deposit flow. For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#). requestBody: @@ -12371,7 +12394,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment. After calling `/sandbox/user/reset_login`, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item. + `/sandbox/user/reset_login/` functions the same as `/sandbox/item/reset_login`, but will modify Items related to a User. This endpoint forces each Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment. After calling `/sandbox/user/reset_login`, you can then use Plaid Link update mode to restore Items associated with the User to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item. In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called. requestBody: required: true @@ -12680,7 +12703,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: '`/user/remove` deletes a `user_id` or `user_token` and and associated information, including any Items associated with the user.' + description: '`/user/remove` deletes a `user_id` or `user_token` and associated information, including any Items associated with the user.' requestBody: required: true content: @@ -12690,7 +12713,6 @@ paths: parameters: - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' /user/products/terminate: - x-hidden-from-docs: true post: tags: - plaid @@ -12715,7 +12737,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: '`/user/products/terminate` terminates user-based recurring subscriptions for a given client user. This will remove user-based products (Financial Management, Protect, and CRA products) from all items associated with the user.' + description: 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. requestBody: required: true content: @@ -12726,11 +12748,13 @@ paths: example-1: value: user_id: usr_8c3ZbDBYjaqUXZ + reason_code: CONSUMER_ACCOUNT_CLOSED + reason_note: User closed account with client. example-2: value: user_id: usr_8c3ZbDBYjaqUXZ - products: - - transactions + reason_code: CONSUMER_LOAN_PAID_OFF + reason_note: Consumer loan has been paid in full. /user/items/get: post: tags: @@ -12850,7 +12874,9 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: Removes specific Items associated with a user. It is equivalent to calling `/item/remove` on each Item individually, but supports use cases (such as Plaid Check) where access tokens are not available. All specified Items must belong to the user or the entire operation fails. Similar to `/item/remove`, this deletes Item product data, terminates billing on the Item's products, and fires webhooks to the financial institution. Once removed, Items cannot be reconnected without going through Link again. + description: |- + Removes specific Items associated with a user. It is equivalent to calling `/item/remove` on each Item individually, but supports use cases (such as Plaid Check) where access tokens are not available. All specified Items must belong to the user or the entire operation fails. Similar to `/item/remove`, this deletes Item product data and terminates billing on the Item's products. Once removed, Items cannot be reconnected without going through Link again. + This endpoint is not intended to remove all data for a user, as it will only remove Items and no other data for the user. If the user has any user-based recurring subscription products (Financial Management, Plaid Protect, or CRA Cash Flow Updates) and is deleting their account with your product, also call `/user/products/terminate` to end those subscriptions; per-Item billing is already terminated by this endpoint. For a user initiated data deletion request, see the [Consumer Service Center](https://plaid.com/check/consumer-service-center/) to revoke access to data. requestBody: required: true content: @@ -14498,7 +14524,6 @@ paths: bank_income_results: [] payroll_income_results: [] document_income_results: null - protect_results: null started_at: "2024-07-29T20:22:36.522196741Z" link_token: link-sandbox-e7b6956c-1522-4823-85d2-c4ca74251949 metadata: @@ -14533,7 +14558,7 @@ paths: post: tags: - plaid - summary: Exchange the Link Correlation Id for a Link Token + summary: Exchange the Link Correlation ID for a Link Token externalDocs: url: /api/oauth/#linkcorrelationid operationId: linkOauthCorrelationIdExchange @@ -14593,7 +14618,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: '`/session/token/create` is used to create a Link token for Layer. The returned Link token is used as an parameter when initializing the Link SDK. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).' + description: '`/session/token/create` is used to create a Link token for Layer. The returned Link token is used as a parameter when initializing the Link SDK. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).' requestBody: required: true content: @@ -14870,15 +14895,15 @@ paths: - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization. - - If the `authorization.decision` is `approved`, and the `authorization.rationale_code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`. + - If the `authorization.decision` is `approved`, and the `authorization.decision_rationale.code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`. - - If the `authorization.decision` is `approved` and the `authorization.rationale_code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema. + - If the `authorization.decision` is `approved` and the `authorization.decision_rationale.code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema. In Plaid's Sandbox environment the decisions will be returned as follows: - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account. - - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits). + - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same-Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits). - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required). @@ -15100,7 +15125,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: Use the `/transfer/ledger/distribute` endpoint to move available balance between ledgers, if you have multiple. If you’re a platform, you can move funds between one of your ledgers and one of your customer’s ledger. + description: Use the `/transfer/ledger/distribute` endpoint to move available balance between ledgers, if you have multiple. If you're a platform, you can move funds between one of your ledgers and one of your customer's ledger. requestBody: required: true content: @@ -16269,7 +16294,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager. + description: As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid account manager. requestBody: required: true content: @@ -16303,7 +16328,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate previously-verified account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager or [Support](https://dashboard.plaid.com/support). + description: As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate previously-verified account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid account manager or [support](https://dashboard.plaid.com/support). requestBody: required: true content: @@ -16616,7 +16641,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid’s terms for ACH money movement. + description: The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid's terms for ACH money movement. requestBody: required: true content: @@ -16685,7 +16710,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You’ll need to send a request of type multipart/form-data. + Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You'll need to send a request of type `multipart/form-data`. You must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header. requestBody: required: true @@ -17522,7 +17547,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - `/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user's employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow. + `/employers/search` allows you the ability to search Plaid's database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user's employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow. The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day. requestBody: @@ -18074,7 +18099,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' operationId: creditAssetReportFreddieMacGet - description: The `credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac's JSON format. + description: The `/credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac's JSON format. requestBody: required: true content: @@ -18235,7 +18260,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' operationId: creditFreddieMacReportsGet - description: The `credit/asset_report/freddie_mac/get` endpoint retrieves the Verification of Assets and Verification of Employment reports. + description: The `/credit/freddie_mac/reports/get` endpoint retrieves the Verification of Assets and Verification of Employment reports. requestBody: required: true content: @@ -18330,7 +18355,7 @@ paths: externalDocs: url: /api/products/income/#creditbank_employmentget operationId: creditBankEmploymentGet - description: '`/credit/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.' + description: '`/beta/credit/v1/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.' requestBody: required: true content: @@ -18649,7 +18674,7 @@ paths: url: /api/products/income/#creditbank_incomerefresh operationId: creditBankIncomeRefresh deprecated: true - description: '`/credit/bank_income/refresh` is deprecated. The backend implementation was removed (returns an `Unimplemented` error at runtime), and the endpoint is no longer part of the documented API surface. To refresh Bank Income data for an existing user, send the user through Link Update Mode so they can confirm their income sources. For a fully backend refresh, migrate to CRA Income Insights and call `/cra/check_report/create`.' + description: '`/credit/bank_income/refresh` is deprecated. The backend implementation was removed (returns an `Unimplemented` error at runtime), and the endpoint is no longer part of the documented API surface. To refresh Bank Income data for an existing user, send the user through Link''s update mode so they can confirm their income sources. For a fully backend refresh, migrate to CRA Income Insights and call `/cra/check_report/create`.' requestBody: required: true content: @@ -19718,7 +19743,7 @@ paths: $ref: '#/components/schemas/SandboxIncomeFireWebhookRequest' /sandbox/bank_income/fire_webhook: post: - summary: Manually fire a bank income webhook in sandbox + summary: Manually fire a Bank Income webhook in Sandbox tags: - plaid externalDocs: @@ -19782,8 +19807,8 @@ paths: $ref: '#/components/schemas/SandboxCraCashflowUpdatesUpdateRequest' /sandbox/oauth/select_accounts: post: - summary: Save the selected accounts when connecting to the Platypus Oauth institution - description: Save the selected accounts when connecting to the Platypus Oauth institution + summary: Save the selected accounts when connecting to the Platypus OAuth institution + description: Save the selected accounts when connecting to the Platypus OAuth institution tags: - plaid operationId: sandboxOauthSelectAccounts @@ -20353,7 +20378,7 @@ paths: post: tags: - plaid - summary: enhance locally-held transaction data + summary: Enhance locally-held transaction data operationId: transactionsEnhance responses: "200": @@ -20452,7 +20477,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/transactions/rules/v1/create` endpoint creates transaction categorization rules. + The `/beta/transactions/rules/v1/create` endpoint creates transaction categorization rules. Rules will be applied on the Item's transactions returned in `/transactions/get` response. @@ -20519,7 +20544,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: Error response - description: The `/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token. + description: The `/beta/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token. requestBody: required: true content: @@ -20555,7 +20580,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: Error response - description: The `/transactions/rules/v1/remove` endpoint is used to remove a transaction rule. + description: The `/beta/transactions/rules/v1/remove` endpoint is used to remove a transaction rule. requestBody: required: true content: @@ -20732,7 +20757,7 @@ paths: The response returns a list of EWA scores, where each score corresponds to a potential advance amount range. These scores estimate the likelihood of repayment for advances within that range. - Score range: 1–99 + Score range: 1-99 Interpretation: Higher scores indicate a greater likelihood of repayment. @@ -21017,7 +21042,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it’s removed, it can no longer be used to create transfers. + description: Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it's removed, it can no longer be used to create transfers. requestBody: required: true content: @@ -21537,7 +21562,7 @@ paths: examples: example-1: value: - link_delivery_url: http://secure.plaid.com/99ace160-3cf7-4e51-a083-403633425815 + link_delivery_url: https://secure.plaid.com/99ace160-3cf7-4e51-a083-403633425815 link_delivery_session_id: 99ace160-3cf7-4e51-a083-403633425815 request_id: 4ciYmmesdqSiUAB default: @@ -21652,6 +21677,60 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' + /fdx/consents/{consentId}: + x-hidden-from-docs: true + get: + tags: + - plaid + summary: Get FDX Consent Grant + operationId: fdxConsentGet + description: Returns a consent grant by its identifier + parameters: + - in: path + name: consentId + description: Consent Grant Identifier. Uniquely identifies the consent grant + required: true + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/FDXConsentGrant' + example: + id: 9585694d-3ae5-8863-1234-567890abcdef + status: ACTIVE + createdTime: "2026-01-01T00:00:00Z" + updatedTime: "2026-01-02T00:00:00Z" + parties: + - name: My Example Client + type: DATA_RECIPIENT + homeUri: https://example.com + registry: PRIVATE + registeredEntityName: My Example Client LLC + registeredEntityId: 549300A0B1C2D3E4F5G6 + - name: First Platypus Bank + type: DATA_PROVIDER + homeUri: https://www.platypus.com + - name: Plaid + type: DATA_ACCESS_PLATFORM + homeUri: https://plaid.com + resources: + - resourceType: ACCOUNT + resourceId: b14e1e714693bc00 + dataClusters: + - ACCOUNT_BASIC + - BALANCES + - TRANSACTIONS + - SCHEDULED_PAYMENTS + default: + description: Error response + content: + application/json: + schema: + $ref: '#/components/schemas/PlaidError' /fdx/recipient/{recipientId}: x-hidden-from-docs: true get: @@ -21691,49 +21770,6 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - /network_insights/report/get: - post: - summary: Retrieve network insights for the provided `access_tokens` - tags: - - plaid - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/NetworkInsightsReportGetResponse' - examples: - example-1: - value: - request_id: LhQf0THi8SH1yJm - report: - report_id: ee093cb0-e3f2-42d1-9dbc-8d8408964194 - generated_time: "2022-01-31T22:47:53Z" - network_attributes: - plaid_conn_user_lifetime_lending_count: 5 - plaid_conn_user_lifetime_personal_lending_flag: 1 - plaid_conn_user_lifetime_cash_advance_primary_count: 0 - items: - - institution_id: ins_0 - institution_name: Plaid Bank - item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 - default: - description: Error response - content: - application/json: - schema: - $ref: '#/components/schemas/PlaidError' - externalDocs: - url: /api/network_insights/report/#get - operationId: networkInsightsReportGet - description: This endpoint allows you to retrieve the Network Insights from a list of `access_tokens`. - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/NetworkInsightsReportGetRequest' components: securitySchemes: clientId: @@ -21982,7 +22018,7 @@ components: item_id: type: string nullable: true - description: The `item_id` value of the Item created for verification. If numbers data provided is invalid, an item may not be created. + description: The `item_id` value of the Item created for verification. If numbers data provided is invalid, an Item may not be created. verification_status: type: string description: | @@ -22163,7 +22199,7 @@ components: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' days_requested: description: |- - This field only applies to calls for Items where the Transactions product has not already been initialized (i.e. by specifying `transactions` in the `products`, `optional_products`, or `required_if_consented_products` array when calling `/link/token/create` or by making a previous call to `/transactions/sync` or `/transactions/get`). In those cases, the field controls the maximum number of days of transaction history that Plaid will request from the financial institution. The more transaction history is requested, the longer the historical update poll will take. If no value is specified, 90 days of history will be requested by default. In Production, if a value under 30 is provided, a minimum of 30 days of history will be requested. + This field only applies to calls for Items where the Transactions product has not already been initialized (i.e. by specifying `transactions` in the `products`, `optional_products`, or `required_if_supported_products` array when calling `/link/token/create` or by making a previous call to `/transactions/sync` or `/transactions/get`). In those cases, the field controls the maximum number of days of transaction history that Plaid will request from the financial institution. The more transaction history is requested, the longer the historical update poll will take. If no value is specified, 90 days of history will be requested by default. In Production, if a value under 30 is provided, a minimum of 30 days of history will be requested. If you are initializing your Items with transactions during the `/link/token/create` call (e.g. by including `transactions` in the `/link/token/create` `products` array), you must use the [`transactions.days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) field in the `/link/token/create` request instead of in the `/transactions/get` request. @@ -22274,7 +22310,7 @@ components: x-hidden-from-docs: true type: object additionalProperties: true - description: CashflowReportRefreshResponse defines the response schema for `/cashflow_report/response` + description: CashflowReportRefreshResponse defines the response schema for `/cashflow_report/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -22464,7 +22500,7 @@ components: last_generated_time: type: string format: date-time - description: Datetime of last cashflow report generation in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ) + description: Datetime of last Cashflow Report generation in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ) request_id: $ref: '#/components/schemas/RequestID' required: @@ -22773,6 +22809,16 @@ components: - type: object additionalProperties: true properties: + name: + type: string + official_name: + type: string + nullable: true + mask: + type: string + nullable: true + verification_name: + type: string owners: type: array description: Data returned by the financial institution about the account owner or owners. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution. Multiple owners on a single account will be represented in the same owner object, not in multiple owner objects within the array. @@ -23145,7 +23191,7 @@ components: account_id: type: string description: |- - If provided, the returned updates and cursor will only reflect the specified account's transactions. Omitting `account_id` returns updates for all accounts under the Item. Note that specifying an `account_id` effectively creates a separate incremental update stream—and therefore a separate cursor—for that account. If multiple accounts are queried this way, you will maintain multiple cursors, one per `account_id`. + If provided, the returned updates and cursor will only reflect the specified account's transactions. Omitting `account_id` returns updates for all accounts under the Item. Note that specifying an `account_id` effectively creates a separate incremental update stream -- and therefore a separate cursor -- for that account. If multiple accounts are queried this way, you will maintain multiple cursors, one per `account_id`. If you decide to begin filtering by `account_id` after using no `account_id`, start fresh with a null cursor and maintain separate `(account_id, cursor)` pairs going forward. Do not reuse any previously saved cursors, as this can cause pagination errors or incomplete data. @@ -23185,7 +23231,7 @@ components: If `account_id` is included in the request, the returned cursor will reflect updates for that specific account. has_more: type: boolean - description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it’s important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. + description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it's important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. request_id: $ref: '#/components/schemas/RequestID' required: @@ -23862,7 +23908,7 @@ components: - access_token IdentityMatchRequestOptions: type: object - description: An optional object to filter /identity/match results + description: An optional object to filter `/identity/match` results properties: account_ids: type: array @@ -23998,7 +24044,7 @@ components: ProcessorInvestmentsHoldingsGetResponse: type: object additionalProperties: true - description: ProcessorInvestmentsHoldingsGetResponse defines the response schema for `/processor/invesments/holdings/get` + description: ProcessorInvestmentsHoldingsGetResponse defines the response schema for `/processor/investments/holdings/get` properties: account: $ref: '#/components/schemas/InvestmentAccount' @@ -24177,7 +24223,7 @@ components: type: string description: |- The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update. - If omitted, the entire history of updates will be returned, starting with the first-added transactions on the item. + If omitted, the entire history of updates will be returned, starting with the first-added transactions on the Item. Note: The upper-bound length of this cursor is 256 characters of base64. count: type: integer @@ -24219,7 +24265,7 @@ components: description: Cursor used for fetching any future updates after the latest update provided in this response. The cursor obtained after all pages have been pulled (indicated by `has_more` being `false`) will be valid for at least 1 year. This cursor should be persisted for later calls. If transactions are not yet available, this will be an empty string. has_more: type: boolean - description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it’s important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. + description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it's important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. request_id: $ref: '#/components/schemas/RequestID' required: @@ -24315,7 +24361,7 @@ components: $ref: '#/components/schemas/BankTransferAmount' iso_currency_code: type: string - description: The currency of the transfer amount – should be set to "USD". + description: The currency of the transfer amount - should be set to "USD". description: type: string description: The transfer description. Maximum of 10 characters. @@ -24334,7 +24380,7 @@ components: origination_account_id: type: string nullable: true - description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. + description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. required: - idempotency_key - processor_token @@ -24621,7 +24667,7 @@ components: PaymentInitiationRecipientCreateResponse: type: object additionalProperties: true - description: PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initation/recipient/create` + description: PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initiation/recipient/create` properties: recipient_id: type: string @@ -24634,7 +24680,7 @@ components: PaymentInitiationPaymentReverseResponse: type: object additionalProperties: true - description: PaymentInitiationPaymentReverseResponse defines the response schema for `/payment_initation/payment/reverse` + description: PaymentInitiationPaymentReverseResponse defines the response schema for `/payment_initiation/payment/reverse` properties: refund_id: type: string @@ -24980,7 +25026,7 @@ components: consumer_report_user_identity: $ref: '#/components/schemas/ConsumerReportUserIdentity' with_upgraded_user: - description: If your integration with the User API predates December 10, 2025, set this field to `true` to opt into the [new User API](https://plaid.com/docs/api/users/user-apis/). When enabled, you can use the `identity` field instead of `consumer_report_user_identity`. + description: If your integration with the User API predates December 10, 2025, set this field to `true` to opt into the [New User APIs](https://plaid.com/docs/api/users/user-apis/). When enabled, you can use the `identity` field instead of `consumer_report_user_identity`. type: boolean required: - client_user_id @@ -25115,13 +25161,20 @@ components: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' - products: - type: array - description: An optional list of user-based products to terminate. If not provided, all user-based products will be terminated. - items: - $ref: '#/components/schemas/UserBasedProducts' + reason_code: + $ref: '#/components/schemas/UserProductsTerminateReasonCode' + reason_note: + type: string + nullable: true + maxLength: 512 + description: 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`. required: - user_id + - reason_code + UserProductsTerminateReasonCode: + description: The reason for terminating user-based products. + allOf: + - $ref: '#/components/schemas/ProductsTerminateReasonCode' UserProductsTerminateResponse: type: object additionalProperties: true @@ -25410,7 +25463,7 @@ components: nullable: true additionalProperties: true description: |- - This field is only used by integrations created before December 10, 2025. All other integrations must use the `identity` object instead. For more details, see [new user APIs](https://plaid.com/docs/api/users/user-apis). + This field is only used by integrations created before December 10, 2025. All other integrations must use the `identity` object instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). To create a Plaid Check Consumer Report for a user when using a `user_token`, this field must be present. If this field is not provided during user token creation, you can add it to the user later by calling `/user/update`. Once the field has been added to the user, you will be able to call `/link/token/create` with a non-empty `consumer_report_permissible_purpose` (which will automatically create a Plaid Check Consumer Report), or call `/cra/check_report/create` for that user. properties: first_name: @@ -25736,33 +25789,14 @@ components: description: The number of bank statements uploaded by the user. required: - num_bank_statements_uploaded - LinkSessionProtectResult: - x-hidden-from-docs: true - type: object - nullable: true - additionalProperties: true - description: Plaid Protect details from the Link session - properties: - event_id: - type: string - description: The Plaid Protect event ID representing the completion of the link session. - trust_index: - $ref: '#/components/schemas/TrustIndex' - fraud_attributes: - $ref: '#/components/schemas/LinkSessionProtectResultFraudAttributes' - required: - - event_id - LinkSessionProtectResultFraudAttributes: - type: object - nullable: true - description: Contains attributes used during a trust index calculation. - additionalProperties: true CreditSessionBankIncomeStatus: type: string enum: - APPROVED - NO_DEPOSITS_FOUND - USER_REPORTED_NO_INCOME + - STARTED + - INTERNAL_ERROR description: |- Status of the Bank Income Link session. @@ -25781,16 +25815,18 @@ components: - APPROVED - NO_EMPLOYERS_FOUND - EMPLOYER_NOT_LISTED + - STARTED + - INTERNAL_ERROR description: |- Status of the Bank Employment Link session. `APPROVED`: User has approved and verified their employment. - `NO_EMPLOYMENTS_FOUND`: We attempted, but were unable to find any employment in the connected account. + `NO_EMPLOYERS_FOUND`: We attempted, but were unable to find any employment in the connected account. `EMPLOYER_NOT_LISTED`: The user explicitly indicated that they did not see their current or previous employer in the list of employer names found. - `STARTED`: The user began the bank income portion of the link flow. + `STARTED`: The user began the bank employment portion of the link flow. `INTERNAL_ERROR`: The user encountered an internal error. CreditPayStubPayBasisType: @@ -25800,76 +25836,6 @@ components: - SALARY - HOURLY - COMMISSION - NetworkInsightsReportGetRequest: - title: NetworkInsightsReportGetRequest - type: object - description: NetworkInsightsReportGetRequest defines the request schema for `/network_insights/report/get`. - properties: - client_id: - $ref: '#/components/schemas/APIClientID' - secret: - $ref: '#/components/schemas/APISecret' - access_tokens: - type: array - items: - $ref: '#/components/schemas/AccessToken' - description: A list of access tokens that the Network Insights will be requested for. These correspond to previous Items a user has connected. - required: - - access_tokens - NetworkInsightsReportGetResponse: - title: NetworkInsightsReportGetResponse - additionalProperties: true - type: object - description: NetworkInsightsReportGetResponse defines the response schema for `/network_insights/report/get`. - properties: - report: - $ref: '#/components/schemas/NetworkInsightsReport' - request_id: - $ref: '#/components/schemas/RequestID' - required: - - report - - request_id - NetworkInsightsReport: - type: object - description: Contains data for the Network Insights Report. - additionalProperties: true - properties: - report_id: - type: string - description: The unique identifier associated with the Network Insights report object. - generated_time: - type: string - description: The time when the Network Insights Report was generated. - format: date-time - network_attributes: - $ref: '#/components/schemas/NetworkInsightsSchema' - items: - type: array - description: A list of Items associated with the provided `access_tokens`. - items: - $ref: '#/components/schemas/NetworkInsightsItem' - required: - - report_id - - generated_time - - network_attributes - - items - NetworkInsightsItem: - type: object - description: Contains data about the connected Item. - properties: - institution_id: - type: string - description: The ID for the institution the user linked. - institution_name: - type: string - description: The name of the institution the user linked. - item_id: - type: string - description: The identifier for the Item. - required: - - institution_id - - institution_name - - item_id PaymentInitiationPaymentGetRequest: type: object description: PaymentInitiationPaymentGetRequest defines the request schema for `/payment_initiation/payment/get` @@ -25885,7 +25851,7 @@ components: - payment_id PaymentInitiationPaymentGetResponse: additionalProperties: true - description: PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initation/payment/get` + description: PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initiation/payment/get` allOf: - $ref: '#/components/schemas/PaymentInitiationPayment' - type: object @@ -25930,13 +25896,13 @@ components: **`PAYMENT_STATUS_INITIATED`:** The payment has been authorised and accepted by the financial institution. In many EU markets, `PAYMENT_STATUS_EXECUTED` is not supported, and a payment will remain in `PAYMENT_STATUS_INITIATED` until the funds settle, making this a terminal success state in those cases. A payment in `PAYMENT_STATUS_INITIATED` should be treated as a successfully submitted payment; do not gate downstream processing on reaching `PAYMENT_STATUS_EXECUTED`. For a full explanation of payment statuses and how to handle each, see the [Payment Status guide](https://plaid.com/docs/payment-initiation/payment-status/). - **`PAYMENT_STATUS_EXECUTED`: Terminal.** The funds have left the payer’s account and the payment is en route to settlement. Note that this status does not confirm that funds have arrived in the recipient’s account; do not use it as proof of fund receipt. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in `PAYMENT_STATUS_INITIATED` before settling. When using Plaid Virtual Accounts, `PAYMENT_STATUS_EXECUTED` is not terminal—the payment will continue to `PAYMENT_STATUS_SETTLED` once funds are available. + **`PAYMENT_STATUS_EXECUTED`: Terminal.** The funds have left the payer's account and the payment is en route to settlement. Note that this status does not confirm that funds have arrived in the recipient's account; do not use it as proof of fund receipt. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in `PAYMENT_STATUS_INITIATED` before settling. When using Plaid Virtual Accounts, `PAYMENT_STATUS_EXECUTED` is not terminal -- the payment will continue to `PAYMENT_STATUS_SETTLED` once funds are available. - **`PAYMENT_STATUS_SETTLED`: Terminal.** The funds are available in the recipient’s account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/). + **`PAYMENT_STATUS_SETTLED`: Terminal.** The funds are available in the recipient's account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/). Failure statuses: - **`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer’s balance is replenished. + **`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer's balance is replenished. **`PAYMENT_STATUS_FAILED`: Terminal (retryable).** The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved. @@ -26134,7 +26100,7 @@ components: PaymentInitiationConsentGetResponse: type: object additionalProperties: true - description: PaymentInitiationConsentGetResponse defines the response schema for `/payment_initation/consent/get` + description: PaymentInitiationConsentGetResponse defines the response schema for `/payment_initiation/consent/get` allOf: - $ref: '#/components/schemas/PaymentInitiationConsent' - type: object @@ -26220,7 +26186,7 @@ components: PaymentInitiationConsentRevokeResponse: type: object additionalProperties: true - description: PaymentInitiationConsentRevokeResponse defines the response schema for `/payment_initation/consent/revoke` + description: PaymentInitiationConsentRevokeResponse defines the response schema for `/payment_initiation/consent/revoke` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -26705,6 +26671,10 @@ components: - fiant - oatfi - curinos + - frame + - interchecks + - interchange + - atomicfi description: The processor you are integrating with. required: - access_token @@ -26915,7 +26885,7 @@ components: country_codes: type: array description: |- - Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. For access to additional countries beyond what you have been approved for, [contact Sales](https://plaid.com/contact/), your account manager, or support. + Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. For access to additional countries beyond what you have been approved for, [contact sales](https://plaid.com/contact/), your account manager, or support. If using Identity Verification, `country_codes` should be set to the country where your company is based, not the country where your user is located. For all other products, `country_codes` represents the location of your user's financial institution. @@ -26923,7 +26893,7 @@ components: If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`, or the customization may not be applied. - If using the Auth features Instant Match, Instant Micro-deposits, Same-day Micro-deposits, Automated Micro-deposits, or Database Auth, `country_codes` must be set to `['US']`. + If using the Auth features Instant Match, Instant Micro-deposits, Same-Day Micro-deposits, Automated Micro-deposits, or Database Auth, `country_codes` must be set to `['US']`. items: $ref: '#/components/schemas/CountryCode' minItems: 1 @@ -26931,7 +26901,7 @@ components: $ref: '#/components/schemas/LinkTokenCreateRequestUser' user_id: type: string - description: A `user_id` generated using `/user/create`. Required for integrations that began using Plaid Protect, Multi-Item Link, or Plaid Check Consumer Report after December 10, 2025. For more details, see [new User APIs](https://plaid.com/docs/api/users/user-apis). One of either the `user_id` or the `user` field is required. + description: A `user_id` generated using `/user/create`. Required for integrations that began using Plaid Protect, Multi-Item Link, or Plaid Check Consumer Report after December 10, 2025. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). One of either the `user_id` or the `user` field is required. products: type: array description: |- @@ -27055,7 +27025,7 @@ components: format: url access_token: type: string - description: The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow. + description: The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-Day Micro-deposit (manual) flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow. minLength: 1 nullable: true access_tokens: @@ -27305,7 +27275,7 @@ components: type: boolean default: false description: | - This indicates whether the client is opening hosted Link in a mobile app in an `AsWebAuthenticationSession` or Chrome custom tab. + This indicates whether the client is opening Hosted Link in a mobile app in an `AsWebAuthenticationSession` or Chrome custom tab. LinkTokenCreateIdentity: type: object description: Identity object used to specify document upload @@ -27472,7 +27442,7 @@ components: description: Specifies whether the Link session is enabled for the Instant Match flow. Instant Match is enabled by default. Instant Match can be disabled by setting this field to `false`. same_day_microdeposits_enabled: type: boolean - description: Specifies whether the Link session is enabled for the Same Day Micro-deposits flow. Default behavior is `false`. + description: Specifies whether the Link session is enabled for the Same-Day Micro-deposits flow. Default behavior is `false`. instant_microdeposits_enabled: type: boolean description: Specifies whether the Link session is enabled for the Instant Micro-deposits flow. Default behavior for Plaid teams created after November 2023 is `false`; default behavior for Plaid teams created before that date is `true`. @@ -27482,7 +27452,7 @@ components: - "OFF" - OPTIONAL - FORCED - description: Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/flow-options/#removing-manual-verification-entry-points-with-reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. Default behavior is `OPTIONAL`. + description: Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/flow-options/#removing-manual-verification-entry-points-with-reroute-to-credentials) pane should be used in the Link session for the Same-Day Micro-deposits flow. Default behavior is `OPTIONAL`. database_match_enabled: type: boolean deprecated: true @@ -27560,7 +27530,7 @@ components: description: | The date and time the phone number was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. - Only pass a verification time for a phone number that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch. + Only pass a verification time for a phone number that you have verified. If you have performed verification but don't have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z` email_address: @@ -27575,7 +27545,7 @@ components: description: |- The date and time the email address was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. - Only pass a verification time for an email address that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch. + Only pass a verification time for an email address that you have verified. If you have performed verification but don't have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z` ssn: @@ -27771,7 +27741,7 @@ components: properties: item_add_results: type: array - description: The set of Item adds for the Link session. If you are not receiving this field and are instead receiving the deprecated `on_success` field, contact your Account Manager to update your integration. + description: The set of Item adds for the Link session. If you are not receiving this field and are instead receiving the deprecated `on_success` field, contact your account manager to update your integration. items: $ref: '#/components/schemas/LinkSessionItemAddResult' cra_item_add_results: @@ -27798,8 +27768,6 @@ components: $ref: '#/components/schemas/CreditSessionDocumentIncomeResult' cra_document_upload_results: $ref: '#/components/schemas/LinkSessionCraDocumentUploadResult' - protect_results: - $ref: '#/components/schemas/LinkSessionProtectResult' required: - item_add_results - cra_item_add_results @@ -27847,7 +27815,7 @@ components: - institution LinkSessionCraUpdateResult: type: object - description: The details of a Plaid Check Item update via Update Mode in Link. + description: The details of a Plaid Check Item update via update mode in Link. additionalProperties: true properties: item_id: @@ -27916,7 +27884,7 @@ components: LinkSessionSuccess: deprecated: true type: object - description: An object representing an [onSuccess](https://plaid.com/docs/link/web/#onsuccess) callback from Link. This field is returned only for legacy integrations and is deprecated in favor of [`results.item_add_results`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-results-item-add-results) which can support multiple public tokens in a single Link session, for flows such as multi-Item Link. If you are receiving `on_success`, contact your Account Manager to migrate to `results.item_add_results` instead. + description: An object representing an [onSuccess](https://plaid.com/docs/link/web/#onsuccess) callback from Link. This field is returned only for legacy integrations and is deprecated in favor of [`results.item_add_results`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-results-item-add-results) which can support multiple public tokens in a single Link session, for flows such as multi-Item Link. If you are receiving `on_success`, contact your account manager to migrate to `results.item_add_results` instead. nullable: true properties: public_token: @@ -28018,15 +27986,15 @@ components: description: |- The status of a transfer. Returned only when [Transfer UI](https://plaid.com/docs/transfer/using-transfer-ui) is implemented. - - `COMPLETE` – The transfer was completed. - - `INCOMPLETE` – The transfer could not be completed. For help, see [Troubleshooting transfers](https://plaid.com/docs/transfer/using-transfer-ui/#troubleshooting-transfer-ui). + - `COMPLETE` - The transfer was completed. + - `INCOMPLETE` - The transfer could not be completed. For help, see [Troubleshooting transfers](https://plaid.com/docs/transfer/using-transfer-ui/#troubleshooting-transfer-ui). enum: - COMPLETE - INCOMPLETE - null LinkSessionExit: type: object - description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. If you are not receiving this field and are instead receiving the deprecated `on_exit` field, contact your Account Manager to update your integration. + description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. If you are not receiving this field and are instead receiving the deprecated `on_exit` field, contact your account manager to update your integration. additionalProperties: true nullable: true properties: @@ -28040,7 +28008,7 @@ components: LinkSessionExitDeprecated: type: object deprecated: true - description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. This field is returned only for legacy implementations and has been deprecated in favor of [`exit`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-exit), for improved naming consistency. If you are receiving this field, contact your Account Manager to migrate to the newer `exit` field. + description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. This field is returned only for legacy implementations and has been deprecated in favor of [`exit`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-exit), for improved naming consistency. If you are receiving this field, contact your account manager to migrate to the newer `exit` field. additionalProperties: true nullable: true properties: @@ -28085,7 +28053,7 @@ components: description: A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround. request_id: type: string - description: The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation. + description: The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. LinkSessionExitMetadataInstitution: type: object description: An institution object. If the Item was created via Same-Day or Instant micro-deposit verification, will be `null`. @@ -28223,11 +28191,11 @@ components: The specific reason for the error code. Currently, reasons are only supported 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_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. + `OAUTH_USER_REVOKED`: The user's OAuth connection to this institution is invalid because the user revoked their connection. error_message: description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use. type: string @@ -28289,6 +28257,7 @@ components: - API_ERROR - ITEM_ERROR - ASSET_REPORT_ERROR + - BASE_REPORT_ERROR - RECAPTCHA_ERROR - OAUTH_ERROR - PAYMENT_ERROR @@ -28361,7 +28330,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`. @@ -28375,7 +28344,7 @@ components: mask: type: string nullable: true - description: The last 2-4 alphanumeric characters of either the account’s displayed mask or the account’s official account number. Note that the mask may be non-unique between an Item’s accounts. + description: The last 2-4 alphanumeric characters of either the account's displayed mask or the account's official account number. Note that the mask may be non-unique between an Item's accounts. name: type: string description: The name of the account, either assigned by the user or by the financial institution itself @@ -28418,8 +28387,6 @@ components: `unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit. - `database_insights_pending`: The Database Auth result is pending and will be available upon Auth request. - `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth. `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth. @@ -28436,7 +28403,7 @@ components: $ref: '#/components/schemas/AccountVerificationInsights' persistent_account_id: type: string - description: A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This field is currently supported only for Items at institutions that use Tokenized Account Numbers (i.e., Chase and PNC, and in May 2025 US Bank). Because these accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify an account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field is populated for TAN-based institutions (`ins_56`, `ins_13`) as well as the OAuth Sandbox institution (`ins_127287`); in Production, it will only be populated for accounts at applicable institutions. + description: A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This field is currently supported only for Items at institutions that use Tokenized Account Numbers (i.e., Chase, PNC, and US Bank). Because these accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify an account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field is populated for TAN-based institutions (`ins_56`, `ins_13`, `ins_127990`) as well as the OAuth Sandbox institution (`ins_127287`); in Production, it will only be populated for accounts at applicable institutions. holder_category: $ref: '#/components/schemas/AccountHolderCategory' required: @@ -28483,6 +28450,16 @@ components: - type: object additionalProperties: true properties: + name: + type: string + official_name: + type: string + nullable: true + mask: + type: string + nullable: true + verification_name: + type: string balances: $ref: '#/components/schemas/InvestmentAccountBalance' required: @@ -28852,7 +28829,7 @@ components: description: A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround. request_id: type: string - description: The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation. + description: The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. institution: $ref: '#/components/schemas/LinkDeliveryInstitution' accounts: @@ -28874,7 +28851,7 @@ components: description: |- The ACH account number for the account. - At certain institutions, including Chase, PNC, and (coming May 2025) US Bank, you will receive "tokenized" routing and account numbers, which are not the user's actual account and routing numbers. For important details on how this may impact your integration and on how to avoid fraud, user confusion, and ACH returns, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers). + At certain institutions, including Chase, PNC, and US Bank, you will receive "tokenized" routing and account numbers, which are not the user's actual account and routing numbers. For important details on how this may impact your integration and on how to avoid fraud, user confusion, and ACH returns, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers). is_tokenized_account_number: type: boolean description: Indicates whether the account number is tokenized by the institution. For important details on how tokenized account numbers may impact your integration, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers). @@ -30096,11 +30073,11 @@ components: `LEGITIMATE_BUSINESS_NEED_OTHER`: For a legitimate business need in connection with a business transaction made primarily for personal, family, or household initiated by the consumer pursuant to FCRA Section 604(a)(3)(F)(i). - `WRITTEN_INSTRUCTION_PREQUALIFICATION`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application’s profile to make an offer to the consumer. + `WRITTEN_INSTRUCTION_PREQUALIFICATION`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application's profile to make an offer to the consumer. `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan. - `ELIGIBILITY_FOR_GOVT_BENEFITS`: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant’s financial status pursuant to FCRA Section 604(a)(3)(D). + `ELIGIBILITY_FOR_GOVT_BENEFITS`: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant's financial status pursuant to FCRA Section 604(a)(3)(D). PaymentMeta: title: PaymentMeta type: object @@ -30204,7 +30181,7 @@ components: description: |- An identifier classifying the transaction type. - This field is only populated for European institutions. For institutions in the US and Canada, this field is set to `null`. + This field is populated for European institutions, as well as certain institutions in the United States. For institutions where this classification is not available, this field is set to `null`. `adjustment:` Bank adjustment @@ -30224,8 +30201,12 @@ components: `interest:` Interest earned or incurred + `payment:` One-off outbound payment not classified as a bill payment, direct debit, or standing order + `purchase:` Purchase made with a debit or credit card + `refund:` Merchant credit or return, such as a refund of a prior purchase + `standing order:` Payment instructed by the account holder to a third party at a regular interval `transfer:` Transfer of money between accounts @@ -30239,7 +30220,9 @@ components: - cheque - direct debit - interest + - payment - purchase + - refund - standing order - transfer - null @@ -30296,8 +30279,8 @@ components: `VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction. `HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction. `MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records. - `LOW`: We didn’t find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. - `UNKNOWN`: We don’t know the confidence level for this counterparty. + `LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. + `UNKNOWN`: We don't know the confidence level for this counterparty. nullable: true phone_number: type: string @@ -30342,8 +30325,8 @@ components: `VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction. `HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction. `MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records. - `LOW`: We didn’t find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. - `UNKNOWN`: We don’t know the confidence level for this counterparty. + `LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. + `UNKNOWN`: We don't know the confidence level for this counterparty. nullable: true account_numbers: $ref: '#/components/schemas/CounterpartyNumbers' @@ -30360,8 +30343,8 @@ components: `merchant`: a provider of goods or services for purchase `financial_institution`: a financial entity (bank, credit union, BNPL, fintech) `payment_app`: a transfer or P2P app (e.g. Zelle) - `marketplace`: a marketplace (e.g DoorDash, Google Play Store) - `payment_terminal`: a point-of-sale payment terminal (e.g Square, Toast) + `marketplace`: a marketplace (e.g. DoorDash, Google Play Store) + `payment_terminal`: a point-of-sale payment terminal (e.g. Square, Toast) `income_source`: the payer in an income transaction (e.g., an employer, client, or government agency) type: string enum: @@ -30449,7 +30432,7 @@ components: `HIGH`: We are more than 90% confident that this category reflects the intent of the transaction. `MEDIUM`: We are moderately confident that this category reflects the intent of the transaction. `LOW`: This category may reflect the intent, but there may be other categories that are more accurate. - `UNKNOWN`: We don’t know the confidence level for this category. + `UNKNOWN`: We don't know the confidence level for this category. nullable: true version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' @@ -30479,7 +30462,7 @@ components: `HIGH`: We are more than 90% confident that this category reflects the intent of the transaction. `MEDIUM`: We are moderately confident that this category reflects the intent of the transaction. `LOW`: This category may reflect the intent, but there may be other categories that are more accurate. - `UNKNOWN`: We don’t know the confidence level for this category. + `UNKNOWN`: We don't know the confidence level for this category. nullable: true required: - primary @@ -30487,7 +30470,7 @@ components: UserToken: title: UserToken type: string - description: The user token associated with the User data is being requested for. This field is used only by customers with pre-existing integrations that already use the `user_token` field. All other customers should use the `user_id` instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). + description: The user token associated with the user for which data is being requested. This field is used only by customers with pre-existing integrations that already use the `user_token` field. All other customers should use the `user_id` instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). ThirdPartyUserToken: x-hidden-from-docs: true title: ThirdPartyUserToken @@ -30496,11 +30479,11 @@ components: AccessToken: title: AccessToken type: string - description: The access token associated with the Item data is being requested for. + description: The access token associated with the Item for which data is being requested. AccessTokenNullable: nullable: true type: string - description: The access token associated with the Item data is being requested for. + description: The access token associated with the Item for which data is being requested. TransferAccessToken: description: The Plaid `access_token` for the account that will be debited or credited. type: string @@ -30510,7 +30493,7 @@ components: TransferOriginatorClientID: type: string nullable: true - description: Client ID of the customer that owns the Ledger balance. This is so Plaid knows which of your customers to payout or collect funds. Only applicable for [Platform customers](https://plaid.com/docs/transfer/application/#originators-vs-platforms). Do not include if you’re paying out to yourself. + description: Client ID of the customer that owns the Ledger balance. This is so Plaid knows which of your customers to payout or collect funds. Only applicable for [Platform customers](https://plaid.com/docs/transfer/application/#originators-vs-platforms). Do not include if you're paying out to yourself. TransferMigratedFundingAccountIDRequest: type: string description: Specify the account used to fund the transfer. Should be specified if using legacy funding methods only. If using Plaid Ledger, leave this field blank. Customers can find a list of `funding_account_id`s in the Accounts page of your Plaid Dashboard, under the "Account ID" column. If this field is left blank and you are using legacy funding methods, this will default to the default `funding_account_id` specified during onboarding. Otherwise, Plaid Ledger will be used. @@ -30600,7 +30583,7 @@ components: example-1: webhook_type: ENTITY_SCREENING webhook_code: STATUS_UPDATED - screening_id: entscr_52xR9LKo77r1Np + entity_screening_id: entscr_52xR9LKo77r1Np environment: production BeaconUserStatusUpdatedWebhook: title: BeaconUserStatusUpdatedWebhook @@ -30772,7 +30755,7 @@ components: environment: production IdentityVerificationRetriedWebhook: title: IdentityVerificationRetriedWebhook - description: Fired when identity verification has been retried, which can be triggered via the dashboard or the API. + description: Fired when an identity verification has been retried, which can be triggered via the dashboard or the API. type: object additionalProperties: true properties: @@ -31782,7 +31765,7 @@ components: next_payment_due_date: type: string format: date - description: The due date for the next payment. The due date is `null` if a payment is not expected. A payment is not expected if `loan_status.type` is `deferment`, `in_school`, `consolidated`, `paid in full`, or `transferred`. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). + description: The due date for the next payment. The due date is `null` if a payment is not expected. A payment is not expected if `loan_status.type` is `deferment`, `in school`, `consolidated`, `paid in full`, or `transferred`. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true origination_date: type: string @@ -32263,10 +32246,10 @@ components: description: Indicates if instant match is supported. automated_micro_deposits: type: boolean - description: Indicates if automated microdeposits are supported. + description: Indicates if automated micro-deposits are supported. instant_micro_deposits: type: boolean - description: Indicates if instant microdeposits are supported. + description: Indicates if instant micro-deposits are supported. required: - instant_auth - instant_match @@ -33042,7 +33025,7 @@ components: description: A descriptive name for the security, suitable for display. type: string ticker_symbol: - description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available. + description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: string currency: description: Either a valid `iso_currency_code` or `unofficial_currency_code` @@ -33774,13 +33757,14 @@ components: NewUserID: title: NewUserID type: string - description: 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). + description: 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). AuthDefaultUpdateWebhook: x-examples: example-1: webhook_type: AUTH webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb + account_ids_with_new_auth: [] account_ids_with_updated_auth: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp: - ACCOUNT_NUMBER @@ -33960,7 +33944,7 @@ components: title: PendingExpirationWebhook type: object additionalProperties: true - description: Fired when an Item’s access consent is expiring in 7 days. This can be resolved by having the user go through Link’s update mode. This webhook is fired only for Items associated with institutions in Europe (including the UK); for Items associated with institutions in the US or Canada, see [`PENDING_DISCONNECT`](https://plaid.com/docs/api/items/#pending_disconnect) instead. + description: Fired when an Item's access consent is expiring in 7 days. This can be resolved by having the user go through Link's update mode. This webhook is fired only for Items associated with institutions in Europe (including the UK); for Items associated with institutions in the US or Canada, see [`PENDING_DISCONNECT`](https://plaid.com/docs/api/items/#pending_disconnect) instead. properties: webhook_type: type: string @@ -33996,7 +33980,7 @@ components: title: ItemErrorWebhook type: object additionalProperties: true - description: Fired when an error is encountered with an Item. The error can be resolved by having the user go through Link’s update mode. + description: Fired when an error is encountered with an Item. The error can be resolved by having the user go through Link's update mode. properties: webhook_type: type: string @@ -34025,7 +34009,7 @@ components: item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: - display_message: The user’s OAuth connection to this institution has been invalidated. + display_message: The user's OAuth connection to this institution has been invalidated. error_code: ITEM_LOGIN_REQUIRED error_code_reason: OAUTH_INVALID_TOKEN error_message: the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state @@ -34150,7 +34134,7 @@ components: title: Recaptcha_RequiredError type: object additionalProperties: true - description: The request was flagged by Plaid's fraud system, and requires additional verification to ensure they are not a bot. + description: The request was flagged by Plaid's fraud system and requires additional verification to ensure the user is not a bot. x-examples: example-1: error_type: RECAPTCHA_ERROR @@ -34168,8 +34152,9 @@ components: description: '`RECAPTCHA_REQUIRED`' display_message: type: string + nullable: true http_code: - type: string + type: integer description: "400" link_user_experience: type: string @@ -34182,15 +34167,12 @@ components: description: |- Link will automatically guide your user through reCAPTCHA verification. As a general rule, we recommend instrumenting basic fraud monitoring to detect and protect your website from spam and abuse. - If your user cannot verify their session, please submit a Support ticket with the following identifiers: `link_session_id` or `request_id` + If your user cannot verify their session, please submit a support ticket with the following identifiers: `link_session_id` or `request_id` required: - error_type - error_code - display_message - http_code - - link_user_experience - - common_causes - - troubleshooting_steps BankTransfersEventsUpdateWebhook: title: BankTransfersEventsUpdateWebhook type: object @@ -34218,7 +34200,7 @@ components: title: BankTransfersEventsUpdateWebhookForAuth type: object additionalProperties: true - description: Fired when new ACH events are available. To begin receiving this webhook, you must first register your webhook listener endpoint via the [webhooks page in the Dashboard](https://dashboard.plaid.com/team/webhooks). The `BANK_TRANSFERS_EVENTS_UPDATE` webhook can be used to track the progress of ACH transfers used in [micro-deposit verification](https:///docs/auth/coverage/microdeposit-events/). Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`. Note that [Transfer](https://plaid.com/docs/transfer) customers should use Transfer webhooks instead of using `BANK_TRANSFERS_EVENTS_UPDATE`; see [micro-deposit events documentation](https://plaid.com/docs/auth/coverage/microdeposit-events/) for more details. + description: Fired when new ACH events are available. To begin receiving this webhook, you must first register your webhook listener endpoint via the [webhooks page in the Dashboard](https://dashboard.plaid.com/team/webhooks). The `BANK_TRANSFERS_EVENTS_UPDATE` webhook can be used to track the progress of ACH transfers used in [micro-deposit verification](https://plaid.com/docs/auth/coverage/microdeposit-events/). Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`. Note that [Transfer](https://plaid.com/docs/transfer) customers should use Transfer webhooks instead of using `BANK_TRANSFERS_EVENTS_UPDATE`; see [micro-deposit events documentation](https://plaid.com/docs/auth/coverage/microdeposit-events/) for more details. x-examples: example-1: webhook_type: BANK_TRANSFERS @@ -34320,7 +34302,7 @@ components: description: The event ID of the user event that occurred. event_type: type: string - description: The type of user event that occurred. + description: The type of user event that occurred. Possible values include `LINK_COMPLETE` (the Link session has finished and a Trust Index score has been computed without waiting for transaction extraction) and `PROTECT_RUN_FINISH` (extraction-required scoring is complete, including transaction extraction; may arrive 30 seconds or more after Link completion). timestamp: type: string format: date-time @@ -34478,7 +34460,7 @@ components: description: The number of new transactions reported since the last time this webhook was fired. cancelled_investments_transactions: type: number - description: The number of canceled transactions reported since the last time this webhook was fired. + description: The number of cancelled transactions reported since the last time this webhook was fired. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: @@ -34521,7 +34503,7 @@ components: description: The number of new transactions reported since the last time this webhook was fired. cancelled_investments_transactions: type: number - description: The number of canceled transactions reported since the last time this webhook was fired. + description: The number of cancelled transactions reported since the last time this webhook was fired. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: @@ -34666,7 +34648,7 @@ components: PendingDisconnectWebhookReason: type: string description: |- - Reason why the item is about to be disconnected. + Reason why the Item is about to be disconnected. `INSTITUTION_MIGRATION`: The institution is moving to API or to a different integration. For example, this can occur when an institution moves from a non-OAuth integration to an OAuth integration. `INSTITUTION_TOKEN_EXPIRATION`: The consent on an Item associated with a US or CA institution is about to expire. enum: @@ -34676,7 +34658,7 @@ components: title: PendingDisconnectWebhook type: object additionalProperties: true - description: Fired when an Item is expected to be disconnected. The webhook will currently be fired 7 days before the existing Item is scheduled for disconnection. This can be resolved by having the user go through Link’s [update mode](http://plaid.com/docs/link/update-mode). Currently, this webhook is fired only for US or Canadian institutions; in the UK or EU, you should continue to listed for the [`PENDING_EXPIRATION`](https://plaid.com/docs/api/items/#pending_expiration) webhook instead. + description: Fired when an Item is expected to be disconnected. The webhook will currently be fired 7 days before the existing Item is scheduled for disconnection. This can be resolved by having the user go through Link's [update mode](https://plaid.com/docs/link/update-mode). Currently, this webhook is fired only for US or Canadian institutions; in the UK or EU, you should continue to listen for the [`PENDING_EXPIRATION`](https://plaid.com/docs/api/items/#pending_expiration) webhook instead. properties: webhook_type: type: string @@ -35010,7 +34992,7 @@ components: description: Health Savings Account (US only) that can only hold cash limited purpose checking: type: string - description: A checking account that is limited in its purpose or usage + description: A checking account that is limited in its purpose or usage. Note that this account subtype is opt-in only, meaning it cannot be connected in Link unless it is present in the subtypes filter. money market: type: string description: Money market account @@ -35507,6 +35489,8 @@ components: $ref: '#/components/schemas/WalletTransactionStatus' old_status: $ref: '#/components/schemas/WalletTransactionStatus' + failure_reason: + $ref: '#/components/schemas/WalletTransactionFailureReason' timestamp: type: string format: date-time @@ -35586,6 +35570,11 @@ components: format: double description: The value of the vested holdings as reported by the institution. nullable: true + tax_lots: + description: Per-lot acquisition data for this holding. An empty array indicates the institution does not provide lot-level data. + type: array + items: + $ref: '#/components/schemas/HoldingTaxLot' required: - account_id - security_id @@ -35595,6 +35584,59 @@ components: - quantity - iso_currency_code - unofficial_currency_code + HoldingTaxLot: + title: HoldingTaxLot + description: A single acquisition lot within a holding. + type: object + additionalProperties: true + properties: + institution_lot_id: + nullable: true + description: The financial institution's identifier for this lot. Null if the institution does not provide a lot identifier. + type: string + original_purchase_datetime: + nullable: true + description: The date and time this lot was acquired, in ISO 8601 format. Null if the institution does not provide acquisition datetime data. + type: string + format: date-time + quantity: + nullable: true + description: The number of units of the security in this lot. + type: number + format: double + purchase_price: + nullable: true + description: The price per unit of the security at the time this lot was acquired. + type: number + format: double + cost_basis: + nullable: true + description: The total cost basis of this lot, inclusive of any fees. + type: number + format: double + current_value: + nullable: true + description: The current market value of this lot. + type: number + format: double + position_type: + $ref: '#/components/schemas/HoldingTaxLotPositionType' + required: + - institution_lot_id + - original_purchase_datetime + - quantity + - purchase_price + - cost_basis + - current_value + - position_type + HoldingTaxLotPositionType: + title: HoldingTaxLotPositionType + description: Indicates whether a holding lot position is long or short. Possible values are `LONG` and `SHORT`. + type: string + nullable: true + enum: + - LONG + - SHORT Security: title: Security type: object @@ -35636,7 +35678,7 @@ components: ticker_symbol: type: string nullable: true - description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available. + description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. is_cash_equivalent: nullable: true type: boolean @@ -35959,13 +36001,13 @@ components: nullable: true name: type: string - description: The institution’s description of the transaction. + description: The institution's description of the transaction. quantity: type: number format: double description: The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions. amount: - description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. + description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: @@ -36263,7 +36305,7 @@ components: type: object additionalProperties: true description: |- - The `USER_PERMISSION_REVOKED` webhook may be fired when an end user has revoked the permission that they previously granted to access an Item. If the end user revoked their permissions through Plaid (such as via the Plaid Portal or by contacting Plaid Support), the webhook will fire. If the end user revoked their permissions directly through the institution, this webhook may not always fire, since some institutions’ consent portals do not trigger this webhook. To attempt to restore the Item, it can be sent through [update mode](https://plaid.com/docs/link/update-mode). Depending on the exact process the end user used to revoke permissions, it may not be possible to launch update mode for the Item. If you encounter an error when attempting to create a Link token for update mode on an Item with revoked permissions, create a fresh Link token for the user. + The `USER_PERMISSION_REVOKED` webhook may be fired when an end user has revoked the permission that they previously granted to access an Item. If the end user revoked their permissions through Plaid (such as via the Plaid Portal or by contacting Plaid support), the webhook will fire. If the end user revoked their permissions directly through the institution, this webhook may not always fire, since some institutions' consent portals do not trigger this webhook. To attempt to restore the Item, it can be sent through [update mode](https://plaid.com/docs/link/update-mode). Depending on the exact process the end user used to revoke permissions, it may not be possible to launch update mode for the Item. If you encounter an error when attempting to create a Link token for update mode on an Item with revoked permissions, create a fresh Link token for the user. Note that when working with tokenized account numbers with Auth or Transfer, the account number provided by Plaid will no longer work for creating transfers once user permission has been revoked, except for US Bank Items. x-examples: @@ -36273,6 +36315,7 @@ components: error: 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 error_type: ITEM_ERROR status: 400 item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ @@ -36443,28 +36486,28 @@ components: TransferID: type: string title: TransferID - description: Plaid’s unique identifier for a transfer. + description: Plaid's unique identifier for a transfer. RecurringTransferID: type: string title: RecurringTransferID - description: Plaid’s unique identifier for a recurring transfer. + description: Plaid's unique identifier for a recurring transfer. TransferTestClockID: type: string title: TransferTestClockID - description: Plaid’s unique identifier for a test clock. This field is only populated in the Sandbox environment, and only if a `test_clock_id` was included in the `/transfer/recurring/create` request. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). + description: Plaid's unique identifier for a test clock. This field is only populated in the Sandbox environment, and only if a `test_clock_id` was included in the `/transfer/recurring/create` request. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). TransferSweepID: type: string title: TransferSweepID - description: Plaid’s unique identifier for a sweep. + description: Plaid's unique identifier for a sweep. TransferSweepIDNullable: type: string title: TransferSweepID - description: Plaid’s unique identifier for a sweep. + description: Plaid's unique identifier for a sweep. nullable: true TransferRefundID: type: string title: TransferRefundID - description: Plaid’s unique identifier for a refund. + description: Plaid's unique identifier for a refund. TransferIDForRefund: type: string title: TransferID @@ -36472,16 +36515,16 @@ components: TransferAuthorizationID: type: string title: TransferAuthorizationID - description: Plaid’s unique identifier for a transfer authorization. + description: Plaid's unique identifier for a transfer authorization. TransferLedgerID: type: string title: TransferLedgerID - description: Plaid’s unique identifier for a Plaid Ledger Balance. + description: Plaid's unique identifier for a Plaid Ledger Balance. nullable: true BankTransferID: type: string title: BankTransferID - description: Plaid’s unique identifier for a bank transfer. + description: Plaid's unique identifier for a bank transfer. TransferExpectedSweepSettlementScheduleItem: title: TransferExpectedSweepSettlementScheduleItem type: object @@ -36547,7 +36590,7 @@ components: $ref: '#/components/schemas/TransferMetadata' origination_account_id: type: string - description: Plaid’s unique identifier for the origination account that was used for this transfer. + description: Plaid's unique identifier for the origination account that was used for this transfer. deprecated: true x-hidden-from-docs: true guarantee_decision: @@ -36651,7 +36694,7 @@ components: The next transfer origination date after bank holiday adjustment. test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. + description: Plaid's unique identifier for a test clock. nullable: true type: $ref: '#/components/schemas/TransferType' @@ -36665,7 +36708,7 @@ components: $ref: '#/components/schemas/TransferRecurringNetwork' origination_account_id: type: string - description: Plaid’s unique identifier for the origination account that was used for this transfer. + description: Plaid's unique identifier for the origination account that was used for this transfer. deprecated: true x-hidden-from-docs: true account_id: @@ -36777,7 +36820,7 @@ components: $ref: '#/components/schemas/BankTransferMetadata' origination_account_id: type: string - description: Plaid’s unique identifier for the origination account that was used for this transfer. + description: Plaid's unique identifier for the origination account that was used for this transfer. direction: $ref: '#/components/schemas/BankTransferDirection' required: @@ -36806,7 +36849,7 @@ components: properties: client_id: type: string - description: Originator’s client ID. + description: Originator's client ID. transfer_diligence_status: $ref: '#/components/schemas/TransferDiligenceStatus' company_name: @@ -36829,7 +36872,7 @@ components: properties: client_id: type: string - description: Originator’s client ID. + description: Originator's client ID. transfer_diligence_status: $ref: '#/components/schemas/TransferDiligenceStatus' required: @@ -36853,7 +36896,7 @@ components: `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. - `"web"` - Internet-Initiated Entry. The transfer debits a consumer’s bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. + `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. `"tel"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call. TransferCreditFundsSource: @@ -36889,7 +36932,7 @@ components: TransferFacilitatorFee: title: TransferFacilitatorFee type: string - description: The amount to deduct from `transfer.amount` and distribute to the platform’s Ledger balance as a facilitator fee (decimal string with two digits of precision e.g. "10.00"). The remainder will go to the end-customer’s Ledger balance. This must be value greater than 0 and less than or equal to the `transfer.amount`. + description: The amount to deduct from `transfer.amount` and distribute to the platform's Ledger balance as a facilitator fee (decimal string with two digits of precision e.g. "10.00"). The remainder will go to the end-customer's Ledger balance. This must be value greater than 0 and less than or equal to the `transfer.amount`. TransferNetworkTraceID: title: TransferNetworkTraceID type: string @@ -37159,10 +37202,10 @@ components: properties: legal_name: type: string - description: The account holder’s full legal name. If the transfer `ach_class` is `ccd`, this should be the business name of the account holder. + description: The account holder's full legal name. If the transfer `ach_class` is `ccd`, this should be the business name of the account holder. email_address: type: string - description: The account holder’s email. + description: The account holder's email. nullable: true routing_number: type: string @@ -37177,19 +37220,21 @@ components: If the `rationale_code` is `null`, the transfer passed the authorization check. - Any non-`null` value for an `approved` transfer indicates that the the authorization check could not be run and that you should perform your own risk assessment on the transfer. The code will indicate why the check could not be run. Possible values for an `approved` transfer are: + Any non-`null` value for an `approved` transfer indicates that the authorization check could not be run and that you should perform your own risk assessment on the transfer. The code will indicate why the check could not be run. Possible values for an `approved` transfer are: + + `MANUALLY_VERIFIED_ITEM` - Item created via a manual entry flow (i.e. Same-Day Micro-deposit, Instant Micro-deposit, or database-based verification), limited information available. - `MANUALLY_VERIFIED_ITEM` – Item created via a manual entry flow (i.e. Same Day Micro-deposit, Instant Micro-deposit, or database-based verification), limited information available. + `ITEM_LOGIN_REQUIRED` - Unable to collect the account information due to Item staleness. Can be resolved by using Link and setting [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) in the request to `/link/token/create`. - `ITEM_LOGIN_REQUIRED` – Unable to collect the account information due to Item staleness. Can be resolved by using Link and setting [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) in the request to `/link/token/create`. + `PAYMENT_PROFILE_LOGIN_REQUIRED` - The Payment Profile associated with the call to `/transfer/authorization/create` is in a state that requires the end user to re-authenticate. Can be resolved by using Link to refresh the Payment Profile. `MIGRATED_ACCOUNT_ITEM` - Item created via `/transfer/migrate_account` endpoint, limited information available. - `ERROR` – Unable to collect the account information due to an unspecified error. + `ERROR` - Unable to collect the account information due to an unspecified error. The following codes indicate that the authorization decision was `declined`: - `NSF` – Transaction likely to result in a return due to insufficient funds. + `NSF` - Transaction likely to result in a return due to insufficient funds. `RISK` - Transaction is high-risk. @@ -37425,6 +37470,24 @@ components: Maximum of 50 key/value pairs Maximum key length of 40 characters Maximum value length of 500 characters + TransferAuthorizationCustomAttributes: + type: object + title: TransferAuthorizationCustomAttributes + nullable: true + maxProperties: 50 + additionalProperties: + type: string + maxLength: 500 + description: | + A free-form map of client-supplied risk-relevant context for this authorization. Plaid may use these attributes to inform future versions of our risk models. + + The following limitations apply: + Keys must match the regular expression `^[A-Za-z0-9_.-]{1,40}$` + Values must be strings (no nested objects, arrays, numbers, or booleans allowed; stringify non-string values client-side) + Maximum of 50 key/value pairs + Maximum value length of 500 characters + + Do not include personally identifiable information or other sensitive data. TransferType: type: string title: TransferType @@ -37462,7 +37525,7 @@ components: TransferDiligenceStatus: type: string title: TransferDiligenceStatus - description: Originator’s diligence status. + description: Originator's diligence status. enum: - not_submitted - submitted @@ -37513,7 +37576,7 @@ components: `unswept`: The transfer hasn't been swept yet. `swept`: The transfer was swept to the sweep account. - `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer’s business checking account. + `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account. `return_swept`: The transfer was returned, funds were pulled back or pushed back to the sweep account. `null`: The transfer will never be swept (e.g. if the transfer is cancelled or returned before being swept) enum: @@ -37579,7 +37642,7 @@ components: For transfers submitted as `rtp`, Plaid will automatically route between Real Time Payment rail by TCH or FedNow rails as necessary. If a transfer is submitted as `rtp` and the counterparty account is not eligible for RTP, the `/transfer/authorization/create` request will fail with an `INVALID_FIELD` error code. To pre-check to determine whether a counterparty account can support RTP, call `/transfer/capabilities/get` before calling `/transfer/authorization/create`. - Wire transfers are currently in early availability. To request access to `wire` as a payment network, contact your Account Manager. For transfers submitted as `wire`, the `type` must be `credit`; wire debits are not supported. The cutoff to submit a wire payment is 6:30 PM Eastern Time on a business day; wires submitted after that time will be processed on the next business day. The transaction limit for a wire is $999,999.99. Authorization requests sent with an amount greater than $999,999.99 will fail. + Wire transfers are currently in early availability. To request access to `wire` as a payment network, contact your account manager. For transfers submitted as `wire`, the `type` must be `credit`; wire debits are not supported. The cutoff to submit a wire payment is 6:30 PM Eastern Time on a business day; wires submitted after that time will be processed on the next business day. The transaction limit for a wire is $999,999.99. Authorization requests sent with an amount greater than $999,999.99 will fail. enum: - ach - same-day-ach @@ -37721,12 +37784,14 @@ components: - $ref: '#/components/schemas/TransferCreditFundsSource' test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `authorization` is created at the `virtual_time` on the provided test clock. + description: Plaid's unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `authorization` is created at the `virtual_time` on the provided test clock. nullable: true ruleset_key: type: string - description: The key of the Ruleset for the transaction. This feature is currently in closed beta; to request access, contact your account manager. + description: The key of the Ruleset for the transaction. If not provided, Signal will use the `default` ruleset. nullable: true + custom_attributes: + $ref: '#/components/schemas/TransferAuthorizationCustomAttributes' required: - type - network @@ -37808,7 +37873,7 @@ components: $ref: '#/components/schemas/TransferAccountID' authorization_id: type: string - description: Plaid’s unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an idempotency identifier. + description: Plaid's unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an idempotency identifier. type: x-hidden-from-docs: true deprecated: true @@ -37842,7 +37907,7 @@ components: x-hidden-from-docs: true deprecated: true nullable: true - description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. + description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. iso_currency_code: type: string x-hidden-from-docs: true @@ -37850,7 +37915,7 @@ components: description: The currency of the transfer amount. The default value is "USD". test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `transfer` is created at the `virtual_time` on the provided `test_clock`. + description: Plaid's unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `transfer` is created at the `virtual_time` on the provided `test_clock`. nullable: true facilitator_fee: $ref: '#/components/schemas/TransferFacilitatorFee' @@ -37902,7 +37967,7 @@ components: description: The description of the recurring transfer. test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. This field may only be used when using the `sandbox` environment. If provided, the created `recurring_transfer` is associated with the `test_clock`. New originations are automatically generated when the associated `test_clock` advances. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). + description: Plaid's unique identifier for a test clock. This field may only be used when using the `sandbox` environment. If provided, the created `recurring_transfer` is associated with the `test_clock`. New originations are automatically generated when the associated `test_clock` advances. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). nullable: true schedule: $ref: '#/components/schemas/TransferRecurringSchedule' @@ -37944,7 +38009,7 @@ components: $ref: '#/components/schemas/BankTransferAmount' iso_currency_code: type: string - description: The currency of the transfer amount – should be set to "USD". + description: The currency of the transfer amount - should be set to "USD". description: type: string description: The transfer description. Maximum of 10 characters. @@ -37963,7 +38028,7 @@ components: origination_account_id: type: string nullable: true - description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. + description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. required: - idempotency_key - access_token @@ -38150,11 +38215,11 @@ components: A decision regarding the proposed transfer. - `approved` – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended. Refer to the `code` field in the `decision_rationale` object for details. + `approved` - The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended. Refer to the `code` field in the `decision_rationale` object for details. - `declined` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. + `declined` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. - `user_action_required` – An action is required before Plaid can assess the transfer risk and make a decision. The most common scenario is to update authentication for an Item. To complete the required action, initialize Link by setting `transfer.authorization_id` in the request of `/link/token/create`. After Link flow is completed, you may re-attempt the authorization request. + `user_action_required` - An action is required before Plaid can assess the transfer risk and make a decision. The most common scenario is to update authentication for an Item. To complete the required action, initialize Link by setting `transfer.authorization_id` in the request of `/link/token/create`. After Link flow is completed, you may re-attempt the authorization request. For `guarantee` requests, `approved` indicates the transfer is eligible for Plaid's guarantee, and `declined` indicates Plaid will not provide guarantee coverage for the transfer. `user_action_required` indicates you should follow the above guidance before re-attempting. enum: @@ -38607,7 +38672,7 @@ components: transfer_id: type: string title: TransferID - description: Plaid’s unique identifier for a transfer. + description: Plaid's unique identifier for a transfer. nullable: true account_id: type: string @@ -38622,7 +38687,7 @@ components: $ref: '#/components/schemas/TransferEventType' sweep_id: type: string - description: Plaid’s unique identifier for a sweep. + description: Plaid's unique identifier for a sweep. count: type: integer description: The maximum number of transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned. @@ -38761,7 +38826,7 @@ components: bank_transfer_id: type: string title: BankTransferID - description: Plaid’s unique identifier for a bank transfer. + description: Plaid's unique identifier for a bank transfer. nullable: true account_id: type: string @@ -38815,7 +38880,7 @@ components: `swept`: The transfer was swept to / from the sweep account. - `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer’s business checking account. + `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account. `return_swept`: Due to the transfer being returned, funds were pulled from or pushed back to the sweep account. @@ -38922,7 +38987,7 @@ components: properties: event_id: type: integer - description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers. + description: Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers. minimum: 0 timestamp: type: string @@ -38961,7 +39026,7 @@ components: refund_id: type: string nullable: true - description: Plaid’s unique identifier for a refund. A non-null value indicates the event is for the associated refund of the transfer. + description: Plaid's unique identifier for a refund. A non-null value indicates the event is for the associated refund of the transfer. originator_client_id: type: string nullable: true @@ -38969,7 +39034,7 @@ components: intent_id: type: string nullable: true - description: The `id` returned by the /transfer/intent/create endpoint, for transfers created via Transfer UI. For transfers not created by Transfer UI, the value is `null`. This will currently only be populated for RfP transfers. + description: The `id` returned by the `/transfer/intent/create` endpoint, for transfers created via Transfer UI. For transfers not created by Transfer UI, the value is `null`. This will currently only be populated for RfP transfers. wire_return_fee: type: string nullable: true @@ -39060,7 +39125,7 @@ components: properties: event_id: type: integer - description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers. + description: Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers. minimum: 0 timestamp: type: string @@ -40157,23 +40222,23 @@ components: expected_frequency: $ref: '#/components/schemas/OriginatorExpectedTransferFrequency' expected_highest_amount: - description: The originator’s expected highest amount for a single credit transfer. + description: The originator's expected highest amount for a single credit transfer. type: string expected_average_amount: - description: The originator’s expected average amount per credit. + description: The originator's expected average amount per credit. type: string expected_monthly_amount: - description: The originator’s monthly expected ACH credit processing amount for the next 6-12 months. + description: The originator's monthly expected ACH credit processing amount for the next 6-12 months. type: string sec_codes: description: |- - Specifies the expected use cases for the originator’s credit transfers. This should be a list that contains one or more of the following codes: + Specifies the expected use cases for the originator's credit transfers. This should be a list that contains one or more of the following codes: `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts - `"ppd"` - Prearranged Payment or Deposit. The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained from the consumer in person via writing, or through online authorization, or via an electronic document signing, e.g. Docusign. For example language for online authorization, see the 2025 Nacha Operating Rules — Section 2.3.2, Authorization of Entries via Electronic Means. Can be used for credits or debits. + `"ppd"` - Prearranged Payment or Deposit. The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained from the consumer in person via writing, or through online authorization, or via an electronic document signing, e.g. Docusign. For example language for online authorization, see the 2025 Nacha Operating Rules -- Section 2.3.2, Authorization of Entries via Electronic Means. Can be used for credits or debits. - `"web"` - Internet-Initiated Entry. The transfer debits a consumer’s bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. + `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. type: array items: $ref: '#/components/schemas/CreditACHClass' @@ -40197,7 +40262,7 @@ components: `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. - `"web"` - Internet-Initiated Entry. The transfer debits a consumer’s bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. + `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. TransferDebitUsageConfiguration: description: Specifies the originator's expected usage of debits. For all dollar amounts, use a decimal string with two digits of precision e.g. "10.00". This field is required if the originator is expected to process debit transfers. type: object @@ -40206,23 +40271,23 @@ components: expected_frequency: $ref: '#/components/schemas/OriginatorExpectedTransferFrequency' expected_highest_amount: - description: The originator’s expected highest amount for a single debit transfer. + description: The originator's expected highest amount for a single debit transfer. type: string expected_average_amount: - description: The originator’s expected average amount per debit. + description: The originator's expected average amount per debit. type: string expected_monthly_amount: - description: The originator’s monthly expected ACH debit processing amount for the next 6-12 months. + description: The originator's monthly expected ACH debit processing amount for the next 6-12 months. type: string sec_codes: description: |- - Specifies the expected use cases for the originator’s debit transfers. This should be a list that contains one or more of the following codes: + Specifies the expected use cases for the originator's debit transfers. This should be a list that contains one or more of the following codes: `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. - `"web"` - Internet-Initiated Entry. The transfer debits a consumer’s bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. + `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. `"tel"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call. type: array @@ -40366,7 +40431,7 @@ components: title: TransferRepaymentListResponse type: object additionalProperties: true - description: Defines the response schema for `/transfer/repayments/list` + description: Defines the response schema for `/transfer/repayment/list` properties: repayments: type: array @@ -40434,7 +40499,7 @@ components: title: TransferRepaymentReturnListResponse type: object additionalProperties: true - description: Defines the response schema for `/transfer/repayments/return/list` + description: Defines the response schema for `/transfer/repayment/return/list` properties: repayment_returns: type: array @@ -40552,7 +40617,7 @@ components: deprecated: true x-hidden-from-docs: true nullable: true - description: Plaid’s unique identifier for the origination account for the intent. If not provided, the default account will be used. + description: Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used. user: $ref: '#/components/schemas/TransferUserInRequest' metadata: @@ -40604,7 +40669,7 @@ components: nullable: true origination_account_id: type: string - description: Plaid’s unique identifier for the origination account for the intent. If not provided, the default account will be used. + description: Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used. deprecated: true x-hidden-from-docs: true funding_account_id: @@ -40679,9 +40744,9 @@ components: A decision regarding the proposed transfer. - `APPROVED` – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when `decision_rationale.code` is `ITEM_LOGIN_REQUIRED`). Refer to the `code` field in the `decision_rationale` object for details. + `APPROVED` - The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when `decision_rationale.code` is `ITEM_LOGIN_REQUIRED`). Refer to the `code` field in the `decision_rationale` object for details. - `DECLINED` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. + `DECLINED` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. nullable: true TransferIntentGet: title: TransferIntentGet @@ -40714,7 +40779,7 @@ components: nullable: true origination_account_id: type: string - description: Plaid’s unique identifier for the origination account used for the transfer. + description: Plaid's unique identifier for the origination account used for the transfer. deprecated: true x-hidden-from-docs: true funding_account_id: @@ -41143,7 +41208,7 @@ components: $ref: '#/components/schemas/TransferID' test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. + description: Plaid's unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. nullable: true event_type: type: string @@ -41183,7 +41248,7 @@ components: $ref: '#/components/schemas/TransferRefundID' test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. + description: Plaid's unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. nullable: true event_type: type: string @@ -41257,7 +41322,7 @@ components: $ref: '#/components/schemas/APISecret' test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. If provided, the sweep to be simulated is created on the day of the `virtual_time` on the `test_clock`. If the date of `virtual_time` is on weekend or a federal holiday, the next available banking day is used. + description: Plaid's unique identifier for a test clock. If provided, the sweep to be simulated is created on the day of the `virtual_time` on the `test_clock`. If the date of `virtual_time` is on weekend or a federal holiday, the next available banking day is used. nullable: true webhook: type: string @@ -41282,7 +41347,7 @@ components: description: Client ID of the end customer (i.e. the originator). Only applicable to Transfer for Platforms customers. test_clock_id: type: string - description: Plaid’s unique identifier for a test clock. If provided, only the pending balance that is due before the `virtual_timestamp` on the test clock will be converted. + description: Plaid's unique identifier for a test clock. If provided, only the pending balance that is due before the `virtual_time` on the test clock will be converted. nullable: true webhook: type: string @@ -41593,6 +41658,16 @@ components: - type: object additionalProperties: true properties: + name: + type: string + official_name: + type: string + nullable: true + mask: + type: string + nullable: true + verification_name: + type: string owners: type: array description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution; detecting whether the linked account is a business account is not currently supported. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29) @@ -41608,6 +41683,16 @@ components: - type: object additionalProperties: true properties: + name: + type: string + official_name: + type: string + nullable: true + mask: + type: string + nullable: true + verification_name: + type: string legal_name: $ref: '#/components/schemas/NameMatchScore' phone_number: @@ -41775,15 +41860,13 @@ components: - all LimitedPurposeTypes: title: LimitedPurposeTypes - x-hidden-from-docs: true type: array - description: An array of limited purpose types. When set, it will restrict which kinds of limited purpose checking accounts may be connected in Link. Only applicable when 'limited purpose checking' is in the subtypes filter. + description: An array of limited purpose types. Restricts which kinds of limited purpose checking accounts may be connected in Link to prevent users from connecting them for unsupported use cases. Required when 'limited purpose checking' is in the subtypes filter. items: $ref: '#/components/schemas/LimitedPurposeType' LimitedPurposeType: - x-hidden-from-docs: true type: string - description: A limited purpose type identifying the specific use case for limited purpose checking accounts. + description: A specific use case for a limited purpose checking account. Limited purpose checking accounts will reject or return ACH transactions that aren't for eligible use cases. For example, a `RENT_MORTGAGE` limited purpose checking account will reject ACH transactions that are not specifically rent or mortgage payments. enum: - RENT_MORTGAGE CreditAccountSubtype: @@ -42313,7 +42396,7 @@ components: - webhook_type - webhook_code - item_id - - status + - risk_signals_status - environment LinkTokenCreateRequestBaseReport: title: LinkTokenCreateRequestBaseReport @@ -44124,13 +44207,13 @@ components: type: string format: date description: |- - Maximum of all dates within the specific income sources in the user’s bank account for days requested by the client. + Maximum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). pay_frequency: $ref: '#/components/schemas/CreditBankIncomePayFrequency' total_amount: type: number - description: Total amount of earnings in the user’s bank account for the specific income source for days requested by the client. + description: Total amount of earnings in the user's bank account for the specific income source for days requested by the client. transaction_count: type: integer description: Number of transactions for the income source within the start and end date. @@ -44455,7 +44538,7 @@ components: title: CreditPayrollIncomeParsingConfigUpdateRequest type: object additionalProperties: true - description: CreditPayrollIncomeParsingConfigUpdateRequest defines the request schema for `/credit/payroll_income/documents/update`. + description: CreditPayrollIncomeParsingConfigUpdateRequest defines the request schema for `/credit/payroll_income/parsing_config/update`. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -44481,7 +44564,7 @@ components: title: CreditPayrollIncomeParsingConfigUpdateResponse type: object additionalProperties: true - description: CreditPayrollIncomeParsingConfigUpdateResponse defines the response schema for `/credit/payroll_income/documents/update`. + description: CreditPayrollIncomeParsingConfigUpdateResponse defines the response schema for `/credit/payroll_income/parsing_config/update`. properties: request_id: $ref: '#/components/schemas/RequestID' @@ -44707,7 +44790,7 @@ components: CreditAuditCopyTokenCreateResponse: type: object additionalProperties: true - description: CreditAuditCopyTokenCreateResponse defines the response schema for `/credit/audit_copy_token/get` + description: CreditAuditCopyTokenCreateResponse defines the response schema for `/credit/audit_copy_token/create` properties: audit_copy_token: type: string @@ -44803,7 +44886,7 @@ components: description: |- Signed URL to retrieve the document(s). The payload will be a .zip file containing the document(s). - For Payroll Income, the file type of the documents will always be PDF, and the documents may not be available, in which case the field will be `null`. If you would like Plaid to generate a PDF if the original is not available, contact your Account Manager. [Example generated pay stub](https://plaid.com/documents/plaid-generated-mock-paystub.pdf). + For Payroll Income, the file type of the documents will always be PDF, and the documents may not be available, in which case the field will be `null`. If you would like Plaid to generate a PDF if the original is not available, contact your account manager. [Example generated pay stub](https://plaid.com/documents/plaid-generated-mock-paystub.pdf). For Document Income, this field will not be `null`, and the file type of the underlying document(s) will be the original file type uploaded by the user. For more details on available file types, see the [Document Income](https://plaid.com/docs/income/payroll-income) documentation. @@ -45472,7 +45555,7 @@ components: nullable: true account_number: type: string - description: Account number number of recipient. + description: Account number of recipient. nullable: true facta_filing_requirement: type: string @@ -46618,7 +46701,7 @@ components: description: List of report token strings, with at most one token of each report type. Currently only Asset Report token is supported. items: type: string - description: The report token. It can only be an asset report token token. + description: The report token. It can only be an asset report token. nullable: false secondary_client_id: type: string @@ -46801,7 +46884,7 @@ components: ApplicationID: title: ApplicationID type: string - description: This field will map to the application ID that is returned from /item/application/list, or provided to the institution in an oauth redirect. + description: This field will map to the application ID that is returned from `/item/application/list`, or provided to the institution in an oauth redirect. Application: type: object description: Metadata about the application @@ -46834,27 +46917,27 @@ components: use_case: nullable: true type: string - description: A string representing client’s broad use case as assessed by Plaid. + description: A string representing client's broad use case as assessed by Plaid. company_legal_name: nullable: true type: string - description: A string representing the name of client’s legal entity. + description: A string representing the name of client's legal entity. city: nullable: true type: string - description: A string representing the city of the client’s headquarters. + description: A string representing the city of the client's headquarters. region: nullable: true type: string - description: A string representing the region of the client’s headquarters. + description: A string representing the region of the client's headquarters. postal_code: nullable: true type: string - description: A string representing the postal code of the client’s headquarters. + description: A string representing the postal code of the client's headquarters. country_code: nullable: true type: string - description: A string representing the country code of the client’s headquarters. + description: A string representing the country code of the client's headquarters. required: - application_id - join_date @@ -46953,7 +47036,7 @@ components: description: The unique account identifier for this account. This value must match that returned by the data access API for this account. type: string authorized: - description: Allow the application to see this account (and associated details, including balance) in the list of accounts If unset, defaults to `true`. + description: Allow the application to see this account (and associated details, including balance) in the list of accounts. If unset, defaults to `true`. type: boolean nullable: true default: true @@ -47315,11 +47398,11 @@ components: event_code: $ref: '#/components/schemas/ConsentEventCode' institution_id: - description: Unique identifier for the institution associated with the Item. Field is `null` for Items created via Same Day Micro-deposits. + description: Unique identifier for the institution associated with the Item. Field is `null` for Items created via Same-Day Micro-deposits. nullable: true type: string institution_name: - description: The full name of the institution associated with the Item. Field is `null` for Items created via Same Day Micro-deposits. + description: The full name of the institution associated with the Item. Field is `null` for Items created via Same-Day Micro-deposits. nullable: true type: string initiator: @@ -47373,7 +47456,7 @@ components: properties: account_id: type: string - description: Plaid’s unique identifier for the account. Like all Plaid identifiers, the `account_id` is case sensitive. + description: Plaid's unique identifier for the account. Like all Plaid identifiers, the `account_id` is case sensitive. mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number @@ -47550,7 +47633,7 @@ components: SandboxCraCashflowUpdatesUpdateRequest: title: SandboxCraCashflowUpdatesUpdateRequest type: object - description: SandboxCraCashflowUpdatesUpdateRequest defines the request schema for `/sandbox/cashflow_updates/update` + description: SandboxCraCashflowUpdatesUpdateRequest defines the request schema for `/sandbox/cra/cashflow_updates/update` properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -47579,7 +47662,7 @@ components: ItemApplicationListUserAuth: type: object nullable: true - description: User authentication parameters, for clients making a request without an `access_token`. This is only allowed for select clients and will not be supported in the future. Most clients should call /item/import to obtain an access token before making a request. + description: User authentication parameters, for clients making a request without an `access_token`. This is only allowed for select clients and will not be supported in the future. Most clients should call `/item/import` to obtain an access token before making a request. properties: user_id: nullable: true @@ -47592,7 +47675,7 @@ components: RiskReason: title: RiskReason type: object - description: This object includes a code and description to describe medium risk transactions and above on /accounts/balance/get. + description: This object includes a code and description to describe medium risk transactions and above on `/accounts/balance/get`. additionalProperties: true properties: code: @@ -47609,7 +47692,7 @@ components: - description TransferAuthorizationPaymentRisk: title: TransferAuthorizationPaymentRisk - description: This object includes the scores and risk level. This response is offered as an add-on to /transfer/authorization/create. To request access to these fields please contact your Plaid account manager. + description: This object includes the scores and risk level. This response is offered as an add-on to `/transfer/authorization/create`. To request access to these fields, please contact your Plaid account manager. type: object additionalProperties: true nullable: true @@ -48075,12 +48158,16 @@ components: `EXPIRED`: The transaction request has expired. `CANCELLED`: The transaction request was rescinded. `INVALID`: The transaction did not meet certain criteria, such as an inactive account or no valid counterparty, etc. + `ACCOUNT_INVALID`: The transaction could not be processed because the wallet account is invalid or inactive. + `AUTHENTICATION_FAILED`: The transaction could not be processed because authentication with the wallet provider failed. `UNKNOWN`: The transaction was unsuccessful, but the exact cause is unknown. enum: - EXTERNAL_SYSTEM - EXPIRED - CANCELLED - INVALID + - ACCOUNT_INVALID + - AUTHENTICATION_FAILED - UNKNOWN WalletTransactionPayeeVerificationStatus: type: string @@ -48246,6 +48333,8 @@ components: - FUNDS_SWEEP - RETURN - RECALL + - ACCOUNT_FUNDING + - AUTO_REFUND description: |- The type of the transaction. The supported transaction types that are returned are: `BANK_TRANSFER:` a transaction which credits an e-wallet through an external bank transfer. @@ -48261,6 +48350,10 @@ components: `RETURN`: an automated transaction where a debit transaction was reversed and money moved back to originating account. `RECALL`: a transaction where the sending bank has requested the return of funds due to a fraud claim, technical error, or other issue associated with the payment. + + `ACCOUNT_FUNDING`: an incoming transfer from an allowlisted account. Not automatically refunded. + + `AUTO_REFUND`: an outgoing refund automatically initiated by Plaid in response to an unexpected `BANK_TRANSFER`. scheme: $ref: '#/components/schemas/WalletPaymentScheme' amount: @@ -48305,7 +48398,7 @@ components: description: The transaction details TransactionsEnhanceGetRequest: type: object - description: TransactionsEnhanceGetRequest defines the request schema for `/transactions/enhance`. + description: TransactionsEnhanceGetRequest defines the request schema for `/beta/transactions/v1/enhance`. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -48783,12 +48876,12 @@ components: properties: financial_institution_insights: type: array - description: Insights related to a user’s transactions with other financial institutions, including detected account types. + description: Insights related to a user's transactions with other financial institutions, including detected account types. items: $ref: '#/components/schemas/FinancialInstitutionInsights' merchant_insights: type: array - description: Insights about a user’s top merchants, ranked by spend. + description: Insights about a user's top merchants, ranked by spend. items: $ref: '#/components/schemas/MerchantInsights' FinancialInstitutionInsights: @@ -48859,7 +48952,7 @@ components: - total_inflows MerchantInsights: type: object - description: Insights into a user’s top merchants. + description: Insights into a user's top merchants. properties: name: type: string @@ -49337,7 +49430,7 @@ components: `READY`: This Payment Profile is ready to be used to create transfers using `/transfer/authorization/create` and `/transfer/create`. - `PENDING`: This Payment Profile is not ready to be used. You’ll need to call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field to initiate the account linking experience. + `PENDING`: This Payment Profile is not ready to be used. You'll need to call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field to initiate the account linking experience. `REMOVED`: This Payment Profile has been removed. PaymentProfileRemoveRequest: @@ -49395,7 +49488,7 @@ components: - cra_partner_insights create_link_customization: description: |- - If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid Account Manager for assistance. + If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid account manager for assistance. Important: Data Transparency Messaging (DTM) use cases will not be copied to the end customer's Link customization unless the **Publish changes** button is clicked after the use cases are applied. Link will not work in Production unless the end customer's DTM use cases are configured. For more details, see [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/). type: boolean @@ -49638,7 +49731,7 @@ components: `ACTIVE`: The end customer has been fully enabled in all environments. - `DENIED`: The end customer has been created and enabled in the Sandbox environment, but it did not pass review by the Plaid team and therefore cannot be enabled for Production access. Talk to your Account Manager for more information. + `DENIED`: The end customer has been created and enabled in the Sandbox environment, but it did not pass review by the Plaid team and therefore cannot be enabled for Production access. Talk to your account manager for more information. PartnerEndCustomerSecrets: description: The secrets for the newly created end customer. type: object @@ -49740,7 +49833,7 @@ components: $ref: '#/components/schemas/Products' create_link_customization: description: |- - If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid Account Manager for assistance. + If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid account manager for assistance. Important: Data Transparency Messaging (DTM) use cases will not be copied to the end customer's Link customization unless the **Publish changes** button is clicked after the use cases are applied. Link will not work in Production unless the end customer's DTM use cases are configured. For more details, see [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/). type: boolean @@ -50165,7 +50258,7 @@ components: LinkDeliveryCallbackWebhook: title: LinkDeliveryCallbackWebhook x-hidden-from-docs: true - description: Webhook containing metadata proxied over from Link callback e.g `onEvent`, `onExit`, `onSuccess`. + description: Webhook containing metadata proxied over from Link callback e.g. `onEvent`, `onExit`, `onSuccess`. type: object additionalProperties: true properties: @@ -50341,7 +50434,7 @@ components: title: CashFlowUpdatesNSFWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update includes an NSF overdraft transaction. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update includes an NSF overdraft transaction. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50373,7 +50466,7 @@ components: title: CashFlowUpdatesNewIncomeStreamWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update includes a new income stream. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update includes a new income stream. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50405,7 +50498,7 @@ components: title: CashFlowUpdatesExpectedDepositMissedWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update detects that an expected deposit was missed. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects that an expected deposit was missed. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50437,7 +50530,7 @@ components: title: CashFlowUpdatesLowBalanceWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update detects a balance below $100. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a balance below $100. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50469,7 +50562,7 @@ components: title: CashFlowUpdatesLargeDepositWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update detects a deposit over $5,000. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a deposit over $5,000. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50501,7 +50594,7 @@ components: title: CashFlowUpdatesNewLoanPaymentWebhook type: object additionalProperties: true - description: For each user's item enabled for Cash Flow Updates, this webhook will fire when an update detects a new loan payment. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. + description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a new loan payment. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string @@ -50545,7 +50638,7 @@ components: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string - description: The `user_id` associated with the user whose data is being requested. This is received by calling `user/create`. + description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. insights: type: array items: @@ -50610,6 +50703,7 @@ components: error_message: 'The following products are not supported by this institution: Identity' error_type: BASE_REPORT_ERROR request_id: m8MDnv9okwxFNBV + environment: production properties: webhook_type: type: string @@ -50633,7 +50727,7 @@ components: CraBankIncomeCompleteWebhook: type: object title: CraBankIncomeCompleteWebhook - description: Fired when a bank income report has finished generating or failed to generate, triggered by calling `/cra/bank_income/get`. + description: Fired when a bank income report has finished generating or failed to generate, triggered by calling `/credit/bank_income/get`. additionalProperties: true properties: webhook_type: @@ -50668,7 +50762,7 @@ components: description: |- The result of the bank income report generation - `SUCCESS`: The bank income report was successfully generated and can be retrieved via `/cra/bank_income/get`. + `SUCCESS`: The bank income report was successfully generated and can be retrieved via `/credit/bank_income/get`. `FAILURE`: The bank income report failed to be generated CraBankIncomeErrorWebhook: @@ -50745,7 +50839,7 @@ components: CraCheckReportReadyWebhook: type: object title: CraCheckReportReadyWebhook - description: Fired when the Check Report are ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. + description: Fired when the Check Report is ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. additionalProperties: true properties: webhook_type: @@ -50883,7 +50977,7 @@ components: CraUserCheckReportReadyWebhook: type: object title: CraUserCheckReportReadyWebhook - description: Fired when the Check Report are ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. + description: Fired when the Check Report is ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. additionalProperties: true properties: webhook_type: @@ -50894,7 +50988,7 @@ components: description: '`USER_CHECK_REPORT_READY`' user_id: type: string - description: The `user_id` associated with the user whose data is being requested. This is received by calling `user/create`. + description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. successful_products: type: array description: Specifies a list of products that have successfully been generated for the report. @@ -50946,7 +51040,7 @@ components: CraUserCheckReportFailedWebhook: type: object title: CraUserCheckReportFailedWebhook - description: Fired when a Check Report has failed to generate + description: Fired when a Check Report has failed to generate. To get more details, call `/user/items/get` and check for non-null `error` objects on the associated Items in the response. These `error` objects will contain more details on why the Item is in an error state and how to resolve it. After resolving the errors, you can try to re-generate the report. additionalProperties: true properties: webhook_type: @@ -50957,7 +51051,7 @@ components: description: '`USER_CHECK_REPORT_FAILED`' user_id: type: string - description: The `user_id` associated with the user whose data is being requested. This is received by calling user/create. + description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. item_ids: type: array items: @@ -51065,7 +51159,7 @@ components: BankIncomeRefreshUpdateWebhook: type: object title: BankIncomeRefreshUpdateWebhook - description: Fired when a change to the user's income is detected. The `/credit/bank_income/refresh` endpoint that previously served this refresh is deprecated; to get updated income data, send the user through Link Update Mode so they can confirm their income sources, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To receive this webhook, subscribe in the [Dashboard](https://dashboard.plaid.com/developers/webhooks). + description: Fired when a change to the user's income is detected. The `/credit/bank_income/refresh` endpoint that previously served this refresh is deprecated; to get updated income data, send the user through Link's update mode so they can confirm their income sources, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To receive this webhook, subscribe in the [Dashboard](https://dashboard.plaid.com/developers/webhooks). additionalProperties: true properties: webhook_type: @@ -51093,7 +51187,7 @@ components: BankIncomeRefreshCompleteWebhook: type: object title: BankIncomeRefreshCompleteWebhook - description: Fired when a refreshed bank income report has finished generating or failed to generate. The `/credit/bank_income/refresh` endpoint that previously triggered this webhook is deprecated; to refresh Bank Income data, send the user through Link Update Mode, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To get this webhook, subscribe via the [Dashboard](https://dashboard.plaid.com/developers/webhooks). + description: Fired when a refreshed bank income report has finished generating or failed to generate. The `/credit/bank_income/refresh` endpoint that previously triggered this webhook is deprecated; to refresh Bank Income data, send the user through Link's update mode, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To get this webhook, subscribe via the [Dashboard](https://dashboard.plaid.com/developers/webhooks). additionalProperties: true properties: webhook_type: @@ -51162,7 +51256,7 @@ components: description: 'The query used to search for institutions. Emitted by: `SEARCH_INSTITUTION`.' request_id: type: string - description: 'The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation. Emitted by: all events.' + description: 'The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. Emitted by: all events.' mfa_type: type: string description: 'If set, the user has encountered one of the following MFA types: code, device, questions, selections. Emitted by: `SUBMIT_MFA` and `TRANSITION_VIEW` when `view_name` is `MFA`.' @@ -51213,7 +51307,7 @@ components: description: |- This webhook contains a summary of the events from a Link session and will be fired after the user finishes going through Link. If the user abandons the Link flow (i.e., closes the hosted link webpage or leaves Link open for too long without taking any action), the webhook will be fired 5-15 minutes after the last user interaction. A single Link session may occasionally generate multiple `EVENTS` webhooks. If this occurs, the new webhook will contain all previous events for the session, as well as new events that occurred since the previous `EVENTS` webhook was sent. If this occurs, events can be grouped using the `link_session_id` field and, if necessary, de-duplicated using the `event_id` field. - By default, the `EVENTS` webhook is sent only for sessions where the end user goes through a Hosted Link flow (including Link Recovery flows). If you would like to receive this webhook for sessions not using Hosted Link, contact your Account Manager or Support. This enablement will also cause you to receive the `SESSION_FINISHED` webhook for non-Hosted-Link sessions and to be able to use `/link/token/get` to receive events data for non-Hosted Link sessions. + By default, the `EVENTS` webhook is sent only for sessions where the end user goes through a Hosted Link flow (including Link Recovery flows). If you would like to receive this webhook for sessions not using Hosted Link, contact your account manager or support. This enablement will also cause you to receive the `SESSION_FINISHED` webhook for non-Hosted-Link sessions and to be able to use `/link/token/get` to receive events data for non-Hosted Link sessions. properties: webhook_type: type: string @@ -51339,10 +51433,10 @@ components: description: The identifier for the Link session. link_token: type: string - description: The link token used to create the Link session. + description: The `link_token` used to create the Link session. public_token: type: string - description: The public token corresponding to the item that was added. + description: The `public_token` corresponding to the Item that was added. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: @@ -51367,7 +51461,7 @@ components: description: |- Contains the state of a completed Link session, along with the public token(s) if available. - By default, this webhook is sent only for sessions enabled for the Hosted Link flow (including Link Recovery flows), a Multi-Item Link flow, or a Layer flow. If you would like to receive this webhook for other sessions, contact your Account Manager or Support. This enablement will also enable the `EVENTS` webhook for all Link sessions and the ability to use `/link/token/get` to retrieve events for non-Hosted-Link sessions. + By default, this webhook is sent only for sessions enabled for the Hosted Link flow (including Link Recovery flows), a Multi-Item Link flow, or a Layer flow. If you would like to receive this webhook for other sessions, contact your account manager or support. This enablement will also enable the `EVENTS` webhook for all Link sessions and the ability to use `/link/token/get` to retrieve events for non-Hosted-Link sessions. properties: webhook_type: type: string @@ -51383,7 +51477,7 @@ components: description: The identifier for the Link session. link_token: type: string - description: The link token used to create the Link session. + description: The `link_token` used to create the Link session. public_token: deprecated: true type: string @@ -51418,7 +51512,7 @@ components: title: HostedMMDVerificationWebhook type: object additionalProperties: true - description: Contains the state of a SMS same-day microdeposits verification session. + description: Contains the state of an SMS Same-Day Micro-deposits verification session. properties: webhook_type: type: string @@ -51428,7 +51522,7 @@ components: description: '`SMS_MICRODEPOSITS_VERIFICATION`' status: type: string - description: The final status of the same-day microdeposits verification. Will always be `MANUALLY_VERIFIED` or `VERIFICATION_FAILED`. + description: The final status of the Same-Day Micro-deposits verification. Will always be `MANUALLY_VERIFIED` or `VERIFICATION_FAILED`. item_id: $ref: '#/components/schemas/ItemId' account_id: @@ -51599,7 +51693,7 @@ components: type: boolean nullable: true default: true - description: If set to false, only 1 item must be healthy at the time of report creation. The default value is true, which would require all items to be healthy at the time of report creation. + description: 'By default (`true`), the asynchronous report generation fails unless all Items extract successfully. If set to `false`, the report will still be generated as long as at least one Item extracts successfully; extraction failures on the remaining Items are tolerated. This setting applies only to failures that occur during asynchronous extraction. It does not relax the synchronous check at call time: if any Item is already unhealthy when `/asset_report/create` is invoked, the request fails immediately regardless of this value.' AssetReportCreateResponse: type: object additionalProperties: true @@ -51902,7 +51996,7 @@ components: $ref: '#/components/schemas/NewUserID' item_id: type: string - description: The item ID to subscribe for Cash Flow Updates. + description: The Item ID to subscribe for Cash Flow Updates. webhook: type: string description: URL to which Plaid will send Cash Flow Updates webhooks, for example when the requested Cash Flow Updates report is ready. @@ -52113,7 +52207,7 @@ components: title: TotalMonthlyIncomeInsights type: object additionalProperties: true - description: Details about about the total monthly income + description: Details about the total monthly income properties: baseline_amount: type: number @@ -52301,7 +52395,7 @@ components: $ref: '#/components/schemas/ThirdPartyUserToken' item_ids: type: array - description: The item IDs to include in the Base Report. If not provided, all items associated with the user will be included. + description: The Item IDs to include in the Base Report. If not provided, all Items associated with the user will be included. nullable: true x-hidden-from-docs: true items: @@ -52352,7 +52446,7 @@ components: The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Account-owner information is not available. `TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable. - `USER_FRAUD_ALERT`: The User has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Note: when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer’s identity. + `USER_FRAUD_ALERT`: The User has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Note: when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer's identity. enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE @@ -52427,7 +52521,7 @@ components: title: AssetsProductReadyWebhook type: object additionalProperties: true - description: Fired when the Asset Report has been generated and `/asset_report/get` is ready to be called. If you attempt to retrieve an Asset Report before this webhook has fired, you’ll receive a response with the HTTP status code 400 and a Plaid error code of `PRODUCT_NOT_READY`. + description: Fired when the Asset Report has been generated and `/asset_report/get` is ready to be called. If you attempt to retrieve an Asset Report before this webhook has fired, you'll receive a response with the HTTP status code 400 and a Plaid error code of `PRODUCT_NOT_READY`. properties: webhook_type: type: string @@ -52456,6 +52550,7 @@ components: webhook_code: PRODUCT_READY asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05 report_type: FULL + environment: production AssetReportType: type: string description: Indicates either a Fast Asset Report, which will contain only current identity and balance information, or a Full Asset Report, which will also contain historical balance information and transaction data. @@ -52478,6 +52573,7 @@ components: error_message: 'the ''assets'' product is not enabled for the following access tokens: access-sandbox-fb88b20c-7b74-4197-8d01-0ab122dad0bc. please ensure that ''assets'' is included in the ''product'' array when initializing Link and create the Item(s) again.' error_type: ASSET_REPORT_ERROR request_id: m8MDnv9okwxFNBV + environment: production properties: webhook_type: type: string @@ -52538,7 +52634,7 @@ components: title: AssetReportUser type: object additionalProperties: true - description: The user object allows you to provide additional information about the user to be appended to the Asset Report. All fields are optional. The `first_name`, `last_name`, and `ssn` fields are required if you would like the Report to be eligible for Fannie Mae’s Day 1 Certainty™ program. + description: The user object allows you to provide additional information about the user to be appended to the Asset Report. All fields are optional. The `first_name`, `last_name`, and `ssn` fields are required if you would like the Report to be eligible for Fannie Mae's Day 1 Certainty™ program. properties: client_user_id: type: string @@ -52650,7 +52746,7 @@ components: date_last_updated: type: string format: date-time - description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. + description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. accounts: type: array description: Data about each of the accounts open on the Item. @@ -52671,7 +52767,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`. @@ -52705,7 +52801,22 @@ components: - verification_expired - verification_failed - database_matched - description: "The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only.\n\n`pending_automatic_verification`: The Item is pending automatic verification\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the micro-deposit.\n\n`automatically_verified`: The Item has successfully been automatically verified\t\n\n`manually_verified`: The Item has successfully been manually verified\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\n\n`database_matched`: The Item has successfully been verified using Plaid's data sources. Note: Database Match is currently a beta feature, please contact your account manager for more information.\t\n\t" + description: |- + The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only. + + `pending_automatic_verification`: The Item is pending automatic verification. + + `pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the micro-deposit. + + `automatically_verified`: The Item has successfully been automatically verified. + + `manually_verified`: The Item has successfully been manually verified. + + `verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. + + `verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. + + `database_matched`: The Item has successfully been verified using Plaid's data sources. Note: Database Match is currently a beta feature, please contact your account manager for more information. persistent_account_id: type: string description: A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This is currently an opt-in field and only supported for Chase Items. @@ -52877,7 +52988,7 @@ components: description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. name: type: string - description: The institution’s description of the transaction. + description: The institution's description of the transaction. quantity: type: number format: double @@ -52891,7 +53002,7 @@ components: format: double description: The value of the vested holdings as reported by the institution. amount: - description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. + description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: @@ -53009,7 +53120,7 @@ components: ticker_symbol: type: string nullable: true - description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available. + description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: nullable: true type: string @@ -53185,7 +53296,7 @@ components: $ref: '#/components/schemas/AffordabilityInsights' AffordabilityInsights: title: AffordabilityInsights - description: Affordability insights focus on providing signal on the ability of a borrower to repay their loan without experiencing financial strain. It provides insights on factors such a user's monthly income and expenses, disposable income, average expenditure, etc., helping lenders gauge the level of affordability of a borrower. + description: Affordability insights focus on providing signal on the ability of a borrower to repay their loan without experiencing financial strain. It provides insights on factors such as a user's monthly income and expenses, disposable income, average expenditure, etc., helping lenders gauge the level of affordability of a borrower. type: object nullable: true additionalProperties: true @@ -53429,7 +53540,7 @@ components: nullable: true description: |- The percentage of the user's monthly inflows that was spent on transactions that fall into the `LOAN_PAYMENTS` credit category within the given time window, across all the accounts in the report. For example, a value of 100 indicates that 100% of the inflows were spent on transactions that fall into the `LOAN_PAYMENTS` credit category. - If there's no available income for the giving time period, this field value will be `-1` + If there's no available income for the given time period, this field value will be `-1` NegativeBalanceInsights: title: NegativeBalanceInsights description: Insights into negative balance occurrences, including frequency, duration, and minimum balance details. @@ -53586,7 +53697,7 @@ components: description: |- The percentage of the total inflows that was spent in this expenses group, within the given time window across all the accounts in the report. For example, a value of 100 represents that 100% of the inflows were spent on transactions that fall into this expenditure group. - If there's no available income for the giving time period, this field value will be `-1`. + If there's no available income for the given time period, this field value will be `-1`. top_categories: type: array description: |- @@ -53835,7 +53946,7 @@ components: unofficial_currency_code: null TotalReportInflowAmount90d: type: object - description: Total amount of debit transactions into the report's account in the last 90 days. This field only takes into account USD transactions from the accounts. + description: Total amount of debit transactions into the report's accounts in the last 90 days. This field only takes into account USD transactions from the accounts. additionalProperties: true nullable: true properties: @@ -53953,7 +54064,7 @@ components: date_last_updated: type: string format: date-time - description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. + description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. item_id: $ref: '#/components/schemas/ItemId' accounts: @@ -53976,7 +54087,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. @@ -54189,7 +54300,7 @@ components: - end_date BaseReportId: title: BaseReportId - description: A unique ID identifying an Base Report. Like all Plaid identifiers, this ID is case sensitive. + description: A unique ID identifying a Base Report. Like all Plaid identifiers, this ID is case sensitive. type: string BaseReportTransaction: title: BaseReportTransaction @@ -54322,7 +54433,7 @@ components: description: Date of the most recent transaction for the account. days_available: type: integer - description: Number of days days available for the account. + description: Number of days available for the account. average_days_between_transactions: type: number description: Average number of days between sequential transactions @@ -54677,13 +54788,13 @@ components: description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. name: type: string - description: The institution’s description of the transaction. + description: The institution's description of the transaction. quantity: type: number format: double description: The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions. amount: - description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. + description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: @@ -54810,7 +54921,7 @@ components: ticker_symbol: type: string nullable: true - description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available. + description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: nullable: true type: string @@ -54845,7 +54956,7 @@ components: - type BeaconAccountRiskEvaluateRequest: title: BeaconAccountRiskEvaluateRequest - description: BeaconAccountRiskEvaluateRequest defines the request schema for `/v1/beacon/account_risk/risk/evaluate` + description: BeaconAccountRiskEvaluateRequest defines the request schema for `/beacon/account_risk/v1/evaluate` type: object x-hidden-from-docs: true properties: @@ -54871,7 +54982,7 @@ components: $ref: '#/components/schemas/SignalDevice' evaluate_time: type: string - description: The time the event for evaluation has occurred. Populate this field for backfilling data. If you don’t populate this field, we’ll use the timestamp at the time of receipt. Use ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). + description: The time the event for evaluation has occurred. Populate this field for backfilling data. If you don't populate this field, we'll use the timestamp at the time of receipt. Use ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). BeaconAccountRiskEvaluateRequestOptions: type: object description: An optional object to filter `/beacon/account_risk/v1/evaluate` results to a subset of the accounts on the linked Item. @@ -54938,7 +55049,7 @@ components: `plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days `plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid - For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact Sales or your Plaid account manager + For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager properties: days_since_first_plaid_connection: type: integer @@ -55141,7 +55252,7 @@ components: - no_data AccountMask: type: string - description: The last 2-4 numeric characters of this account’s account number. + description: The last 2-4 numeric characters of this account's account number. example: "4000" AddressPurposeLabel: description: |- @@ -55163,7 +55274,7 @@ components: `plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days `plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid - For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact Sales or your Plaid account manager + For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager properties: days_since_first_plaid_connection: type: integer @@ -55182,7 +55293,7 @@ components: example: false total_plaid_connections_count: type: integer - description: The total number of times the item has been connected to applications via Plaid + description: The total number of times the Item has been connected to applications via Plaid nullable: true example: 1 plaid_connections_count_7d: @@ -55372,7 +55483,7 @@ components: BeaconBankAccountInsights: type: object title: BeaconBankAccountInsights - description: Bank Account Insights encapsulate the risk insights for a single Bank Account linked to an Item that is assocaited with a Beacon User. + description: Bank Account Insights encapsulate the risk insights for a single Bank Account linked to an Item that is associated with a Beacon User. properties: account_id: type: string @@ -55973,7 +56084,7 @@ components: - beacon_user_id - access_token BeaconUserAccountInsightsGetResponse: - description: The response schema for `/beacon/user/account/insights/get` + description: The response schema for `/beacon/user/account_insights/get` additionalProperties: true properties: beacon_user_id: @@ -57146,12 +57257,12 @@ components: type: string title: DashboardUserID example: 54350110fedcbaf01234ffee - description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this id, use `/dashboard_user/get`. + description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this ID, use `/dashboard_user/get`. DashboardUserIDNullable: type: string title: DashboardUserID example: 54350110fedcbaf01234ffee - description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this id, use `/dashboard_user/get`. + description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this ID, use `/dashboard_user/get`. nullable: true DashboardUserListRequest: description: Request input for listing dashboard users @@ -57234,6 +57345,8 @@ components: - authenticity - image_quality - extracted_data + - fraud_analysis_details + - image_quality_details - aamva_verification additionalProperties: true DocumentAuthenticityMatchCode: @@ -57297,7 +57410,7 @@ components: description: Temporary URL that expires after 60 seconds for downloading the uncropped original image of the front of the document. nullable: true DocumentNameMatchCode: - description: A match summary describing the cross comparison between the subject's name, extracted from the document image, and the name they separately provided to identity verification attempt. + description: A match summary describing the cross comparison between the subject's name, extracted from the document image, and the name they separately provided to the identity verification attempt. type: string enum: - match @@ -57431,7 +57544,7 @@ components: $ref: '#/components/schemas/MatchSummaryCode' search_terms_version: type: integer - description: The version of the entity screening's `search_terms` that were compared when the entity screening hit was added. entity screening hits are immutable once they have been reviewed. If changes are detected due to updates to the entity screening's `search_terms`, the associated entity program, or the list's source data prior to review, the entity screening hit will be updated to reflect those changes. + description: The version of the entity screening's `search_terms` that were compared when the entity screening hit was added. Entity screening hits are immutable once they have been reviewed. If changes are detected due to updates to the entity screening's `search_terms`, the associated entity program, or the list's source data prior to review, the entity screening hit will be updated to reflect those changes. example: 1 required: - search_terms_version @@ -57694,6 +57807,20 @@ components: $ref: '#/components/schemas/InternalUID' source_uid: $ref: '#/components/schemas/SourceUID' + sub_programs: + type: array + description: | + Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN + entries these are the program codes published in the SDN list (for example `SDGT` for Specially + Designated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins, + `IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice, + so callers should treat unknown values as opaque strings rather than enum members. + items: + type: string + example: SDGT + example: + - SDGT + - SDNTK analysis: $ref: '#/components/schemas/EntityScreeningHitAnalysis' data: @@ -57707,6 +57834,7 @@ components: - list_code - plaid_uid - source_uid + - sub_programs additionalProperties: true EntityWatchlistScreeningHitID: type: string @@ -57739,7 +57867,7 @@ components: $ref: '#/components/schemas/EntityWatchlistScreeningReviewID' confirmed_hits: type: array - description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' dismissed_hits: @@ -57864,26 +57992,76 @@ components: nullable: true additionalProperties: true FraudAnalysisDetails: - x-hidden-from-docs: true nullable: true additionalProperties: true type: object description: Details about the fraud analysis performed on the document. properties: type_supported: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + Whether the submitted document type is supported for fraud analysis. + + `success` - The document type is supported. + + `failed` - The document type is not supported. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' portrait_presence_check: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + The outcome of the portrait presence check. + + `success` - A portrait was detected. + + `failed` - No portrait was detected. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' portrait_details_check: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + The outcome of the portrait details check including photo embedding and face landmark checks. + + `success` - The portrait passed all validity checks. + + `failed` - The portrait did not pass one or more validity checks. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' image_composition_check: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + The outcome of the image composition check. + + `success` - The image is a valid physical document capture. + + `failed` - The image appears to be a photograph of a screen or a digital forgery. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' integrity_check: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + The outcome of the integrity check for document security elements. + + `success` - Data is consistent across all checked security elements. + + `failed` - Inconsistencies were detected across one or more security elements. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' detail_check: - $ref: '#/components/schemas/FraudCheckOutcome' + description: |- + The outcome of the document detail check for correct styling and layout. + + `success` - The document passed all authenticity checks. + + `failed` - The document did not pass one or more authenticity checks. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcome' issue_date_check: - $ref: '#/components/schemas/FraudCheckOutcomeWithNoData' + description: |- + The outcome of the issue date validity check. + + `success` - The issue date is valid. + + `failed` - The issue date is invalid or could not be verified. + + `no_data` - The check could not be performed due to insufficient data. + allOf: + - $ref: '#/components/schemas/FraudCheckOutcomeWithNoData' required: - type_supported - portrait_presence_check @@ -57894,13 +58072,27 @@ components: - issue_date_check FraudCheckOutcome: type: string - description: The outcome of the fraud check. + description: |- + The outcome of the fraud check. + + + `success` - The check passed. + + `failed` - The check did not pass. enum: - success - failed FraudCheckOutcomeWithNoData: type: string - description: The outcome of the fraud check, when available. + description: |- + The outcome of the fraud check. + + + `success` - The check passed. + + `failed` - The check did not pass. + + `no_data` - The check could not be performed due to insufficient data. enum: - success - failed @@ -57981,7 +58173,7 @@ components: - failed - no_data IDNumberType: - description: A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see [Input Validation Rules](https://cognitohq.com/docs/flow/flow-hybrid-input-validation#id-numbers). + description: A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see [Input Validation Rules](https://plaid.com/docs/identity-verification/hybrid-input-validation/#id-numbers). type: string enum: - ar_dni @@ -58025,7 +58217,7 @@ components: type: string example: "123456789" title: IDNumberValue - description: Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see [Input Validation Rules](https://plaid.com/docs/identity-verification/hybrid-input-validation/#id-numbers). + description: Value of the identity document typed in by the user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see [Input Validation Rules](https://plaid.com/docs/identity-verification/hybrid-input-validation/#id-numbers). IDVProtectEvent: description: Information about a Protect event including Trust Index score and fraud attributes. type: object @@ -58051,7 +58243,7 @@ components: - fraud_attributes nullable: true IPAddress: - description: An IPv4 or IPV6 address. + description: An IPv4 or IPv6 address. type: string example: 192.0.2.42 title: IPAddress @@ -58085,7 +58277,7 @@ components: nullable: true IdentityVerification: type: object - description: A identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. + description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: @@ -58312,7 +58504,7 @@ components: $ref: '#/components/schemas/DeprecatedClientUserID' type: object IdentityVerificationCreateResponse: - description: A identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. + description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: @@ -58484,7 +58676,7 @@ components: required: - identity_verification_id IdentityVerificationGetResponse: - description: A identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. + description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: @@ -58718,7 +58910,7 @@ components: - selfie_check nullable: true IdentityVerificationRetryResponse: - description: A identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. + description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: @@ -58800,15 +58992,15 @@ components: The status of this Identity Verification attempt. - `active` - The Identity Verification attempt is incomplete. The user may have completed part of the session, but has neither failed or passed. + `active` - The Identity Verification attempt is incomplete. The user may have completed part of the session, but has neither failed nor passed. - `success` - The Identity Verification attempt has completed, passing all steps defined to the associated Identity Verification template + `success` - The Identity Verification attempt has completed, passing all steps defined to the associated Identity Verification template. `failed` - The user failed one or more steps in the session and was told to contact support. `expired` - The Identity Verification attempt was active for a long period of time without being completed and was automatically marked as expired. Note that sessions currently do not expire. Automatic expiration is expected to be enabled in the future. - `canceled` - The Identity Verification attempt was canceled, either via the dashboard by a user, or via API. The user may have completed part of the session, but has neither failed or passed. + `canceled` - The Identity Verification attempt was canceled, either via the dashboard by a user, or via API. The user may have completed part of the session, but has neither failed nor passed. `pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review. IdentityVerificationStepStatus: @@ -58838,7 +59030,7 @@ components: `success` - The Identity Verification attempt has completed this step. - `failed` - The user failed this step. This can either call the user to fail the session as a whole, or cause them to fallback to another step depending on how the Identity Verification template is configured. A failed step does not imply a failed session. + `failed` - The user failed this step. This can either cause the user to fail the session as a whole, or cause them to fall back to another step depending on how the Identity Verification template is configured. A failed step does not imply a failed session. `waiting_for_prerequisite` - The user needs to complete another step first, before they progress to this step. This step may never run, depending on if the user fails an earlier step or if the step is only run as a fallback. @@ -58977,25 +59169,51 @@ components: - low example: high ImageQualityDetails: - x-hidden-from-docs: true nullable: true additionalProperties: true type: object description: Details about the image quality of the document. properties: glare_check: - $ref: '#/components/schemas/ImageQualityOutcome' + description: |- + The outcome of the glare check. + + `success` - The image is free of glare. + + `failed` - The image contains glare that may obscure document details. + allOf: + - $ref: '#/components/schemas/ImageQualityOutcome' dimensions_check: - $ref: '#/components/schemas/ImageQualityOutcome' + description: |- + The outcome of the dimensions check. + + `success` - The image meets the minimum size and resolution requirements. + + `failed` - The image does not meet the minimum size or resolution requirements. + allOf: + - $ref: '#/components/schemas/ImageQualityOutcome' blur_check: - $ref: '#/components/schemas/ImageQualityOutcome' + description: |- + The outcome of the blur check. + + `success` - The image is sufficiently sharp. + + `failed` - The image is too blurry for analysis. + allOf: + - $ref: '#/components/schemas/ImageQualityOutcome' required: - glare_check - dimensions_check - blur_check ImageQualityOutcome: type: string - description: The outcome of the image quality check. + description: |- + The outcome of the image quality check. + + + `success` - The check passed. + + `failed` - The check did not pass. enum: - success - failed @@ -59714,6 +59932,10 @@ components: $ref: '#/components/schemas/RiskCheckEmailDomainIsDisposable' top_level_domain_is_suspicious: $ref: '#/components/schemas/RiskCheckEmailTopLevelDomainIsSuspicious' + is_edu: + $ref: '#/components/schemas/RiskCheckEmailIsEdu' + includes_date_of_birth: + $ref: '#/components/schemas/RiskCheckEmailIncludesDateOfBirth' linked_services: description: A list of online services where this email address has been detected to have accounts or other activity. type: array @@ -59736,6 +59958,8 @@ components: - domain_is_custom - domain_is_disposable - top_level_domain_is_suspicious + - is_edu + - includes_date_of_birth - linked_services nullable: true additionalProperties: true @@ -59779,8 +60003,24 @@ components: - "yes" - "no" - no_data + RiskCheckEmailIsEdu: + description: Indicates whether the email address domain is an educational institution domain if known. + example: no_data + type: string + enum: + - "yes" + - "no" + - no_data + RiskCheckEmailIncludesDateOfBirth: + description: Indicates whether the email address includes the date of birth or year of birth if known. + example: no_data + type: string + enum: + - "yes" + - "no" + - no_data RiskCheckFacialDuplicate: - description: Result summary object specifying values for the `facial_duplicate` attributes of risk check. + description: Result summary object specifying values for the `facial_duplicates` attributes of risk check. type: object properties: id: @@ -59819,7 +60059,7 @@ components: additionalProperties: true RiskCheckLinkedService: type: string - description: An enum indicating the type of a linked service. Note that `adult_sites` refers' to explicit video content, and includes a number of related services. + description: An enum indicating the type of a linked service. Note that `adult_sites` refers to explicit video content, and includes a number of related services. enum: - aboutme - adobe @@ -60071,7 +60311,7 @@ components: $ref: '#/components/schemas/MatchSummaryCode' search_terms_version: type: integer - description: The version of the screening's `search_terms` that were compared when the screening hit was added. screening hits are immutable once they have been reviewed. If changes are detected due to updates to the screening's `search_terms`, the associated program, or the list's source data prior to review, the screening hit will be updated to reflect those changes. + description: The version of the screening's `search_terms` that were compared when the screening hit was added. Screening hits are immutable once they have been reviewed. If changes are detected due to updates to the screening's `search_terms`, the associated program, or the list's source data prior to review, the screening hit will be updated to reflect those changes. example: 1 required: - search_terms_version @@ -60207,7 +60447,7 @@ components: description: Assessment of whether the selfie capture is of a real human being, as opposed to a picture of a human on a screen, a picture of a paper cut out, someone wearing a mask, or a deepfake. SelfieCapture: type: object - description: The image or video capture of a selfie. Only one of image or video URL will be populated per selfie. + description: The image or video capture of a selfie. Only one of `image_url` or `video_url` will be populated per selfie. In the vast majority of sessions Plaid records a short video of the user, so `video_url` is populated and `image_url` is `null`. `image_url` is only populated in the rare passive-liveness fallback case, where the user's device could not complete the standard video liveness capture (for example, a camera or streaming error) and submitted a single still image instead. properties: image_url: $ref: '#/components/schemas/SelfieCaptureImageURL' @@ -60220,12 +60460,12 @@ components: SelfieCaptureImageURL: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg - description: Temporary URL for downloading an image selfie capture. + description: Temporary URL for downloading a still-image selfie capture. This field is only populated when the session fell back to passive (image-based) liveness. For the majority of selfie checks this field is `null` and `video_url` is populated instead. nullable: true SelfieCaptureVideoURL: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm - description: Temporary URL for downloading a video selfie capture. + description: Temporary URL for downloading a video selfie capture. This is the standard selfie capture for Identity Verification. Plaid records a short video of the user during the Selfie Check liveness step, so this field is populated for the vast majority of selfie checks. nullable: true SelfieCheck: description: Additional information for the `selfie_check` step. This field will be `null` unless `steps.selfie_check` has reached a terminal state of either `success` or `failed`. @@ -60545,7 +60785,7 @@ components: `other` - Any document not covered by other categories - `passport` - An official passport issue by a government + `passport` - An official passport issued by a government `personal_identification` - Any generic personal identification that is not covered by other categories @@ -60842,7 +61082,7 @@ components: type: array items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' - description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. dismissed_hits: type: array items: @@ -60870,7 +61110,7 @@ components: $ref: '#/components/schemas/EntityWatchlistScreeningReviewID' confirmed_hits: type: array - description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' dismissed_hits: @@ -61005,6 +61245,20 @@ components: $ref: '#/components/schemas/InternalUID' source_uid: $ref: '#/components/schemas/SourceUID' + sub_programs: + type: array + description: | + Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN + entries these are the program codes published in the SDN list (for example `SDGT` for Specially + Designated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins, + `IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice, + so callers should treat unknown values as opaque strings rather than enum members. + items: + type: string + example: SDGT + example: + - SDGT + - SDNTK analysis: $ref: '#/components/schemas/ScreeningHitAnalysis' data: @@ -61018,6 +61272,7 @@ components: - list_code - plaid_uid - source_uid + - sub_programs additionalProperties: true WatchlistScreeningHitID: type: string @@ -61228,7 +61483,7 @@ components: description: ID of the associated screening. nullable: true WatchlistScreeningIndividualListRequest: - description: Request input for listinging watchlist screenings for individuals + description: Request input for listing watchlist screenings for individuals type: object properties: secret: @@ -61359,7 +61614,7 @@ components: type: array items: $ref: '#/components/schemas/WatchlistScreeningHitID' - description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. dismissed_hits: type: array items: @@ -61387,7 +61642,7 @@ components: $ref: '#/components/schemas/WatchlistScreeningReviewID' confirmed_hits: type: array - description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/WatchlistScreeningHitID' dismissed_hits: @@ -61540,7 +61795,7 @@ components: $ref: '#/components/schemas/WatchlistScreeningReviewID' confirmed_hits: type: array - description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once dismissed. In most cases, confirmed hits indicate that the customer should be rejected. + description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/WatchlistScreeningHitID' dismissed_hits: @@ -61697,7 +61952,7 @@ components: The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Account-owner information is not available. `TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable. - `USER_FRAUD_ALERT`: The user has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Please note that when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer’s identity. + `USER_FRAUD_ALERT`: The user has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Please note that when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer's identity. enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE @@ -61757,6 +62012,8 @@ components: description: If data from the report was unable to be retrieved, the warnings object will contain information about the error that caused the data to be incomplete. items: $ref: '#/components/schemas/CraBankIncomeWarning' + required: + - income_streams CraBankIncomeItem: type: object description: The details and metadata for an end user's Item. @@ -61800,7 +62057,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. @@ -61883,13 +62140,13 @@ components: type: string format: date description: |- - Maximum of all dates within the specific income sources in the user’s bank account for days requested by the client. + Maximum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). pay_frequency: $ref: '#/components/schemas/CreditBankIncomePayFrequency' total_amount: type: number - description: Total amount of earnings in the user’s bank account for the specific income source for days requested by the client. + description: Total amount of earnings in the user's bank account for the specific income source for days requested by the client. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: @@ -61902,7 +62159,7 @@ components: format: date nullable: true description: |- - The expected date of the end user’s next paycheck for the income source. + The expected date of the end user's next paycheck for the income source. The date will be returned in an ISO 8601 format (YYYY-MM-DD). status: $ref: '#/components/schemas/CraBankIncomeStatus' @@ -62565,7 +62822,7 @@ components: CraCheckReportPartnerInsightsGetRequest: title: CraCheckReportPartnerInsightsGetRequest type: object - description: CraPartnerInsightsGetRequest defines the request schema for `/cra/partner_insights/get`. + description: CraCheckReportPartnerInsightsGetRequest defines the request schema for `/cra/check_report/partner_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -62703,22 +62960,32 @@ components: score: type: integer description: Numeric value of the base FICO score. + reason_codes: + type: array + items: + type: string + maxItems: 4 + description: Reason codes associated with the score, in priority order. May contain up to 4 items. reason_code_1: type: string nullable: true - description: The first reason code associated with the score. + deprecated: true + description: Deprecated. Use `reason_codes` instead. The first reason code associated with the score. reason_code_2: type: string nullable: true - description: The second reason code associated with the score. + deprecated: true + description: Deprecated. Use `reason_codes` instead. The second reason code associated with the score. reason_code_3: type: string nullable: true - description: The third reason code associated with the score. + deprecated: true + description: Deprecated. Use `reason_codes` instead. The third reason code associated with the score. reason_code_4: type: string nullable: true - description: The fourth reason code associated with the score. + deprecated: true + description: Deprecated. Use `reason_codes` instead. The fourth reason code associated with the score. did_inquiries_adversely_affect_score: type: boolean nullable: true @@ -62891,38 +63158,58 @@ components: score: type: integer description: Numeric value of the UltraFICO score. + negative_reason_codes: + type: array + items: + type: string + maxItems: 4 + description: Negative reason codes associated with the score (reasons the score moved downward), in priority order. May contain up to 4 items. + positive_reason_codes: + type: array + items: + type: string + maxItems: 4 + description: Positive reason codes associated with the score (reasons the score moved upward), in priority order. May contain up to 4 items. reason_code_1: type: string nullable: true - description: The first reason code associated with the score. + deprecated: true + description: Deprecated. Use `negative_reason_codes` instead. The first reason code associated with the score. reason_code_2: type: string nullable: true - description: The second reason code associated with the score. + deprecated: true + description: Deprecated. Use `negative_reason_codes` instead. The second reason code associated with the score. reason_code_3: type: string nullable: true - description: The third reason code associated with the score. + deprecated: true + description: Deprecated. Use `negative_reason_codes` instead. The third reason code associated with the score. reason_code_4: type: string nullable: true - description: The fourth reason code associated with the score. + deprecated: true + description: Deprecated. Use `negative_reason_codes` instead. The fourth reason code associated with the score. positive_reason_code_1: type: string nullable: true - description: The first positive reason code associated with the score. + deprecated: true + description: Deprecated. Use `positive_reason_codes` instead. The first positive reason code associated with the score. positive_reason_code_2: type: string nullable: true - description: The second positive reason code associated with the score. + deprecated: true + description: Deprecated. Use `positive_reason_codes` instead. The second positive reason code associated with the score. positive_reason_code_3: type: string nullable: true - description: The third positive reason code associated with the score. + deprecated: true + description: Deprecated. Use `positive_reason_codes` instead. The third positive reason code associated with the score. positive_reason_code_4: type: string nullable: true - description: The fourth positive reason code associated with the score. + deprecated: true + description: Deprecated. Use `positive_reason_codes` instead. The fourth positive reason code associated with the score. did_inquiries_adversely_affect_score: type: boolean nullable: true @@ -62981,7 +63268,7 @@ components: title: CraCheckReportPartnerInsightsGetResponse additionalProperties: true type: object - description: CraPartnerInsightsGetResponse defines the response schema for `/cra/partner_insights/get`. + description: CraCheckReportPartnerInsightsGetResponse defines the response schema for `/cra/check_report/partner_insights/get`. properties: report: $ref: '#/components/schemas/CraPartnerInsights' @@ -63032,16 +63319,16 @@ components: description: The name of the institution the user linked. item_id: type: string - description: The identifier for the item. + description: The identifier for the Item. accounts: type: array - description: A list of accounts in the item + description: A list of accounts in the Item. items: $ref: '#/components/schemas/CraPartnerInsightsItemAccount' CraPartnerInsightsItemAccount: type: object additionalProperties: true - description: Account data corresponding to the item from which Partner Insights were generated from + description: Account data corresponding to the Item from which Partner Insights were generated. properties: account_id: type: string @@ -63130,6 +63417,10 @@ components: properties: version: type: integer + description: The version of Prism Data's insights model used. This field is deprecated in favor of `model_version`. + deprecated: true + model_version: + type: string description: The version of Prism Data's insights model used. result: $ref: '#/components/schemas/PrismInsightsResult' @@ -63576,7 +63867,7 @@ components: nullable: true reason_codes: type: array - description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid Account Manager. Different LendScore versions will use different sets of reason codes. + description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes. items: type: string error_reason: @@ -63595,7 +63886,7 @@ components: nullable: true reason_codes: type: array - description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid Account Manager. Different LendScore versions will use different sets of reason codes. + description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes. items: type: string variant: @@ -63631,7 +63922,7 @@ components: title: CraCheckReportNetworkInsightsGetResponse additionalProperties: true type: object - description: CraCheckReportNetworkInsightsGetResponse defines the response schema for `/cra/check_report/network_attributes/get`. + description: CraCheckReportNetworkInsightsGetResponse defines the response schema for `/cra/check_report/network_insights/get`. properties: report: $ref: '#/components/schemas/CraNetworkInsightsReport' @@ -63725,6 +64016,7 @@ components: enum: - VOA - EMPLOYMENT_REFRESH + - INCOME CraCheckReportVerificationGetEmploymentRefreshOptions: title: CraCheckReportVerificationGetEmploymentRefreshOptions type: object @@ -63762,6 +64054,7 @@ components: enum: - voa - employment_refresh + - income CraCheckReportVerificationPdfGetRequest: title: CraCheckReportVerificationPdfGetRequest type: object @@ -63776,11 +64069,20 @@ components: third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' report_requested: - $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' + deprecated: true + allOf: + - $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' + - description: Deprecated. Use `reports_requested` instead. + reports_requested: + type: array + description: | + Specifies which types of verification reports to include in the returned PDF. Supported combinations are: `[voa]`, `[employment_refresh]`, `[income]`, or `[voa, income]`. Other combinations are not supported. + items: + $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' + minItems: 1 + uniqueItems: true user_token: $ref: '#/components/schemas/UserToken' - required: - - report_requested CraCheckReportVerificationPdfGetResponse: format: binary type: string @@ -63805,6 +64107,8 @@ components: $ref: '#/components/schemas/CraVoaReport' employment_refresh: $ref: '#/components/schemas/CraEmploymentRefreshReport' + income: + $ref: '#/components/schemas/CraVerificationIncomeReport' required: - report_id CraVoaReportAttributes: @@ -63868,7 +64172,7 @@ components: last_update_time: type: string format: date-time - description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. + description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. required: - accounts - institution_name @@ -63884,7 +64188,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. @@ -64119,7 +64423,7 @@ components: last_update_time: type: string format: date-time - description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. + description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. required: - accounts - institution_name @@ -64135,7 +64439,7 @@ components: account_id: type: string description: |- - Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. @@ -64191,6 +64495,372 @@ components: - date - pending - transaction_id + CraVerificationIncomeReport: + title: CraVerificationIncomeReport + type: object + description: An object representing an Income Report within the Home Lending Report. + additionalProperties: true + nullable: true + properties: + generated_time: + type: string + format: date-time + description: The time when the Home Lending Income Report was generated. + days_requested: + type: integer + description: The number of days requested by the customer for the Home Lending Income Report. + user_summary: + $ref: '#/components/schemas/CraVerificationIncomeUserSummary' + income_streams: + type: array + description: The list of income streams for this user. + items: + $ref: '#/components/schemas/CraVerificationIncomeStream' + items: + type: array + description: The list of Items in the report along with the associated metadata about the Item. + items: + $ref: '#/components/schemas/CraVerificationIncomeItem' + required: + - generated_time + - days_requested + - user_summary + - income_streams + - items + CraVerificationIncomeUserSummary: + title: CraVerificationIncomeUserSummary + type: object + additionalProperties: true + nullable: true + description: Aggregated summary of all income streams for this user. + properties: + income_metrics: + type: array + description: List of a user's aggregated income metrics for each currency. + items: + $ref: '#/components/schemas/CraVerificationIncomeMetrics' + required: + - income_metrics + CraVerificationIncomeMetrics: + title: CraVerificationIncomeMetrics + type: object + additionalProperties: true + description: Modeled income metrics for a given income stream or user summary. + properties: + current: + $ref: '#/components/schemas/CraVerificationModeledIncome' + iso_currency_code: + $ref: '#/components/schemas/CreditIsoCurrencyCode' + unofficial_currency_code: + $ref: '#/components/schemas/CreditUnofficialCurrencyCode' + required: + - current + - iso_currency_code + - unofficial_currency_code + CraVerificationModeledIncome: + title: CraVerificationModeledIncome + type: object + additionalProperties: true + nullable: true + description: Modeled estimate of current income based on recently observed income transactions. + properties: + monthly: + $ref: '#/components/schemas/CraVerificationIncomeValues' + annual: + $ref: '#/components/schemas/CraVerificationIncomeValues' + required: + - monthly + - annual + CraVerificationIncomeValues: + title: CraVerificationIncomeValues + type: object + additionalProperties: true + description: Modeled income values for a given time period. + properties: + gross_income: + type: number + format: double + description: Gross Income modeled from trends of observed transactions. + net_income: + type: number + format: double + description: Net Income estimated from observed transactions. + required: + - gross_income + - net_income + CraVerificationIncomeStream: + title: CraVerificationIncomeStream + type: object + additionalProperties: true + description: An income stream detected for the user. + properties: + income_stream_id: + type: string + description: A unique identifier for an income stream. If the report is regenerated and a new `report_id` is created, the new report will have a new set of `income_stream_id`s. + start_date: + type: string + format: date + description: Minimum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). + end_date: + type: string + format: date + description: Maximum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). + description: + type: string + description: The most common name or original description for the underlying income transactions. + insights: + $ref: '#/components/schemas/CraVerificationIncomeStreamInsights' + income_metrics: + $ref: '#/components/schemas/CraVerificationIncomeMetrics' + transactions: + type: array + description: The transactions data for the income stream ordered by ascending date. + items: + $ref: '#/components/schemas/CraVerificationIncomeTransaction' + required: + - income_stream_id + - start_date + - end_date + - description + - insights + - income_metrics + - transactions + CraVerificationIncomeStreamInsights: + title: CraVerificationIncomeStreamInsights + type: object + additionalProperties: true + description: Modeled insights for a given income stream. + properties: + income_category: + $ref: '#/components/schemas/CraVerificationIncomeCategory' + pay_frequency: + $ref: '#/components/schemas/CraVerificationIncomePayFrequency' + income_provider: + $ref: '#/components/schemas/CraVerificationIncomeProvider' + status: + $ref: '#/components/schemas/CraVerificationIncomeStatus' + next_payment: + $ref: '#/components/schemas/CraVerificationIncomeNextPayment' + required: + - income_category + - pay_frequency + - income_provider + - status + - next_payment + CraVerificationIncomeCategory: + title: CraVerificationIncomeCategory + type: object + additionalProperties: true + description: |- + The income category for a given stream. The streams returned in the response will be filtered based on these primary and secondary income categories. + + See the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories. + properties: + primary: + type: string + description: A high level category that communicates the broad category of the stream. + secondary: + type: string + description: A granular category conveying the stream's intent. + required: + - primary + - secondary + CraVerificationIncomePayFrequency: + title: CraVerificationIncomePayFrequency + type: string + description: |- + The income pay frequency. + `WEEKLY`: Weekly pay frequency. + `BIWEEKLY`: Biweekly pay frequency. + `SEMI_MONTHLY`: Semi-monthly pay frequency. + `MONTHLY`: Monthly pay frequency. + `DAILY`: Daily pay frequency. + `UNKNOWN`: Pay frequency is unknown. + enum: + - WEEKLY + - BIWEEKLY + - SEMI_MONTHLY + - MONTHLY + - DAILY + - UNKNOWN + CraVerificationIncomeProvider: + title: CraVerificationIncomeProvider + type: object + additionalProperties: true + nullable: true + description: The object containing data about the income provider. + properties: + name: + type: string + description: The name of the income provider. + is_normalized: + type: boolean + description: Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers. + required: + - name + - is_normalized + CraVerificationIncomeStatus: + title: CraVerificationIncomeStatus + type: string + description: |- + The status of the income source. + `ACTIVE`: The income source is active. + `INACTIVE`: The income source is inactive. + `UNKNOWN`: The income source status is unknown. + enum: + - ACTIVE + - INACTIVE + - UNKNOWN + CraVerificationIncomeNextPayment: + title: CraVerificationIncomeNextPayment + type: object + additionalProperties: true + nullable: true + description: Metadata of the income stream's next payment. + properties: + date: + type: string + format: date + description: The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD). + required: + - date + CraVerificationIncomeTransaction: + title: CraVerificationIncomeTransaction + type: object + additionalProperties: true + description: The transaction data for an income stream. + properties: + transaction_id: + type: string + description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. + item_id: + $ref: '#/components/schemas/ItemId' + account_id: + type: string + description: |- + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + + If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. + + Like all Plaid identifiers, the `account_id` is case sensitive. + amount: + type: number + format: double + description: |- + The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`. + Positive values when money moves out of the account; negative values when money moves in. + For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative. + date: + type: string + format: date + description: |- + For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. + Both dates are returned in an ISO 8601 format (YYYY-MM-DD). + original_description: + type: string + description: The string returned by the financial institution to describe the transaction. + iso_currency_code: + $ref: '#/components/schemas/CreditIsoCurrencyCode' + unofficial_currency_code: + $ref: '#/components/schemas/CreditUnofficialCurrencyCode' + outlier: + $ref: '#/components/schemas/CraVerificationIncomeTransactionOutlier' + required: + - transaction_id + - item_id + - account_id + - amount + - date + - original_description + - iso_currency_code + - unofficial_currency_code + - outlier + CraVerificationIncomeTransactionOutlier: + title: CraVerificationIncomeTransactionOutlier + type: object + additionalProperties: true + description: Metadata on whether this income transaction is an outlier. + properties: + is_outlier: + type: boolean + description: Indicates whether an income transaction amount is unusually high compared to the amounts for that stream. + amount: + type: number + format: double + nullable: true + description: The amount that the transaction differs from the stream average transaction amount. + required: + - is_outlier + CraVerificationIncomeItem: + title: CraVerificationIncomeItem + type: object + additionalProperties: true + description: The details and metadata for an end user's Item within the Home Lending Income Report. + properties: + item_id: + $ref: '#/components/schemas/ItemId' + accounts: + type: array + description: The Item's accounts that have bank income data. + items: + $ref: '#/components/schemas/CraVerificationIncomeAccount' + last_updated_time: + type: string + format: date-time + description: The time when this Item's data was last retrieved from the financial institution. + institution_id: + type: string + description: The unique identifier of the institution associated with the Item. + institution_name: + type: string + description: The name of the institution associated with the Item. + required: + - item_id + - accounts + - last_updated_time + - institution_id + - institution_name + CraVerificationIncomeAccount: + title: CraVerificationIncomeAccount + type: object + additionalProperties: true + description: Account information within the Home Lending Income Report. + properties: + account_id: + type: string + description: |- + Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. + + If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. + + Like all Plaid identifiers, the `account_id` is case sensitive. + mask: + type: string + description: |- + The last 2-4 alphanumeric characters of an account's official account number. + Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. + nullable: true + metadata: + $ref: '#/components/schemas/CraBankIncomeAccountMetadata' + name: + type: string + description: The name of the account, either assigned by the user or by the financial institution itself. + official_name: + type: string + description: The official name of the account as given by the financial institution. + nullable: true + subtype: + $ref: '#/components/schemas/AccountSubtype' + type: + $ref: '#/components/schemas/AccountType' + required: + - account_id + - mask + - metadata + - name + - official_name + - subtype + - type CraLoansApplicationsRegisterRequest: type: object description: CraLoansApplicationsRegisterRequest defines the request schema for `/cra/loans/applications/register`. @@ -64390,7 +65060,7 @@ components: type: integer description: |- The number of days the loan was delinquent at the end of the pay period. - If specified, should be greater of equal to 0. + If specified, should be greater than or equal to 0. amount_past_due: type: number description: The amount past due or the charge-off amount of the loan at the end of the payment period. @@ -64583,6 +65253,8 @@ components: $ref: '#/components/schemas/CraCreditProfileReport' request_id: $ref: '#/components/schemas/RequestID' + user_id: + $ref: '#/components/schemas/NewUserID' warnings: type: array description: If the report generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing @@ -64685,7 +65357,7 @@ components: title: AssetReportFreddieGetRequest type: object additionalProperties: true - description: AssetReportFreddieGetRequest defines the request schema for `credit/asset_report/freddie_mac/get` + description: AssetReportFreddieGetRequest defines the request schema for `/credit/asset_report/freddie_mac/get` properties: audit_copy_token: type: string @@ -64700,7 +65372,7 @@ components: title: AssetReportFreddieGetResponse type: object additionalProperties: true - description: AssetReportFreddieGetResponse defines the response schema for `/asset_report/get` + description: AssetReportFreddieGetResponse defines the response schema for `/credit/asset_report/freddie_mac/get` properties: DEAL: $ref: '#/components/schemas/AssetReportFreddie' @@ -64824,7 +65496,7 @@ components: title: NAME type: object additionalProperties: true - description: Parent container for name that allows for choice group between parsed and unparsed containers.Parent container for name that allows for choice group between parsed and unparsed containers. + description: Parent container for name that allows for choice group between parsed and unparsed containers. properties: FirstName: type: string @@ -64849,7 +65521,7 @@ components: title: Role type: object additionalProperties: true - description: ADocumentation not found in the MISMO model viewer and not provided by Freddie Mac. + description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ROLE_DETAIL: $ref: '#/components/schemas/RoleDetail' @@ -64868,7 +65540,7 @@ components: PartyRoleType: title: PartyRoleType type: string - description: A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction.A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction. + description: A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction. enum: - Borrower TaxpayerIdentifiers: @@ -64947,7 +65619,7 @@ components: title: ReportingInformation type: object additionalProperties: true - description: Information about an report identifier and a report name. + description: Information about a report identifier and a report name. properties: ReportingInformationIdentifier: type: string @@ -65057,7 +65729,7 @@ components: AssetCurrentBalanceAmount: type: number format: double - description: A vendor created unique Identifier + description: Asset Account Current Balance. AssetHoldingBalanceAmount: type: number format: double @@ -65108,7 +65780,7 @@ components: AssetTypeAdditionalDescription: type: string nullable: true - description: Additional Asset Decription some examples are Investment Tax-Deferred , Loan, 401K, 403B, Checking, Money Market, Credit Card,ROTH,529,Biller,ROLLOVER,CD,Savings,Investment Taxable, IRA, Mortgage, Line Of Credit. + description: Additional Asset Description. Some examples are Investment Tax-Deferred, Loan, 401K, 403B, Checking, Money Market, Credit Card, ROTH, 529, Biller, ROLLOVER, CD, Savings, Investment Taxable, IRA, Mortgage, Line Of Credit. AssetDaysRequestedCount: type: integer description: The Number of days requested made to the Financial Institution. Example When looking for 3 months of data from the FI, pass in 90 days. @@ -65161,7 +65833,7 @@ components: type: array items: $ref: '#/components/schemas/AssetOwner' - description: Multiple Occurances of Account Owners Full Name up to 4. + description: A list of up to 4 account owners' full names. required: - ASSET_OWNER AssetOwner: @@ -65303,7 +65975,7 @@ components: type: array items: $ref: '#/components/schemas/AssetTransactionDescription' - description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. + description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. Note that "DESCRIPTON" is an intentional misspelling matching the upstream MISMO field name. required: - ASSET_TRANSACTION_DETAIL - ASSET_TRANSACTION_DESCRIPTON @@ -65506,7 +66178,7 @@ components: properties: AssetTransactionDescription: type: string - description: Asset Transaction Description String up to 3 occurances 1 required. + description: Asset Transaction Description String up to 3 occurrences 1 required. required: - AssetTransactionDescription ValidationSources: @@ -65558,7 +66230,7 @@ components: StatusCode: type: string nullable: true - description: Satus Code. + description: Status Code. StatusDescription: type: string nullable: true @@ -65569,7 +66241,7 @@ components: CreditFreddieMacReportsGetRequest: title: CreditFreddieMacReportsGetRequest type: object - description: CreditFreddieMacReportsGetRequest defines the request schema for `credit/asset_report/freddie_mac/get` + description: CreditFreddieMacReportsGetRequest defines the request schema for `/credit/freddie_mac/reports/get` properties: audit_copy_token: type: string @@ -65633,7 +66305,7 @@ components: $ref: '#/components/schemas/CreditFreddieMacLoanIdentifiers' LoanRoleType: type: string - description: Type of loan. The value can only be "SubjectLoan" + description: Type of loan. The value can only be "SubjectLoan". required: - LOAN_IDENTIFIERS - LoanRoleType @@ -65694,14 +66366,14 @@ components: title: CreditFreddieMacReportingInformation type: object additionalProperties: true - description: Information about an report identifier and a report name. + description: Information about a report identifier and a report name. properties: ReportDateTime: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. ReportIdentifierType: type: string - description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. The value can only be "ReportID" + description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. The value can only be "ReportID". ReportingInformationParentIdentifier: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. @@ -66111,13 +66783,13 @@ components: type: string nullable: true maxLength: 512 - description: Additional context or details about the reason for removing the item. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`. + description: Additional context or details about the reason for removing the Item. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`. required: - access_token ItemRemoveReasonCode: type: string description: | - The reason for removing the item + The reason for removing the Item `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud `FRAUD_FALSE_IDENTITY`: The end user created the connection using false identity information or stolen credentials @@ -66205,7 +66877,7 @@ components: $ref: '#/components/schemas/APISecret' public_token: type: string - description: Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/item/public_token/create`. + description: Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/public_token/create`. required: - public_token ItemPublicTokenExchangeResponse: @@ -66301,7 +66973,7 @@ components: `AUTOMATED_MICRODEPOSITS`: The Item's Auth data was provided via the Automated Micro-deposits flow. - `SAME_DAY_MICRODEPOSITS`: The Item's Auth data was provided via the Same Day Micro-deposits flow. + `SAME_DAY_MICRODEPOSITS`: The Item's Auth data was provided via the Same-Day Micro-deposits flow. `INSTANT_MICRODEPOSITS`: The Item's Auth data was provided via the Instant Micro-deposits flow. @@ -66339,14 +67011,14 @@ components: required: - user_id - auth_token - description: Object of user ID and auth token pair, permitting Plaid to aggregate a user’s accounts + description: Object of user ID and auth token pair, permitting Plaid to aggregate a user's accounts properties: user_id: type: string description: Opaque user identifier auth_token: type: string - description: Authorization token Plaid will use to aggregate this user’s accounts + description: Authorization token Plaid will use to aggregate this user's accounts ItemImportResponse: type: object additionalProperties: true @@ -66368,11 +67040,11 @@ components: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution_id: - description: The Plaid Institution ID associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same Day Micro-deposits. + description: The Plaid Institution ID associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same-Day Micro-deposits. type: string nullable: true institution_name: - description: The name of the institution associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same Day Micro-deposits. + description: The name of the institution associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same-Day Micro-deposits. type: string nullable: true webhook: @@ -66532,7 +67204,7 @@ components: nullable: true properties: last_successful_update: - description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful transactions update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update. This field does not reflect transactions updates performed by non-Transactions products (e.g. Signal). ' + description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful transactions update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update. This field does not reflect transactions updates performed by non-Transactions products (e.g. Signal).' type: string format: date-time nullable: true @@ -66592,14 +67264,40 @@ components: required: - access_token - reason_code - ItemProductsTerminateReasonCode: + ProductsTerminateReasonCode: type: string description: | - The reason for terminating products on the Item. + The reason for terminating products. + `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud + `FRAUD_FALSE_IDENTITY`: The end user created the connection using false identity information or stolen credentials + `FRAUD_ABUSE`: The end user is abusing the client's service or platform through their connected account + `FRAUD_OTHER`: Other fraud-related reasons involving the end user not covered by the specific fraud categories + `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 service or platform + `DUPLICATE_ITEM`: The connection is a duplicate of another existing connection for the same user + `BILLING_TERMINATION`: The user's billing or subscription relationship has ended `OTHER`: Any other reason for terminating products not covered by the above categories enum: + - FRAUD_FIRST_PARTY + - FRAUD_FALSE_IDENTITY + - FRAUD_ABUSE + - FRAUD_OTHER + - CONSUMER_LOAN_PAID_OFF + - CONSUMER_ACCOUNT_CLOSED + - CONSUMER_CHARGE_OFF + - CONSUMER_PAYMENT_METHOD_SWITCHED + - USER_OFFBOARDING + - DUPLICATE_ITEM + - BILLING_TERMINATION - OTHER + ItemProductsTerminateReasonCode: + description: The reason for terminating products on the Item. + allOf: + - $ref: '#/components/schemas/ProductsTerminateReasonCode' ItemProductsTerminateResponse: type: object additionalProperties: true @@ -66609,59 +67307,6 @@ components: $ref: '#/components/schemas/RequestID' required: - request_id - ItemHandleFraudReportRequest: - type: object - description: |- - Request object for `/item/handle_fraud_report`. - Must provide either `user_id` or at least one of the following identifiers in `incident_event`: `link_session_id`, `idv_session_id`, `protect_event_id`, or `signal_client_transaction_id`. - properties: - client_id: - $ref: '#/components/schemas/APIClientID' - secret: - $ref: '#/components/schemas/APISecret' - access_token: - $ref: '#/components/schemas/AccessToken' - user_id: - type: string - nullable: true - description: The Plaid User ID associated with the report. - incident_event: - $ref: '#/components/schemas/ProtectIncidentEvent' - report_confidence: - $ref: '#/components/schemas/ProtectReportConfidence' - report_type: - $ref: '#/components/schemas/ProtectReportType' - report_source: - $ref: '#/components/schemas/ProtectReportSource' - bank_account: - $ref: '#/components/schemas/ProtectBankAccount' - ach_return_code: - type: string - nullable: true - description: Must be a valid ACH return code (e.g. `R01`), required if `report_type` is `ACH_RETURN`. - notes: - type: string - nullable: true - maxLength: 1024 - description: Additional context or details about the report, required if `report_type` is `OTHER`. - required: - - access_token - - report_confidence - - report_type - - report_source - ItemHandleFraudReportResponse: - type: object - additionalProperties: true - description: ItemHandleFraudReportResponse defines the response schema for `/item/handle_fraud_report` - properties: - report_id: - type: string - description: A unique identifier representing the submitted report. - request_id: - $ref: '#/components/schemas/RequestID' - required: - - report_id - - request_id OauthAPISecret: title: APISecret type: string @@ -66764,7 +67409,7 @@ components: example: 68028ce48d2b0dec68747f6c subject_token: type: string - description: Token representing the subject. The `subject token` must be an OAuth refresh token issued from the `/oauth/token` endpoint. The meaning depends on the `subject_token_type`. + description: Token representing the subject. The meaning depends on the `subject_token_type`. For `urn:plaid:params:tokens:user`, the `subject_token` must be a Plaid-issued user token from the `/user/create` endpoint. For `urn:plaid:params:oauth:user-token`, the `subject_token` must be an OAuth refresh token issued from the `/oauth/token` endpoint. example: user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d subject_token_type: $ref: '#/components/schemas/OAuthSubjectTokenType' @@ -66790,7 +67435,7 @@ components: expires_in: type: integer example: 500 - description: Time remaining in seconds before expiration + description: Time remaining in seconds before expiration. request_id: $ref: '#/components/schemas/RequestID' description: OAuth token grant success response @@ -66908,10 +67553,104 @@ components: additionalProperties: true allOf: - $ref: '#/components/schemas/FDXRecipientMetadata' + FDXConsentGrant: + type: object + additionalProperties: true + description: An FDX consent grant. + properties: + id: + type: string + description: The persistent identifier of the consent grant + status: + $ref: '#/components/schemas/FDXConsentGrantStatus' + createdTime: + type: string + format: date-time + description: When the consent was initially granted + updatedTime: + type: string + format: date-time + description: When the consent grant was last updated + expirationTime: + type: string + format: date-time + description: When the consent grant will expire. Omitted when the grant has no expiration. + parties: + type: array + description: Non-end-user parties participating in the consent grant (Data Recipient, Data Provider, Data Access Platform). + items: + $ref: '#/components/schemas/FDXParty' + resources: + type: array + description: Permissioned resource entries. Omitted when there are no resources. + items: + $ref: '#/components/schemas/FDXConsentGrantResource' + required: + - id + - status + - createdTime + - updatedTime + - parties + FDXConsentGrantResource: + type: object + additionalProperties: true + description: One permissioned resource on a consent grant. + properties: + resourceType: + $ref: '#/components/schemas/FDXConsentResourceType' + resourceId: + type: string + description: Identifier of the resource permissioned. + dataClusters: + type: array + description: Names of clusters of data elements permissioned. + items: + $ref: '#/components/schemas/FDXDataCluster' + required: + - resourceType + - resourceId + - dataClusters + FDXConsentGrantStatus: + title: FDX Consent Grant Status + description: Current status of a consent grant. One of `ACTIVE`, `REVOKED`, `EXPIRED`. + type: string + enum: + - ACTIVE + - REVOKED + - EXPIRED + FDXConsentResourceType: + title: FDX Consent Resource Type + description: Type of resource permissioned on a consent grant. + type: string + enum: + - ACCOUNT + - CUSTOMER + - DOCUMENT + FDXDataCluster: + title: FDX Data Cluster + description: Name of a cluster of data elements permissioned by a consent grant. + type: string + enum: + - ACCOUNT_BASIC + - ACCOUNT_DETAILED + - ACCOUNT_PAYMENTS + - BILLS + - CUSTOMER_CONTACT + - CUSTOMER_PERSONAL + - IMAGES + - INVESTMENTS + - NOTIFICATIONS + - PAYMENT_SUPPORT + - REWARDS + - STATEMENTS + - TAX + - TRANSACTIONS + - BALANCES + - SCHEDULED_PAYMENTS FDXRecipientMetadata: title: FDXRecipientMetadata type: object - description: Recipient metadata fields that are defined by FDX + description: Recipient metadata fields that are defined by FDX. properties: recipient_id: title: Recipient ID @@ -67051,7 +67790,7 @@ components: - VENDOR FDXPartyRegistry: title: Party Registry - description: The registry containing the party’s registration with name and id + description: The registry containing the party's registration with name and id type: string enum: - FDX @@ -67178,7 +67917,7 @@ components: FDXNotification: title: FDX Notification entity type: object - description: Provides the base fields of a notification. Clients will read the `type` property to determine the expected notification payload + description: Provides the base fields of a notification. Clients will read the `type` property to determine the expected notification payload. properties: notificationId: type: string @@ -67529,15 +68268,15 @@ components: description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. is_recurring: type: boolean - description: '**true** if the ACH transaction is a recurring transaction; **false** otherwise ' + description: '**true** if the ACH transaction is a recurring transaction; **false** otherwise.' nullable: true default_payment_method: type: string description: |- The default ACH or non-ACH payment method to complete the transaction. `SAME_DAY_ACH`: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day. - `STANDARD_ACH`: standard ACH by Nacha. - `MULTIPLE_PAYMENT_METHODS`: if there is no default debit rail or there are multiple payment methods. + `STANDARD_ACH`: Standard ACH by Nacha. + `MULTIPLE_PAYMENT_METHODS`: If there is no default debit rail or there are multiple payment methods. Possible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS` nullable: true user: @@ -67808,7 +68547,7 @@ components: SignalWarning: title: SignalWarning type: object - description: Conveys information about the errors causing missing or stale bank data used to construct the /signal/evaluate scores and response + description: Conveys information about the errors causing missing or stale bank data used to construct the `/signal/evaluate` scores and response properties: warning_type: type: string @@ -67917,7 +68656,7 @@ components: description: The key of the risk profile used for this transaction. outcome: type: string - description: Legacy method of inspecting the result of the ruleset. New integrations should simply use the “result” property instead. This value will be omitted if you do not have a live existing integration with rules using this field. + description: Legacy method of inspecting the result of the ruleset. New integrations should simply use the "result" property instead. This value will be omitted if you do not have a live existing integration with rules using this field. Ruleset: title: SignalEvaluateRuleset type: object @@ -67948,7 +68687,7 @@ components: properties: internal_note: type: string - description: An optional message attached to the triggered rule, defined within the Dashboard, for your internal use. Useful for debugging, such as “Account appears to be closed.” + description: An optional message attached to the triggered rule, defined within the Dashboard, for your internal use. Useful for debugging, such as "Account appears to be closed." custom_action_key: type: string description: A string key, defined within the Dashboard, used to trigger programmatic behavior for a certain result. For instance, you could optionally choose to define a "3-day-hold" `custom_action_key` for an ACCEPT result. @@ -68021,7 +68760,7 @@ components: `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid `is_savings_or_money_market_account`: Indicates whether the ACH transaction funding account is a savings/money market account - For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact Sales or your Plaid account manager. + For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager. properties: unauthorized_transactions_count_7d: type: integer @@ -68377,7 +69116,7 @@ components: balance_to_transaction_amount_ratio: type: number format: double - description: Taking `available_or_current_balance` and dividing it by the transaction amount. Useful to say “10% buffer”, for example. This is a convenience function to build Signal Rules upon. + description: Taking `available_or_current_balance` and dividing it by the transaction amount. Useful to say "10% buffer", for example. This is a convenience function to build Signal Rules upon. nullable: true StatementsListRequest: title: StatementsListRequest @@ -68474,7 +69213,7 @@ components: description: 'Month of the year. Possible values: 1 through 12 (January through December).' type: integer year: - description: The year of statement. + description: The year of the statement, e.g. 2024. type: integer minimum: 2010 required: @@ -68502,7 +69241,7 @@ components: title: StatementsDownloadResponse format: binary type: string - description: StatementsDownloadResponse defines the response schema for `/statements/download`. The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your systems. + description: StatementsDownloadResponse defines the response schema for `/statements/download`. The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system. StatementsRefreshRequest: title: StatementsRefreshRequest type: object @@ -68547,7 +69286,7 @@ components: model: type: string maxLength: 128 - description: The name of the Trust Index model to use for calculating the Trust Index Score, with a major.minor version suffix. Examples include `ti-link-session-2.0` and `ti-identity-2.0`. The model specified may require certain fields within `model_inputs`. For example, `ti-link-session-2.0` requires the `link` field to be provided in `model_inputs`. + description: 'The name of the Trust Index model to use for scoring, with a major.minor version suffix. Examples: `ti-link-session-2.0` (link-session fraud), `ti-identity-2.0` (identity fraud), `cash-advance-onboarding-1.0` (first cash advance), and `cash-advance-ongoing-1.0` (subsequent cash advances). The model specified may require certain fields within `model_inputs`; for example, `ti-link-session-2.0` requires the `link` field. Cash-advance models do not use `model_inputs`.' user: $ref: '#/components/schemas/ProtectUser' model_inputs: @@ -68558,7 +69297,7 @@ components: ProtectModelInputs: type: object nullable: true - description: Inputs for the Trust Index model. The `link` field is required for any link session model type. + description: Inputs required by certain Trust Index models. The `link` field is required for link-session models. Other model families (including cash-advance) are identified by `user` alone and do not use this object. properties: link: $ref: '#/components/schemas/ProtectLinkModelInputs' @@ -68597,16 +69336,52 @@ components: score: type: integer nullable: true - description: The trust index score. + description: The Trust Index score, on a 0-100 scale where higher values indicate lower risk. model: type: string description: The versioned name of the Trust Index model used for scoring. attributes: $ref: '#/components/schemas/FraudAttributes' + subscores: + $ref: '#/components/schemas/ProtectComputeSubscores' request_id: $ref: '#/components/schemas/RequestID' required: - request_id + ProtectComputeSubscores: + type: object + nullable: true + additionalProperties: true + description: Per-bucket subscores returned alongside the overall Trust Index score. For cash-advance models, each key maps to an amount-bucket subscore (0-100); higher values indicate lower fraud risk. Only buckets that were scored are included in the response. + properties: + cash_advance_bucket_0_25: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $0-$25. + cash_advance_bucket_25_50: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $25-$50. + cash_advance_bucket_50_100: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $50-$100. + cash_advance_bucket_100_200: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $100-$200. + cash_advance_bucket_200_300: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $200-$300. + cash_advance_bucket_300_400: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $300-$400. + cash_advance_bucket_400_500: + type: integer + nullable: true + description: Subscore for cash advance amounts in the range $400-$500. ProtectAPIToken: title: ProtectAPIToken type: string @@ -68667,14 +69442,14 @@ components: ProtectUser: type: object additionalProperties: true - description: Represents an end user for /protect/compute requests. + description: Represents an end user for `/protect/compute` requests. properties: user_id: type: string description: The Plaid User ID returned from a previous call to `/user/create`. This or `client_user_id` can be provided, not both. client_user_id: type: string - description: A unique ID representing the end user. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. + description: A unique ID representing the end user, previously passed to `/user/create`. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. TrustIndex: type: object nullable: true @@ -68928,12 +69703,12 @@ components: type: object nullable: true additionalProperties: true - description: Event fraud attributes as an arbitrary set of key-value pairs. + description: Event fraud attributes as an arbitrary set of key-value pairs. The set of attributes returned varies by model. ProtectIncidentEvent: nullable: true type: object additionalProperties: true - description: details about the incident event. + description: Details about the incident event. properties: protect_event_id: type: string @@ -69089,7 +69864,7 @@ components: `MONEY_LAUNDERING` - Indicates that funds are being moved through accounts to obscure their illicit origin. - `NO_FRAUD` - Indicates that an investigation determined no fraudulent activity occurred on user/event (positive label) + `NO_FRAUD` - Indicates that an investigation determined no fraudulent activity occurred on user/event (positive label). `OTHER` - Indicates that the case involves fraud or financial risk not covered by other report types. Requires notes describing the report. ProtectReportSource: diff --git a/CHANGELOG.md b/CHANGELOG.md index 5358fc7..c0ae98d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,99 @@ +### 2020-09-14_1.697.4 +- Update `Holding.tax_lots` description: remove stale "Absent from the response when the tax lots feature is not yet enabled" clause. + +### 2020-09-14_1.697.3 +- Add `atomicfi` value to the `processor` enum on `/processor/token/create`. + +### 2020-09-14_1.697.2 +- Add `payment` and `refund` values to the `transaction_code` enum, and update the field description to note that `transaction_code` is now populated for certain US institutions, in addition to European institutions. + +### 2020-09-14_1.697.1 +- Add `sub_programs` (`array`) to `WatchlistScreeningHit` and `EntityWatchlistScreeningHit`. Surfaces the sub-program designations published by the issuing authority (for example OFAC SDN program codes like `SDGT`, `SDNTK`, `IRAN`, `RUSSIA-EO14024`). + +### 2020-09-14_1.697.0 +- [Breaking] Remove `protect_results` from `LinkSessionResults` in `/link/token/get` responses. The API no longer populates this field. + +### 2020-09-14_1.696.1 +- Add `tax_lots` array field to `Holding` and introduce `HoldingTaxLot` schema with 7 fields: `institution_lot_id`, `original_purchase_datetime`, `quantity`, `purchase_price`, `cost_basis`, `current_value`, and `position_type`. Introduce `HoldingTaxLotPositionType` enum (`LONG`, `SHORT`). + +### 2020-09-14_1.696.0 +- Add `ACCOUNT_FUNDING` and `AUTO_REFUND` values to the `WalletTransaction.type` enum. These transaction types are already returned for virtual-account unexpected-payment handling and were documented but missing from the spec. + +### 2020-09-14_1.695.0 +- [Breaking] `Recaptcha_RequiredError`: change `http_code` from `string` to `integer`. The API already returns an integer; only the spec was wrong. +- Add `BASE_REPORT_ERROR` to the `error_type` enum (`PlaidErrorType`). +- `IncomeVerificationRiskSignalsStatusWebhook`: fix the `required` list to reference `risk_signals_status` instead of a non-existent `status` field. +- `Recaptcha_RequiredError`: mark `display_message` nullable and remove `link_user_experience`, `common_causes`, and `troubleshooting_steps` from `required`. This schema object is used for documentation only; describing these fields as required is misleading. +- Remove `database_insights_pending` from the `verification_status` description on product-endpoint account schemas — it is only returned in the Link `onSuccess` metadata, not by these endpoints. +- Add `STARTED` and `INTERNAL_ERROR` to the `CreditSessionBankIncomeStatus` enum. +- Add `STARTED` and `INTERNAL_ERROR` to the `CreditSessionBankEmploymentStatus` enum. +- Fix various webhook and error response examples to conform to their schemas. + +### 2020-09-14_1.694.0 +- Add `custom_attributes` field to `TransferAuthorizationCreateRequest`. + +### 2020-09-14_1.693.0 +- Add `reason_codes` array to `CraPartnerInsightsBaseFicoScore` and `negative_reason_codes` / `positive_reason_codes` arrays to `CraPartnerInsightsUltraFicoScore`. The corresponding individual `reason_code_1` through `reason_code_4` and `positive_reason_code_1` through `positive_reason_code_4` fields are now deprecated. + +### 2020-09-14_1.692.7 +- Add `model_version` string field to `PrismInsights` and deprecate the integer `version` field. Required to surface Prism Insights v4.1 and any future non-integeter model versions. + +### 2020-09-14_1.692.6 +- Add private-visibility scaffolding for `POST /fraud_insights/connection_event/send` (501 stub; customer-facing entry follows when `x-private-visibility` flips). + +### 2020-09-14_1.692.5 +- Add `interchecks` value to the `processor` enum on `/processor/token/create`. + +### 2020-09-14_1.692.4 +- Redeclare `name`, `official_name`, `mask`, and `verification_name` on the second `allOf` piece of `InvestmentAccount`, `BusinessAccount`, `AccountIdentity`, and `AccountIdentityMatchScore`. The fields are already declared on `AccountBase`; the redeclaration prevents the `plaid-python` SDK (>= 39.0.0) from routing them through its `additional_properties_type` handler, which upconverts date-shaped string values (e.g. an account literally named `"June - 529"`) into `datetime.date` objects in `to_dict()`. No change to the API response shape. + +### 2020-09-14_1.692.3 +- Add private-visibility scaffolding for `POST /fraud_insights/connection_risk_score/get` (501 stub; customer-facing entry follows when `x-private-visibility` flips). + +### 2020-09-14_1.692.2 +- Update `CraUserCheckReportFailedWebhook` (`USER_CHECK_REPORT_FAILED`) description to document that customers can call `/user/items/get` and inspect non-null `error` objects on the associated Items to retrieve error details, matching the existing guidance on `CraCheckReportFailedWebhook` (`CHECK_REPORT_FAILED`). + +### 2020-09-14_1.692.1 +- Correct the `/statements/download` success response content type from `application/json` to `application/pdf` to match the binary PDF body the endpoint actually returns. + +### 2020-09-14_1.692.0 +- `/cra/check_report/income_insights/get`: `income_streams` is now marked as required on `CraIncomeInsights` and is always present on the response. When there are no income streams for the report, it is returned as an empty array (`[]`) instead of being omitted. + +### 2020-09-14_1.691.2 +- Update `/user/products/terminate` description to clarify which subscription bundles are terminated, the billing impact, and the CRA Monitoring carve-out. +- Restore the `/user/items/remove` description paragraph that points users to `/user/products/terminate` for stopping billing and to the Consumer Service Center for user-initiated data deletion. + +### 2020-09-14_1.691.1 +- Add `frame` value to the `processor` enum on `/processor/token/create`. + +### 2020-09-14_1.691.0 +- [Breaking] Replace `report_requested` field with `reports_requested` array field in `/cra/check_report/verification/pdf/get`. +- Add `income` value to `CraCheckReportVerificationPdfReportType`. + +### 2020-09-14_1.690.1 +- Expose `/user/products/terminate` in the public OpenAPI spec (previously hidden from client libraries). + +### 2020-09-14_1.690.0 +- Add an optional `subscores` object to the `/protect/compute` response and a new `ProtectComputeSubscores` schema. For cash-advance models, exposes per-bucket subscores (`cash_advance_bucket_0_25` through `cash_advance_bucket_400_500`) where each scored bucket is a 0-100 trust index score (higher = lower fraud risk). Both the wrapper `subscores` field and each individual bucket key are omitted from the response when not scored: models that do not produce subscores will not include the `subscores` key in the response at all, and partially-scored responses include only the bucket keys that were scored. + +### 2020-09-14_1.689.0 +- Add optional `user_id` field to `CraCreditProfileReportGetResponse`. + +### 2020-09-14_1.688.10 +- Add `reason_code` enum values to `/item/products/terminate` and `/user/products/terminate` + +### 2020-09-14_1.688.9 +- [Breaking] Remove `/item/handle_fraud_report` endpoint and its `ItemHandleFraudReportRequest` and `ItemHandleFraudReportResponse` schemas. The endpoint was never wired up for any customer. + +### 2020-09-14_1.688.8 +- Expose the `limited_purpose_types` filter on `LinkTokenCreateDepositoryFilter` and `DepositoryFilter`, and the `LimitedPurposeTypes` and `LimitedPurposeType` schemas, in the public OpenAPI spec (previously hidden from client libraries). Used in conjunction with the `limited purpose checking` depository subtype to restrict which kinds of limited purpose checking accounts may be connected in Link. + +### 2020-09-14_1.688.7 +- Add income schema types (`CraVerificationIncome*`) to CRA Home Lending Verification Report +- Add `income` field to `CraVerificationReport` +- Add `INCOME` to `CraCheckReportVerificationGetReportType` enum +- Document that `/sandbox/transactions/create` only applies custom transactions to the depository account on `user_transactions_dynamic` Items + ### 2020-09-14_1.688.6 - Updated `/user_account/session/get` sample response to include `identity_edit_history` diff --git a/README.md b/README.md index 1a23302..8715f04 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,17 @@ Plaid uses the `OpenAPI 3.0.0` specification to schematize our [docs](https://plaid.com/docs) and to generate our supported client libraries. This provides for a consistent typing experience across our external interfaces. Below we have listed some examples and issues we have found when iterating on the specification. +## Adding a new `x-*` extension tag + +If your edit to the OpenAPI spec introduces a new `x-*` extension, add or update its entry on the Slite [Extension Tags](https://plaid.slite.com/app/docs/O4qPiIyok-7HnF) page in the same PR (or link the follow-up doc PR from this PR's description). The Slite [Editing the OpenAPI file](https://plaid.slite.com/app/docs/6fx_S6U4ai4GdT) workflow carries the canonical step-by-step; in short, the Extension Tags entry should record: + +- **granularity** — which scope(s) the tag is valid on (schema, object, field, path, operation, `$ref` target); +- **survives strip?** — whether the tag passes through `cmd/process.go` into the published `2020-09-14.yml`, or is stripped before consumers see it (all `x-plaid-*` are stripped by the prefix rule at `process.go:348-349`; explicitly-internal non-`x-plaid-*` tags belong in `internalUseFields` at `process.go:20-23`); +- **primary consumer** — the file(s) that read the tag, with `file.go:NNN` citations; +- **enforced vs intent-only** — `x-hidden-from-docs` at path/operation scope is the canonical intent-only example, and is the source of most author confusion. + +Pure codegen internals with no author-visible decision may be skipped if you record the reason at the definition site. Background: per the 2026-04-23 inventory, half of the spec's 20 `x-*` extensions had no Extension Tags row before that revision; missing this step is how that gap accumulated. + ## Using the OpenAPI generator You can find examples on the official [OpenApiGenerator docs](https://github.com/OpenAPITools/openapi-generator#3---usage).