From 8a493a5a355483e6ba6d3b36bf11cdf4197a5389 Mon Sep 17 00:00:00 2001 From: Andy Nguyen Date: Wed, 22 Jul 2026 13:25:54 -0400 Subject: [PATCH] OpenAPI generated code at 2026-07-22T17:25:53Z --- 2020-09-14.yml | 1488 ++++++++++++++++++++++++++++++++++++++---------- CHANGELOG.md | 96 ++++ 2 files changed, 1268 insertions(+), 316 deletions(-) diff --git a/2020-09-14.yml b/2020-09-14.yml index 1f30936..50dece7 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.698.7 + version: 2020-09-14_1.705.4 description: The Plaid REST API. Please see https://plaid.com/docs/api for more details. contact: name: Plaid Developer Team @@ -297,7 +297,7 @@ paths: description: |- The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved. - By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`. + By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call the `/asset_report/get` endpoint with `include_insights` set to `true`. For latency-sensitive applications, you can optionally call `/asset_report/create` with `options.add_ons` set to `["fast_assets"]`. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report. requestBody: @@ -1737,9 +1737,15 @@ paths: $ref: '#/components/schemas/CraPartnerInsightsGetRequest' /cra/check_report/income_insights/get: post: - summary: Retrieve cash flow information from your user's banks + summary: Retrieve income insights from your user's banks tags: - plaid + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - cra:report:read responses: "200": description: OK @@ -1866,7 +1872,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 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: @@ -1881,6 +1887,12 @@ paths: tags: - plaid operationId: craCheckReportBaseReportGet + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - cra:report:read externalDocs: url: /api/products/check/#cracheck_reportbase_reportget requestBody: @@ -2985,10 +2997,7 @@ paths: externalDocs: 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`. - - 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. + 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 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: @@ -3000,6 +3009,12 @@ paths: summary: Retrieve cash flow insights from your user's banking data tags: - plaid + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - cra:report:read responses: "200": description: OK @@ -3025,10 +3040,7 @@ paths: externalDocs: 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`. - - 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. + 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 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: @@ -3040,6 +3052,12 @@ paths: summary: Retrieve the LendScore from your user's banking data tags: - plaid + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - cra:report:read responses: "200": description: OK @@ -3068,10 +3086,7 @@ paths: externalDocs: 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`. - - 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. + 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 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: @@ -3083,6 +3098,12 @@ paths: summary: Retrieve network attributes for the user tags: - plaid + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - cra:report:read responses: "200": description: OK @@ -3114,10 +3135,7 @@ paths: externalDocs: 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`. - - 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. + description: This endpoint allows you to retrieve the Network 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 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: @@ -3186,7 +3204,6 @@ paths: unofficial_currency_code: null average_balance_30_days: 200 average_balance_60_days: 150 - average_balance_90_days: 125 nsf_overdraft_transactions_count: 0 consumer_disputes: [] mask: "0000" @@ -3489,6 +3506,59 @@ paths: application/json: schema: $ref: '#/components/schemas/CraLoansUnregisterRequest' + /cra/report/get: + x-hidden-from-docs: true + post: + summary: Retrieve a CRA Report for provided user + tags: + - plaid + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CraReportGetResponse' + examples: + example-1: + value: + request_id: eYupqX1mZkEuQRx + user_id: usr_abc123 + warnings: [] + report: + retrieved_time: "2024-01-15T10:30:00Z" + scope: PLAID_NETWORK + decision_stage: DECISIONING + consumer_report_permissible_purpose: WRITTEN_INSTRUCTION_PREQUALIFICATION + products: + - product: cra_qualify + version: V1 + metadata: + generated_time: "2024-01-15T10:30:00Z" + item_count: 3 + account_count: 5 + institution_ids: + - ins_56 + attributes: + plaid_conn_user_active_auto_loan_count_90d: 0 + accounts_count: 3 + errors: [] + default: + description: Error response + content: + application/json: + schema: + $ref: '#/components/schemas/PlaidError' + operationId: craReportGet + externalDocs: + url: /none/ + description: '`/cra/report/get` retrieves a CRA Report for a user.' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CraReportGetRequest' /cra/credit_profile/report/get: post: summary: Retrieve the credit profile report for a user @@ -3696,7 +3766,7 @@ paths: example-1: value: item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase accounts: - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr @@ -4576,13 +4646,13 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH - total_transactions: 1 + total_transactions: 2 request_id: 45QSn default: content: @@ -4592,7 +4662,7 @@ paths: description: Error response description: |- Note: All new implementations are encouraged to use `/transactions/sync` rather than `/transactions/get`. `/transactions/sync` provides the same functionality as `/transactions/get` and improves developer ease-of-use for handling transactions updates. - The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available. + The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student` or `mortgage`; coverage may be limited). For transaction history from investment accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available. 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 `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions. Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the [Item Debugger](https://plaid.com/docs/account/activity/#troubleshooting-with-item-debugger) or call `/item/get`; the `item.status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint. @@ -4939,7 +5009,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -4957,7 +5027,7 @@ paths: description: Error response description: |- 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). + 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 `/cashflow_report/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. requestBody: @@ -5159,7 +5229,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -5176,7 +5246,7 @@ paths: description: Error response description: |- 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). + 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 `/cashflow_report/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. requestBody: @@ -5475,7 +5545,7 @@ paths: When using Recurring Transactions, for best results, make sure to use the [`days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) parameter to request at least 180 days of history when initializing Items with Transactions. Once all historical transactions have been fetched, call `/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook. - After the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available. + After the initial call, you can call the `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available. requestBody: required: true content: @@ -5643,7 +5713,7 @@ paths: For important instructions on integrating with `/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/). - This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead. + This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student` or `mortgage`). 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. @@ -5837,7 +5907,7 @@ paths: description: |- `/user/financial_data/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for a User using the Financial Insights bundle. This bundle refreshes the Transactions, Investments, and Liabilities product data. - This endpoint is for clients who use the Transactions Insights bundle and want to proactively update all linked Items under a user. + This endpoint is for clients who use the Financial Insights bundle and want to proactively update all linked Items under a user. The refresh may succeed or fail on a per-Item basis. Use the `results` array in the response to understand the outcome for each Item. This endpoint is distinct from `/transactions/refresh`, which triggers a refresh for a single Item. Use `/user/financial_data/refresh` to target all Items for a user instead. @@ -6076,13 +6146,13 @@ paths: success: 0.89 error_plaid: 0.02 error_institution: 0.09 - liabilities: - status: HEALTHY - last_status_change: "2019-02-15T15:53:00Z" - breakdown: - success: 0.89 - error_plaid: 0.02 - error_institution: 0.09 + liabilities: + status: HEALTHY + last_status_change: "2019-02-15T15:53:00Z" + breakdown: + success: 0.89 + error_plaid: 0.02 + error_institution: 0.09 investments_updates: status: HEALTHY last_status_change: "2019-02-12T08:22:00Z" @@ -6547,7 +6617,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -6710,7 +6780,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -6901,7 +6971,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -7028,7 +7098,7 @@ paths: post: summary: Create a new Identity Verification description: | - Create a new Identity Verification for the user specified by the `client_user_id` and/or `user_id` field. At least one of these two fields must be provided. The requirements and behavior of the verification are determined by the `template_id` provided. If `user_id` is provided, there must be an associated user otherwise an error will be returned. + Create a new Identity Verification for the user specified by the `client_user_id` and/or `user_id` field. At least one of these two fields must be provided. The requirements and behavior of the verification are determined by the `template_id` provided. If `user_id` is provided, there must be an associated user; otherwise, an error will be returned. If you don't know whether an active Identity Verification exists for a given `client_user_id` and/or `user_id`, you can specify `"is_idempotent": true` in the request body. With idempotency enabled, a new Identity Verification will only be created if one does not already exist for the associated `client_user_id` and/or `user_id`, and `template_id`. If an Identity Verification is found, it will be returned unmodified with a `200 OK` HTTP status code. @@ -7153,7 +7223,7 @@ paths: - status: success attempt: 1 capture: - image_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg + image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match @@ -7385,7 +7455,7 @@ paths: - status: success attempt: 1 capture: - image_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg + image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match @@ -7859,7 +7929,7 @@ paths: - status: success attempt: 1 capture: - image_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg + image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match @@ -8958,7 +9028,7 @@ paths: - The user's PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user's data matches a fraud report that your team created, the user will be returned with a status of `rejected`. - - Finally, the user's PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud. + - Finally, the user's PII is searched against all fraud reports shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud. externalDocs: url: /api/products/beacon/#beaconusercreate /beacon/user/get: @@ -9378,7 +9448,7 @@ paths: - The user's updated PII is also searched against all fraud reports created by your organization across all of your Beacon Programs. If the user's data matches a fraud report that your team created, the user will be returned with a status of `rejected`. - - Finally, the user's PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud. + - Finally, the user's PII is searched against all fraud reports shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud. Plaid maintains a version history for each Beacon User, so the Beacon User's identity data before and after the update is retained as separate versions. externalDocs: @@ -10206,6 +10276,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 0.01 institution_price: 0.011 @@ -10218,6 +10289,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] securities: - close_price: 0.011 close_price_as_of: "2021-04-13" @@ -10240,6 +10312,7 @@ paths: sector: Technology Services industry: Internet Software or Services cfi_code: OCASPS + figi: null option_contract: contract_type: call expiration_date: "2018-02-01" @@ -10267,6 +10340,7 @@ paths: sector: null industry: null cfi_code: null + figi: null option_contract: null fixed_income: null request_id: 24MxmGFZz89Xg2f @@ -10346,6 +10420,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 40 institution_price: 42.15 @@ -10358,11 +10433,13 @@ paths: unofficial_currency_code: null vested_quantity: 7 vested_value: 66 + tax_lots: [] securities: - close_price: 0.011 close_price_as_of: null cusip: null cfi_code: OCASPS + figi: null industry: null institution_id: null institution_security_id: null @@ -10386,6 +10463,7 @@ paths: close_price_as_of: null cusip: null cfi_code: CEOIES + figi: null fixed_income: null industry: null institution_id: null @@ -10508,6 +10586,7 @@ paths: sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES + figi: null option_contract: null fixed_income: null - close_price: 34.73 @@ -10531,6 +10610,7 @@ paths: sector: Finance industry: Regional Banks cfi_code: ESVUFR + figi: null option_contract: null fixed_income: null total_investment_transactions: 2 @@ -10699,7 +10779,7 @@ paths: transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place - total_transactions: 1 + total_transactions: 2 request_id: Wvhy9PZHQLV8njG default: content: @@ -10708,7 +10788,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available. + The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student` or `mortgage`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available. 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 `/processor/transactions/get`. For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions). @@ -10886,7 +10966,7 @@ paths: For important instructions on integrating with `/processor/transactions/sync`, see the [Transactions integration overview](https://plaid.com/docs/transactions/#integration-overview). If you are migrating from an existing integration using `/processor/transactions/get`, see the [Transactions Sync migration guide](https://plaid.com/docs/transactions/sync-migration/). - This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead. + This endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student` or `mortgage`). 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. @@ -10930,7 +11010,7 @@ paths: $ref: '#/components/schemas/PlaidError' description: Error response description: |- - `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution. + `/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/processor/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/processor/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution. 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. @@ -11065,7 +11145,7 @@ paths: This endpoint can only be called on a processor token that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/processor/transactions/get` or `/processor/transactions/sync`). Once all historical transactions have been fetched, call `/processor/transactions/recurring/get` to receive the Recurring Transactions streams and subscribe to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook. To know when historical transactions have been fetched, if you are using `/processor/transactions/sync` listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#SyncUpdatesAvailableWebhook-historical-update-complete) webhook and check that the `historical_update_complete` field in the payload is `true`. If using `/processor/transactions/get`, listen for the [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhook. - After the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available. + After the initial call, you can call the `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available. To receive Transactions webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint. requestBody: @@ -11502,7 +11582,7 @@ paths: description: |- The `/processor/identity/match` endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder's financial institution. - Fields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data. + Fields within the `balances` object will always be null when retrieved by `/processor/identity/match`. Instead, use the `/processor/balance/get` endpoint to retrieve balance data. requestBody: required: true content: @@ -11771,7 +11851,7 @@ paths: - transactions consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background @@ -12052,7 +12132,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created. + description: The `/payment_initiation/recipient/list` endpoint lists the payment recipients that you have previously created. requestBody: required: true content: @@ -12087,7 +12167,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' 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. + 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 EUR, GBP, or another 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. requestBody: @@ -12128,7 +12208,7 @@ paths: description: |- The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link. - The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input. + The `/payment_initiation/payment/token/create` endpoint is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input. requestBody: required: true content: @@ -12316,7 +12396,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 @@ -12358,6 +12438,41 @@ paths: application/json: schema: $ref: '#/components/schemas/SandboxItemApplicationSeedRequest' + /sandbox/fdx/consent/seed: + x-hidden-from-docs: true + post: + tags: + - plaid + summary: Seed an FDX consent grant for a sandbox data partner + operationId: sandboxFdxConsentSeed + description: |- + `/sandbox/fdx/consent/seed` creates a test FDX consent grant (and a backing Item) for a data provider's customer in Sandbox, so the FDX Consent API endpoints can be exercised end-to-end without a live data provider connection. + + `customer_id` is the data provider's identifier for the end user and `application_id` identifies the data recipient application the consent is granted to; both are required. Optionally provide `consent_id` (a UUIDv4) to control the seeded grant's identifier; one is generated when omitted. The seeded grant is returned by `/fdx/consents` and `/fdx/consents/{consentId}`, and can be revoked via `/fdx/consents/{consentId}/revocation`. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SandboxFdxConsentSeedResponse' + examples: + example-1: + value: + consent_id: 9cfe04b5-6d04-45ce-897e-45f2580bf013 + 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/SandboxFdxConsentSeedRequest' /sandbox/item/set_verification_status: post: tags: @@ -12419,7 +12534,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 @@ -12468,7 +12583,8 @@ paths: post: tags: - plaid - summary: Create public token + summary: (Deprecated) Create public token + deprecated: true externalDocs: url: /api/link/#itempublic_tokencreate operationId: itemCreatePublicToken @@ -12512,6 +12628,12 @@ paths: externalDocs: url: /api/users/#usercreate operationId: userCreate + security: + - clientId: [] + secret: [] + plaidVersion: [] + - oauth2: + - user:write responses: "200": description: OK @@ -12552,7 +12674,7 @@ paths: In order to create a Plaid Check Consumer Report for a user, the `identity` (new) or `consumer_report_user_identity` (legacy) object must be present. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`. - In order to generate a Plaid Check Consumer Report, the following `identity` fields, at minimum, are required and must be non-empty: `name`, `date_of_birth`, `emails`, `phone_numbers`, and `addresses`, (with at least one email, phone number, and address designated as `primary`). Plaid Check Consumer Reports can only be created for US-based users; the user's address country must be `US`. If creating a report for sharing with a GSE such as Fannie or Freddie, the user's full SSN must be provided via the `id_numbers` field. Providing at least a partial SSN is also strongly recommended for all use cases, since it improves the accuracy of matching user records during compliance processes such as file disclosure, dispute, or security freeze requests. + In order to generate a Plaid Check Consumer Report, the following `identity` fields, at minimum, are required and must be non-empty: `name`, `date_of_birth`, `emails`, `phone_numbers`, and `addresses` (with at least one email, phone number, and address designated as `primary`). Plaid Check Consumer Reports can only be created for US-based users; the user's address country must be `US`. If creating a report for sharing with a GSE such as Fannie or Freddie, the user's full SSN must be provided via the `id_numbers` field. Providing at least a partial SSN is also strongly recommended for all use cases, since it improves the accuracy of matching user records during compliance processes such as file disclosure, dispute, or security freeze requests. When using Plaid Protect, it is highly recommended that you provide an `identity` object to better identify and block fraud across your Link sessions. @@ -12973,7 +13095,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user. + This endpoint is used to delete a third-party user token. Once removed, the token can no longer be used to access data associated with the user. Any subsequent calls to retrieve information using the same third-party user token will result in an error stating the third-party user token does not exist. requestBody: @@ -13079,8 +13201,6 @@ paths: The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order. Polling for status updates in Production is highly discouraged. Repeatedly calling `/payment_initiation/payment/get` to check a payment's status is unreliable and may trigger API rate limits. Only the `payment_status_update` webhook should be used to receive real-time status updates in Production. - - In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order. requestBody: required: true content: @@ -13119,8 +13239,8 @@ paths: account: "31926819" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D sort_code: "601613" - iban: null, - end_to_end_id: sptch8cde8390bfd363888, + iban: null + end_to_end_id: sptch8cde8390bfd363888 next_cursor: "2020-01-01T00:00:00Z" request_id: aEAQmewMzlVa1k6 default: @@ -13219,6 +13339,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1.5 institution_price: 2.11 @@ -13231,6 +13352,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 10 institution_price: 10.42 @@ -13243,6 +13365,21 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: + - institution_lot_id: "1" + original_purchase_datetime: "2021-01-15T00:00:00Z" + quantity: 1 + purchase_price: 4.75 + cost_basis: 4.75 + current_value: 10.42 + position_type: LONG + - institution_lot_id: "2" + original_purchase_datetime: "2021-03-22T00:00:00Z" + quantity: 1 + purchase_price: 5.25 + cost_basis: 5.25 + current_value: 10.42 + position_type: LONG - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 0.01 institution_price: 0.011 @@ -13255,6 +13392,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 23 institution_price: 27 @@ -13267,6 +13405,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 15 institution_price: 13.73 @@ -13279,6 +13418,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 948.08 institution_price: 94.808 @@ -13291,6 +13431,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1 institution_price: 1 @@ -13303,6 +13444,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: ax0xgOBYRAIqOOjeLZr0iZBb8r6K88HZXpvmq cost_basis: 92.47 institution_price: 0.177494362 @@ -13315,6 +13457,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] item: available_products: - balance @@ -13327,7 +13470,7 @@ paths: - investments consent_expiration_time: null error: null - institution_id: ins_3 + institution_id: ins_56 institution_name: Chase item_id: 4z9LPae1nRHWy8pvg9jrsgbRP4ZNQvIdbLq7g update_type: background @@ -13356,6 +13499,7 @@ paths: sector: Technology Services industry: Internet Software or Services cfi_code: OCASPS + figi: null option_contract: contract_type: call expiration_date: "2018-02-01" @@ -13383,6 +13527,7 @@ paths: sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES + figi: null option_contract: null fixed_income: null - close_price: 2.11 @@ -13406,6 +13551,7 @@ paths: sector: Health Technology industry: Major Pharmaceuticals cfi_code: ESVUFR + figi: null option_contract: null fixed_income: null - close_price: 10.42 @@ -13429,6 +13575,7 @@ paths: sector: null industry: null cfi_code: CIOIBS + figi: null option_contract: null fixed_income: null - close_price: 1 @@ -13452,12 +13599,13 @@ paths: sector: null industry: null cfi_code: null + figi: null option_contract: null fixed_income: null - close_price: 13.73 close_price_as_of: null cusip: null - institution_id: ins_3 + institution_id: ins_56 institution_security_id: NHX105509 is_cash_equivalent: false isin: null @@ -13475,6 +13623,7 @@ paths: sector: null industry: null cfi_code: null + figi: null option_contract: null fixed_income: null - close_price: 94.808 @@ -13498,6 +13647,7 @@ paths: sector: Government industry: Sovereign Government cfi_code: DYZTXR + figi: null option_contract: null fixed_income: face_value: 100 @@ -13509,7 +13659,7 @@ paths: - close_price: 0.140034616 close_price_as_of: "2022-01-24" cusip: null - institution_id: ins_3 + institution_id: ins_56 institution_security_id: null is_cash_equivalent: true isin: null @@ -13527,6 +13677,7 @@ paths: sector: null industry: null cfi_code: null + figi: null option_contract: null fixed_income: null default: @@ -13684,6 +13835,7 @@ paths: sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES + figi: null option_contract: null fixed_income: null - close_price: 10.42 @@ -13707,6 +13859,7 @@ paths: sector: null industry: null cfi_code: CIOIBS + figi: null option_contract: null fixed_income: null - close_price: 34.73 @@ -13730,6 +13883,7 @@ paths: sector: Finance industry: Regional Banks cfi_code: ESVUFR + figi: null option_contract: null fixed_income: null total_investment_transactions: 3 @@ -13850,6 +14004,7 @@ paths: unofficial_currency_code: null vested_quantity: 1 vested_value: 1 + tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 0.01 institution_price: 0.011 @@ -13862,6 +14017,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 94.808 institution_price: 94.808 @@ -13874,6 +14030,7 @@ paths: unofficial_currency_code: null vested_quantity: null vested_value: null + tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 40 institution_price: 42.15 @@ -13886,6 +14043,7 @@ paths: unofficial_currency_code: null vested_quantity: 7 vested_value: 66 + tax_lots: [] item: available_products: - assets @@ -13934,6 +14092,7 @@ paths: close_price_as_of: null cusip: null cfi_code: OCASPS + figi: null industry: null institution_id: null institution_security_id: null @@ -13957,6 +14116,7 @@ paths: close_price_as_of: "2023-11-02" cusip: 912797HE0 cfi_code: DYZTXR + figi: null fixed_income: face_value: 100 issue_date: "2023-11-02" @@ -13986,6 +14146,7 @@ paths: close_price_as_of: "2024-09-09" cusip: null cfi_code: CIOIBS + figi: null fixed_income: null industry: Investment Trusts or Mutual Funds institution_id: null @@ -14009,6 +14170,7 @@ paths: close_price_as_of: null cusip: null cfi_code: CEOIES + figi: null fixed_income: null industry: null institution_id: null @@ -14032,6 +14194,7 @@ paths: close_price_as_of: null cusip: null cfi_code: null + figi: null fixed_income: null industry: null institution_id: null @@ -14247,7 +14410,7 @@ paths: post: tags: - plaid - summary: Create Apex bank account token + summary: Create Apex processor token externalDocs: url: /none/ responses: @@ -15003,7 +15166,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: (Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid. + description: (Deprecated) Use the `/transfer/ledger/get` endpoint to view a balance held with Plaid. requestBody: required: true content: @@ -15151,7 +15314,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 ledgers. requestBody: required: true content: @@ -15814,7 +15977,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer. Scheduled transfer that hasn't been submitted to bank will be cancelled. + description: Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer. A scheduled transfer that hasn't been submitted to the bank will be cancelled. requestBody: required: true content: @@ -15974,6 +16137,7 @@ paths: event_type: pending failure_reason: null origination_account_id: "" + receiver_details: null timestamp: "2020-08-06T17:27:15Z" request_id: mdqfuVxeoza6mhu default: @@ -16067,6 +16231,7 @@ paths: event_type: pending failure_reason: null origination_account_id: "" + receiver_details: null timestamp: "2020-08-06T17:27:15Z" request_id: mdqfuVxeoza6mhu default: @@ -16736,7 +16901,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 the `/transfer/diligence/document/upload` endpoint to upload a document on behalf of their 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 @@ -17270,7 +17435,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned. + description: Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, a 400 error is returned. requestBody: required: true content: @@ -17492,7 +17657,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: |- - `/sandbox/payment_profile/reset_login/` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment. + `/sandbox/payment_profile/reset_login` forces a Payment Profile into a state where the login is no longer valid. This makes it easy to test update mode for Payment Profile in the Sandbox environment. After calling `/sandbox/payment_profile/reset_login`, calls to the `/transfer/authorization/create` with the Payment Profile will result in a `decision_rationale` `PAYMENT_PROFILE_LOGIN_REQUIRED`. You can then use update mode for Payment Profile to restore it into a good state. @@ -17664,7 +17829,7 @@ paths: rate: null unofficial_currency_code: null ytd_amount: 400.44 - - canonical_desription: BONUS + - canonical_description: BONUS current_amount: 100 description: bonus earned hours: null @@ -19124,6 +19289,24 @@ paths: substitute_payments_in_lieu_of_dividends_or_interest: null tax_year: "2022" transactions_reported: null + i20s: + - student: + given_name: Josie + surname_primary_name: Harrison + passport_name: Josie Georgia Harrison + preferred_name: Josie + school_name: Plaid University + program_start_date: "2022-08-22" + program_end_date: "2024-05-15" + personal_funds: 10000 + on_campus_employment: 5000 + funds_from_this_school: 15000 + students_funding_total: 30000 + funds_from_another_source: 0 + estimated_average_costs_total: 28000 + estimated_average_living_expenses: 12000 + students_funding_period_months: 9 + estimated_average_costs_period_months: 9 status: processing_status: PROCESSING_COMPLETE updated_at: "2022-08-02T21:14:54Z" @@ -19601,7 +19784,7 @@ paths: description: '`/credit/relay/get` allows third parties to receive a report that was shared with them, using a `relay_token` that was created by the report owner.' /credit/relay/pdf/get: post: - summary: Retrieve the pdf reports associated with a relay token that was shared with you (beta) + summary: Retrieve the PDF reports associated with a relay token that was shared with you (beta) tags: - plaid responses: @@ -19627,7 +19810,7 @@ paths: schema: $ref: '#/components/schemas/CreditRelayPDFGetRequest' description: |- - `/credit/relay/pdf/get` allows third parties to receive a pdf report that was shared with them, using a `relay_token` that was created by the report owner. + `/credit/relay/pdf/get` allows third parties to receive a PDF report that was shared with them, using a `relay_token` that was created by the report owner. The `/credit/relay/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/credit/relay/pdf/get`, you must first create the Asset Report using `/credit/relay/create` and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook to fire, indicating that the Report is ready to be retrieved. @@ -19769,7 +19952,8 @@ paths: $ref: '#/components/schemas/SandboxIncomeFireWebhookRequest' /sandbox/bank_income/fire_webhook: post: - summary: Manually fire a Bank Income webhook in Sandbox + summary: (Deprecated) Manually fire a Bank Income webhook in Sandbox + deprecated: true tags: - plaid externalDocs: @@ -20816,7 +21000,7 @@ paths: highest_amount: 25 score: 75 - lowest_amount: 25 - highest_amount: 40 + highest_amount: 50 score: 72 - lowest_amount: 50 highest_amount: 100 @@ -20873,7 +21057,7 @@ paths: institution_names: - Example National Bank institution_ids: - - ins_3 + - ins_56 created_at: "2023-09-02T11:20:00Z" summary: Account sync error detailed_description: The account synchronization failed due to an API rate limit issue. @@ -21703,6 +21887,89 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' + /fdx/consents: + x-hidden-from-docs: true + get: + tags: + - plaid + summary: List FDX Consent Grants for a customer + operationId: fdxConsentsList + description: Returns zero or more consent grants associated with the given data provider customer, optionally filtered by status. + parameters: + - in: query + name: customerId + description: Data provider customer identifier whose consent grants to return. + required: true + schema: + type: string + - in: query + name: status + description: Optional filter restricting results to a single consent grant status. One of `ACTIVE`, `REVOKED`, `EXPIRED`. + required: false + schema: + $ref: '#/components/schemas/FDXConsentGrantStatus' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetConsentsResponse' + example: + consent_grants: + - id: 9585694d-3ae5-8863-1234-567890abcdef + status: ACTIVE + createdTime: "2026-01-01T00:00:00Z" + updatedTime: "2026-01-01T00: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 + - ACCOUNT_DETAILED + - STATEMENTS + - id: 1a2b3c4d-5e6f-7890-abcd-ef0123456789 + status: REVOKED + createdTime: "2026-01-03T00:00:00Z" + updatedTime: "2026-01-04T00:00:00Z" + parties: + - name: Another Example Client + type: DATA_RECIPIENT + homeUri: https://another-example.com + registry: PRIVATE + registeredEntityName: Another Example Client LLC + registeredEntityId: 549300Z9Y8X7W6V5U4T3 + - 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: c25f2f825704cd11 + dataClusters: + - ACCOUNT_BASIC + - ACCOUNT_DETAILED + default: + description: Error response + content: + application/json: + schema: + $ref: '#/components/schemas/PlaidError' /fdx/consents/{consentId}/revocation: x-hidden-from-docs: true put: @@ -21791,7 +22058,7 @@ paths: id: 9585694d-3ae5-8863-1234-567890abcdef status: ACTIVE createdTime: "2026-01-01T00:00:00Z" - updatedTime: "2026-01-02T00:00:00Z" + updatedTime: "2026-01-01T00:00:00Z" parties: - name: My Example Client type: DATA_RECIPIENT @@ -21872,6 +22139,15 @@ components: type: apiKey in: header name: Plaid-Version + oauth2: + type: oauth2 + description: The Plaid API supports client credentials, authorization code, and custom delegation flows. + flows: + clientCredentials: + tokenUrl: https://api.plaid.com/oauth2/apiv2/token + scopes: + cra:report:read: Read CRA report data. + user:write: Write user data. parameters: PlaidNewUserApiEnabledHeader: name: Plaid-New-User-API-Enabled @@ -22230,9 +22506,9 @@ components: description: | Indicates which version of the personal finance category taxonomy is being used. [View PFCv2 and PFCv1 taxonomies](https://plaid.com/documents/pfc-taxonomy-all.csv). - If you enabled Transactions or Enrich before December 2025 you will receive the `v1` taxonomy by default and may request `v2` by explicitly setting this field to `v2` in the request. + If you enabled Transactions or Enrich before December 3, 2025 you will receive the `v1` taxonomy by default and may request `v2` by explicitly setting this field to `v2` in the request. - If you enabled Transactions or Enrich on or after December 2025, you may only receive the `v2` taxonomy. + If you enabled Transactions or Enrich on or after December 3, 2025, you may only receive the `v2` taxonomy. enum: - v1 - v2 @@ -22463,7 +22739,7 @@ components: $ref: '#/components/schemas/CashflowReportTransaction' total_transactions: type: integer - description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter. + description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched using the `cursor` parameter. item: $ref: '#/components/schemas/Item' next_cursor: @@ -22540,7 +22816,7 @@ components: $ref: '#/components/schemas/CashflowReportTransaction' total_transactions: type: integer - description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter. + description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched using the `cursor` parameter. item: $ref: '#/components/schemas/Item' next_cursor: @@ -22914,7 +23190,7 @@ components: $ref: '#/components/schemas/Owner' TransactionsRecurringUpdateRequest: type: object - description: TransactionsRecurringUpdateRequest defined the request schema for `/transactions/recurring/streams/update` endpoint. + description: TransactionsRecurringUpdateRequest defines the request schema for `/transactions/recurring/streams/update` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -22936,10 +23212,10 @@ components: properties: stream_id: type: string - description: ID of the stream that all the transactions will be added in to. + description: ID of the stream that all the transactions will be added into. transaction_ids: type: array - description: IDs of all the transactions that will be added into the stream. If any transaction currently exist in another stream, it will be removed from the other stream. + description: IDs of all the transactions that will be added into the stream. If any transaction currently exists in another stream, it will be removed from the other stream. items: type: string required: @@ -22965,7 +23241,7 @@ components: - modified_streams TransactionsRecurringMergeRequest: type: object - description: TransactionsRecurringMergeRequest defined the request schema for `/transactions/recurring/streams/merge` endpoint. + description: TransactionsRecurringMergeRequest defines the request schema for `/transactions/recurring/streams/merge` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -23012,7 +23288,7 @@ components: - modified_streams TransactionsRecurringCreateRequest: type: object - description: TransactionsRecurringCreateRequest defined the request schema for `/transactions/recurring/streams/create` endpoint. + description: TransactionsRecurringCreateRequest defines the request schema for `/transactions/recurring/streams/create` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -23103,7 +23379,7 @@ components: properties: inflow_streams: type: array - description: An array of depository transaction streams. + description: An array of inflow transaction streams. items: $ref: '#/components/schemas/TransactionStream' outflow_streams: @@ -23126,7 +23402,7 @@ components: - request_id TransactionsRulesCreateRequest: type: object - description: TransactionsRulesCreateRequest defines the request schema for `beta/transactions/rules/v1/create` + description: TransactionsRulesCreateRequest defines the request schema for `/beta/transactions/rules/v1/create` properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -24407,7 +24683,7 @@ components: properties: inflow_streams: type: array - description: An array of depository transaction streams. + description: An array of inflow transaction streams. items: $ref: '#/components/schemas/TransactionStream' outflow_streams: @@ -24981,6 +25257,38 @@ components: required: - item_id - request_id + SandboxFdxConsentSeedRequest: + type: object + description: Request to seed an FDX consent grant, and its backing item, for the given end user and recipient application so the FDX Consent API can be exercised in Sandbox. + properties: + client_id: + $ref: '#/components/schemas/APIClientID' + secret: + $ref: '#/components/schemas/APISecret' + customer_id: + type: string + description: The data provider's identifier for the end user to associate the seeded consent grant with. + application_id: + $ref: '#/components/schemas/ApplicationID' + consent_id: + type: string + description: Optional UUIDv4 identifier for the seeded consent grant. If omitted, one is generated. Seeding fails if a grant with this identifier already exists. + required: + - customer_id + - application_id + SandboxFdxConsentSeedResponse: + type: object + additionalProperties: true + description: Response containing the identifier of the seeded FDX consent grant, which can then be listed, retrieved, and revoked through the FDX Consent API. + properties: + consent_id: + type: string + description: The identifier of the newly seeded FDX consent grant. + request_id: + $ref: '#/components/schemas/RequestID' + required: + - consent_id + - request_id SandboxItemResetLoginRequest: type: object description: SandboxItemResetLoginRequest defines the request schema for `/sandbox/item/reset_login` @@ -25250,7 +25558,7 @@ components: user_id: $ref: '#/components/schemas/NewUserID' reason_code: - $ref: '#/components/schemas/UserProductsTerminateReasonCode' + $ref: '#/components/schemas/ProductsTerminateReasonCode' reason_note: type: string nullable: true @@ -25259,10 +25567,6 @@ components: required: - user_id - reason_code - UserProductsTerminateReasonCode: - description: The reason for terminating user-based products. - allOf: - - $ref: '#/components/schemas/ProductsTerminateReasonCode' UserProductsTerminateResponse: type: object additionalProperties: true @@ -25311,7 +25615,7 @@ components: UserThirdPartyTokenRemoveRequest: x-hidden-from-docs: true type: object - description: UserThirdPartyTokenCreateRequest defines the request schema for `/user/third_party_token/remove` + description: UserThirdPartyTokenRemoveRequest defines the request schema for `/user/third_party_token/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -25325,7 +25629,7 @@ components: x-hidden-from-docs: true type: object additionalProperties: true - description: UserThirdPartyTokenCreateResponse defines the response schema for `/user/third_party_token/remove` + description: UserThirdPartyTokenRemoveResponse defines the response schema for `/user/third_party_token/remove` properties: removed: type: boolean @@ -25862,15 +26166,19 @@ components: num_1099s_uploaded: type: integer description: The number of 1099s uploaded by the user + num_i20s_uploaded: + type: integer + description: The number of I-20s uploaded by the user required: - num_paystubs_uploaded - num_w2s_uploaded - num_bank_statements_uploaded - num_1099s_uploaded + - num_i20s_uploaded LinkSessionCraDocumentUploadResult: type: object nullable: true - description: The details of a document upload CRA session in link + description: The details of a document upload CRA session in Link properties: num_bank_statements_uploaded: type: integer @@ -26036,7 +26344,7 @@ components: last_status_update: format: date-time type: string - description: The date and time of the last time the `status` was updated, in IS0 8601 format + description: The date and time of the last time the `status` was updated, in ISO 8601 format schedule: $ref: '#/components/schemas/ExternalPaymentScheduleGet' refund_details: @@ -26536,7 +26844,7 @@ components: - end_date ProcessorInvestmentsTransactionsGetResponse: type: object - description: ProcessorInvestmentsTransactionsGetRequest defines the response schema for `/processor/investments/transactions/get` + description: ProcessorInvestmentsTransactionsGetResponse defines the response schema for `/processor/investments/transactions/get` additionalProperties: true properties: account: @@ -26766,6 +27074,7 @@ components: - pay - natural - kanmon + - kick description: The processor you are integrating with. required: - access_token @@ -27004,7 +27313,7 @@ components: `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically be initialized when any other product is initialized. - If launching Link with CRA products, `cra_base_reports` is required and must be included in the `products` array. + If launching Link with CRA products, `cra_base_report` is required and must be included in the `products` array. Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array. @@ -27480,7 +27789,7 @@ components: $ref: '#/components/schemas/DeviceId' DeviceId: type: object - description: Device Id associated with the device used during the previous link session + description: Device ID associated with the device used during the previous Link session properties: type: type: integer @@ -27551,7 +27860,7 @@ components: database_insights_enabled: type: boolean deprecated: true - description: Database Insights has been deprecated and replaced with Database Auth. Use the [Account Verification Dashboard](https://dashboard.plaid.com/account-verification) to enable Database Auth. + description: 'Database Insights has been deprecated and replaced with Database Auth. Use the [Account Verification Dashboard](https://dashboard.plaid.com/account-verification) to enable Database Auth. In Canada, Database Auth is in early availability and cannot yet be managed via the Dashboard; it must be enabled by passing `database_insights_enabled: true` in `/link/token/create`.' flow_type: type: string x-hidden-from-docs: true @@ -28279,7 +28588,7 @@ components: type: string nullable: true description: |- - 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. + The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; `null` will be returned otherwise. Safe for programmatic use. Possible values: `OAUTH_INVALID_TOKEN`: The user's OAuth connection to this institution has been invalidated. @@ -28365,6 +28674,19 @@ components: - CONSUMER_REPORT_ERROR - USER_ERROR - IDEMPOTENCY_ERROR + - ASSETS_ERROR + - CRA_MONITORING_ERROR + - CREDIT_PROFILE_REPORT_ERROR + - ENCOMPASS_ERROR + - ENRICH_ERROR + - FRAUD_INSIGHTS_ERROR + - FREDDIE_MAC_ERROR + - LINK_DELIVERY_ERROR + - PROFILE_ERROR + - RECURRING_TRANSACTIONS_ERROR + - STATEMENTS_ERROR + - TRANSFER_RECURRING_ERROR + - TRANSFER_REFUND_ERROR AccountType: type: string title: AccountType @@ -28560,7 +28882,7 @@ components: title: AccountBalance type: object additionalProperties: true - description: A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by `/accounts/balance/get` or `/signal/evaluate` (using a Balance-only ruleset). + description: A set of fields describing the balance for an account. For real-time values, use `/accounts/balance/get` or `/signal/evaluate` (with a Balance-only ruleset), which are fetched live from the institution at request time. Values returned by other endpoints may be cached, or adjusted by Plaid to reflect transaction activity received since the last refresh. properties: available: type: number @@ -28774,7 +29096,7 @@ components: - has_numbers_match - is_numbers_match_verified AccountVerificationInsightsPreviousReturns: - title: VerificationInsightsNetworkStatus + title: AccountVerificationInsightsPreviousReturns type: object additionalProperties: true description: Information about known ACH returns for the account and routing number. @@ -28895,7 +29217,7 @@ components: title: LinkDeliveryMetadata type: object additionalProperties: true - description: Information related to the related to the delivery of the link session to users + description: Information related to the delivery of the link session to users x-hidden-from-docs: true properties: communication_method: @@ -28943,13 +29265,13 @@ components: description: |- The ACH account number for the account. - 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). + At certain institutions, including Chase, PNC, and US Bank, you will receive a "tokenized" account number, which is not the user's actual account number. 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). routing: type: string - description: The ACH routing number for the account. This may be a tokenized routing number. For more information, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers). + description: The ACH routing number for the account. For more information, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers). wire_routing: type: string description: The wire transfer routing number for the account. This field is only populated if the institution is known to use a separate wire transfer routing number. Many institutions do not have a separate wire routing number and use the ACH routing number for wires instead. It is recommended to have the end user manually confirm their wire routing number before sending any wires to their account, especially if this field is `null`. @@ -29088,7 +29410,7 @@ components: InvestmentsAuthGetNumbers: type: object additionalProperties: true - description: Identifying information for transferring holdings to an investments account. + description: Identifying information for transferring holdings to an investment account. properties: acats: type: array @@ -29106,7 +29428,7 @@ components: title: NumbersACATS type: object additionalProperties: true - description: Identifying information for transferring holdings to an investments account via ACATS. + description: Identifying information for transferring holdings to an investment account via ACATS. properties: account_id: type: string @@ -29127,7 +29449,7 @@ components: title: NumbersATON type: object additionalProperties: true - description: Identifying information for transferring holdings to an investments account via ATON. + description: Identifying information for transferring holdings to an investment account via ATON. properties: account_id: type: string @@ -29243,7 +29565,7 @@ components: query: type: string description: | - For `TRANSACTION_ID` field, provide `transaction_id`. For `NAME` field, provide a string pattern. + For `TRANSACTION_ID` field, provide `transaction_id`. For `MERCHANT_NAME` field, provide a string pattern. required: - field - type @@ -29305,7 +29627,7 @@ components: amount: type: number format: double - description: 'The settled value of the transaction, denominated in the transactions''s currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.' + description: 'The settled value of the transaction, denominated in the transaction''s currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null. @@ -29315,7 +29637,7 @@ components: description: |- The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true category: deprecated: true @@ -29325,7 +29647,7 @@ components: All Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization. - If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. + If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. nullable: true x-hidden-from-docs: true items: @@ -29337,7 +29659,7 @@ components: All Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization. - If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. + If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. type: string nullable: true x-hidden-from-docs: true @@ -29359,7 +29681,7 @@ components: Note: While Plaid does not currently plan to remove this field, it is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name. - If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. + If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. merchant_name: type: string description: The merchant name, as enriched by Plaid from the `name` field. This is typically a more human-readable version of the merchant counterparty in the transaction. For some bank transactions (such as checks or account transfers) where there is no meaningful merchant name, this value will be `null`. @@ -29404,7 +29726,7 @@ components: deprecated: true logo_url: type: string - description: The URL of a logo associated with this transaction, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with this transaction, if available. The logo will always be a 100×100 pixel PNG file. nullable: true website: type: string @@ -29471,7 +29793,7 @@ components: $ref: '#/components/schemas/TransactionCode' personal_finance_category_icon_url: type: string - description: The URL of an icon associated with the primary personal finance category. The icon will always be 100×100 pixel PNG file. + description: The URL of an icon associated with the primary personal finance category. The icon will always be a 100×100 pixel PNG file. counterparties: type: array description: The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description. @@ -29519,7 +29841,7 @@ components: type: number format: double nullable: true - description: 'The settled value of the transaction, denominated in the transactions''s currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.' + description: 'The settled value of the transaction, denominated in the transaction''s currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null. @@ -29529,7 +29851,7 @@ components: description: |- The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true check_number: type: string @@ -29549,7 +29871,7 @@ components: Note: This is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name. - If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. + If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. merchant_name: type: string description: The merchant name, as enriched by Plaid from the `name` field. This is typically a more human-readable version of the merchant counterparty in the transaction. For some bank transactions (such as checks or account transfers) where there is no meaningful merchant name, this value will be `null`. @@ -29577,7 +29899,7 @@ components: description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. logo_url: type: string - description: The URL of a logo associated with this transaction, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with this transaction, if available. The logo will always be a 100×100 pixel PNG file. nullable: true website: type: string @@ -29617,7 +29939,7 @@ components: personal_finance_category_icon_url: type: string nullable: true - description: The URL of an icon associated with the primary personal finance category. The icon will always be 100×100 pixel PNG file. + description: The URL of an icon associated with the primary personal finance category. The icon will always be a 100×100 pixel PNG file. counterparties: type: array description: The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description. @@ -29857,7 +30179,7 @@ components: InvestmentsAuthOwner: title: InvestmentsAuthOwner type: object - description: Information on the ownership of an investments account + description: Information on the ownership of an investment account additionalProperties: true properties: account_id: @@ -30177,7 +30499,7 @@ components: description: |- Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`. - If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, the `payment_meta` key will always appear, but no data elements are guaranteed. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. + If the `transactions` object was returned by a Transactions endpoint such as `/transactions/sync` or `/transactions/get`, the `payment_meta` key will always appear, but no data elements are guaranteed. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights. properties: reference_number: type: string @@ -30285,6 +30607,8 @@ components: `cash:` Cash deposit or withdrawal + `cash advance:` Cash advance drawn against a credit card or line of credit + `cashback:` Cash withdrawal while making a debit card purchase `cheque:` Document ordering the payment of money to another person or organization @@ -30293,12 +30617,18 @@ components: `interest:` Interest earned or incurred + `late fee:` Fee associated with a late or past-due payment + + `membership fee:` Annual or recurring membership fee + `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 + `returned item fee:` Fee for a returned item, such as a returned check or stop payment + `standing order:` Payment instructed by the account holder to a third party at a regular interval `transfer:` Transfer of money between accounts @@ -30308,13 +30638,17 @@ components: - bank charge - bill payment - cash + - cash advance - cashback - cheque - direct debit - interest + - late fee + - membership fee - payment - purchase - refund + - returned item fee - standing order - transfer - null @@ -30361,7 +30695,7 @@ components: nullable: true logo_url: type: string - description: The URL of a logo associated with the counterparty, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with the counterparty, if available. The logo will always be a 100×100 pixel PNG file. nullable: true confidence_level: type: string @@ -30407,7 +30741,7 @@ components: nullable: true logo_url: type: string - description: The URL of a logo associated with the counterparty, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with the counterparty, if available. The logo will always be a 100×100 pixel PNG file. nullable: true confidence_level: type: string @@ -30585,7 +30919,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 pay out to or collect funds from. 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. @@ -31126,7 +31460,7 @@ components: After receipt of this webhook, the new changes can be fetched for the Item from `/processor/transactions/sync`. - Note that to receive this webhook for an Item, `/processor/transactions/sync` must have been called at least once on that Item. This means that, unlike the `INITIAL_UPDATE` and `HISTORICAL_UPDATE` webhooks, it will not fire immediately upon Item creation. If `/transactions/sync` is called on an Item that was *not* initialized with Transactions, the webhook will fire twice: once the first 30 days of transactions data has been fetched, and a second time when all available historical transactions data has been fetched. + Note that to receive this webhook for an Item, `/processor/transactions/sync` must have been called at least once on that Item. This means that, unlike the `INITIAL_UPDATE` and `HISTORICAL_UPDATE` webhooks, it will not fire immediately upon Item creation. If `/processor/transactions/sync` is called on an Item that was *not* initialized with Transactions, the webhook will fire twice: once the first 30 days of transactions data has been fetched, and a second time when all available historical transactions data has been fetched. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic transactions data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. type: object @@ -31877,7 +32211,7 @@ components: nullable: true payment_reference_number: type: string - description: The relevant account number that should be used to reference this loan for payments. In the majority of cases, `payment_reference_number` will match `account_number,` but in some institutions, such as Great Lakes (`ins_116861`), it will be different. + description: The relevant account number that should be used to reference this loan for payments. In the majority of cases, `payment_reference_number` will match `account_number`, but in some institutions, such as Great Lakes (`ins_116861`), it will be different. nullable: true pslf_status: $ref: '#/components/schemas/PSLFStatus' @@ -32206,7 +32540,7 @@ components: - income-contingent repayment - income-based repayment - income-sensitive repayment - - interest-only + - interest only - other - pay as you earn - revised pay as you earn @@ -32643,7 +32977,7 @@ components: PaymentInitiationConsentPayerNumbers: title: PaymentInitiationConsentPayerNumbers type: object - description: The counterparty's bank account numbers. Exactly one of IBAN or Bacs data is required. + description: The payer's bank account numbers. Exactly one of IBAN or Bacs data is required. additionalProperties: true properties: bacs: @@ -32812,7 +33146,7 @@ components: title: StatusBreakdown type: object additionalProperties: true - description: A detailed breakdown of the institution's performance for a request type. The values for `success`, `error_plaid`, and `error_institution` sum to 1. The time range used for calculating the breakdown may range from the most recent few minutes to the past six hours. In general, smaller institutions will show status that was calculated over a longer period of time. For Investment updates, which are refreshed less frequently, the period assessed may be 24 hours or more. For more details, see [Institution status details](https://plaid.com/docs/account/activity/#institution-status-details). + description: A detailed breakdown of the institution's performance for a request type. The values for `success`, `error_plaid`, and `error_institution` sum to 1. The time range used for calculating the breakdown may range from the most recent few minutes to the past six hours. In general, smaller institutions will show status that was calculated over a longer period of time. For Investment updates, which are refreshed less frequently, the period assessed may be 24 hours or more. For more details, see [Institution status details](https://plaid.com/docs/account/activity/#troubleshooting-institution-insights). properties: success: description: The percentage of login attempts that are successful, expressed as a decimal. @@ -32916,7 +33250,7 @@ components: selections_per_question: type: number description: | - Number of available answers per question, used if `type` is `selection`. Defaults to 2. + Number of available answers per question, used if `type` is `selections`. Defaults to 2. required: - type - question_rounds @@ -32928,7 +33262,7 @@ components: title: OverrideAccounts type: object additionalProperties: true - description: Data to use to set values of test accounts. Some values cannot be specified in the schema and will instead will be calculated from other test data in order to achieve more consistent, realistic test data. + description: Data to use to set values of test accounts. Some values cannot be specified in the schema and will instead be calculated from other test data in order to achieve more consistent, realistic test data. properties: type: $ref: '#/components/schemas/OverrideAccountType' @@ -33331,7 +33665,7 @@ components: title: InflowModel type: object additionalProperties: true - description: The `inflow_model` allows you to model a test account that receives regular income or make regular payments on a loan. Any transactions generated by the `inflow_model` will appear in addition to randomly generated test data or transactions specified by `override_accounts`. + description: The `inflow_model` allows you to model a test account that receives regular income or makes regular payments on a loan. Any transactions generated by the `inflow_model` will appear in addition to randomly generated test data or transactions specified by `override_accounts`. properties: type: type: string @@ -33350,13 +33684,13 @@ components: format: double description: Amount of income per month. This value is required if `type` is `monthly-income`. payment_day_of_month: - description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the income transaction will appear. The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`. + description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the income transaction will appear. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`. type: number transaction_name: type: string description: The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`. statement_day_of_month: - description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the balance is calculated for the next payment. The name of the income transaction. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`. + description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the balance is calculated for the next payment. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`. type: string required: - type @@ -33581,7 +33915,7 @@ components: ytd_amount: type: number format: double - description: The year-to-date amount of the deduction. + description: The year-to-date amount of the line item. nullable: true PaystubOverrideEarningsTotal: title: PaystubOverrideEarningsTotal @@ -34567,7 +34901,7 @@ components: title: InvestmentsHistoricalUpdateWebhook type: object additionalProperties: true - description: Fired after an asynchronous extraction on an investments account. + description: Fired after an asynchronous extraction on an investment account. x-examples: example-1: webhook_type: INVESTMENTS_TRANSACTIONS @@ -35432,7 +35766,7 @@ components: description: |- Fired when the status of a payment has changed. 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/). - Note: Plaid payment statuses do not constitute proof that funds have arrived in the recipient's account. Do not use `new_payment_status` to confirm fund settlement. + Note: For standard Payment Initiation, Plaid payment statuses do not constitute proof that funds have arrived in the recipient's account, and you should not use `new_payment_status` to confirm fund settlement. For options that provide confirmation of fund receipt, see [Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/payment-confirmation/). x-examples: example-1: webhook_type: PAYMENT_INITIATION @@ -35651,7 +35985,7 @@ components: description: | The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true vested_quantity: type: number @@ -35842,7 +36176,7 @@ components: description: |- The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. market_identifier_code: nullable: true type: string @@ -35865,6 +36199,10 @@ components: nullable: true type: string description: The ISO-10962 Classification of Financial Instruments Code used to classify the security based on its structure and function. + figi: + nullable: true + type: string + description: 12-character FIGI, a unique Financial Instrument Global Identifier assigned to securities that is immutable and stays consistent across most corporate actions. This is an open data standard issued by the Object Management Group and administered by Bloomberg L.P. option_contract: $ref: '#/components/schemas/OptionContract' fixed_income: @@ -35889,6 +36227,7 @@ components: - sector - industry - cfi_code + - figi - option_contract - fixed_income InvestmentTransactionType: @@ -36060,7 +36399,7 @@ components: `discount`: the rate at which the present value or cost is discounted from the future value upon maturity, also known as the face value. - `yield`: the total predicted rate of return factoring in both the discount rate and the coupon rate, applicable to securities such as exchange-traded bonds which can both be interest-bearing as well as sold at a discount off its face value. + `yield`: the total predicted rate of return factoring in both the discount rate and the coupon rate, applicable to securities such as exchange-traded bonds which can both be interest-bearing as well as sold at a discount off their face value. InvestmentTransaction: title: InvestmentTransaction type: object @@ -36123,9 +36462,9 @@ components: unofficial_currency_code: type: string description: |- - The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. + The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true required: - investment_transaction_id @@ -36704,7 +37043,7 @@ components: nullable: true unauthorized_return_window: type: string - description: 'The date 61 business days from settlement date indicating the following ACH returns can no longer happen: R05, R07, R10, R11, R51, R33, R37, R38, R51, R52, R53. This will be of the form YYYY-MM-DD.' + description: 'The date 61 business days from settlement date indicating the following ACH returns can no longer happen: R05, R07, R10, R11, R51, R33, R37, R38, R52, R53. This will be of the form YYYY-MM-DD.' format: date nullable: true expected_settlement_date: @@ -37104,7 +37443,7 @@ components: description: |- A random key provided by the client, per unique recurring transfer. Maximum of 50 characters. - The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a recurring fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single recurring transfer is created. + The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a recurring transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single recurring transfer is created. TransferRefundIdempotencyKey: title: TransferRefundIdempotencyKey type: string @@ -37823,14 +38162,17 @@ components: For transfers submitted as `same-day-ach`, the Same Day ACH cutoff is 3:00 PM Eastern Time. It is recommended to send the request 15 minutes prior to the cutoff to ensure that it will be processed in time for submission before the cutoff. If the transfer is processed after this cutoff but before the Standard ACH cutoff, it will be sent over Standard ACH rails and will not incur same-day charges; this will apply to both legs of the transfer if applicable. The transaction limit for a Same Day ACH transfer is $1,000,000. Authorization requests sent with an amount greater than $1,000,000 will fail. - For transfers submitted as `rtp`, Plaid will automatically route between the Real-Time Payments (RTP) 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`. + For transfers submitted as `rtp`, Plaid will automatically route between the Real-Time Payments (RTP) 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. + + Support for `rfp` (request for payment) is currently in closed beta. To learn more, contact your Plaid account manager. For transfers submitted as `rfp`, the `type` must be `debit`. enum: - ach - same-day-ach - rtp - wire + - rfp TransferACHNetwork: type: string title: TransferACHNetwork @@ -37843,7 +38185,7 @@ components: - same-day-ach TransferRecurringNetwork: type: string - title: TransferRecurrinngNetwork + title: TransferRecurringNetwork description: Networks eligible for recurring transfers. enum: - ach @@ -37907,7 +38249,7 @@ components: $ref: '#/components/schemas/TransferMigratedFundingAccountIDRequest' ledger_id: type: string - description: Specify which ledger balance should be used to fund the transfer. You can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance. + description: Specify which ledger balance should be used to fund the transfer. You can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to the id of the default ledger balance. nullable: true payment_profile_token: $ref: '#/components/schemas/TransferPaymentProfileToken' @@ -37945,7 +38287,7 @@ components: default: true x-hidden-from-docs: true deprecated: true - description: If set to `false`, Plaid will not offer a `guarantee_decision` for this request (Guarantee customers only). This field is deprecated in favor for `guarantee`. + description: If set to `false`, Plaid will not offer a `guarantee_decision` for this request (Guarantee customers only). This field is deprecated in favor of `guarantee`. request_guarantee: type: boolean nullable: true @@ -39049,7 +39391,7 @@ components: type: string title: TransferEventType description: |- - The type of event that this transfer represents. Event types with prefix `sweep` represents events for Plaid Ledger sweeps. + The type of event that this transfer represents. Event types with prefix `sweep` represent events for Plaid Ledger sweeps. `pending`: A new transfer was created; it is in the pending state. @@ -39063,6 +39405,8 @@ components: `funds_available`: Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.) + `guaranteed`: The transfer has been fully guaranteed by Plaid. + `returned`: A posted transfer was returned. `swept`: The transfer was swept to / from the sweep account. @@ -39105,6 +39449,7 @@ components: - posted - settled - funds_available + - guaranteed - returned - swept - swept_settled @@ -39341,6 +39686,8 @@ components: $ref: '#/components/schemas/BankTransferFailure' direction: $ref: '#/components/schemas/BankTransferDirection' + receiver_details: + $ref: '#/components/schemas/ReceiverDetails' required: - event_id - timestamp @@ -39353,6 +39700,20 @@ components: - bank_transfer_iso_currency_code - failure_reason - direction + - receiver_details + ReceiverDetails: + title: ReceiverDetails + type: object + additionalProperties: true + nullable: true + description: Additional details for receiver events. Currently always `null`. + properties: + available_balance: + type: string + description: The available balance associated with the receiver event. + nullable: true + required: + - available_balance TransferEventListResponse: title: TransferEventListResponse type: object @@ -39871,7 +40232,7 @@ components: description: The amount of this balance available for use (decimal string with two digits of precision e.g. "10.00"). current: type: string - description: The available balance, plus amount of pending funds that in processing (decimal string with two digits of precision e.g. "10.00"). + description: The available balance, plus the amount of pending funds that are in processing (decimal string with two digits of precision e.g. "10.00"). type: $ref: '#/components/schemas/TransferBalanceType' required: @@ -39888,7 +40249,7 @@ components: $ref: '#/components/schemas/APISecret' ledger_id: type: string - description: Specify which ledger balance to get. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance. + description: Specify which ledger balance to get. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to the id of the default ledger balance. nullable: true originator_client_id: type: string @@ -39987,7 +40348,7 @@ components: $ref: '#/components/schemas/TransferLedgerFundingAccountIDRequest' ledger_id: type: string - description: Specify which ledger balance to deposit to. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance. + description: Specify which ledger balance to deposit to. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to the id of the default ledger balance. nullable: true amount: type: string @@ -40017,7 +40378,7 @@ components: $ref: '#/components/schemas/TransferLedgerFundingAccountIDRequest' ledger_id: type: string - description: Specify which ledger balance to withdraw from. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance. + description: Specify which ledger balance to withdraw from. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to the id of the default ledger balance. nullable: true amount: type: string @@ -40873,7 +41234,7 @@ components: $ref: '#/components/schemas/TransferUserInResponse' description: type: string - description: A description for the underlying transfer. Maximum of 8 characters. + description: A description for the underlying transfer. Maximum of 15 characters. metadata: $ref: '#/components/schemas/TransferMetadata' iso_currency_code: @@ -40983,7 +41344,7 @@ components: $ref: '#/components/schemas/TransferUserInResponse' description: type: string - description: A description for the underlying transfer. Maximum of 8 characters. + description: A description for the underlying transfer. Maximum of 15 characters. metadata: $ref: '#/components/schemas/TransferMetadata' iso_currency_code: @@ -41065,7 +41426,7 @@ components: type: object additionalProperties: true nullable: true - description: The failure reason if the event type for a refund is `"failed"` or `"returned"`. Null value otherwise. + description: The failure reason if the status for a refund is `"failed"` or `"returned"`. Null value otherwise. properties: failure_code: type: string @@ -41124,7 +41485,7 @@ components: required: - refund_id TransferRefundGetResponse: - title: TransferRefundCreateResponse + title: TransferRefundGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/refund/get` @@ -41527,7 +41888,7 @@ components: ledger_id: type: string nullable: true - description: Specify which ledger balance to simulate converting pending balance to available balance. If this field is left blank, this will default to id of the default ledger balance. + description: Specify which ledger balance to simulate converting pending balance to available balance. If this field is left blank, this will default to the id of the default ledger balance. originator_client_id: nullable: true type: string @@ -41791,7 +42152,7 @@ components: secret: $ref: '#/components/schemas/APISecret' SandboxTransferRepaymentSimulateResponse: - title: SandboxTransferSimulateResponse + title: SandboxTransferRepaymentSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/repayment/simulate` @@ -42426,7 +42787,7 @@ components: items: $ref: '#/components/schemas/AccessToken' description: |- - An array of access tokens corresponding to Items that a user has previously connected with. Data from these institutions will be cross-referenced with document data received during the Document Income flow to help verify that the uploaded documents are accurate. If the `transactions` product was not initialized for these Items during link, it will be initialized after this Link session. + An array of access tokens corresponding to Items that a user has previously connected with. Data from these institutions will be cross-referenced with document data received during the Document Income flow to help verify that the uploaded documents are accurate. If the `transactions` product was not initialized for these Items during Link, it will be initialized after this Link session. This field should only be used with the `payroll` income source type. nullable: true @@ -43035,8 +43396,14 @@ components: `DOCUMENT_TYPE_NONE`: Used to indicate that there is no underlying document for the data. + `DOCUMENT_TYPE_US_TAX_1099_MISC`: A Form 1099-MISC information return reporting miscellaneous income. + + `DOCUMENT_TYPE_US_TAX_1099_K`: A Form 1099-K information return reporting payment card and third-party network transactions. + `DOCUMENT_TYPE_PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid. + `DOCUMENT_TYPE_US_STUDENT_I20`: A Form I-20 Certificate of Eligibility for Nonimmigrant Student Status. + `UNKNOWN`: Document type could not be determined. enum: - UNKNOWN @@ -43051,6 +43418,7 @@ components: - DOCUMENT_TYPE_US_TAX_1099_MISC - DOCUMENT_TYPE_US_TAX_1099_K - DOCUMENT_TYPE_PLAID_GENERATED_PAYSTUB_PDF + - DOCUMENT_TYPE_US_STUDENT_I20 Paystub: title: Paystub type: object @@ -43141,7 +43509,7 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -43168,7 +43536,7 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -43287,11 +43655,11 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double - description: The year-to-date amount of the deduction. + description: The year-to-date amount of the line item. nullable: true EarningsBreakdownCanonicalDescription: type: string @@ -43335,9 +43703,9 @@ components: nullable: true type: string description: |- - The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. + The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -43382,7 +43750,7 @@ components: description: |- The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -43665,7 +44033,7 @@ components: description: |- The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. current_pay: $ref: '#/components/schemas/Pay' PaystubDeduction: @@ -43676,7 +44044,7 @@ components: properties: type: type: string - description: 'The description of the deduction, as provided on the paystub. For example: `"401(k)"`, `"FICA MED TAX"`.' + description: 'The type of the deduction, as provided on the paystub. For example: `"401(k)"`, `"FICA MED TAX"`.' nullable: true is_pretax: type: boolean @@ -43798,7 +44166,7 @@ components: nullable: true employer_id_number: type: string - description: An employee identification number or EIN. + description: An employer identification number or EIN. nullable: true wages_tips_other_comp: type: string @@ -44598,7 +44966,7 @@ components: amount: type: number description: |- - The settled value of the transaction, denominated in the transactions's currency as stated in `iso_currency_code` or `unofficial_currency_code`. + 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: @@ -44718,7 +45086,7 @@ components: properties: item_ids: type: array - description: An array of `item_id`s whose bank statements information is returned. Each `item_id` should uniquely identify a bank statements uploaded item. If this field is not provided, all `item_id`s associated with the `user_token` will returned in the response. + description: An array of `item_id`s whose bank statements information is returned. Each `item_id` should uniquely identify a bank statements uploaded item. If this field is not provided, all `item_id`s associated with the `user_token` will be returned in the response. items: type: string CreditPayrollIncomeParsingConfigUpdateRequest: @@ -44789,10 +45157,10 @@ components: allOf: - $ref: '#/components/schemas/NewUserID' CreditPayrollIncomeRiskSignalsGetResponse: - title: CreditPayrollIncomeRiskSignalsGetReponse + title: CreditPayrollIncomeRiskSignalsGetResponse type: object additionalProperties: true - description: CreditPayrollIncomeRiskSignalsGetRequest defines the response schema for `/credit/payroll_income/risk_signals/get` + description: CreditPayrollIncomeRiskSignalsGetResponse defines the response schema for `/credit/payroll_income/risk_signals/get` properties: items: description: Array of payroll items. @@ -45036,7 +45404,7 @@ components: properties: item_ids: type: array - description: An array of `item_id`s whose payroll information is returned. Each `item_id` should uniquely identify a payroll income item. If this field is not provided, all `item_id`s associated with the `user_token` will returned in the response. + description: An array of `item_id`s whose payroll information is returned. Each `item_id` should uniquely identify a payroll income item. If this field is not provided, all `item_id`s associated with the `user_token` will be returned in the response. items: type: string CreditPayrollIncomeGetResponse: @@ -45075,7 +45443,7 @@ components: 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. + 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/document-income) documentation. This download URL can only be used once and expires after two minutes. To generate a new download URL, call `/credit/payroll_income/get` again. nullable: true @@ -45136,6 +45504,12 @@ components: `US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee. + `US_TAX_1099_MISC`: A 1099-MISC tax form reporting miscellaneous income. + + `US_TAX_1099_K`: A 1099-K tax form reporting payment card and third-party network transactions. + + `US_STUDENT_I20`: A Certificate of Eligibility for Nonimmigrant Student Status (Form I-20) issued by a US school. + `US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military. `US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military. @@ -45154,6 +45528,9 @@ components: - PAYSTUB - BANK_STATEMENT - US_TAX_W2 + - US_TAX_1099_MISC + - US_TAX_1099_K + - US_STUDENT_I20 - US_MILITARY_ERAS - US_MILITARY_LES - US_MILITARY_CLES @@ -45449,11 +45826,17 @@ components: type: array items: $ref: '#/components/schemas/Credit1099' + i20s: + description: Array of Form I-20 US immigration student documents. + type: array + items: + $ref: '#/components/schemas/CreditI20' required: - account_id - pay_stubs - w2s - form1099s + - i20s Credit1099: title: Credit1099 type: object @@ -45782,6 +46165,101 @@ components: - Payment Settlement Entity (PSE) - Electronic Payment Facilitator (EPF) - Other Third Party + CreditI20: + title: CreditI20 + type: object + additionalProperties: true + description: An object representing an end user's Form I-20 US immigration student document. + properties: + document_id: + type: string + description: An identifier of the document referenced by the document metadata. + nullable: true + document_metadata: + $ref: '#/components/schemas/CreditDocumentMetadata' + student: + $ref: '#/components/schemas/CreditI20Student' + personal_funds: + type: number + format: double + description: Amount of the student's personal funds. + nullable: true + on_campus_employment: + type: number + format: double + description: Amount of funds from on-campus employment. + nullable: true + funds_from_this_school: + type: number + format: double + description: Amount of funds provided by the issuing school. + nullable: true + students_funding_total: + type: number + format: double + description: Total amount of funds available to the student. + nullable: true + funds_from_another_source: + type: number + format: double + description: Amount of funds from another source. + nullable: true + estimated_average_costs_total: + type: number + format: double + description: Estimated total average costs for the program period. + nullable: true + estimated_average_living_expenses: + type: number + format: double + description: Estimated average living expenses. + nullable: true + students_funding_period_months: + type: integer + format: int64 + description: Number of months the student's funding covers. + nullable: true + estimated_average_costs_period_months: + type: integer + format: int64 + description: Number of months the estimated average costs cover. + nullable: true + CreditI20Student: + title: CreditI20Student + type: object + additionalProperties: true + description: An object representing the student named on a Form I-20. + properties: + given_name: + type: string + description: Given name of the student. + nullable: true + surname_primary_name: + type: string + description: Surname or primary name of the student. + nullable: true + passport_name: + type: string + description: Name of the student as it appears on their passport. + nullable: true + preferred_name: + type: string + description: Preferred name of the student. + nullable: true + school_name: + type: string + description: Name of the school issuing the Form I-20. + nullable: true + program_start_date: + type: string + format: date + description: Start date of the program in ISO 8601 format (YYYY-MM-DD). + nullable: true + program_end_date: + type: string + format: date + description: End date of the program in ISO 8601 format (YYYY-MM-DD). + nullable: true CreditPayStub: title: CreditPayStub type: object @@ -45855,7 +46333,7 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -45888,7 +46366,7 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -45950,11 +46428,11 @@ components: description: |- The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double - description: The year-to-date amount of the deduction. + description: The year-to-date amount of the line item. nullable: true required: - canonical_description @@ -46024,9 +46502,9 @@ components: nullable: true type: string description: |- - The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. + The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -46052,7 +46530,7 @@ components: nullable: true marital_status: type: string - description: Marital status of the employee - either `SINGLE` or `MARRIED` or `NOT LISTED`. + description: Marital status of the employee - one of `SINGLE`, `MARRIED`, or `NOT LISTED`. nullable: true x-override-enum-values-shown: - SINGLE @@ -46157,7 +46635,7 @@ components: description: |- The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. ytd_amount: type: number format: double @@ -46227,7 +46705,7 @@ components: description: |- The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. required: - pay_amount - distribution_breakdown @@ -46275,7 +46753,7 @@ components: description: |- The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. required: - account_name - bank_name @@ -46438,7 +46916,7 @@ components: nullable: true employer_id_number: type: string - description: An employee identification number or EIN. + description: An employer identification number or EIN. nullable: true wages_tips_other_comp: type: string @@ -47166,7 +47644,7 @@ components: - request_id - application ProductAccess: - description: The product access being requested. Used to or disallow product access across all accounts. If unset, defaults to all products allowed. + description: The product access being requested. Used to allow or disallow product access across all accounts. If unset, defaults to all products allowed. type: object additionalProperties: true properties: @@ -47289,7 +47767,7 @@ components: - ENROLLMENT - PORTAL ItemApplicationUnlinkRequest: - description: ItemApplicationUnlinkRequest defines the request schema for `/item/application/unlink/` + description: ItemApplicationUnlinkRequest defines the request schema for `/item/application/unlink` type: object properties: client_id: @@ -47396,8 +47874,8 @@ components: created_at: type: string format: date-time - description: The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC. - example: "2020-01-01" + description: The date and time this application was linked, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC (e.g. `"2020-01-01T00:00:00Z"`). Note that older, legacy integrations instead receive this value as a date only, in `YYYY-MM-DD` format (e.g. `"2020-01-01"`). + example: "2020-01-01T00:00:00Z" scopes: $ref: '#/components/schemas/ScopesNullable' required: @@ -47840,7 +48318,7 @@ components: title: SandboxCraCashflowUpdatesUpdateResponse additionalProperties: true type: object - description: SandboxCraCashflowUpdatesUpdateResponse defines the response schema for `sandbox/cashflow_updates/update` + description: SandboxCraCashflowUpdatesUpdateResponse defines the response schema for `/sandbox/cra/cashflow_updates/update` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -47902,7 +48380,7 @@ components: A score from 1-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood. The score evaluates the transaction return risk of an unauthorized debit and covers return codes: "R05", "R07", "R10", "R11", "R29". - These returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized. + These returns typically have a return time frame of up to 60 calendar days. During this period, customers of financial institutions can dispute a transaction as unauthorized. type: integer minimum: 1 maximum: 99 @@ -47931,7 +48409,7 @@ components: SandboxOauthSelectAccountsRequest: title: SandboxOauthSelectAccountsRequest type: object - description: Defines the request schema for `sandbox/oauth/select_accounts` + description: Defines the request schema for `/sandbox/oauth/select_accounts` properties: oauth_state_id: type: string @@ -48300,7 +48778,7 @@ components: This field is only populated for transactions of type `RETURN`, `FUNDS_SWEEP`, `REFUND` and `PAYOUT`. - The relationship between a `PIS_PAY_IN` payment and its corresponding `REFUND` transactions is only available through `refund_ids` property in the payment object. See[`/payment_initiation/payment/get`](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-get-response-refund-ids). + The relationship between a `PIS_PAY_IN` payment and its corresponding `REFUND` transactions is only available through the `refund_ids` property in the payment object. See [`/payment_initiation/payment/get`](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-get-response-refund-ids). properties: id: type: string @@ -48506,7 +48984,7 @@ components: description: A unique ID identifying the transaction wallet_id: type: string - description: The EMI (E-Money Institution) wallet that this payment is associated with, if any. This wallet is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests. + description: The ID of the e-wallet that this transaction is associated with. reference: type: string description: A reference for the transaction @@ -48556,7 +49034,7 @@ components: last_status_update: format: date-time type: string - description: The date and time of the last time the `status` was updated, in IS0 8601 format + description: The date and time of the last time the `status` was updated, in ISO 8601 format payee_verification_status: $ref: '#/components/schemas/WalletTransactionPayeeVerificationStatus' payment_id: @@ -48744,7 +49222,7 @@ components: type: number format: double description: |- - The value of the transaction with direction. (NOTE: this will affect enrichment results, so directions are important):. + The value of the transaction with direction. (NOTE: this will affect enrichment results, so directions are important). Negative (-) for credits (e.g., incoming transfers, refunds) Positive (+) for debits (e.g., purchases, fees, outgoing transfers) iso_currency_code: @@ -48889,7 +49367,7 @@ components: nullable: true logo_url: type: string - description: The URL of a logo associated with this transaction, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with this transaction, if available. The logo will always be a 100×100 pixel PNG file. nullable: true check_number: type: string @@ -48912,7 +49390,7 @@ components: $ref: '#/components/schemas/PersonalFinanceCategory' personal_finance_category_icon_url: type: string - description: The URL of an icon associated with the primary personal finance category. The icon will always be 100×100 pixel PNG file. + description: The URL of an icon associated with the primary personal finance category. The icon will always be a 100×100 pixel PNG file. counterparties: type: array description: The counterparties present in the transaction. Counterparties, such as the merchant or the financial institution, are extracted by Plaid from the raw description. @@ -48965,7 +49443,7 @@ components: $ref: '#/components/schemas/Location' logo_url: type: string - description: The URL of a logo associated with this transaction, if available. The logo will always be 100×100 pixel PNG file. + description: The URL of a logo associated with this transaction, if available. The logo will always be a 100×100 pixel PNG file. nullable: true merchant_name: type: string @@ -48981,7 +49459,7 @@ components: $ref: '#/components/schemas/PersonalFinanceCategory' personal_finance_category_icon_url: type: string - description: The URL of an icon associated with the primary personal finance category. The icon will always be 100×100 pixel PNG file. + description: The URL of an icon associated with the primary personal finance category. The icon will always be a 100×100 pixel PNG file. website: type: string description: The website associated with this transaction. @@ -49326,7 +49804,7 @@ components: description: The date and time when `ewa_scores` was generated, in ISO 8601 format (e.g. "2018-04-12T03:32:11Z"). ewa_scores: type: array - description: A list of earned wage access (EWA) scoring entries that map potential advance amounts to repayment likelihood scores. The predefined advance amount ranges are `[0, 25]`, `[25, 50]`, `[50, 100]`, `[100, 200]`, `[200, 300]`, `[300, 400]`, and `[400, 500]`. + description: A list of earned wage access (EWA) scoring entries that map potential advance amounts to repayment likelihood scores. The predefined advance amount ranges are `[0, 25)`, `[25, 50)`, `[50, 100)`, `[100, 200)`, `[200, 300)`, `[300, 400)`, and `[400, 500)`. items: $ref: '#/components/schemas/EwaScore' ewa_attributes: @@ -49424,7 +49902,7 @@ components: description: The current status of the issue. Issue: type: object - description: Information on an issue encountered with financial institutions interactions with financial institutions during Linking. + description: Information on an issue encountered with financial institution interactions during Linking. additionalProperties: true properties: issue_id: @@ -49476,7 +49954,7 @@ components: $ref: '#/components/schemas/RequestID' UserTransactionsRefreshRequest: type: object - description: UserTransactionsRefreshRequest defines the request schema for `user/transactions/refresh` + description: UserTransactionsRefreshRequest defines the request schema for `/user/transactions/refresh` properties: user_id: type: string @@ -49489,7 +49967,7 @@ components: - user_id UserTransactionsRefreshResponse: type: object - description: UserTransactionsRefreshResponse defines the response schema for `user/transactions/refresh` + description: UserTransactionsRefreshResponse defines the response schema for `/user/transactions/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -49503,7 +49981,7 @@ components: additionalProperties: true UserFinancialDataRefreshRequest: type: object - description: UserFinancialDataRefreshRequest defines the request schema for `user/financial_data/refresh` + description: UserFinancialDataRefreshRequest defines the request schema for `/user/financial_data/refresh` properties: user_id: type: string @@ -49516,7 +49994,7 @@ components: - user_id UserFinancialDataRefreshResponse: type: object - description: UserFinancialDataRefreshResponse defines the response schema for `user/financial_data/refresh` + description: UserFinancialDataRefreshResponse defines the response schema for `/user/financial_data/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -50383,7 +50861,7 @@ components: LinkDeliveryGetResponse: type: object additionalProperties: true - description: LinkDeliveryGetRequest defines the response schema for `/link_delivery/get` + description: LinkDeliveryGetResponse defines the response schema for `/link_delivery/get` properties: status: $ref: '#/components/schemas/LinkDeliverySessionStatus' @@ -50573,7 +51051,7 @@ components: description: |- The result of the statement refresh extraction - `SUCCESS`: The statements were successfully extracted and can be listed via `/statements/list/` and downloaded via `/statements/download/`. + `SUCCESS`: The statements were successfully extracted and can be listed via `/statements/list` and downloaded via `/statements/download`. `FAILURE`: The statements failed to be extracted. CashFlowUpdatesEventWebhookCodes: @@ -51023,6 +51501,32 @@ components: `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 + CheckReportRepairableItem: + title: CheckReportRepairableItem + type: object + additionalProperties: true + description: An error object plus the `item_id` of an Item that the end user can repair via Link [update mode](https://plaid.com/docs/link/update-mode). The `error_code` will be in the `ITEM_LOGIN_REQUIRED` family. + properties: + error_type: + $ref: '#/components/schemas/PlaidErrorType' + error_code: + type: string + description: The particular error code. Safe for programmatic use. + error_message: + type: string + description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use. + display_message: + type: string + nullable: true + description: A user-friendly representation of the error code. `null` if the error is not related to user action. + item_id: + $ref: '#/components/schemas/ItemId' + required: + - item_id + - error_type + - error_code + - error_message + - display_message CraCheckReportReadyWebhook: type: object title: CraCheckReportReadyWebhook @@ -51103,6 +51607,29 @@ components: user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. + error: + nullable: true + description: Details on why the Check Report failed and how to resolve it. + allOf: + - $ref: '#/components/schemas/PlaidError' + repairable_items: + type: array + description: A list of Items that the end user can repair via Link [update mode](https://plaid.com/docs/link/update-mode). Empty when no Item is user-repairable. After repairing these Items, call `/cra/check_report/create` to regenerate the report. + items: + $ref: '#/components/schemas/CheckReportRepairableItem' + failed_products: + type: array + description: Specifies a list of products that failed to generate for the report. Populated when generation was attempted and all requested products failed. Additional detail on what caused the failure can be found by calling the product /get endpoint. + items: + $ref: '#/components/schemas/Products' + x-override-enum-values-shown: + - cra_base_report + - cra_income_insights + - cra_cashflow_insights + - cra_partner_insights + - cra_network_insights + - cra_monitoring + - cra_lend_score item_ids: type: array items: @@ -51122,6 +51649,18 @@ components: webhook_type: CHECK_REPORT webhook_code: CHECK_REPORT_FAILED user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb + error: + error_type: CHECK_REPORT_ERROR + error_code: DATA_UNAVAILABLE + error_message: the check report did not have sufficient data to generate a report. Review the repairable_items list for any Items the user can fix via Link update mode. Once completed, a new report can be generated by calling /cra/check_report/create + display_message: null + repairable_items: + - error_type: ITEM_ERROR + error_code: ITEM_LOGIN_REQUIRED + error_message: the login details of this item have changed and a user login is required. use Link's update mode to restore the item to a good state + display_message: The login credentials for this Item have changed. Please update them to continue. + item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 + failed_products: [] environment: production CraUpgradeFailedWebhook: type: object @@ -51239,6 +51778,29 @@ components: user_id: type: string description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. + error: + nullable: true + description: Details on why the Check Report failed and how to resolve it. + allOf: + - $ref: '#/components/schemas/PlaidError' + repairable_items: + type: array + description: A list of Items that the end user can repair via Link [update mode](https://plaid.com/docs/link/update-mode). Empty when no Item is user-repairable. After repairing these Items, call `/cra/check_report/create` to regenerate the report. + items: + $ref: '#/components/schemas/CheckReportRepairableItem' + failed_products: + type: array + description: Specifies a list of products that failed to generate for the report. Populated when generation was attempted and all requested products failed. Additional detail on what caused the failure can be found by calling the product /get endpoint. + items: + $ref: '#/components/schemas/Products' + x-override-enum-values-shown: + - cra_base_report + - cra_income_insights + - cra_cashflow_insights + - cra_partner_insights + - cra_network_insights + - cra_monitoring + - cra_lend_score item_ids: type: array items: @@ -51258,6 +51820,18 @@ components: webhook_type: CHECK_REPORT webhook_code: USER_CHECK_REPORT_FAILED user_id: usr_8c3ZbDBYjaqUXZ + error: + error_type: CHECK_REPORT_ERROR + error_code: DATA_UNAVAILABLE + error_message: the check report did not have sufficient data to generate a report. Review the repairable_items list for any Items the user can fix via Link update mode. Once completed, a new report can be generated by calling /cra/check_report/create + display_message: null + repairable_items: + - error_type: ITEM_ERROR + error_code: ITEM_LOGIN_REQUIRED + error_message: the login details of this item have changed and a user login is required. use Link's update mode to restore the item to a good state + display_message: The login credentials for this Item have changed. Please update them to continue. + item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 + failed_products: [] environment: production CraPartnerInsightsCompleteWebhook: type: object @@ -51346,7 +51920,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'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). + description: Fired when a change to the user's income is detected. To obtain refreshed Bank 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: @@ -51374,7 +51948,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'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). + description: Fired when a refreshed bank income report has finished generating or failed to generate. To obtain refreshed 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: @@ -51461,7 +52035,7 @@ components: description: The reason this institution was matched. This will be either `returning_user` or `routing_number` if emitted by `MATCHED_SELECT_INSTITUTION`. Otherwise, this will be `SAVED_INSTITUTION` or `AUTO_SELECT_SAVED_INSTITUTION` if emitted by `SELECT_INSTITUTION`. routing_number: type: string - description: The routing number submitted by user at the micro-deposits routing number pane. Emitted by `SUBMIT_ROUTING_NUMBER`. + description: The routing number submitted by the user at the micro-deposits routing number pane. Emitted by `SUBMIT_ROUTING_NUMBER`. account_number_mask: type: string description: The account number mask extracted from the user-provided account number. If the user-inputted account number is four digits long, `account_number_mask` is empty. Emitted by `SUBMIT_ACCOUNT_NUMBER`. @@ -51513,12 +52087,15 @@ components: link_token: type: string description: The Link token used to create the Link session these events are from + environment: + $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - events - link_session_id - link_token + - environment x-examples: example-1: environment: sandbox @@ -51762,7 +52339,7 @@ components: example-1: webhook_type: DASHBOARD_CONFIGURED_ALERT webhook_code: INSTITUTION_STATUS_ALERT_TRIGGERED - institution_id: ins_3 + institution_id: ins_56 institution_overall_success_rate: 0.9 environment: production SandboxPaymentSimulateRequest: @@ -51821,7 +52398,7 @@ components: $ref: '#/components/schemas/APISecret' access_tokens: type: array - description: An array of access tokens corresponding to the Items that will be included in the report. The `assets` product must have been initialized for the Items during link; the Assets product cannot be added after initialization. + description: An array of access tokens corresponding to the Items that will be included in the report. The `assets` product must have been initialized for the Items during Link; the Assets product cannot be added after initialization. items: $ref: '#/components/schemas/AccessToken' minItems: 1 @@ -51871,7 +52448,7 @@ components: description: |- A list of add-ons that should be included in the Asset Report. - When Fast Assets is requested, Plaid will create two versions of the Asset Report: the Fast Asset Report, which will contain only Identity and Balance information, and the Full Asset Report, which will also contain Transactions information. A `PRODUCT_READY` webhook will be fired for each Asset Report when it is ready, and the `report_type` field will indicate whether the webhook is firing for the `full` or `fast` Asset Report. To retrieve the Fast Asset Report, call `/asset_report/get` with `fast_report` set to `true`. There is no additional charge for using Fast Assets. To create a Fast Asset Report, Plaid must successfully retrieve both Identity and Balance data; if Plaid encounters an error obtaining this data, the Fast Asset Report will not be created. However, as long as Plaid can obtain Transactions data, the Full Asset Report will still be available. + When Fast Assets is requested, Plaid will create two versions of the Asset Report: the Fast Asset Report, which will contain only Identity and Balance information, and the Full Asset Report, which will also contain Transactions information. A `PRODUCT_READY` webhook will be fired for each Asset Report when it is ready, and the `report_type` field will indicate whether the webhook is firing for the `FULL` or `FAST` Asset Report. To retrieve the Fast Asset Report, call `/asset_report/get` with `fast_report` set to `true`. There is no additional charge for using Fast Assets. To create a Fast Asset Report, Plaid must successfully retrieve both Identity and Balance data; if Plaid encounters an error obtaining this data, the Fast Asset Report will not be created. However, as long as Plaid can obtain Transactions data, the Full Asset Report will still be available. When Investments is requested, `investments` must be specified in the `optional_products` array when initializing Link. user: @@ -52086,7 +52663,7 @@ components: description: AssetReportPDFGetResponse defines the response schema for `/asset_report/pdf/get` AssetReportAuditCopyCreateRequest: type: object - description: AssetReportAuditCopyCreateRequest defines the request schema for `/asset_report/audit_copy/get` + description: AssetReportAuditCopyCreateRequest defines the request schema for `/asset_report/audit_copy/create` properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -52102,7 +52679,7 @@ components: AssetReportAuditCopyCreateResponse: type: object additionalProperties: true - description: AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/get` + description: AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/create` properties: audit_copy_token: type: string @@ -52201,7 +52778,7 @@ components: CraMonitoringInsightsSubscribeResponse: type: object additionalProperties: true - description: CraMonitoringInsightsSubscribeResponse defines the response schema for `cra/monitoring_insights/subscribe` + description: CraMonitoringInsightsSubscribeResponse defines the response schema for `/cra/monitoring_insights/subscribe` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -52229,7 +52806,7 @@ components: CraMonitoringInsightsUnsubscribeResponse: type: object additionalProperties: true - description: CraMonitoringInsightsUnsubscribeResponse defines the response schema for `cra/monitoring_insights/unsubscribe` + description: CraMonitoringInsightsUnsubscribeResponse defines the response schema for `/cra/monitoring_insights/unsubscribe` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -52254,7 +52831,7 @@ components: CraMonitoringInsightsGetResponse: type: object additionalProperties: true - description: CraMonitoringInsightsGetResponse defines the response schema for `cra/monitoring_insights/get` + description: CraMonitoringInsightsGetResponse defines the response schema for `/cra/monitoring_insights/get` properties: request_id: $ref: '#/components/schemas/RequestID' @@ -52339,6 +52916,13 @@ components: - FAILED - PENDING description: Enum for the status of the Item's insights + CraCheckReportPermissiblePurpose: + type: string + title: CraCheckReportPermissiblePurpose + enum: + - ACCOUNT_REVIEW_CREDIT + - WRITTEN_INSTRUCTION_OTHER + description: The permissible purpose under the FCRA for retrieving this consumer report. Restricted to permissible purposes related to loan servicing only. Required when `report_id` is provided. MonitoringConsumerReportPermissiblePurpose: type: string title: MonitoringConsumerReportPermissiblePurpose @@ -52570,7 +53154,7 @@ components: CraCheckReportBaseReportGetRequest: title: CraCheckReportBaseReportGetRequest type: object - description: BaseReportGetRequest defines the request schema for `/cra/check_report/base_report/get` + description: CraCheckReportBaseReportGetRequest defines the request schema for `/cra/check_report/base_report/get` properties: client_id: $ref: '#/components/schemas/APIClientID' @@ -52591,6 +53175,14 @@ components: $ref: '#/components/schemas/UserToken' user_tier: $ref: '#/components/schemas/CraUserTier' + report_id: + type: string + description: The CRA report token (formatted `cra-report--`) identifying a specific consumer report. When provided alongside `consumer_report_permissible_purpose`, pins retrieval to that report and stamps its permissible purpose. If omitted, the most recently generated report for the user is returned. + x-hidden-from-docs: true + consumer_report_permissible_purpose: + x-hidden-from-docs: true + allOf: + - $ref: '#/components/schemas/CraCheckReportPermissiblePurpose' CraCheckReportBaseReportGetResponse: title: CraCheckReportBaseReportGetResponse type: object @@ -52799,7 +53391,12 @@ components: - OWNERS_UNAVAILABLE - INVESTMENTS_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE - description: The warning code identifies a specific kind of warning. `OWNERS_UNAVAILABLE` indicates that account-owner information is not available.`INVESTMENTS_UNAVAILABLE` indicates that Investments specific information is not available. `TRANSACTIONS_UNAVAILABLE` indicates that transactions information associated with Credit and Depository accounts are unavailable. + - BANK_INCOME_INSIGHTS_INSUFFICIENT_DATA + - BANK_INCOME_INSIGHTS_INCOMPLETE + - BANK_INCOME_INSIGHTS_STATUS_IN_PROGRESS + - BANK_INCOME_INSIGHTS_INTERNAL_ERROR + - BANK_INCOME_INSIGHTS_MISMATCHED_DAYS_REQUESTED + description: 'The warning code identifies a specific kind of warning. `OWNERS_UNAVAILABLE` indicates that account-owner information is not available. `INVESTMENTS_UNAVAILABLE` indicates that Investments specific information is not available. `TRANSACTIONS_UNAVAILABLE` indicates that transactions information associated with Credit and Depository accounts are unavailable. The `BANK_INCOME_INSIGHTS_*` codes apply to the Bank Income add-on: `BANK_INCOME_INSIGHTS_INSUFFICIENT_DATA` indicates there was not enough data to compute Bank Income Insights; `BANK_INCOME_INSIGHTS_INCOMPLETE` indicates the Bank Income Insights flow was not completed; `BANK_INCOME_INSIGHTS_STATUS_IN_PROGRESS` indicates Bank Income Insights are still being computed; `BANK_INCOME_INSIGHTS_INTERNAL_ERROR` indicates an internal error occurred while computing Bank Income Insights; `BANK_INCOME_INSIGHTS_MISMATCHED_DAYS_REQUESTED` indicates the days requested for Bank Income Insights did not match that of the Asset Report.' cause: $ref: '#/components/schemas/Cause' required: @@ -53003,7 +53600,7 @@ components: `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. + `database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match. 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. @@ -53019,7 +53616,7 @@ components: $ref: '#/components/schemas/AssetReportInvestments' 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. 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) + 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. 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) items: $ref: '#/components/schemas/Owner' ownership_type: @@ -53212,9 +53809,9 @@ components: unofficial_currency_code: type: string description: |- - The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. + The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true required: - investment_transaction_id @@ -53279,7 +53876,7 @@ components: description: | The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true required: - account_id @@ -53409,7 +54006,7 @@ components: date_transacted: type: string nullable: true - description: The date on which the transaction took place, in IS0 8601 format. + description: The date on which the transaction took place, in ISO 8601 format. location: $ref: '#/components/schemas/Location' name: @@ -53647,7 +54244,7 @@ components: description: |- Up to 3 top service providers that the user had the most transactions for in the given time window, in descending order of total spend. - If the user has received money from any provider in the given time window, this list will be empty. + If the user has not received money from any provider in the given time window, this list will be empty. items: type: string transactions_count: @@ -54154,7 +54751,7 @@ components: unofficial_currency_code: null TotalReportOutflowAmount: type: object - description: Total amount of credit transactions into the report's accounts in the time period of the report. This field only takes into account USD transactions from the accounts. + description: Total amount of credit transactions out of the report's accounts in the time period of the report. This field only takes into account USD transactions from the accounts. additionalProperties: true nullable: true properties: @@ -54175,7 +54772,7 @@ components: unofficial_currency_code: null TotalReportOutflowAmount30d: type: object - description: Total amount of credit transactions into the report's accounts in the last 30 days. This field only takes into account USD transactions from the accounts. + description: Total amount of credit transactions out of the report's accounts in the last 30 days. This field only takes into account USD transactions from the accounts. additionalProperties: true nullable: true properties: @@ -54196,7 +54793,7 @@ components: unofficial_currency_code: null TotalReportOutflowAmount60d: type: object - description: Total amount of credit transactions into the report's accounts in the last 60 days. This field only takes into account USD transactions from the accounts. + description: Total amount of credit transactions out of the report's accounts in the last 60 days. This field only takes into account USD transactions from the accounts. additionalProperties: true nullable: true properties: @@ -54217,7 +54814,7 @@ components: unofficial_currency_code: null TotalReportOutflowAmount90d: type: object - description: Total amount of credit transactions into the report's accounts in the last 90 days. This field only takes into account USD transactions from the accounts. + description: Total amount of credit transactions out of 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: @@ -54539,7 +55136,7 @@ components: date_transacted: type: string nullable: true - description: The date on which the transaction took place, in IS0 8601 format. + description: The date on which the transaction took place, in ISO 8601 format. location: $ref: '#/components/schemas/Location' merchant_name: @@ -54764,7 +55361,7 @@ components: - unofficial_currency_code TotalOutflowAmount: type: object - description: Total amount of credit transactions into the account in the time period of the report. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. + description: Total amount of credit transactions out of the account in the time period of the report. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. additionalProperties: true nullable: true properties: @@ -54781,7 +55378,7 @@ components: - unofficial_currency_code TotalOutflowAmount30d: type: object - description: Total amount of credit transactions into the account in the last 30 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. + description: Total amount of credit transactions out of the account in the last 30 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. additionalProperties: true nullable: true properties: @@ -54798,7 +55395,7 @@ components: - unofficial_currency_code TotalOutflowAmount60d: type: object - description: Total amount of credit transactions into the account in the last 60 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. + description: Total amount of credit transactions out of the account in the last 60 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. additionalProperties: true nullable: true properties: @@ -54815,7 +55412,7 @@ components: - unofficial_currency_code TotalOutflowAmount90d: type: object - description: Total amount of credit transactions into the account in the last 90 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. + description: Total amount of credit transactions out of the account in the last 90 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account. additionalProperties: true nullable: true properties: @@ -55004,9 +55601,9 @@ components: unofficial_currency_code: type: string description: |- - The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. + The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true required: - investment_transaction_id @@ -55065,7 +55662,7 @@ components: description: | The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries. - See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. + See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. nullable: true required: - account_id @@ -57896,7 +58493,7 @@ components: `US_CAP`: US OFAC Correspondent Account or Payable-Through Account Sanctions `US_FSE`: US OFAC Foreign Sanctions Evaders `US_MBS`: US Non-SDN Menu-Based Sanctions - `US_SDN`: US Specially Designated Nationals List + `US_SDN`: US OFAC Specially Designated Nationals List `US_SSI`: US OFAC Sectoral Sanctions Identifications `US_CMC`: US OFAC Non-SDN Chinese Military-Industrial Complex List `US_UVL`: Bureau of Industry and Security Unverified List @@ -58460,8 +59057,8 @@ components: example: true title: IdempotencyFlag description: |- - An optional flag specifying how you would like Plaid to handle attempts to create an Identity Verification when an Identity Verification already exists for the provided `client_user_id` and `template_id`. - If idempotency is enabled, Plaid will return the existing Identity Verification. If idempotency is disabled, Plaid will reject the request with a `400 Bad Request` status code if an Identity Verification already exists for the supplied `client_user_id` and `template_id`. + An optional flag specifying how you would like Plaid to handle attempts to create an Identity Verification when an Identity Verification already exists for the provided `client_user_id` and/or `user_id`, and `template_id`. + If idempotency is enabled, Plaid will return the existing Identity Verification. If idempotency is disabled, Plaid will reject the request with a `400 Bad Request` status code if an Identity Verification already exists for the supplied `client_user_id` and/or `user_id`, and `template_id`. nullable: true IdentityVerification: type: object @@ -58674,6 +59271,8 @@ components: Specifically, these fields are optional in that they can either be fully provided (satisfying every required field in their subschema) or omitted from the request entirely by not providing the key or value. Providing these fields via the API will result in Link skipping the data collection process for the associated user. All verification steps enabled in the associated Identity Verification Template will still be run. Verification steps will either be run immediately, or once the user completes the `accept_tos` step, depending on the value provided to the `gave_consent` field. If you are not using the shareable URL feature, you can optionally provide these fields via `/link/token/create` instead; both `/identity_verification/create` and `/link/token/create` are valid ways to provide this information. Note that if you provide a non-`null` user data object via `/identity_verification/create`, any user data fields entered via `/link/token/create` for the same `client_user_id` will be ignored when prefilling Link. + + The `ip_address` field is optional. Provide the end user's IP address to enable IP-based risk checks for backend-only integrations that do not use the Link SDK; when the Link SDK is used, the IP address is collected automatically. Unlike the identity fields above, `ip_address` cannot be provided via `/link/token/create`. nullable: true properties: email_address: @@ -58690,6 +59289,8 @@ components: $ref: '#/components/schemas/UserIDNumber' client_user_id: $ref: '#/components/schemas/DeprecatedClientUserID' + ip_address: + $ref: '#/components/schemas/IPAddress' type: object IdentityVerificationCreateResponse: 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. @@ -58949,7 +59550,7 @@ components: client_user_id: $ref: '#/components/schemas/ClientUserID' user_id: - description: A unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and the `client_user_id` are present in the request, the `user_id` must have been created from the provided `client_user_id`. + description: A unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025, or if you have since [migrated to the new User APIs](https://plaid.com/docs/api/users/migrate-to-new-user-apis); for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and the `client_user_id` are present in the request, the `user_id` must have been created from the provided `client_user_id`. allOf: - $ref: '#/components/schemas/PlaidUserID' nullable: true @@ -59469,6 +60070,7 @@ components: `US_FBI`: US Department of Justice FBI Wanted List `US_FSE`: US OFAC Foreign Sanctions Evaders `US_ISN`: US Department of State Nonproliferation Sanctions + `US_MBS`: US Non-SDN Menu-Based Sanctions `US_PLC`: US OFAC Palestinian Legislative Council `US_SAM`: US System for Award Management Exclusion List `US_SDN`: US OFAC Specially Designated Nationals List @@ -59819,12 +60421,12 @@ components: type: string title: PlaidUserID example: usr_dddAs9ewdcDQQQ - description: Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`. + description: Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025, or if you have since [migrated to the new User APIs](https://plaid.com/docs/api/users/migrate-to-new-user-apis); for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`. PlaidUserIDNullable: type: string title: PlaidUserID example: usr_dddAs9ewdcDQQQ - description: Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`. + description: Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025, or if you have since [migrated to the new User APIs](https://plaid.com/docs/api/users/migrate-to-new-user-apis); for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`. nullable: true PostalCode: type: string @@ -60791,7 +61393,8 @@ components: - link - api - system - description: A type indicating whether a dashboard user, an API-based user, or Plaid last touched this object. + - retro + description: A type indicating who or what last touched this object. `dashboard`, `link`, and `api` indicate the originating surface; `system` indicates Plaid. `retro` indicates a screening created retroactively via a bulk screening creation. SourceUID: description: The identifier provided by the source sanction or watchlist. When one is not provided by the source, this is `null`. type: string @@ -60812,7 +61415,7 @@ components: Note: - The `incomplete` strategy cannot be applied if the session's failing step is `screening` or `risk_check`. + The `incomplete` strategy cannot be applied if the session's failing step is `watchlist_screening` or `risk_check`. The `infer` strategy cannot be applied if the session's status is still `active` type: string @@ -61074,7 +61677,7 @@ components: nullable: true WatchlistScreeningEntityCreateRequest: type: object - description: Request input for creating an entity screening review + description: Request input for creating an entity watchlist screening properties: search_terms: $ref: '#/components/schemas/EntityWatchlistSearchTerms' @@ -61542,7 +62145,7 @@ components: description: ID of the associated screening hit. WatchlistScreeningHitLocations: type: object - description: Location information for the associated individual watchlist hit + description: Location information for the associated watchlist hit properties: full: type: string @@ -62173,6 +62776,14 @@ components: $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CraCheckReportIncomeInsightsGetOptions' + report_id: + type: string + description: The CRA report token (formatted `cra-report--`) identifying a specific consumer report. When provided alongside `consumer_report_permissible_purpose`, pins retrieval to that report and stamps its permissible purpose. If omitted, the most recently generated report for the user is returned. + x-hidden-from-docs: true + consumer_report_permissible_purpose: + x-hidden-from-docs: true + allOf: + - $ref: '#/components/schemas/CraCheckReportPermissiblePurpose' CraCheckReportIncomeInsightsGetResponse: title: CraCheckReportIncomeInsightsGetResponse additionalProperties: true @@ -62194,7 +62805,7 @@ components: title: CraReportWarning type: object additionalProperties: true - description: It is possible for a Check Report product to be returned with missing information. In such cases, the product will contain warning data in the response, indicating why obtaining the owner information failed. + description: It is possible for a Check Report product to be returned with missing information. In such cases, the product will contain warning data in the response, indicating why some of the requested information could not be retrieved. properties: warning_type: type: string @@ -62923,7 +63534,8 @@ components: title: CraCheckReportIncomeInsightsGetOptions type: object nullable: true - description: Defines configuration options to generate Income Insights. + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `options`. properties: income_insights_filter: $ref: '#/components/schemas/IncomeInsightsFilter' @@ -62978,6 +63590,54 @@ components: - error_code - error_message - display_message + CraCheckReportCreateCashflowInsightsOptions: + title: CraCheckReportCreateCashflowInsightsOptions + type: object + nullable: true + description: Defines configuration options to generate Cashflow Insights + properties: + attributes_version: + $ref: '#/components/schemas/CashflowAttributesVersion' + CraCheckReportCreateLendScoreOptions: + title: CraCheckReportCreateLendScoreOptions + type: object + nullable: true + description: Defines configuration options to generate the LendScore + properties: + lend_score_version: + $ref: '#/components/schemas/PlaidLendScoreVersion' + CraCheckReportCreateNetworkInsightsOptions: + title: CraCheckReportCreateNetworkInsightsOptions + type: object + nullable: true + description: Defines configuration options to generate Network Insights + properties: + network_insights_version: + $ref: '#/components/schemas/NetworkInsightsVersion' + CraCheckReportCreateIncomeInsightsOptions: + title: CraCheckReportCreateIncomeInsightsOptions + type: object + nullable: true + description: Defines configuration options to generate Income Insights. + properties: + income_insights_filter: + $ref: '#/components/schemas/IncomeInsightsFilter' + income_insights_version: + $ref: '#/components/schemas/IncomeInsightsVersion' + required: + - income_insights_version + CraCheckReportCreateEmploymentRefreshOptions: + title: CraCheckReportCreateEmploymentRefreshOptions + type: object + description: Defines configuration options for the Employment Refresh Report. + nullable: true + properties: + days_requested: + type: integer + description: The number of days of data to request for the report. This field is required if an Employment Refresh Report is requested. Maximum is 731. + maximum: 731 + required: + - days_requested CraCheckReportCreateRequest: title: CraCheckReportCreateRequest type: object @@ -63010,7 +63670,7 @@ components: description: Client-generated identifier, which can be used by lenders to track loan applications. products: type: array - description: Specifies a list of products that will be eagerly generated when creating the report (in addition to the Base Report, which is always eagerly generated). These products will be made available before a success webhook is sent. Use this option to minimize response latency for product `/get` endpoints. Note that specifying `cra_partner_insights` in this field will trigger a billable event. Other products are not billed until the respective reports are fetched via product-specific `/get` endpoints. + description: Specifies a list of products to generate when creating the report (in addition to the Base Report, which is always generated). These products will be made available before a success webhook is sent. Note that specifying `cra_partner_insights` in this field will trigger a billable event. Other products are not billed until the respective reports are retrieved via their product-specific `/get` endpoints. nullable: true minItems: 1 items: @@ -63024,19 +63684,19 @@ components: base_report: $ref: '#/components/schemas/CraCheckReportCreateBaseReportOptions' cashflow_insights: - $ref: '#/components/schemas/CraCheckReportCashflowInsightsGetOptions' + $ref: '#/components/schemas/CraCheckReportCreateCashflowInsightsOptions' partner_insights: $ref: '#/components/schemas/CraCheckReportCreatePartnerInsightsOptions' lend_score: - $ref: '#/components/schemas/CraCheckReportLendScoreGetOptions' + $ref: '#/components/schemas/CraCheckReportCreateLendScoreOptions' network_insights: - $ref: '#/components/schemas/CraCheckReportNetworkInsightsGetOptions' + $ref: '#/components/schemas/CraCheckReportCreateNetworkInsightsOptions' include_investments: type: boolean nullable: true description: Indicates that investment data should be extracted from the linked account(s). income_insights: - $ref: '#/components/schemas/CraCheckReportIncomeInsightsGetOptions' + $ref: '#/components/schemas/CraCheckReportCreateIncomeInsightsOptions' consumer_report_permissible_purpose: $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' required: @@ -63104,7 +63764,8 @@ components: CraCheckReportPartnerInsightsGetPartnerInsights: title: CraCheckReportPartnerInsightsGetPartnerInsights type: object - description: Defines configuration to generate Partner Insights. + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `partner_insights`. properties: prism_versions: $ref: '#/components/schemas/PrismVersions' @@ -63403,6 +64064,10 @@ components: error_reason: type: string description: Human-readable description of why the UltraFICO® score could not be computed. + exclusion_code: + type: string + nullable: true + description: FICO exclusion code indicating why an UltraFICO® score could not be computed due to consumer-data conditions (e.g. insufficient account history). `null` when the exclusion code is not set; "0" when a score was produced. CraPartnerInsightsUltraFicoScore: title: CraPartnerInsightsUltraFicoScore type: object @@ -63917,7 +64582,6 @@ components: home_lending_report_options: $ref: '#/components/schemas/CraCheckReportHomeLendingReportOptions' CraCheckReportHomeLendingReportOptions: - x-hidden-from-docs: true title: CraCheckReportHomeLendingReportOptions type: object nullable: true @@ -63929,7 +64593,7 @@ components: $ref: '#/components/schemas/CraCheckReportVerificationGetReportType' description: Specifies which types of home lending reports to generate. employment_refresh_options: - $ref: '#/components/schemas/CraCheckReportVerificationGetEmploymentRefreshOptions' + $ref: '#/components/schemas/CraCheckReportCreateEmploymentRefreshOptions' required: - reports_requested CraCheckReportGSEOptions: @@ -63949,7 +64613,8 @@ components: title: CraCheckReportCashflowInsightsGetOptions type: object nullable: true - description: Defines configuration options to generate Cashflow Insights + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `options`. properties: attributes_version: $ref: '#/components/schemas/CashflowAttributesVersion' @@ -63957,7 +64622,8 @@ components: title: CraCheckReportLendScoreGetOptions type: object nullable: true - description: Defines configuration options to generate the LendScore + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `options`. properties: lend_score_version: $ref: '#/components/schemas/PlaidLendScoreVersion' @@ -63965,7 +64631,8 @@ components: title: CraCheckReportNetworkInsightsGetOptions type: object nullable: true - description: Defines configuration options to generate Network Insights + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `options`. properties: network_insights_version: $ref: '#/components/schemas/NetworkInsightsVersion' @@ -64036,7 +64703,7 @@ components: title: IncomeInsightsVersion type: string nullable: true - description: The version of Income Insights to use. + description: The version of Income Insights to use. This value is not shared across API calls for the same resource. If it is omitted from a request, the default version is used, even if a version was set in an earlier call such as `/link/token/create` or `/cra/check_report/create`. enum: - II2 CraCheckReportCashflowInsightsGetResponse: @@ -64284,7 +64951,8 @@ components: CraCheckReportVerificationGetEmploymentRefreshOptions: title: CraCheckReportVerificationGetEmploymentRefreshOptions type: object - description: Defines configuration options for the Employment Refresh Report. + deprecated: true + description: Deprecated. This field is no longer accepted for new clients (created on or after 2026-07-01). New clients should specify required products when creating the Consumer Report. Existing integrations may continue to pass `employment_refresh_options`. nullable: true properties: days_requested: @@ -64345,6 +65013,10 @@ components: $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' minItems: 1 uniqueItems: true + hide_gse_details: + type: boolean + description: | + If `true`, the GSE identifiers (the Report ID and `gse_reference_id`) are omitted from the returned Home Lending Report PDF. Defaults to `false`. These identifiers are always present in the `/cra/check_report/verification/get` JSON response regardless of this field. user_token: $ref: '#/components/schemas/UserToken' CraCheckReportVerificationPdfGetResponse: @@ -65617,6 +66289,177 @@ components: - generated_at - oldest_transaction_date - most_recent_transaction_date + CraReportGetRequestProduct: + title: CraReportGetRequestProduct + x-hidden-from-docs: true + type: object + description: CraReportGetRequestProduct specifies a product and version for a `/cra/report/get` call. + properties: + product: + allOf: + - $ref: '#/components/schemas/Products' + x-override-enum-values-shown: + - cra_base_report + - cra_income_insights + - cra_cashflow_insights + - cra_partner_insights + - cra_network_insights + - cra_lend_score + - cra_qualify + version: + $ref: '#/components/schemas/CraProductVersion' + required: + - product + - version + CraReportGetRequest: + title: CraReportGetRequest + x-hidden-from-docs: true + type: object + description: CraReportGetRequest defines the request schema for `/cra/report/get`. + properties: + client_id: + $ref: '#/components/schemas/APIClientID' + secret: + $ref: '#/components/schemas/APISecret' + user_id: + $ref: '#/components/schemas/NewUserID' + products: + type: array + description: The requested products and their versions, e.g. `[{"product":"cra_qualify","version":"V1"}]`. + minItems: 1 + items: + $ref: '#/components/schemas/CraReportGetRequestProduct' + scope: + $ref: '#/components/schemas/CraReportScope' + decision_stage: + $ref: '#/components/schemas/CraReportDecisionStage' + consumer_report_permissible_purpose: + $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' + required: + - user_id + - products + - decision_stage + - consumer_report_permissible_purpose + CraReportGetReport: + title: CraReportGetReport + x-hidden-from-docs: true + type: object + additionalProperties: true + description: The CRA report returned by `/cra/report/get`. + properties: + retrieved_time: + type: string + format: date-time + description: The date and time the report was retrieved. + scope: + $ref: '#/components/schemas/CraReportScope' + decision_stage: + $ref: '#/components/schemas/CraReportDecisionStage' + consumer_report_permissible_purpose: + $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' + products: + type: array + description: Per-product report data. Each entry corresponds to one requested product. + items: + $ref: '#/components/schemas/CraReportGetResponseProduct' + required: + - retrieved_time + - scope + - decision_stage + - consumer_report_permissible_purpose + - products + CraReportScope: + title: CraReportScope + x-hidden-from-docs: true + type: string + enum: + - PLAID_NETWORK + - CLIENT_USER + description: Determines whose items are used. `PLAID_NETWORK` (default) uses the Plaid Network view of the user's profile. `CLIENT_USER` uses only the items linked by this client. + CraReportDecisionStage: + title: CraReportDecisionStage + x-hidden-from-docs: true + type: string + enum: + - PREQUALIFICATION + - DECISIONING + - SERVICING + description: The stage in the lending lifecycle for which the report is being retrieved. + CraProductVersion: + title: CraProductVersion + x-hidden-from-docs: true + type: string + description: The version of the product that was generated. + CraReportGetResponseProduct: + title: CraReportGetResponseProduct + x-hidden-from-docs: true + type: object + additionalProperties: true + description: Per-product report data. `attributes` is an opaque map of key-value pairs; for a full list of attributes per product and version, see the data dictionary. + properties: + product: + allOf: + - $ref: '#/components/schemas/Products' + x-override-enum-values-shown: + - cra_base_report + - cra_income_insights + - cra_cashflow_insights + - cra_partner_insights + - cra_network_insights + - cra_lend_score + - cra_qualify + version: + $ref: '#/components/schemas/CraProductVersion' + metadata: + $ref: '#/components/schemas/CraReportGetProductMetadata' + attributes: + $ref: '#/components/schemas/CraReportGetProductAttributes' + errors: + type: array + description: Product-level errors. Non-empty when this product failed to generate; empty on success. + items: + $ref: '#/components/schemas/PlaidError' + required: + - product + - version + - metadata + - attributes + - errors + CraReportGetProductMetadata: + title: CraReportGetProductMetadata + x-hidden-from-docs: true + type: object + description: A map of product report metadata, where the key is a string and the value varies by product. For a full list of metadata fields per product, see the data dictionary. + additionalProperties: true + CraReportGetProductAttributes: + title: CraReportGetProductAttributes + x-hidden-from-docs: true + type: object + description: A map of product attributes, where the key is a string and the value is a float, int, or boolean. The specific list of attributes depends on the product and version. For a full list, see the data dictionary. + additionalProperties: true + CraReportGetResponse: + title: CraReportGetResponse + x-hidden-from-docs: true + additionalProperties: true + type: object + description: CraReportGetResponse defines the response schema for `/cra/report/get`. + properties: + report: + $ref: '#/components/schemas/CraReportGetReport' + request_id: + $ref: '#/components/schemas/RequestID' + user_id: + $ref: '#/components/schemas/NewUserID' + warnings: + type: array + description: User or report-level errors that affected the overall report but do not map to a specific product failure. + items: + $ref: '#/components/schemas/CheckReportWarning' + required: + - report + - request_id + - user_id + - warnings AssetReportFreddieGetRequest: title: AssetReportFreddieGetRequest type: object @@ -65734,7 +66577,7 @@ components: title: Party type: object additionalProperties: true - description: A collection of information about a single party to a transaction. Included direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider. + description: A collection of information about a single party to a transaction. Includes direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider. properties: INDIVIDUAL: $ref: '#/components/schemas/PartyIndividual' @@ -66047,7 +66890,7 @@ components: 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. + description: 'The number of days requested from the Financial Institution. Example: When looking for 3 months of data from the FI, pass in 90 days.' AssetOwnershipType: type: string nullable: true @@ -66647,7 +67490,7 @@ components: required: - ReportingInformationIdentifier CreditFreddieMacVerificationOfAssetResponse: - title: VerificationOfAssetResponse + title: CreditFreddieMacVerificationOfAssetResponse type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. @@ -66737,7 +67580,7 @@ components: title: CreditFreddieMacParty type: object additionalProperties: true - description: A collection of information about a single party to a transaction. Included direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider. + description: A collection of information about a single party to a transaction. Includes direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider. properties: INDIVIDUAL: $ref: '#/components/schemas/CreditFreddieMacPartyIndividual' @@ -66994,7 +67837,7 @@ components: - TEMPLATES - SOFTWARE_BLACKLIST has_fraud_risk: - description: Indicates whether fraud risk was detected on the field. + description: Indicates whether fraud risk was detected for this risk signal. type: boolean nullable: true signal_description: @@ -67229,7 +68072,7 @@ components: description: The Plaid Institution ID associated with the Item. ItemAuthMethod: description: |- - The method used to populate Auth data for the Item. This field is only populated for Items that have had Auth numbers data set on at least one of its accounts, and will be `null` otherwise. For info about the various flows, see our [Auth coverage documentation](https://plaid.com/docs/auth/coverage/). + The method used to populate Auth data for the Item. This field is only populated for Items that have had Auth numbers data set on at least one of their accounts, and will be `null` otherwise. For info about the various flows, see our [Auth coverage documentation](https://plaid.com/docs/auth/coverage/). `INSTANT_AUTH`: The Item's Auth data was provided directly by the user's institution connection. @@ -67455,7 +68298,7 @@ components: last_webhook: $ref: '#/components/schemas/ItemStatusLastWebhook' ItemStatusNullable: - description: Information about the last successful and failed transactions update for the Item. + description: An object with information about the status of the Item. nullable: true allOf: - $ref: '#/components/schemas/ItemStatus' @@ -67519,7 +68362,7 @@ components: access_token: $ref: '#/components/schemas/AccessToken' reason_code: - $ref: '#/components/schemas/ItemProductsTerminateReasonCode' + $ref: '#/components/schemas/ProductsTerminateReasonCode' reason_note: type: string nullable: true @@ -67533,19 +68376,19 @@ components: description: | 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 + `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud using their real identity + `FRAUD_FALSE_IDENTITY`: The connection was created using a false or stolen identity + `FRAUD_ABUSE`: The end user is abusing the client's service or platform (for example, automation or excessive retries) through their connected account + `FRAUD_OTHER`: Fraud-related, but not covered by the specific fraud categories above; `reason_note` should clarify `FRAUD_TRANSACTION`: Fraud occurred at the transaction level, such as an unauthorized transaction, card testing, chargeback, ACH return, or dispute `CONSUMER_LOAN_PAID_OFF`: The end user paid off their loan and no longer needs the product `CONSUMER_ACCOUNT_CLOSED`: The end user closed their account with the client and no longer needs the product `CONSUMER_CHARGE_OFF`: The end user's account has been charged off `CONSUMER_PAYMENT_METHOD_SWITCHED`: The end user switched to a different payment method and no longer needs the product - `USER_OFFBOARDING`: The user is offboarding from the 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 + `USER_OFFBOARDING`: The user is offboarding from the client's service or platform + `DUPLICATE_ITEM`: This Item is a duplicate of another active Item for the same user + `BILLING_TERMINATION`: The client's billing or subscription relationship with the end user has ended + `OTHER`: None of the above; `reason_note` should clarify enum: - FRAUD_FIRST_PARTY - FRAUD_FALSE_IDENTITY @@ -67560,10 +68403,6 @@ components: - 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 @@ -67581,11 +68420,11 @@ components: title: OAuth Scope type: string description: |- - A JSON string containing a space-separated list of scopes associated with this token, in the format described in [https://datatracker.ietf.org/doc/html/rfc6749#section-3.3](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3). Currently accepted values are: + A space-separated list of scopes associated with this token, in the format described in [https://datatracker.ietf.org/doc/html/rfc6749#section-3.3](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3). Currently accepted values are: `user:read` allows reading user data. `user:write` allows writing user data. - `exchange` allows exchanging a token using the `urn:plaid:params:oauth:user-token` grant type. + `exchange` allows exchanging a token using the `urn:plaid:params:oauth:user-token` subject token type. `mcp:dashboard` allows access to the MCP dashboard server. example: user:read user:write exchange OAuthErrorCode: @@ -67697,10 +68536,10 @@ components: token_type: type: string example: Bearer - description: Type of token the access token is. Currently it is always Bearer + description: The type of the returned token. `Bearer` for OAuth access tokens. expires_in: type: integer - example: 500 + example: 900 description: Time remaining in seconds before expiration. request_id: $ref: '#/components/schemas/RequestID' @@ -67813,6 +68652,18 @@ components: $ref: '#/components/schemas/ExtendedRecipientMetadata' required: - recipients + GetConsentsResponse: + type: object + description: GetConsentsResponse defines the response schema for `/fdx/consents` + additionalProperties: true + properties: + consent_grants: + type: array + description: Consent grants matching the customerId (and optional status) filter. + items: + $ref: '#/components/schemas/FDXConsentGrant' + required: + - consent_grants GetRecipientResponse: type: object description: GetRecipientResponse defines the response schema for `/fdx/recipient/{recipientId}` @@ -68012,7 +68863,7 @@ components: example: "2021-07-15" connection_count: title: Connection Count - description: The number of Data Partner consumers that are connected to the recipient for the specific Data Partner + description: The number of consumers connected to the recipient through this Data Partner type: integer required: - category @@ -68031,7 +68882,7 @@ components: description: Category of Notification FDXTimestamp: title: Timestamp - description: ISO 8601 date-time in format 'YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]' according to [IETF RFC3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14) + description: ISO 8601 date-time in format 'YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]' according to [IETF RFC3339](https://datatracker.ietf.org/doc/html/rfc3339) type: string format: date-time example: "2021-07-15T14:46:41.375Z" @@ -68161,7 +69012,7 @@ components: name: type: string value: - $ref: '#/components/schemas/FDXPartyType' + type: string FDXFiAttribute: title: FI Attribute entity description: Financial Institution provider-specific attribute @@ -68301,7 +69152,7 @@ components: This will return an [`INVALID_ACCOUNT_ID`](https://plaid.com/docs/errors/invalid-input/#invalid_account_id) error if the account has been removed at the bank or if the `account_id` is no longer valid. client_transaction_id: type: string - description: The unique ID that you would like to use to refer to this evaluation attempt - for example, a payment attempt ID. You will use this later to debug this evaluation, and/or report an ACH return, etc. The max length for this field is 36 characters. + description: The unique ID that you would like to use to refer to this evaluation attempt - for example, a payment attempt ID. You will use this later to debug this evaluation, and/or report an ACH return, etc. The max length for this field is 36 characters. The `client_transaction_id` also functions as an idempotency key; calling `/signal/evaluate` with a previously used `client_transaction_id` will return the results of the previous evaluation rather than triggering a fresh evaluation. minLength: 1 maxLength: 36 amount: @@ -68506,7 +69357,7 @@ components: $ref: '#/components/schemas/APISecret' client_transaction_id: type: string - description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate` or `/accounts/balance/get`. + description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`. minLength: 1 maxLength: 36 return_code: @@ -68590,7 +69441,7 @@ components: default_payment_method: type: string description: |- - The default ACH or non-ACH payment method to complete the transaction. + The default 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. @@ -68766,7 +69617,7 @@ components: CustomerInitiatedReturnRisk: title: CustomerInitiatedReturnRisk type: object - description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk of an unauthorized debit. Common return codes in this category include: "R05", "R07", "R10", "R11", "R29". These returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized.' + description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk of an unauthorized debit. Common return codes in this category include: "R05", "R07", "R10", "R11", "R29". These returns typically have a return time frame of up to 60 calendar days. During this period, customers of financial institutions can dispute a transaction as unauthorized.' properties: score: $ref: '#/components/schemas/SignalScore' @@ -69343,7 +70194,7 @@ components: p50_eod_balance_61d_to_90d: type: number format: double - description: The 50th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited + description: The 50th percentile of the end-of-day available balance between day 61 and day 90 over the past 90 days of the account that will be debited nullable: true p90_eod_balance_31d_to_60d: type: number @@ -69353,7 +70204,7 @@ components: p90_eod_balance_61d_to_90d: type: number format: double - description: The 90th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited + description: The 90th percentile of the end-of-day available balance between day 61 and day 90 over the past 90 days of the account that will be debited nullable: true p10_eod_balance_31d_to_60d: type: number @@ -69363,7 +70214,7 @@ components: p10_eod_balance_61d_to_90d: type: number format: double - description: The 10th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited + description: The 10th percentile of the end-of-day available balance between day 61 and day 90 over the past 90 days of the account that will be debited nullable: true transactions_last_updated: type: string @@ -69372,11 +70223,11 @@ components: nullable: true is_account_closed: type: boolean - description: Indicates if the receiver bank account is closed + description: Indicates if the account that will be debited is closed nullable: true is_account_frozen_or_restricted: type: boolean - description: Indicates if the receiver bank account is either frozen or restricted + description: Indicates if the account that will be debited is either frozen or restricted nullable: true distinct_ip_addresses_count_3d: type: integer @@ -69661,6 +70512,11 @@ components: $ref: '#/components/schemas/FraudAttributes' subscores: $ref: '#/components/schemas/ProtectComputeSubscores' + timestamp: + type: string + format: date-time + nullable: true + description: The timestamp when the Trust Index score and fraud attributes were computed, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` request_id: $ref: '#/components/schemas/RequestID' required: @@ -69991,7 +70847,7 @@ components: description: The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` protect_session_id: type: string - description: If present, contains the current Protect Session ID from the Plaid Pixel SDK. + description: If present, contains the current Protect Session ID from the Protect SDK. app_visit: $ref: '#/components/schemas/ProtectAppVisitEvent' user_sign_in: diff --git a/CHANGELOG.md b/CHANGELOG.md index 876f395..0db6fc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,99 @@ +### 2020-09-14_1.705.4 +- Expose `/cra/report/get` and its request/response schemas in generated client libraries. The endpoint remains hidden from public documentation. + +### 2020-09-14_1.705.3 +- Document the `ip_address` field on the `/identity_verification/create` `user` object: accepted only here (not via `/link/token/create`) and captured automatically by the Link SDK, for backend-only integrations that need IP-based risk checks. + +### 2020-09-14_1.705.2 +- Clarified the `/oauth/token` response `token_type` description (it is `Bearer` for OAuth access tokens); dropped the inaccurate "always Bearer" wording. + +### 2020-09-14_1.705.1 +- internal changes only + +### 2020-09-14_1.705.0 +- Type the `product` field of the `CraReportUpdatedWebhook` (`CRA_REPORT`/`CRA_REPORT_UPDATED`) `successful_products`/`failed_products` entries against the `Products` enum instead of a free-form string, matching the sibling `/cra/report/get` product schemas. + +### 2020-09-14_1.704.2 +- internal changes only + +### 2020-09-14_1.704.1 +- internal changes only + +### 2020-09-14_1.704.0 +- internal changes only + +### 2020-09-14_1.703.0 +- Add the `environment` field to the `LinkEventsWebhook` (`LINK`/`EVENTS`) schema, matching actual behavior. +- Change `FDXInitiatorFiAttribute.value` from the `FDXPartyType` enum to a string, matching the sibling `FDXFiAttribute` (this schema is not referenced by any endpoint). +- Fixed a `TransactionsRuleDetails.query` description that referenced a nonexistent `NAME` field (the enum value is `MERCHANT_NAME`), and a `/cra/encompass/get_reports` example whose `report_status` was not a valid value and whose `generated_at` key should be `created_at`. +- Fixed additional example/consistency issues: `/transactions/get` and `/processor/transactions/get` examples now report the correct `total_transactions`; the Identity Verification `Strategy` note references the `watchlist_screening` step; the `US_SDN` watchlist code label is consistent; `SelfieCapture` examples reflect that only one of `image_url`/`video_url` is populated; the `/institutions/get_by_id` example nests `liabilities` correctly; the `/oauth/token` scope description calls `urn:plaid:params:oauth:user-token` a subject token type; and a `/cra/encompass/load/existing` example was corrected to match its schema. + +### 2020-09-14_1.702.4 +- Add `hide_gse_details` to `/cra/check_report/verification/pdf/get`. When `true`, the GSE identifiers (the Report ID and `gse_reference_id`) are omitted from the returned Home Lending Report PDF. Defaults to `false`. These identifiers are always present in the `/cra/check_report/verification/get` JSON response regardless of this field. + +### 2020-09-14_1.702.3 +- Add the `error`, `repairable_items`, and `failed_products` fields to the `CHECK_REPORT_FAILED` and `USER_CHECK_REPORT_FAILED` webhooks. + +### 2020-09-14_1.702.2 +- Add `tax_lots` to the `/investments/holdings/get` sample response, showing both a holding with per-lot detail and a holding with an empty `tax_lots` array. + +### 2020-09-14_1.702.1 +- Update descriptions for the CRA `/get` endpoints. + +### 2020-09-14_1.702.0 +- Add `timestamp` to `/protect/compute` responses to indicate when the Trust Index score and fraud attributes were computed. + +### 2020-09-14_1.701.4 +- Add `ip_address` (optional, nullable) to the `user` object (`IdentityVerificationCreateRequestUser`) on `/identity_verification/create`. Lets backend-only integrations supply the end user's IP address for IP-based risk checks without launching the Link SDK. + +### 2020-09-14_1.701.3 +- Add `exclusion_code` to the `CraPartnerInsightsUltraFicoScoreResult` object, exposing the FICO exclusion code that explains why an UltraFICO® score could not be computed due to consumer-data conditions (e.g. insufficient account history). + +### 2020-09-14_1.701.2 +- Add private-visibility `error`, `repairable_items`, and `failed_products` to the `CHECK_REPORT_FAILED` and `USER_CHECK_REPORT_FAILED` webhooks. + +### 2020-09-14_1.701.1 +- Add the nullable `receiver_details` field to the `BankTransferEvent` schema returned by `/bank_transfer/event/list` and `/bank_transfer/event/sync`, matching what the API already emits. Currently always `null`. +- [Breaking] Change the generated `reason_code` type for `/item/products/terminate` and `/user/products/terminate` from the unusable `ItemProductsTerminateReasonCode` and `UserProductsTerminateReasonCode` wrapper types to `ProductsTerminateReasonCode`. The accepted JSON values are unchanged. +- Make `home_lending_report_options` visible in the docs for `/cra/check_report/create` and `/link/token/create`. + +### 2020-09-14_1.701.0 +- Add `figi` to the `Security` schema: the 12-character OpenFIGI identifier, which stays stable across most corporate actions (ticker/CUSIP/name changes) and is the preferred identifier for tracking a security across its lifecycle. Null until Plaid has enriched the security with FIGI data. + +### 2020-09-14_1.700.1 +- Add the `/sandbox/fdx/consent/seed` endpoint for seeding a test FDX consent grant on Sandbox data partner accounts. Takes `customer_id` and `application_id` (and an optional `consent_id`) and returns the seeded `consent_id`. + +### 2020-09-14_1.700.0 +- [Breaking] Rename the `/cra/check_report/create` request options schemas for `cashflow_insights`, `lend_score`, `network_insights`, `income_insights`, and the Home Lending Report's `employment_refresh_options` to `CraCheckReportCreate*Options`. The JSON request is unchanged. +- Deprecate the request-time generation config on the CRA `/get` endpoints (`options`, `partner_insights`, `employment_refresh_options`); no longer accepted for new clients (created on or after 2026-07-01). + +### 2020-09-14_1.699.6 +- Add `cash advance`, `late fee`, `membership fee`, `returned item fee` to the `transaction_code` enum. + +### 2020-09-14_1.699.5 +- Add `num_i20s_uploaded` to the `document_income_results` object in the `/credit/sessions/get` and `/link/token/get` responses + +### 2020-09-14_1.699.4 +- Add private-visibility scaffolding for the `CRA_REPORT_UPDATED` webhook (`CRA_REPORT` type), fired when a subscribed CRA report is updated; lists the `successful_products` and `failed_products` for the update. Hidden from the public spec/docs until launch (customer-facing entry follows when `x-private-visibility` flips). + +### 2020-09-14_1.699.3 +- Add `kick` to the `processor` enum on `/processor/token/create`, for creating processor tokens for the Kick integration. + +### 2020-09-14_1.699.2 +- Adds `DOCUMENT_TYPE_US_STUDENT_I20` enum value (Form I-20 student document) for document metadata +- Add `/fdx/consents`, `/fdx/consents/{consentId}`, and `/fdx/consents/{consentId}/revocation` for managing FDX consent grants. These endpoints remain hidden from public documentation. + +### 2020-09-14_1.699.1 +- Additions and corrections of enum values returned by API but not mentioned in OpenAPI spec. No actual changes to API behavior. +- `PlaidErrorType`: add 13 error types (`ASSETS_ERROR`, `ENRICH_ERROR`, `STATEMENTS_ERROR`, `RECURRING_TRANSACTIONS_ERROR`, `CRA_MONITORING_ERROR`, `CREDIT_PROFILE_REPORT_ERROR`, `ENCOMPASS_ERROR`, `FRAUD_INSIGHTS_ERROR`, `FREDDIE_MAC_ERROR`, `LINK_DELIVERY_ERROR`, `PROFILE_ERROR`, `TRANSFER_RECURRING_ERROR`, `TRANSFER_REFUND_ERROR` +- Asset Report `warning_code`: add the 5 `BANK_INCOME_INSIGHTS_*` codes +- watchlist `source`: add `retro` enum value +- `TransferNetwork`: add `rfp` enum value (request for payment; closed beta, debit-only) +- `StudentRepaymentPlan.type`: `interest-only` → `interest only` (match the emitted value) + +### 2020-09-14_1.699.0 +- Add support for the Form I-20 US immigration student document on `/credit/payroll_income/get`. This form now returns an `i20` array which extraction data on uploaded I-20 documents. + ### 2020-09-14_1.698.7 - Add `kanmon` to the `processor` enum on `/processor/token/create`, for creating processor tokens for the Kanmon integration.