From 3dd26e28da2a50ba5bccdb5dae2deb1b1e6a6e6f Mon Sep 17 00:00:00 2001 From: Amy Hynes Date: Mon, 26 Jan 2026 11:28:22 -0500 Subject: [PATCH] OpenAPI generated code at 2026-01-26T16:28:20Z --- 2020-09-14.yml | 606 ++++++++++++++++++++++++++----------------------- CHANGELOG.md | 27 +++ 2 files changed, 345 insertions(+), 288 deletions(-) diff --git a/2020-09-14.yml b/2020-09-14.yml index 548b4a3..d246b61 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.680.0 + version: 2020-09-14_1.680.8 description: The Plaid REST API. Please see https://plaid.com/docs/api for more details. contact: name: Plaid Developer Team @@ -521,7 +521,7 @@ paths: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: '`/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint. The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor. This token can then be used to call `/asset_report/audit_copy/create`.' + description: '`/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint. The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor. This token can then be used to call `/asset_report/audit_copy/get`.' /asset_report/audit_copy/pdf/get: post: tags: @@ -1784,7 +1784,7 @@ paths: unofficial_currency_code: null transaction_count: 1 next_payment_date: "2022-12-15" - income_status: ACTIVE + status: ACTIVE historical_average_monthly_gross_income: 390 historical_average_monthly_income: 300 forecasted_average_monthly_income: 300 @@ -3426,9 +3426,7 @@ paths: url: /api/products/check/#cracheck_reportverificationpdfget operationId: craCheckReportVerificationPdfGet description: |- - The `/cra/check_report/verification/pdf/get` endpoint retrieves the most recent Consumer Report in PDF format, - specifically formatted for Home Lending verification use cases. Before calling this endpoint, ensure that you've created a - VOA report through Link or the `/cra/check_report/create` endpoint, and have received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook. + The `/cra/check_report/verification/pdf/get` endpoint retrieves the most recent Consumer Report in PDF format, specifically formatted for Home Lending verification use cases. Before calling this endpoint, ensure that you've created a VOA report through Link or the `/cra/check_report/create` endpoint, and have received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook. The response to `/cra/check_report/verification/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header. requestBody: @@ -4185,6 +4183,39 @@ paths: schema: $ref: '#/components/schemas/UserAccountSessionGetRequest' description: "" + /user_account/session/event/send: + post: + tags: + - plaid + summary: Send User Account Session Event + externalDocs: + url: /api/products/layer/#user_accountsessioneventsend + operationId: userAccountSessionEventSend + description: This endpoint allows sending client-specific events related to Layer sessions for analytics and tracking purposes. + responses: + "200": + description: success + content: + application/json: + schema: + $ref: '#/components/schemas/UserAccountSessionEventSendResponse' + examples: + example-1: + value: + 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/UserAccountSessionEventSendRequest' + description: "" /profile/network_status/get: x-hidden-from-docs: true post: @@ -4194,9 +4225,7 @@ paths: externalDocs: url: /api/profile/#networkstatusget operationId: profileNetworkStatusGet - description: |- - The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile - for the user. + description: The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user. responses: "200": description: success @@ -4562,14 +4591,19 @@ paths: 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. + 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. + Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn't. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/products/transactions/#historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error. requestBody: required: true @@ -5894,66 +5928,6 @@ paths: - "0955" - "1367" oauth: false - status: - item_logins: - status: HEALTHY - last_status_change: "2019-02-15T15:53:00Z" - breakdown: - success: 0.9 - error_plaid: 0.01 - error_institution: 0.09 - transactions_updates: - status: HEALTHY - last_status_change: "2019-02-12T08:22:00Z" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL - auth: - status: HEALTHY - last_status_change: "2019-02-15T15:53:00Z" - breakdown: - success: 0.91 - error_plaid: 0.01 - error_institution: 0.08 - identity: - status: DEGRADED - last_status_change: "2019-02-15T15:50:00Z" - breakdown: - success: 0.42 - error_plaid: 0.08 - error_institution: 0.5 - investments: - 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" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL - liabilities_updates: - status: HEALTHY - last_status_change: "2019-02-12T08:22:00Z" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL request_id: tbFyCEqkU774ZGG total: 11384 default: @@ -5994,84 +5968,28 @@ paths: institutions: - country_codes: - US - institution_id: ins_118923 - name: Red Platypus Bank - Red Platypus Bank + institution_id: ins_109513 + name: Theoretical Bank + oauth: true products: - assets - auth - balance - - transactions + - cra_lend_score + - cra_plaid_credit_score - identity + - identity_match + - income + - pay_by_bank + - processor_payments + - recurring_transactions + - transactions + - transfer routing_numbers: - - "011000138" - - "011200365" - - "011400495" - dtc_numbers: - - "2236" - - "0955" - - "1367" - oauth: false - status: - item_logins: - status: HEALTHY - last_status_change: "2019-02-15T15:53:00Z" - breakdown: - success: 0.9 - error_plaid: 0.01 - error_institution: 0.09 - transactions_updates: - status: HEALTHY - last_status_change: "2019-02-12T08:22:00Z" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL - auth: - status: HEALTHY - last_status_change: "2019-02-15T15:53:00Z" - breakdown: - success: 0.91 - error_plaid: 0.01 - error_institution: 0.08 - identity: - status: DEGRADED - last_status_change: "2019-02-15T15:50:00Z" - breakdown: - success: 0.42 - error_plaid: 0.08 - error_institution: 0.5 - investments: - 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" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL - liabilities_updates: - status: HEALTHY - last_status_change: "2019-02-12T08:22:00Z" - breakdown: - success: 0.95 - error_plaid: 0.02 - error_institution: 0.03 - refresh_interval: NORMAL - request_id: Ggmk0enW4smO2Tp + - "031101270" + - "103100194" + - "103112357" + request_id: QheuqaazREmq9xp default: content: application/json: @@ -6605,101 +6523,6 @@ paths: webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: qk5Bxes3gDfv4F2 - example-2: - value: - accounts: - - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp - balances: - available: 100 - current: 110 - iso_currency_code: USD - limit: null - unofficial_currency_code: null - mask: "0000" - name: Plaid Checking - official_name: Plaid Gold Standard 0% Interest Checking - subtype: checking - type: depository - - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK - balances: - available: null - current: 410 - iso_currency_code: USD - limit: 2000 - unofficial_currency_code: null - mask: "3333" - name: Plaid Credit Card - official_name: Plaid Diamond 12.5% APR Interest Credit Card - subtype: credit card - type: credit - - account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE - balances: - available: null - current: 65262 - iso_currency_code: USD - limit: null - unofficial_currency_code: null - mask: "7777" - name: Plaid Student Loan - official_name: null - subtype: student - type: loan - payment_risk_assessment: - risk_level: HIGH - risk_reasons: - - code: PL03 - description: 'High number of recent Plaid authentication attempts detected. Recommendation: Hold funds for 3-5 days or decline transactions at ''HIGH'' risk level.' - - code: PL05 - description: 'Requested ACH transaction amount exceeds 90% of latest bank account balance. Recommendation: Hold funds for 3-5 days, or decline transactions at ''HIGH'' risk level.' - exceeds_balance_threshold: true - balance_last_updated: "2024-03-30T18:25:26Z" - attributes: - unauthorized_transactions_count_7d: 0 - unauthorized_transactions_count_30d: 0 - unauthorized_transactions_count_60d: 1 - unauthorized_transactions_count_90d: 1 - nsf_overdraft_transactions_count_7d: 0 - nsf_overdraft_transactions_count_30d: 0 - nsf_overdraft_transactions_count_60d: 1 - nsf_overdraft_transactions_count_90d: 1 - days_since_first_plaid_connection: 380 - plaid_connections_count_7d: 2 - plaid_connections_count_30d: 5 - total_plaid_connections_count: 8 - plaid_non_oauth_authentication_attempts_count_3d: 3 - plaid_non_oauth_authentication_attempts_count_7d: 5 - plaid_non_oauth_authentication_attempts_count_30d: 7 - failed_plaid_non_oauth_authentication_attempts_count_3d: 2 - failed_plaid_non_oauth_authentication_attempts_count_7d: 4 - failed_plaid_non_oauth_authentication_attempts_count_30d: 4 - phone_change_count_28d: 0 - phone_change_count_90d: 1 - email_change_count_28d: 0 - email_change_count_90d: 1 - address_change_count_28d: 0 - address_change_count_90d: 1 - is_savings_or_money_market_account: false - is_account_closed: false - is_account_frozen_or_restricted: false - item: - available_products: - - balance - - identity - - investments - billed_products: - - assets - - auth - - liabilities - - transactions - consent_expiration_time: null - error: null - institution_id: ins_3 - institution_name: Chase - item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 - update_type: background - webhook: https://www.example.com/webhook - auth_method: INSTANT_AUTH - request_id: LhQf0THi8SH1yJk default: description: Error response content: @@ -7175,7 +6998,11 @@ paths: 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. + + 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. + + If `user_id` is not provided, you can also use this endpoint to supply information you already have collected about the user; if any of these fields are specified, the screens prompting the user to enter them will be skipped during the Link flow. If `user_id` is provided, user information can not be included in the request body. Please use the `/user/update` endpoint to update user data instead. tags: - plaid @@ -9679,7 +9506,6 @@ paths: user_id: plaid-user-6009db6e latest_scored_event: event_id: ptevt_cYNnF8xYE1v1om - event_type: LINK_COMPLETE timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 @@ -9754,7 +9580,6 @@ paths: example-1: value: event_id: ptevt_cYNnF8xYE1v1om - event_type: LINK_COMPLETE trust_index: score: 86 model: trust_index.1.0.1 @@ -9801,7 +9626,6 @@ paths: example-1: value: event_id: ptevt_cYNnF8xYE1v1om - event_type: LINK_COMPLETE timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 @@ -10147,6 +9971,8 @@ paths: quantity: 0.01 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 0.01 institution_price: 0.011 @@ -10157,6 +9983,8 @@ paths: quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null + vested_quantity: null + vested_value: null securities: - close_price: 0.011 close_price_as_of: "2021-04-13" @@ -10207,7 +10035,6 @@ paths: option_contract: null fixed_income: null request_id: 24MxmGFZz89Xg2f - is_investments_fallback_item: false default: description: Error response content: @@ -11833,6 +11660,7 @@ paths: city: London postal_code: SE14 8JW country: GB + next_cursor: YWJjMTIzIT8kKiYoKSctPUE request_id: 4zlKapIkTm8p5KM default: description: Error response @@ -12169,7 +11997,6 @@ paths: examples: example-1: value: - reset_login: true request_id: n7XQnv8ozwyFPBC default: description: Error response @@ -12290,13 +12117,24 @@ paths: user_token: user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb request_id: Aim3b + "201": + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/UserCreateResponse' + examples: + example-1: + value: + user_id: usr_9nSp2KuZ2x4JDw + request_id: Aim3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' - description: "For Plaid products and flows that use the user object, `/user/create` provides you a single token to access all data associated with the user. You must call this endpoint before calling `/link/token/create` if you are using any of the following: Plaid Check, Income Verification, Multi-Item Link, or Plaid Protect.\n\nFor customers who began using this endpoint on or after December 10, 2025, this endpoint takes a `client_user_id` and an `identity` object and will return a `user_id`. For customers who began using it before that date, the endpoint takes a `client_user_id` and a `consumer_report_user_identity` object and will return a `user_token` and `user_id`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).\n\nIn 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`. \n\nIn 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.\n\nWhen using Plaid Protect, it is highly recommended that you provide an `identity` object to better identify and block fraud across your Link sessions. \n\nPlaid will normalize identity fields before storing them and utilize the same identity across different user-based products." + description: "For Plaid products and flows that use the user object, `/user/create` provides you a single token to access all data associated with the user. You must call this endpoint before calling `/link/token/create` if you are using any of the following: Plaid Check, Income Verification, Multi-Item Link, or Plaid Protect.\n\n\nFor customers who began using this endpoint on or after December 10, 2025, this endpoint takes a `client_user_id` and an `identity` object and will return a `user_id`. For customers who began using it before that date, the endpoint takes a `client_user_id` and a `consumer_report_user_identity` object and will return a `user_token` and `user_id`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).\n\n\nIn 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`. \n\n\nIn 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.\n\n\nWhen using Plaid Protect, it is highly recommended that you provide an `identity` object to better identify and block fraud across your Link sessions. \n\n\nPlaid will normalize identity fields before storing them and utilize the same identity across different user-based products." requestBody: required: true content: @@ -12369,6 +12207,41 @@ paths: $ref: '#/components/schemas/UserGetRequest' parameters: - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' + /user/identity/remove: + x-hidden-from-docs: true + post: + tags: + - plaid + summary: Remove user identity data + externalDocs: + url: /api/users/#useridentityremove + operationId: userIdentityRemove + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserIdentityRemoveResponse' + examples: + example-1: + value: + request_id: Aim3b + default: + description: Error response + content: + application/json: + schema: + $ref: '#/components/schemas/PlaidError' + description: This endpoint allows customers to explicitly purge identity/PII data provided to Plaid for a given user. This is not exposed to customers by default, as it is meant for special scenarios or requests, but Plaid is obligated to enable customers to delete PII provided to us. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserIdentityRemoveRequest' + parameters: + - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' /user/update: post: tags: @@ -12573,6 +12446,41 @@ paths: application/json: schema: $ref: '#/components/schemas/UserItemsAssociateRequest' + /user/items/remove: + post: + tags: + - plaid + summary: Remove Items from a User + externalDocs: + url: /api/users/#useritemsremove + operationId: userItemsRemove + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UserItemsRemoveResponse' + examples: + example-1: + value: + request_id: m8MDnv9okwxFNBV + default: + description: Error response + content: + application/json: + schema: + $ref: '#/components/schemas/PlaidError' + description: |- + This endpoint is used to delete Items for a given User. Either a `user_id` or `user_token` must be provided. If any of the Items are not associated with the provided User, an error will be returned, and no Items will be deleted. + This is equivalent to calling `/item/remove` on each Item, but this endpoint supports User-based use cases (CRA) where `/item/remove` is not supported. To obtain a list of Items associated with a User, call `/user/items/get`. After an Item is deleted, it will no longer appear in `/user/items/get`. Item deletion via `/user/items/remove` will permanently and irreversibly delete the Item; to re-create the Item, send the User back through the Link flow. + This endpoint is not intended to remove all data for a User, as it will only remove items and no other data for the User. In the case of a user deleting their account with your product, call `/user/products/terminate` to stop billing for unneeded services. For a user initiated data deletion request, see the [Consumer Service Center](https://plaid.com/check/consumer-service-center/) to revoke access to data. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserItemsRemoveRequest' /user/third_party_token/create: x-hidden-from-docs: true post: @@ -12720,18 +12628,18 @@ paths: example-1: value: payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 - payment_token: payment-token-sandbox-c6a26505-42b4-46fe-8ecf-bf9edcafbebb reference: Account Funding 99744 amount: currency: GBP value: 100 - status: PAYMENT_STATUS_INPUT_NEEDED + status: PAYMENT_STATUS_INITIATED last_status_update: "2019-11-06T21:10:52Z" recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6 bacs: account: "31926819" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D sort_code: "601613" + end_to_end_id: sptch8cde8390bfd363888 iban: null request_id: aEAQmewMzlVa1k6 default: @@ -12772,19 +12680,20 @@ paths: example-1: value: payments: - - payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 + - payment_id: payment-id-sandbox-feca8a7a-5581-4aef-9297-f3062bb735d3 reference: Account Funding 99744 amount: currency: GBP value: 100 - status: PAYMENT_STATUS_INPUT_NEEDED + status: PAYMENT_STATUS_EXECUTED last_status_update: "2019-11-06T21:10:52Z" recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6 bacs: account: "31926819" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D sort_code: "601613" - iban: null + iban: null, + end_to_end_id: sptch8cde8390bfd363888, next_cursor: "2020-01-01T00:00:00Z" request_id: aEAQmewMzlVa1k6 default: @@ -12877,6 +12786,8 @@ paths: quantity: 0.01 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1.5 institution_price: 2.11 @@ -12887,6 +12798,8 @@ paths: quantity: 1 security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 10 institution_price: 10.42 @@ -12897,6 +12810,8 @@ paths: quantity: 2 security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 0.01 institution_price: 0.011 @@ -12907,6 +12822,8 @@ paths: quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 23 institution_price: 27 @@ -12917,6 +12834,8 @@ paths: quantity: 23.567 security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 15 institution_price: 13.73 @@ -12927,6 +12846,8 @@ paths: quantity: 100.05 security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 948.08 institution_price: 94.808 @@ -12937,6 +12858,8 @@ paths: quantity: 10 security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1 institution_price: 1 @@ -12947,6 +12870,8 @@ paths: quantity: 12345.67 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: ax0xgOBYRAIqOOjeLZr0iZBb8r6K88HZXpvmq cost_basis: 92.47 institution_price: 0.177494362 @@ -12957,6 +12882,8 @@ paths: quantity: 25000 security_id: vLRMV3MvY1FYNP91on35CJD5QN5rw9Fpa9qOL unofficial_currency_code: null + vested_quantity: null + vested_value: null item: available_products: - balance @@ -13498,6 +13425,8 @@ paths: quantity: 1 security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea unofficial_currency_code: null + vested_quantity: null + vested_value: null - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 40 institution_price: 42.15 @@ -17379,8 +17308,7 @@ paths: description: |- `/income/verification/documents/download` provides the ability to download the source documents associated with the verification. - If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available - for download from the payroll provider will be available from this endpoint. + If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available for download from the payroll provider will be available from this endpoint. The response to `/income/verification/documents/download` is a ZIP file in binary data. If a `document_id` is passed, a single document will be contained in this file. If not, the response will contain all documents associated with the verification. @@ -19579,7 +19507,12 @@ paths: externalDocs: url: /api/products/signal#signaldecisionreport operationId: signalDecisionReport - description: "After you call `/signal/evaluate`, Plaid will normally infer the outcome from your Signal Rules. However, if you are not using Signal Rules, if the Signal Rules outcome was `REVIEW`, or if you take a different action than the one determined by the Signal Rules, you will need to call `/signal/decision/report`. This helps improve Signal Transaction Score accuracy for your account and is necessary for proper functioning of the rule performance and rule tuning capabilities in the Dashboard. If your effective decision changes after calling `/signal/decision/report` (for example, you indicated that you accepted a transaction, but later on, your payment processor rejected it, so it was never initiated), call `/signal/decision/report` again for the transaction to correct Plaid's records. \n\nIf you are using Plaid Transfer as your payment processor, you also do not need to call `/signal/decision/report`, as Plaid can infer outcomes from your Transfer activity.\n\nIf using a Balance-only ruleset, this endpoint will not impact scores (Balance does not use scores), but is necessary to view accurate transaction outcomes and tune rule logic in the Dashboard." + description: |- + After you call `/signal/evaluate`, Plaid will normally infer the outcome from your Signal Rules. However, if you are not using Signal Rules, if the Signal Rules outcome was `REVIEW`, or if you take a different action than the one determined by the Signal Rules, you will need to call `/signal/decision/report`. This helps improve Signal Transaction Score accuracy for your account and is necessary for proper functioning of the rule performance and rule tuning capabilities in the Dashboard. If your effective decision changes after calling `/signal/decision/report` (for example, you indicated that you accepted a transaction, but later on, your payment processor rejected it, so it was never initiated), call `/signal/decision/report` again for the transaction to correct Plaid's records. + + If you are using Plaid Transfer as your payment processor, you also do not need to call `/signal/decision/report`, as Plaid can infer outcomes from your Transfer activity. + + If using a Balance-only ruleset, this endpoint will not impact scores (Balance does not use scores), but is necessary to view accurate transaction outcomes and tune rule logic in the Dashboard. responses: "200": description: OK @@ -20479,10 +20412,7 @@ paths: schema: $ref: '#/components/schemas/PlaidError' description: Error response - description: |- - Search for an issue associated with one of the following identifiers: `item_id`, `link_session_id` or Link session `request_id`. - This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the - provided identifier. At least one of the identifiers must be provided to perform the search. + description: 'Search for an issue associated with one of the following identifiers: `item_id`, `link_session_id` or Link session `request_id`. This endpoint returns a list of `Issue` objects, with an empty list indicating that no issues are associated with the provided identifier. At least one of the identifiers must be provided to perform the search.' requestBody: required: true content: @@ -21681,6 +21611,51 @@ components: - identity - items - request_id + UserAccountSessionEventSendRequest: + description: UserAccountSessionEventSendRequest defines the request schema for `/user_account/session/event/send` + type: object + properties: + client_id: + $ref: '#/components/schemas/APIClientID' + secret: + $ref: '#/components/schemas/APISecret' + cohort_id: + type: string + description: Optional cohort identifier for the user session. + link_session_id: + type: string + description: The Link session identifier. + event: + $ref: '#/components/schemas/UserAccountSessionEvent' + required: + - link_session_id + - event + UserAccountSessionEvent: + description: Event data for user account session tracking + type: object + properties: + name: + type: string + description: The name of the event. + timestamp: + type: string + format: date-time + description: The timestamp when the event occurred in ISO 8601 format. + outcome: + type: string + description: Optional outcome of the event. + required: + - name + - timestamp + UserAccountSessionEventSendResponse: + type: object + additionalProperties: true + description: UserAccountSessionEventSendResponse defines the response schema for `/user_account/session/event/send` + properties: + request_id: + $ref: '#/components/schemas/RequestID' + required: + - request_id TransactionsGetRequest: type: object description: TransactionsGetRequest defines the request schema for `/transactions/get` @@ -23364,7 +23339,7 @@ components: properties: webhook_fired: type: boolean - description: Value is `true` if the test` webhook_code` was successfully fired. + description: Value is `true` if the test `webhook_code` was successfully fired. request_id: $ref: '#/components/schemas/RequestID' required: @@ -23628,7 +23603,6 @@ components: - account - holdings - securities - - is_investments_fallback_item ProcessorTransactionsGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. @@ -24562,6 +24536,27 @@ components: - user_id - client_user_id - created_at + UserIdentityRemoveRequest: + type: object + description: UserIdentityRemoveRequest defines the request schema for `/user/identity/remove` + properties: + client_id: + $ref: '#/components/schemas/APIClientID' + secret: + $ref: '#/components/schemas/APISecret' + user_id: + $ref: '#/components/schemas/NewUserID' + required: + - user_id + UserIdentityRemoveResponse: + type: object + additionalProperties: true + description: UserIdentityRemoveResponse defines the response schema for `/user/identity/remove` + properties: + request_id: + $ref: '#/components/schemas/RequestID' + required: + - request_id UserUpdateRequest: type: object description: UserUpdateRequest defines the request schema for `/user/update` @@ -24750,6 +24745,34 @@ components: $ref: '#/components/schemas/RequestID' required: - request_id + UserItemsRemoveRequest: + type: object + description: UserItemsRemoveRequest defines the request schema for `/user/items/remove` + properties: + client_id: + $ref: '#/components/schemas/APIClientID' + secret: + $ref: '#/components/schemas/APISecret' + user_token: + $ref: '#/components/schemas/UserToken' + user_id: + $ref: '#/components/schemas/NewUserID' + item_ids: + type: array + items: + $ref: '#/components/schemas/ItemId' + description: An array of `item_id`s to be deleted. All Items for removal must be currently associated with the provided `user_id` or `user_token`. Otherwise, the entire operation will error and no Items will be deleted. + required: + - item_ids + UserItemsRemoveResponse: + type: object + additionalProperties: true + description: UserItemsRemoveResponse defines the response schema for `/user/items/remove` + properties: + request_id: + $ref: '#/components/schemas/RequestID' + required: + - request_id UserAccountIdentity: type: object nullable: true @@ -24767,7 +24790,7 @@ components: description: |- The user's email address. - Note: email is currently not returned for users, and will be added later in 2025. + Note: email is currently not returned for users, and will be added later in 2026. type: string nullable: true date_of_birth: @@ -24966,7 +24989,7 @@ components: type: object nullable: true additionalProperties: true - description: ClientUserIdentity is the shared user identity construct across /user/* routes. + description: The identity fields associated with a user. For a user to be eligible for a Plaid Check Consumer Report, all fields are required except `id_number`. Providing a partial SSN is strongly recommended, and improves the accuracy of matching user records during compliance processes such as file disclosure, dispute, or security freeze requests. If creating a report that will be shared with GSEs such as Fannie or Freddie, a full Social Security Number must be provided via the `id_number` field. properties: name: $ref: '#/components/schemas/ClientUserIdentityName' @@ -25350,7 +25373,7 @@ components: - PAYMENT_STATUS_CANCELLED - PAYMENT_STATUS_ESTABLISHED - PAYMENT_STATUS_REJECTED - description: "The status of the payment.\n\nCore lifecycle statuses:\n\n`PAYMENT_STATUS_INPUT_NEEDED`: **Transitional.** The payment is awaiting user input to continue processing. It may re-enter this state if additional input is required.\n\n`PAYMENT_STATUS_AUTHORISING`: **Transitional.** The payment is being authorised by the financial institution. It will automatically move on once authorisation completes.\n\n`PAYMENT_STATUS_INITIATED`: **Transitional.** The payment has been authorised and accepted by the financial institution and is now in transit. A payment should be considered complete once it reaches the `PAYMENT_STATUS_EXECUTED` state or the funds settle in the recipient account.\n\n`PAYMENT_STATUS_EXECUTED`: **Terminal.** The funds have left the payer’s account and the payment is en route to settlement. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in `PAYMENT_STATUS_INITIATED` before settling. When using Plaid Virtual Accounts, `PAYMENT_STATUS_EXECUTED` is not terminal—the payment will continue to `PAYMENT_STATUS_SETTLED` once funds are available.\n\n`PAYMENT_STATUS_SETTLED`: **Terminal.** The funds are available in the recipient’s account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/).\n\nFailure statuses:\n\n`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: **Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer’s balance is replenished.\n\n`PAYMENT_STATUS_FAILED`: **Terminal (retryable).** The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved.\n\n`PAYMENT_STATUS_BLOCKED`: **Terminal (retryable).** The payment was blocked by Plaid (e.g., flagged as risky). Resolve any compliance or risk issues and retry.\n\n`PAYMENT_STATUS_REJECTED`: **Terminal.** The payment was rejected by the financial institution. No automatic retry is possible.\n\n`PAYMENT_STATUS_CANCELLED`: **Terminal.** The end user cancelled the payment during authorisation.\n\nStanding-order statuses:\n\n`PAYMENT_STATUS_ESTABLISHED`: **Terminal.** A recurring/standing order has been successfully created.\n\nDeprecated (to be removed in a future release):\n\n`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown. \n\n`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. \n\n`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established." + description: "The status of the payment.\n\nCore lifecycle statuses:\n\n**`PAYMENT_STATUS_INPUT_NEEDED`**: Transitional. The payment is awaiting user input to continue processing. It may re-enter this state if additional input is required.\n\n**`PAYMENT_STATUS_AUTHORISING`:** Transitional. The payment is being authorised by the financial institution. It will automatically move on once authorisation completes.\n\n**`PAYMENT_STATUS_INITIATED`:** Transitional. The payment has been authorised and accepted by the financial institution and is now in transit. A payment should be considered complete once it reaches the `PAYMENT_STATUS_EXECUTED` state or the funds settle in the recipient account.\n\n**`PAYMENT_STATUS_EXECUTED`: Terminal.** The funds have left the payer’s account and the payment is en route to settlement. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in `PAYMENT_STATUS_INITIATED` before settling. When using Plaid Virtual Accounts, `PAYMENT_STATUS_EXECUTED` is not terminal—the payment will continue to `PAYMENT_STATUS_SETTLED` once funds are available.\n\n**`PAYMENT_STATUS_SETTLED`: Terminal.** The funds are available in the recipient’s account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/).\n\nFailure statuses:\n\n**`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer’s balance is replenished.\n\n**`PAYMENT_STATUS_FAILED`: Terminal (retryable).** The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved.\n\n**`PAYMENT_STATUS_BLOCKED`: Terminal (retryable).** The payment was blocked by Plaid (e.g., flagged as risky). Resolve any compliance or risk issues and retry.\n\n**`PAYMENT_STATUS_REJECTED`: Terminal.** The payment was rejected by the financial institution. No automatic retry is possible.\n\n**`PAYMENT_STATUS_CANCELLED`: Terminal.** The end user cancelled the payment during authorisation.\n\nStanding-order statuses:\n\n**`PAYMENT_STATUS_ESTABLISHED`: Terminal.** A recurring/standing order has been successfully created.\n\nDeprecated (to be removed in a future release):\n\n`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown. \n\n`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. \n\n`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established." PaymentInitiationPayment: type: object additionalProperties: true @@ -26096,6 +26119,8 @@ components: - pinwheel - thread_bank - array + - fiant + - oatfi description: The processor you are integrating with. required: - access_token @@ -26883,6 +26908,7 @@ components: 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. flow_type: type: string + x-hidden-from-docs: true enum: - FLEXIBLE_AUTH description: This field has been deprecated in favor of `auth_type_select_enabled`. @@ -27647,12 +27673,14 @@ components: type: array items: type: string - description: "A list of the account subtypes that were requested via the `account_filters` \nparameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from\nItems with `investments_auth` as an enabled product.\n" + description: | + A list of the account subtypes that were requested via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product. provided_account_subtypes: type: array items: type: string - description: "A list of the account subtypes that were extracted but did not match the requested subtypes via the `account_filters` \nparameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from\nItems with `investments_auth` as an enabled product.\n" + description: | + A list of the account subtypes that were extracted but did not match the requested subtypes via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product. required: - error_type - error_code @@ -29324,7 +29352,7 @@ components: description: | The status of an institution is determined by the health of its Item logins, Transactions updates, Investments updates, Liabilities updates, Auth requests, Balance requests, Identity requests, Investments requests, and Liabilities requests. A login attempt is conducted during the initial Item add in Link. If there is not enough traffic to accurately calculate an institution's status, Plaid will return null rather than potentially inaccurate data. - Institution status is accessible in the Dashboard and via the API using the `/institutions/get_by_id` endpoint with the `include_status` option set to true. Note that institution status is not available in the Sandbox environment. + Institution status is accessible in the Dashboard and via the API using the `/institutions/get_by_id` endpoint with the `options.include_status` option set to true. Note that institution status is not available in the Sandbox environment. x-examples: example-1: status: @@ -31753,7 +31781,7 @@ components: - SEPA_CREDIT_TRANSFER - SEPA_CREDIT_TRANSFER_INSTANT description: |- - Payment scheme. If not specified - the default in the region will be used (e.g. `SEPA_CREDIT_TRANSFER` for EU). Using unsupported values will result in a failed payment. + Payment scheme. If not specified - the default in the region will be used (e.g. `SEPA_CREDIT_TRANSFER` for EU). In responses, if the scheme is not explicitly specified in the request, this value will be `null`. Using unsupported values will result in a failed payment. `LOCAL_DEFAULT`: The default payment scheme for the selected market and currency will be used. @@ -31999,6 +32027,7 @@ components: - cra_cashflow_insights - cra_monitoring - cra_lend_score + - cra_plaid_credit_score - layer - pay_by_bank - protect_linked_bank @@ -32014,6 +32043,7 @@ components: - cra_cashflow_insights - cra_monitoring - cra_lend_score + - cra_plaid_credit_score - investments - liabilities - protect_linked_bank @@ -32185,7 +32215,7 @@ components: force_available_balance: type: number format: double - description: If provided, the account will always have this amount as its available balance, regardless of current balance or changes in transactions over time. + description: If provided, the account will always have this amount as its available balance, regardless of current balance or changes in transactions over time. currency: type: string description: ISO-4217 currency code. If provided, the account will be denominated in the given currency. Transactions will also be in this currency by default. @@ -33610,6 +33640,7 @@ components: event_id: ptevt_cYNnF8xYE1v1om timestamp: "2020-07-24T03:26:02Z" event_type: LINK_COMPLETE + environment: production properties: webhook_type: type: string @@ -33631,6 +33662,8 @@ components: type: string description: The Plaid User ID. nullable: true + environment: + $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code @@ -33638,6 +33671,7 @@ components: - event_type - timestamp - user_id + - environment RecurringNewTransferWebhook: title: RecurringNewTransferWebhook type: object @@ -36786,7 +36820,7 @@ components: For transfers submitted using `ach`, the Standard ACH cutoff is 8:30 PM Eastern Time. - For transfers submitted using `same-day-ach`, the Same Day ACH cutoff is 3:30 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. + For transfers submitted using `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. For transfers submitted using `rtp`, in the case that the account being credited does not support RTP, the transfer will be sent over ACH as long as an `ach_class` is provided in the request. If RTP isn't supported by the account and no `ach_class` is provided, the transfer will fail to be submitted. enum: @@ -36802,7 +36836,7 @@ components: For transfers submitted as `ach` or `same-day-ach`, the Standard ACH cutoff is 8:30 PM Eastern Time. - For transfers submitted as `same-day-ach`, the Same Day ACH cutoff is 3:30 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 `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 Real Time Payment rail by TCH or FedNow rails as necessary. If a transfer is submitted as `rtp` and the counterparty account is not eligible for RTP, the `/transfer/authorization/create` request will fail with an `INVALID_FIELD` error code. To pre-check to determine whether a counterparty account can support RTP, call `/transfer/capabilities/get` before calling `/transfer/authorization/create`. @@ -36818,7 +36852,7 @@ components: description: |- The ACH networks used for the funds flow. - For requests submitted as either `ach` or `same-day-ach` the cutoff for Same Day ACH is 3:30 PM Eastern Time and the cutoff for Standard ACH transfers is 8:30 PM Eastern Time. It is recommended to submit a request at least 15 minutes before the cutoff time in order to ensure that it will be processed before the cutoff. Any request that is indicated as `same-day-ach` and that misses the Same Day ACH cutoff, but is submitted in time for the Standard ACH cutoff, will be sent over Standard ACH rails and will not incur same-day charges. + For requests submitted as either `ach` or `same-day-ach` the cutoff for Same Day ACH is 3:00 PM Eastern Time and the cutoff for Standard ACH transfers is 8:30 PM Eastern Time. It is recommended to submit a request at least 15 minutes before the cutoff time in order to ensure that it will be processed before the cutoff. Any request that is indicated as `same-day-ach` and that misses the Same Day ACH cutoff, but is submitted in time for the Standard ACH cutoff, will be sent over Standard ACH rails and will not incur same-day charges. enum: - ach - same-day-ach @@ -39260,7 +39294,7 @@ components: $ref: '#/components/schemas/APISecret' originator_client_id: type: string - description: Client ID of the the originator whose diligence that you want to submit. + description: Client ID of the originator whose diligence that you want to submit. originator_diligence: $ref: '#/components/schemas/TransferOriginatorDiligence' required: @@ -48525,6 +48559,7 @@ components: - identity - income_verification - investments + - investments_auth - liabilities - transactions - employment @@ -49939,7 +49974,7 @@ components: CraCheckReportFailedWebhook: type: object title: CraCheckReportFailedWebhook - description: Fired when a Check Report has failed to generate + description: Fired when a Check Report has failed to generate. To get more details, call `/user/items/get` and check for non-null `error` objects on the associated Items in the response. These `error` objects will contain more details on why the Item is in an error state and how to resolve it. After resolving the errors, you can try to re-generate the report. additionalProperties: true properties: webhook_type: @@ -55834,7 +55869,7 @@ components: $ref: '#/components/schemas/URL' phone_number: $ref: '#/components/schemas/WatchlistScreeningPhoneNumber' - email: + email_address: $ref: '#/components/schemas/EmailAddress' required: - name @@ -55985,12 +56020,12 @@ components: type: string title: ClientUserID example: your-db-id-3b24110 - description: A unique ID that identifies the end user in your system. This ID can also be used to associate user-specific data from other Plaid products. Financial Account Matching requires this field and the `/link/token/create` `client_user_id` to be consistent. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. + description: A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be provided. This ID can also be used to associate user-specific data from other Plaid products. Financial Account Matching requires this field and the `/link/token/create` `client_user_id` to be consistent. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. ClientUserIDNullable: type: string title: ClientUserID example: your-db-id-3b24110 - description: A unique ID that identifies the end user in your system. This ID can also be used to associate user-specific data from other Plaid products. Financial Account Matching requires this field and the `/link/token/create` `client_user_id` to be consistent. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. + description: A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be provided. This ID can also be used to associate user-specific data from other Plaid products. Financial Account Matching requires this field and the `/link/token/create` `client_user_id` to be consistent. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. nullable: true Cursor: description: An identifier that determines which page of results you receive. @@ -57476,7 +57511,7 @@ components: client_user_id: $ref: '#/components/schemas/ClientUserID' user_id: - description: A unique user identifier, created by `/user/create`. All integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [new user APIs](https://plaid.com/docs/api/users/user-apis). 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; 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 @@ -58320,12 +58355,12 @@ components: type: string title: PlaidUserID example: usr_dddAs9ewdcDQQQ - description: A unique user identifier, created by `/user/create`. All integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [new user APIs](https://plaid.com/docs/api/user/user-apis). + 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`. PlaidUserIDNullable: type: string title: PlaidUserID example: usr_dddAs9ewdcDQQQ - description: A unique user identifier, created by `/user/create`. All integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [new user APIs](https://plaid.com/docs/api/user/user-apis). + 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`. nullable: true PostalCode: type: string @@ -61381,8 +61416,7 @@ components: nullable: true description: |- The last 2-4 alphanumeric characters of an account's official account number. - Note that the mask may be non-unique between an Item's accounts, and it may also - not match the mask that the bank displays to the user. + Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. metadata: $ref: '#/components/schemas/CraPartnerInsightsItemAccountMetadata' name: @@ -62040,12 +62074,12 @@ components: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' - report_type: + report_requested: $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' user_token: $ref: '#/components/schemas/UserToken' required: - - report_type + - report_requested CraCheckReportVerificationPdfGetResponse: format: binary type: string @@ -64788,11 +64822,11 @@ components: token_type: type: string example: Bearer - description: type of token the access token is. Currently it is always Bearer + description: Type of token the access token is. Currently it is always Bearer expires_in: type: integer example: 500 - description: time remaining in seconds before expiration + description: Time remaining in seconds before expiration request_id: $ref: '#/components/schemas/RequestID' description: OAuth token grant success response @@ -64892,7 +64926,7 @@ components: properties: request_id: $ref: '#/components/schemas/RequestID' - description: successful OAuth token revoke response + description: Successful OAuth token revoke response GetRecipientsResponse: type: object description: GetRecipientsResponse defines the response schema for `/fdx/recipients` @@ -65124,10 +65158,6 @@ components: $ref: '#/components/schemas/FDXNotificationPayloadIdType' event: $ref: '#/components/schemas/FDXLifecycleEvent' - customFields: - type: array - items: - $ref: '#/components/schemas/FDXFiAttribute' FDXHateoasLinkAction: type: string enum: @@ -65721,7 +65751,7 @@ components: BankInitiatedReturnRisk: title: BankInitiatedReturnRisk type: object - description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk because an account is overdrawn or because an ineligible account is used. Common return codes in this category include: "R01", "R02", "R03", "R04", "R06", "R08", "R09", "R13", "R16", "R17", "R20", "R23". These returns have a turnaround time of 2 banking days.' + description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk because an account is overdrawn or because an ineligible account is used. Common return codes in this category include: "R01", "R02", "R03", "R04", "R06", "R08", "R09", "R13", "R16", "R17", "R20", "R23". These returns have a turnaround time of 2 banking days.' properties: score: $ref: '#/components/schemas/SignalScore' @@ -66452,7 +66482,7 @@ components: secret: $ref: '#/components/schemas/APISecret' statement_id: - description: Plaid's unique identifier for the statements. + description: Plaid's unique identifier for the statement. type: string required: - access_token diff --git a/CHANGELOG.md b/CHANGELOG.md index d267d79..5aaf740 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ +### 2020-09-14_1.680.8 +- Add `cra_plaid_credit_score` value to Products enum. Note that this value is deprecated and is added only to reflect current API behavior, as it is present in the supported products array returned by insititutions endpoints. `cra_plaid_credit_score` should not be used in any requests to `/link/token/create` and is planned to be removed from the API. + +### 2020-09-14_1.680.7 +- Add `environment` field to `ProtectUserEventWebhook` + +### 2020-09-14_1.680.6 +- Add 'investment_auth' as an available product in the request to `/partner/customer/create` + +### 2020-09-14_1.680.6 +- Add `201` response to `/user/create` + +### 2020-09-14_1.680.5 +- Add `/user/items/remove` endpoint + +### 2020-09-14_1.680.4 +- (hidden) Add `/user/identity/remove` endpoint to allow customers to explicitly purge identity data + +### 2020-09-14_1.680.3 +- Mark `is_investments_fallback_item` as an optional rather than required parameter in the response schema for `/processor/investments/holdings/get` endpoint (not yet currently used in Production by any customers), to achieve consistency with `/investments/holdings/get`. + +### 2020-09-14_1.680.2 +- Add `/user_account/session/event/send` endpoint for Layer customer event tracking + +### 2020-09-14_1.680.1 +- Update /verification/pdf/get endpoint request attribute from `report_type` to `report_requested`. + ### 2020-09-14_1.680.0 - Add Facial Duplicate data to IDV APIs.