openapi: 3.0.0 servers: - description: Production url: https://production.plaid.com - description: Sandbox url: https://sandbox.plaid.com info: title: The Plaid API version: 2020-09-14_1.708.0 description: The Plaid REST API. Please see https://plaid.com/docs/api for more details. contact: name: Plaid Developer Team url: https://plaid.com termsOfService: https://plaid.com/legal/ tags: - name: plaid description: The Plaid API security: - clientId: [] secret: [] plaidVersion: [] paths: /asset_report/create: post: tags: - plaid summary: Create an Asset Report externalDocs: url: /api/products/assets/#asset_reportcreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportCreateResponse' examples: example-1: value: asset_report_token: assets-sandbox-6f12f5bb-22dd-4855-b918-f47ec439198a asset_report_id: 1f414183-220c-44f5-b0c8-bc0e6d4053bb request_id: Iam3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportCreate description: |- The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints. The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. The exact amount of time to create the report will vary depending on how many days of history are requested and will typically range from a few seconds to about one minute. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/products/assets/#webhooks). The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportCreateRequest' /asset_report/get: post: tags: - plaid summary: Retrieve an Asset Report externalDocs: url: /api/products/assets/#asset_reportget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportGetResponse' examples: example-1: value: report: asset_report_id: 028e8404-a013-4a45-ac9e-002482f9cafc client_report_id: client_report_id_1221 date_generated: "2023-03-30T18:27:37Z" days_requested: 90 items: - accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 balances: available: 43200 current: 43200 limit: null margin_loan_amount: null iso_currency_code: USD unofficial_currency_code: null days_available: 90 historical_balances: - current: 49050 date: "2023-03-29" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-28" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-27" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-26" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-25" iso_currency_code: USD unofficial_currency_code: null mask: "4444" name: Plaid Money Market official_name: Plaid Platinum Standard 1.85% Interest Money Market owners: - addresses: - data: city: Malakoff country: US region: NY street: 2992 Cameron Road postal_code: "14236" primary: true - data: city: San Matias country: US region: CA street: 2493 Leisure Lane postal_code: 93405-2255 primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: money market transactions: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 amount: 5850 date: "2023-03-30" iso_currency_code: USD original_description: ACH Electronic CreditGUSTO PAY 123456 pending: false transaction_id: gGQgjoeyqBF89PND6K14Sow1wddZBmtLomJ78 unofficial_currency_code: null type: depository - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v balances: available: 100 current: 110 limit: null margin_loan_amount: null iso_currency_code: USD unofficial_currency_code: null days_available: 90 historical_balances: - current: 110 date: "2023-03-29" iso_currency_code: USD unofficial_currency_code: null - current: -390 date: "2023-03-28" iso_currency_code: USD unofficial_currency_code: null - current: -373.67 date: "2023-03-27" iso_currency_code: USD unofficial_currency_code: null - current: -284.27 date: "2023-03-26" iso_currency_code: USD unofficial_currency_code: null - current: -284.27 date: "2023-03-25" iso_currency_code: USD unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking owners: - addresses: - data: city: Malakoff country: US region: NY street: 2992 Cameron Road postal_code: "14236" primary: true - data: city: San Matias country: US region: CA street: 2493 Leisure Lane postal_code: 93405-2255 primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: checking transactions: - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 89.4 date: "2023-03-27" iso_currency_code: USD original_description: SparkFun pending: false transaction_id: 4zBRq1Qem4uAPnoyKjJNTRQpQddM4ztlo1PLD unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 12 date: "2023-03-28" iso_currency_code: USD original_description: 'McDonalds #3322' pending: false transaction_id: dkjL41PnbKsPral79jpxhMWdW55gkPfBkWpRL unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 4.33 date: "2023-03-28" iso_currency_code: USD original_description: Starbucks pending: false transaction_id: a84ZxQaWDAtDL3dRgmazT57K7jjN3WFkNWMDy unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: -500 date: "2023-03-29" iso_currency_code: USD original_description: United Airlines **** REFUND **** pending: false transaction_id: xG9jbv3eMoFWepzB7wQLT3LoLggX5Duy1Gbe5 unofficial_currency_code: null type: depository date_last_updated: "2023-03-30T18:25:26Z" institution_id: ins_109508 institution_name: First Platypus Bank item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 user: client_user_id: uid_40332 email: abcharleston@example.com first_name: Anna last_name: Charleston middle_name: B phone_number: 1-415-867-5309 ssn: 111-22-1234 request_id: GVzMdiDd8DDAQK4 warnings: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportGet 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 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: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportGetRequest' description: "" /asset_report/pdf/get: post: tags: - plaid summary: Retrieve a PDF Asset Report externalDocs: url: /api/products/assets/#asset_reportpdfget responses: "200": description: A PDF of the Asset Report content: application/pdf: schema: $ref: '#/components/schemas/AssetReportPDFGetResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportPdfGet description: |- The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/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. The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header. [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportPDFGetRequest' description: "" /asset_report/refresh: post: tags: - plaid summary: Refresh an Asset Report externalDocs: url: /api/products/assets/#asset_reportrefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportRefreshResponse' examples: example-1: value: asset_report_id: c33ebe8b-6a63-4d74-a83d-d39791231ac0 asset_report_token: assets-sandbox-8218d5f8-6d6d-403d-92f5-13a9afaa4398 request_id: NBZaq default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportRefresh description: |- An Asset Report is an immutable snapshot of a user's assets. In order to "refresh" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available. The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string ("") for any previously-populated fields you would like set as empty. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportRefreshRequest' description: "" /asset_report/filter: post: tags: - plaid summary: Filter Asset Report externalDocs: url: /api/products/assets/#asset_reportfilter responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportFilterResponse' examples: example-1: value: asset_report_token: assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c asset_report_id: fdc09207-0cef-4d88-b5eb-0d970758ebd9 request_id: qEg07 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportFilter description: |- By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint. To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report's data. Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed. Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportFilterRequest' description: "" /asset_report/remove: post: tags: - plaid summary: Delete an Asset Report externalDocs: url: /api/products/assets/#asset_reportremove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportRemoveResponse' examples: example-1: value: removed: true request_id: I6zHN default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportRemove description: |- The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically. The `/asset_report/remove` endpoint allows you to remove access to an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportRemoveRequest' description: "" /asset_report/audit_copy/create: post: tags: - plaid summary: Create Asset Report Audit Copy externalDocs: url: /api/products/assets/#asset_reportaudit_copycreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyCreateResponse' examples: example-1: value: audit_copy_token: a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4 request_id: Iam3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportAuditCopyCreate description: |- Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to the GSEs on your behalf if you participate in Fannie Mae's Day 1 Certainty™ program or utilize Freddie Mac's Loan Product Advisor® (LPA®) Asset and Income Modeler (AIM). An Audit Copy contains the same underlying data as the Asset Report. To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You'll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyCreateRequest' /asset_report/audit_copy/get: post: summary: Retrieve an Asset Report Audit Copy tags: - plaid operationId: assetReportAuditCopyGet externalDocs: url: /none/ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportGetResponse' default: description: Error response content: 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/get`.' /asset_report/audit_copy/pdf/get: post: tags: - plaid summary: Retrieve a PDF Asset Report Audit Copy externalDocs: url: /none/ responses: "200": description: A PDF of the Asset Report Audit Copy content: application/pdf: schema: $ref: '#/components/schemas/AssetReportAuditCopyPdfGetResponse' examples: example-1: value: JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O... default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportAuditCopyPdfGet description: |- The `/asset_report/audit_copy/pdf/get` endpoint retrieves an Asset Report Audit Copy in PDF format. The caller must provide the `audit_copy_token` that was shared via the `/asset_report/audit_copy/create` endpoint. The response to `/asset_report/audit_copy/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header. [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyPdfGetRequest' description: "" /asset_report/audit_copy/remove: post: tags: - plaid summary: Remove Asset Report Audit Copy externalDocs: url: /api/products/assets/#asset_reportaudit_copyremove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyRemoveResponse' examples: example-1: value: removed: true request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: assetReportAuditCopyRemove requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportAuditCopyRemoveRequest' description: "" description: The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy. /cra/monitoring_insights/subscribe: post: summary: Subscribe to Monitoring Insights tags: - plaid operationId: craMonitoringInsightsSubscribe externalDocs: url: /api/products/check/#cramonitoring_insightssubscribe requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsSubscribeRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsSubscribeResponse' examples: example-1: value: subscription_id: f17efbdd-caab-4278-8ece-963511cd3d51 request_id: GVzMdiDd8DDAQK4 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint allows you to subscribe to insights for a user's linked CRA Item, which are updated between one and four times per day (best-effort). In the current Cash Flow Updates beta experience, only one Item per user may be subscribed for monitoring updates. /cra/monitoring_insights/unsubscribe: post: summary: Unsubscribe from Monitoring Insights tags: - plaid operationId: craMonitoringInsightsUnsubscribe externalDocs: url: /api/products/check/#cramonitoring_insightsunsubscribe requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsUnsubscribeRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsUnsubscribeResponse' examples: example-1: value: request_id: GVzMdiDd8DDAQK4 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights. /cra/monitoring_insights/get: post: summary: Retrieve a Monitoring Insights Report tags: - plaid operationId: craMonitoringInsightsGet externalDocs: url: /api/products/check/#cramonitoring_insightsget requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraMonitoringInsightsGetResponse' examples: example-1: value: user_insights_id: 028e8404-a013-4a45-ac9e-002482f9cafc items: - date_generated: "2023-03-30T18:27:37Z" item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 institution_id: ins_0 institution_name: Plaid Bank status: status_code: AVAILABLE insights: income: income_sources: - income_source_id: f17efbdd-caab-4278-8ece-963511cd3d51 income_description: PLAID_INC_DIRECT_DEP_PPD income_category: SALARY last_transaction_date: "2023-03-30" forecasted_monthly_income: current_amount: 12000 total_monthly_income: current_amount: 20000.31 historical_annual_income: current_amount: 144000 income_sources_counts: current_count: 1 loans: loan_payments_counts: current_count: 1 loan_payment_merchants_counts: current_count: 1 loan_disbursements_count: 1 accounts: - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E attributes: total_inflow_amount: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_30d: amount: -1000 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_60d: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_90d: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount: amount: 2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_30d: amount: 1000 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_60d: amount: 2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_90d: amount: 2500 iso_currency_code: USD unofficial_currency_code: null balances: available: 5000 average_balance: 4956.12 average_monthly_balances: - average_balance: amount: 4956.12 iso_currency_code: USD unofficial_currency_code: null end_date: "2024-07-31" start_date: "2024-07-01" current: 5000 iso_currency_code: USD limit: null most_recent_thirty_day_average_balance: 4956.125 unofficial_currency_code: null consumer_disputes: [] days_available: 365 mask: "1208" metadata: start_date: "2024-01-01" end_date: "2024-07-16" name: Checking official_name: Plaid checking owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: checking transactions: - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 37.07 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: XA7ZLy8rXzt7D3j9B6LMIgv5VxyQkAhbKjzmp unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 51.61 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Domino's original_description: DOMINO's XXXX 111-222-3333 pending: false transaction_id: VEPeMbWqRluPVZLQX4MDUkKRw41Ljzf9gyLBW unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 7.55 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_FURNITURE_AND_HARDWARE primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: Chicago country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: IKEA original_description: IKEA CHICAGO pending: false transaction_id: 6GQZARgvroCAE1eW5wpQT7w3oB6nvzi8DKMBa unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 12.87 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_SPORTING_GOODS primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: Redlands country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Nike original_description: NIKE REDLANDS CA pending: false transaction_id: DkbmlP8BZxibzADqNplKTeL8aZJVQ1c3WR95z unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 44.21 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: RpdN7W8GmRSdjZB9Jm7ATj4M86vdnktapkrgL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 36.82 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_DISCOUNT_STORES primary: GENERAL_MERCHANDISE date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Family Dollar original_description: FAMILY DOLLAR pending: false transaction_id: 5AeQWvo5KLtAD9wNL68PTdAgPE7VNWf5Kye1G unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 13.27 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: Jjlr3MEVg1HlKbdkZj39ij5a7eg9MqtB6MWDo unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 36.03 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: kN9KV7yAZJUMPn93KDXqsG9MrpjlyLUL6Dgl8 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 54.74 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: lPvrweZAMqHDar43vwWKs547kLZVEzfpogGVJ unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 37.5 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: 1627 N 24th St city: Phoenix country: null lat: null lon: null postal_code: "85008" region: AZ state: AZ store_number: null zip: "85008" merchant_name: Taqueria El Guerrerense original_description: TAQUERIA EL GUERRERO PHOENIX AZ pending: false transaction_id: wka74WKqngiyJ3pj7dl5SbpLGQBZqyCPZRDbP unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 41.42 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: BBGnV4RkerHjn8WVavGyiJbQ95VNDaC4M56bJ unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: -1077.93 check_number: null credit_category: detailed: INCOME_OTHER primary: INCOME date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Lyft original_description: LYFT TRANSFER pending: false transaction_id: 3Ej78yKJlQu1Abw7xzo4U4JR6pmwzntZlbKDK unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 47.17 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: rMzaBpJw8jSZRJQBabKdteQBwd5EaWc7J9qem unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 12.37 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: zWPZjkmzynTyel89ZjExS59DV6WAaZflNBJ56 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 44.18 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: K7qzx1nP8ptqgwaRMbxyI86XrqADMluRpkWx5 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 45.37 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Uber Eats original_description: UBER EATS pending: false transaction_id: qZrdzLRAgNHo5peMdD9xIzELl3a1NvcgrPAzL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 15.22 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: NZzx4oRPkAHzyRekpG4PTZkWnBPqEyiy6pB1M unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 26.33 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Domino's original_description: DOMINO's XXXX 111-222-3333 pending: false transaction_id: x84eNArKbESz8Woden6LT3nvyogeJXc64Pp35 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 39.8 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_DISCOUNT_STORES primary: GENERAL_MERCHANDISE date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Family Dollar original_description: FAMILY DOLLAR pending: false transaction_id: dzWnyxwZ4GHlZPGgrNyxiMG7qd5jDgCJEz5jL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 45.06 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: 4W7eE9rZqMToDArbPeLNIREoKpdgBMcJbVNQD unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 34.91 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: j4yqDjb7QwS7woGzqrgDIEG1NaQVZwf6Wmz3D unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 49.78 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: aqgWnze7xoHd6DQwLPnzT5dgPKjB1NfZ5JlBy unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 54.24 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: P13aP8b7nmS3WQoxg1PMsdvMK679RNfo65B4G unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 41.79 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: 7nZMG6pXz8SADylMqzx7TraE4qjJm7udJyAGm unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 33.86 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: MQr3ap7PWEIrQG7bLdaNsxyBV7g1KqCL6pwoy unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 27.08 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: eBAk9dvwNbHPZpr8W69dU3rekJz47Kcr9BRwl unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 25.94 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_FURNITURE_AND_HARDWARE primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: The Home Depot original_description: THE HOME DEPOT pending: false transaction_id: QLx4jEJZb9SxRm7aWbjAio3LrgZ5vPswm64dE unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 27.57 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_OTHER_GENERAL_MERCHANDISE primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: The Press Club pending: false transaction_id: ZnQ1ovqBldSQ6GzRbroAHLdQP68BrKceqmAjX unofficial_currency_code: null type: depository request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint allows you to retrieve a Cash Flow Updates report by passing in the `user_id` referred to in the webhook you received. /credit/audit_copy_token/update: post: tags: - plaid summary: Update an Audit Copy Token externalDocs: url: /none/ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenUpdateResponse' examples: example-1: value: request_id: eYupqX1mZkEuQRx updated: true default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditAuditCopyTokenUpdate description: The `/credit/audit_copy_token/update` endpoint updates an existing Audit Copy Token by adding the report tokens in the `report_tokens` field to the `audit_copy_token`. If the Audit Copy Token already contains a report of a certain type, it will be replaced with the token provided in the `report_tokens` field. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenUpdateRequest' /cra/partner_insights/get: post: summary: Retrieve cash flow insights from the bank accounts used for income verification tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraPartnerInsightsGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: - report_id: ef41dd05-b91e-45a6-9b2c-6c51d552f8f0 generated_time: "2022-01-31T22:47:53Z" items: - institution_id: ins_0 institution_name: Plaid Bank item_id: mxdmo1gw8DIW8AM1yG6JtRxbVeRkN8cL9PmQE accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 mask: "8888" metadata: start_date: "2024-01-01" end_date: "2024-07-16" name: Plaid Checking Account official_name: Plaid Checking Account type: depository subtype: checking owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile prism: insights: version: 3 result: l6m_cumbal_acc: 1 cash_score: version: 3 model_version: "3" score: 900 reason_codes: - CS03038 metadata: max_age: 20 min_age: 1 min_age_credit: 0 min_age_debit: 1 max_age_debit: 20 max_age_credit: 0 num_trxn_credit: 0 num_trxn_debit: 40 l1m_credit_value_cnt: 0 l1m_debit_value_cnt: 40 first_detect: version: 3 model_version: "3" score: 900 reason_codes: - CS03038 metadata: max_age: 20 min_age: 1 min_age_credit: 0 min_age_debit: 1 max_age_debit: 20 max_age_credit: 0 num_trxn_credit: 0 num_trxn_debit: 40 l1m_credit_value_cnt: 0 l1m_debit_value_cnt: 40 status: SUCCESS default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/income/#crapartner_insightsget operationId: craPartnerInsightsGet description: '`/cra/partner_insights/get` returns cash flow insights for a specified user.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraPartnerInsightsGetRequest' /cra/check_report/income_insights/get: post: summary: Retrieve income insights from your user's banks tags: - plaid security: - clientId: [] secret: [] plaidVersion: [] - oauth2: - cra:report:read responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportIncomeInsightsGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: bbfc5174-5433-4648-8d93-9fec6a0c0966 generated_time: "2022-01-31T22:47:53Z" days_requested: 365 user_summary: income_metrics: - current: monthly: gross_income: 390 net_income: 300 annual: gross_income: 4680 net_income: 3600 projected: monthly: gross_income: 300 net_income: 300 annual: gross_income: 3600 net_income: 3600 iso_currency_code: USD unofficial_currency_code: null income_streams: - income_stream_id: f17efbdd-caab-4278-8ece-963511cd3d51 start_date: "2021-11-15" end_date: "2022-01-15" description: PLAID INC DIRECT DEP PPD insights: income_category: primary: EARNED_INCOME secondary: SALARY pay_frequency: MONTHLY income_provider: name: Plaid Inc is_normalized: true next_payment: date: "2022-12-15" status: ACTIVE income_metrics: current: monthly: gross_income: 390 net_income: 300 annual: gross_income: 4680 net_income: 3600 projected: monthly: gross_income: 300 net_income: 300 annual: gross_income: 3600 net_income: 3600 iso_currency_code: USD unofficial_currency_code: null transactions: - transaction_id: aH5klwqG3B19OMT7D6F24Syv8pdnJXmtZoKQ5 item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 amount: 100 date: "2021-11-15" original_description: PLAID_INC_DIRECT_DEP_PPD 123A outlier: is_outlier: false iso_currency_code: USD unofficial_currency_code: null - transaction_id: mN3rQ5iH8BC41T6UjKL9oD2vWJpZqXFomGwY1 item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 amount: 100 date: "2021-12-15" original_description: PLAID_INC_DIRECT_DEP_PPD 123B outlier: is_outlier: false iso_currency_code: USD unofficial_currency_code: null - transaction_id: zK9lDoR8uBH51PNQ3W4T6Mjy2VFXpGtJwsL4 item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 amount: 100 date: "2022-01-31" original_description: PLAID_INC_DIRECT_DEP_PPD 123C outlier: is_outlier: false iso_currency_code: USD unofficial_currency_code: null items: - item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 institution_name: Plaid Bank institution_id: ins_0 last_updated_time: "2022-01-31T22:47:53Z" bank_income_accounts: [] bank_income_sources: [] accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 mask: "8888" metadata: start_date: "2024-01-01" end_date: "2024-07-16" name: Plaid Checking Account official_name: Plaid Checking Account subtype: checking type: depository owners: [] warnings: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: 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 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: required: true content: application/json: schema: $ref: '#/components/schemas/CraCheckReportIncomeInsightsGetRequest' /cra/check_report/base_report/get: post: summary: Retrieve a Base Report tags: - plaid operationId: craCheckReportBaseReportGet security: - clientId: [] secret: [] plaidVersion: [] - oauth2: - cra:report:read externalDocs: url: /api/products/check/#cracheck_reportbase_reportget requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraCheckReportBaseReportGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportBaseReportGetResponse' examples: example-1: value: report: date_generated: "2024-07-16T01:52:42.912331716Z" days_requested: 365 attributes: total_inflow_amount: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_30d: amount: -1000 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_60d: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_inflow_amount_90d: amount: -2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount: amount: 2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_30d: amount: 1000 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_60d: amount: 2500 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount_90d: amount: 2500 iso_currency_code: USD unofficial_currency_code: null items: - accounts: - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_insights: average_days_between_transactions: 0.15 average_inflow_amount: - end_date: "2024-07-31" start_date: "2024-07-01" total_amount: amount: 1077.93 iso_currency_code: USD unofficial_currency_code: null average_inflow_amounts: - end_date: "2024-07-31" start_date: "2024-07-01" total_amount: amount: 1077.93 iso_currency_code: USD unofficial_currency_code: null - end_date: "2024-08-31" start_date: "2024-08-01" total_amount: amount: 1076.93 iso_currency_code: USD unofficial_currency_code: null average_outflow_amount: - end_date: "2024-07-31" start_date: "2024-07-01" total_amount: amount: 34.95 iso_currency_code: USD unofficial_currency_code: null average_outflow_amounts: - end_date: "2024-07-31" start_date: "2024-07-01" total_amount: amount: 34.95 iso_currency_code: USD unofficial_currency_code: null - end_date: "2024-08-31" start_date: "2024-08-01" total_amount: amount: 0 iso_currency_code: USD unofficial_currency_code: null days_available: 365 longest_gap_between_transactions: - days: 1 end_date: "2024-07-31" start_date: "2024-07-01" longest_gaps_between_transactions: - days: 1 end_date: "2024-07-31" start_date: "2024-07-01" - days: 2 end_date: "2024-08-31" start_date: "2024-08-01" most_recent_transaction_date: "2024-07-16" number_of_days_no_transactions: 0 number_of_inflows: - count: 1 end_date: "2024-07-31" start_date: "2024-07-01" number_of_outflows: - count: 27 end_date: "2024-07-31" start_date: "2024-07-01" oldest_transaction_date: "2024-07-12" balances: available: 5000 average_balance: 4956.12 average_monthly_balances: - average_balance: amount: 4956.12 iso_currency_code: USD unofficial_currency_code: null end_date: "2024-07-31" start_date: "2024-07-01" current: 5000 iso_currency_code: USD limit: null most_recent_thirty_day_average_balance: 4956.125 unofficial_currency_code: null consumer_disputes: [] days_available: 365 mask: "1208" metadata: start_date: "2024-01-01" end_date: "2024-07-16" name: Checking official_name: Plaid checking owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: checking transactions: - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 37.07 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: XA7ZLy8rXzt7D3j9B6LMIgv5VxyQkAhbKjzmp unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 51.61 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Domino's original_description: DOMINO's XXXX 111-222-3333 pending: false transaction_id: VEPeMbWqRluPVZLQX4MDUkKRw41Ljzf9gyLBW unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 7.55 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_FURNITURE_AND_HARDWARE primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: Chicago country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: IKEA original_description: IKEA CHICAGO pending: false transaction_id: 6GQZARgvroCAE1eW5wpQT7w3oB6nvzi8DKMBa unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 12.87 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_SPORTING_GOODS primary: GENERAL_MERCHANDISE date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: Redlands country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Nike original_description: NIKE REDLANDS CA pending: false transaction_id: DkbmlP8BZxibzADqNplKTeL8aZJVQ1c3WR95z unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 44.21 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-12" date_posted: "2024-07-12T00:00:00Z" date_transacted: "2024-07-12" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: RpdN7W8GmRSdjZB9Jm7ATj4M86vdnktapkrgL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 36.82 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_DISCOUNT_STORES primary: GENERAL_MERCHANDISE date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Family Dollar original_description: FAMILY DOLLAR pending: false transaction_id: 5AeQWvo5KLtAD9wNL68PTdAgPE7VNWf5Kye1G unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 13.27 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: Jjlr3MEVg1HlKbdkZj39ij5a7eg9MqtB6MWDo unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 36.03 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: kN9KV7yAZJUMPn93KDXqsG9MrpjlyLUL6Dgl8 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 54.74 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: lPvrweZAMqHDar43vwWKs547kLZVEzfpogGVJ unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 37.5 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-13" date_posted: "2024-07-13T00:00:00Z" date_transacted: "2024-07-13" iso_currency_code: USD location: address: 1627 N 24th St city: Phoenix country: null lat: null lon: null postal_code: "85008" region: AZ state: AZ store_number: null zip: "85008" merchant_name: Taqueria El Guerrerense original_description: TAQUERIA EL GUERRERO PHOENIX AZ pending: false transaction_id: wka74WKqngiyJ3pj7dl5SbpLGQBZqyCPZRDbP unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 41.42 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: BBGnV4RkerHjn8WVavGyiJbQ95VNDaC4M56bJ unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: -1077.93 check_number: null credit_category: detailed: INCOME_OTHER primary: INCOME date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Lyft original_description: LYFT TRANSFER pending: false transaction_id: 3Ej78yKJlQu1Abw7xzo4U4JR6pmwzntZlbKDK unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 47.17 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: rMzaBpJw8jSZRJQBabKdteQBwd5EaWc7J9qem unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 12.37 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: zWPZjkmzynTyel89ZjExS59DV6WAaZflNBJ56 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 44.18 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: K7qzx1nP8ptqgwaRMbxyI86XrqADMluRpkWx5 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 45.37 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-14" date_posted: "2024-07-14T00:00:00Z" date_transacted: "2024-07-14" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Uber Eats original_description: UBER EATS pending: false transaction_id: qZrdzLRAgNHo5peMdD9xIzELl3a1NvcgrPAzL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 15.22 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: NZzx4oRPkAHzyRekpG4PTZkWnBPqEyiy6pB1M unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 26.33 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Domino's original_description: DOMINO's XXXX 111-222-3333 pending: false transaction_id: x84eNArKbESz8Woden6LT3nvyogeJXc64Pp35 unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 39.8 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_DISCOUNT_STORES primary: GENERAL_MERCHANDISE date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Family Dollar original_description: FAMILY DOLLAR pending: false transaction_id: dzWnyxwZ4GHlZPGgrNyxiMG7qd5jDgCJEz5jL unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 45.06 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: 4W7eE9rZqMToDArbPeLNIREoKpdgBMcJbVNQD unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 34.91 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Whittier country: null lat: null lon: null postal_code: null region: CA state: CA store_number: null zip: null merchant_name: Smart & Final original_description: POS SMART AND FINAL 111 WHITTIER CA pending: false transaction_id: j4yqDjb7QwS7woGzqrgDIEG1NaQVZwf6Wmz3D unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 49.78 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: aqgWnze7xoHd6DQwLPnzT5dgPKjB1NfZ5JlBy unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 54.24 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-15" date_posted: "2024-07-15T00:00:00Z" date_transacted: "2024-07-15" iso_currency_code: USD location: address: null city: Portland country: null lat: null lon: null postal_code: null region: OR state: OR store_number: "1111" zip: null merchant_name: Safeway original_description: 'SAFEWAY #1111 PORTLAND OR 111111' pending: false transaction_id: P13aP8b7nmS3WQoxg1PMsdvMK679RNfo65B4G unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 41.79 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_ONLINE_MARKETPLACES primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Amazon original_description: AMZN Mktp US*11111111 Amzn.com/bill WA AM pending: false transaction_id: 7nZMG6pXz8SADylMqzx7TraE4qjJm7udJyAGm unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 33.86 check_number: null credit_category: detailed: FOOD_RETAIL_GROCERIES primary: FOOD_RETAIL date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: Instacart original_description: INSTACART HTTPSINSTACAR CA pending: false transaction_id: MQr3ap7PWEIrQG7bLdaNsxyBV7g1KqCL6pwoy unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 27.08 check_number: null credit_category: detailed: DINING_DINING primary: DINING date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: POKE BROS * POKE BRO IL pending: false transaction_id: eBAk9dvwNbHPZpr8W69dU3rekJz47Kcr9BRwl unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 25.94 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_FURNITURE_AND_HARDWARE primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: The Home Depot original_description: THE HOME DEPOT pending: false transaction_id: QLx4jEJZb9SxRm7aWbjAio3LrgZ5vPswm64dE unofficial_currency_code: null - account_id: NZzx4oRPkAHzyRekpG4PTZkoGpNAR4uypaj1E account_owner: null amount: 27.57 check_number: null credit_category: detailed: GENERAL_MERCHANDISE_OTHER_GENERAL_MERCHANDISE primary: GENERAL_MERCHANDISE date: "2024-07-16" date_posted: "2024-07-16T00:00:00Z" date_transacted: "2024-07-16" iso_currency_code: USD location: address: null city: null country: null lat: null lon: null postal_code: null region: null state: null store_number: null zip: null merchant_name: null original_description: The Press Club pending: false transaction_id: ZnQ1ovqBldSQ6GzRbroAHLdQP68BrKceqmAjX unofficial_currency_code: null type: depository date_last_updated: "2024-07-16T01:52:42.912331716Z" institution_id: ins_109512 institution_name: Houndstooth Bank item_id: NZzx4oRPkAHzyRekpG4PTZkDNkQW93tWnyGeA report_id: f3bb434f-1c9b-4ef2-b76c-3d1fd08156ec warnings: [] request_id: FibfL8t3s71KJnj default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint allows you to retrieve the Base Report for your user, allowing you to receive comprehensive bank account and cash flow data. 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`. /cra/check_report/pdf/get: post: summary: Retrieve a Consumer Report as a PDF tags: - plaid responses: "200": description: OK content: application/pdf: schema: $ref: '#/components/schemas/CraCheckReportPDFGetResponse' examples: example-1: value: JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O... default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/check/#cracheck_reportpdfget operationId: craCheckReportPdfGet description: '`/cra/check_report/pdf/get` retrieves the most recent Consumer Report in PDF format. By default, the most recent Base Report (if it exists) for the user will be returned. To request that the most recent Partner Insights or Income Insights report be included in the PDF as well, use the `add-ons` field.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraCheckReportPDFGetRequest' /cra/check_report/create: post: summary: Refresh or create a Consumer Report tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportCreateResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/check/#cracheck_reportcreate operationId: craCheckReportCreate description: Use `/cra/check_report/create` to refresh data in an existing report. A Consumer Report will last for 24 hours before expiring; you should call any `/get` endpoints on the report before it expires. If a report expires, you can call `/cra/check_report/create` again to re-generate it and refresh the data in the report. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraCheckReportCreateRequest' /cra/check_report/partner_insights/get: post: summary: Retrieve cash flow insights from partners tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportPartnerInsightsGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D client_report_id: client_report_id_1221 generated_time: "2022-01-31T22:47:53Z" items: - institution_id: ins_109508 institution_name: Plaid Bank item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 mask: "8888" metadata: start_date: "2022-01-01" end_date: "2022-01-31" name: Plaid Checking Account official_name: Plaid Checking Account type: depository subtype: checking owners: [] prism: insights: version: 3 result: l6m_cumbal_acc: 1 cash_score: version: 3 model_version: "3" score: 900 reason_codes: - CS03038 metadata: max_age: 20 min_age: 1 min_age_credit: 0 min_age_debit: 1 max_age_debit: 20 max_age_credit: 0 num_trxn_credit: 0 num_trxn_debit: 40 l1m_credit_value_cnt: 0 l1m_debit_value_cnt: 40 first_detect: version: 3 model_version: "3" score: 900 reason_codes: - CS03038 metadata: max_age: 20 min_age: 1 min_age_credit: 0 min_age_debit: 1 max_age_debit: 20 max_age_credit: 0 num_trxn_credit: 0 num_trxn_debit: 40 l1m_credit_value_cnt: 0 l1m_debit_value_cnt: 40 status: SUCCESS default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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 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: application/json: schema: $ref: '#/components/schemas/CraCheckReportPartnerInsightsGetRequest' /cra/check_report/cashflow_insights/get: post: 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 content: application/json: schema: $ref: '#/components/schemas/CraCheckReportCashflowInsightsGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D generated_time: "2022-01-31T22:47:53Z" attributes: cash_reliance_atm_withdrawal_amt_cv_90d: 180.1 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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 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: application/json: schema: $ref: '#/components/schemas/CraCheckReportCashflowInsightsGetRequest' /cra/check_report/lend_score/get: post: summary: Retrieve the LendScore from your user's banking data tags: - plaid security: - clientId: [] secret: [] plaidVersion: [] - oauth2: - cra:report:read responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportLendScoreGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D generated_time: "2022-01-31T22:47:53Z" lend_score: score: 80 reason_codes: - PCS0221 - PCS0223 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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 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: application/json: schema: $ref: '#/components/schemas/CraCheckReportLendScoreGetRequest' /cra/check_report/network_insights/get: post: summary: Retrieve network attributes for the user tags: - plaid security: - clientId: [] secret: [] plaidVersion: [] - oauth2: - cra:report:read responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportNetworkInsightsGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: ee093cb0-e3f2-42d1-9dbc-8d8408964194 generated_time: "2022-01-31T22:47:53Z" network_attributes: plaid_conn_user_lifetime_lending_count: 5 plaid_conn_user_lifetime_personal_lending_flag: 1 plaid_conn_user_lifetime_cash_advance_primary_count: 0 items: - institution_id: ins_0 institution_name: Plaid Bank item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/check/#cracheck_reportnetwork_insightsget operationId: craCheckReportNetworkInsightsGet 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: application/json: schema: $ref: '#/components/schemas/CraCheckReportNetworkInsightsGetRequest' /cra/check_report/verification/get: post: summary: Retrieve various home lending reports for a user tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCheckReportVerificationGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm report: report_id: 028e8404-a013-4a45-ac9e-002482f9cafc client_report_id: client_report_id_1221 voa: generated_time: "2023-03-30T18:27:37Z" days_requested: 90 attributes: total_inflow_amount: amount: -345.12 iso_currency_code: USD unofficial_currency_code: null total_outflow_amount: amount: 235.12 iso_currency_code: USD unofficial_currency_code: null items: - accounts: - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v balances: available: 100 current: 110 iso_currency_code: USD unofficial_currency_code: null historical_balances: - current: 110 date: "2023-03-29" iso_currency_code: USD unofficial_currency_code: null - current: 125.55 date: "2023-03-28" iso_currency_code: USD unofficial_currency_code: null - current: 80.13 date: "2023-03-27" iso_currency_code: USD unofficial_currency_code: null - current: 246.11 date: "2023-03-26" iso_currency_code: USD unofficial_currency_code: null - current: 182.71 date: "2023-03-25" iso_currency_code: USD unofficial_currency_code: null average_balance_30_days: 200 average_balance_60_days: 150 nsf_overdraft_transactions_count: 0 consumer_disputes: [] mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking type: depository subtype: checking days_available: 90 transactions_insights: all_transactions: - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 89.4 date: "2023-03-27" iso_currency_code: USD original_description: SparkFun pending: false transaction_id: 4zBRq1Qem4uAPnoyKjJNTRQpQddM4ztlo1PLD unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 12 date: "2023-03-28" iso_currency_code: USD original_description: 'McDonalds #3322' pending: false transaction_id: dkjL41PnbKsPral79jpxhMWdW55gkPfBkWpRL unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 4.33 date: "2023-03-28" iso_currency_code: USD original_description: Starbucks pending: false transaction_id: a84ZxQaWDAtDL3dRgmazT57K7jjN3WFkNWMDy unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: -500 date: "2023-03-29" iso_currency_code: USD original_description: United Airlines **** REFUND **** pending: false transaction_id: xG9jbv3eMoFWepzB7wQLT3LoLggX5Duy1Gbe5 unofficial_currency_code: null end_date: "2024-07-31" start_date: "2024-07-01" owners: - addresses: - data: city: Malakoff country: US region: NY street: 2992 Cameron Road postal_code: "14236" primary: true - data: city: San Matias country: US region: CA street: 2493 Leisure Lane postal_code: 93405-2255 primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null institution_name: First Platypus Bank institution_id: ins_109508 item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 last_update_time: "2023-03-30T18:25:26Z" employment_refresh: generated_time: "2023-03-30T18:27:37Z" days_requested: 60 items: - accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 name: Plaid Money Market official_name: Plaid Platinum Standard 1.85% Interest Money Market type: depository subtype: money market transactions: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 original_description: ACH Electronic CreditGUSTO PAY 123456 date: "2023-03-30" pending: false transaction_id: gGQgjoeyqBF89PND6K14Sow1wddZBmtLomJ78 - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking type: depository subtype: checking transactions: - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v original_description: United Airlines **** REFUND **** date: "2023-03-29" pending: false transaction_id: xG9jbv3eMoFWepzB7wQLT3LoLggX5Duy1Gbe5 institution_name: First Platypus Bank institution_id: ins_109508 item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 last_update_time: "2023-03-30T18:25:26Z" warnings: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/check/#cracheck_reportverificationget operationId: craCheckReportVerificationGet description: |- This endpoint allows you to retrieve home lending reports for a user. To obtain a VoA or Employment Refresh report, you need to make sure that `cra_base_report` is included in the `products` parameter when calling `/link/token/create` or `/cra/check_report/create`. 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: application/json: schema: $ref: '#/components/schemas/CraCheckReportVerificationGetRequest' /cra/check_report/verification/pdf/get: post: summary: Retrieve a Consumer Report as a Verification PDF tags: - plaid responses: "200": description: OK content: application/pdf: schema: $ref: '#/components/schemas/CraCheckReportVerificationPdfGetResponse' examples: example-1: value: JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O... default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: 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 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: required: true content: application/json: schema: $ref: '#/components/schemas/CraCheckReportVerificationPdfGetRequest' /cra/loans/applications/register: post: tags: - plaid summary: Register loan applications and decisions responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraLoansApplicationsRegisterResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: craLoansApplicationsRegister externalDocs: url: /none/ description: '`/cra/loans/applications/register` registers loan applications and decisions.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraLoansApplicationsRegisterRequest' /cra/loans/register: post: tags: - plaid summary: Register a list of loans to their applicants responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraLoansRegisterResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: craLoansRegister externalDocs: url: /none/ description: '`/cra/loans/register` registers a list of loans to their applicants.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CRALoansRegisterRequest' /cra/loans/update: post: tags: - plaid summary: Update loan data responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraLoansUpdateResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: craLoansUpdate externalDocs: url: /none/ description: '`/cra/loans/update` updates loan information such as the status and payment history.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraLoansUpdateRequest' /cra/loans/unregister: post: tags: - plaid summary: Unregister a list of loans responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraLoanUnregisterResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: craLoansUnregister externalDocs: url: /none/ description: '`/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.' requestBody: required: true content: 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 tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CraCreditProfileReportGetResponse' examples: example-1: value: request_id: eYupqX1mZkEuQRx user_id: usr_123456abcdef warnings: [] report: date_retrieved: "2024-01-15T10:30:00Z" inquiry_type: SOFT_INQUIRY client_report_id: loan-app-12345 lend_scores: [] cashflow_insights_attributes: {} network_insights_attributes: {} metadata: null default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: craCreditProfileReportGet externalDocs: url: /none/ description: '`/cra/credit_profile/report/get` retrieves a credit profile report for a user.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CraCreditProfileReportGetRequest' /consumer_report/pdf/get: post: tags: - plaid summary: Retrieve PDF Reports responses: "200": description: OK content: application/pdf: schema: $ref: '#/components/schemas/ConsumerReportPDFGetResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: consumerReportPdfGet externalDocs: url: /none/ description: |- Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format. Response is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConsumerReportPDFGetRequest' description: "" /oauth/token: post: tags: - plaid summary: Create or refresh an OAuth access token externalDocs: url: /api/oauth/#oauthtoken operationId: oauthToken description: '`/oauth/token` issues an access token and refresh token depending on the `grant_type` provided. This endpoint supports `Content-Type: application/x-www-form-urlencoded` as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthTokenRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/OAuthTokenResponse' examples: example-1: value: access_token: pda-RDdg0TUCB0FB25_UPIlnhA== refresh_token: pdr--viXurkDg88d5zf8m6Wl0g== expires_in: 900 token_type: Bearer request_id: m8MDqcS6F3lzqvP default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/OAuthErrorResponse' /oauth/introspect: post: tags: - plaid summary: Get metadata about an OAuth token externalDocs: url: /api/oauth/#oauthintrospect operationId: oauthIntrospect description: |- `/oauth/introspect` returns metadata about an access token or refresh token. Note: This endpoint supports `Content-Type: application/x-www-form-urlencoded` as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthIntrospectRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/OAuthIntrospectResponse' examples: example-1: value: active: true scope: user:read user:write exchange client_id: 68028ce48d2b0dec68747f6c exp: 1670000000 iat: 1670000000 sub: 68028ce48d2b0dec68747f6c aud: https://production.plaid.com iss: https://production.plaid.com token_type: Bearer request_id: m8MDqcS6F3lzqvP default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/OAuthErrorResponse' /oauth/revoke: post: tags: - plaid summary: Revoke an OAuth token externalDocs: url: /api/oauth/#oauthrevoke operationId: oauthRevoke description: |- `/oauth/revoke` revokes an access or refresh token, preventing any further use. If a refresh token is revoked, all access and refresh tokens derived from it are also revoked, including exchanged tokens. Note: This endpoint supports `Content-Type: application/x-www-form-urlencoded` as well as JSON. The fields for the form are equivalent to the fields for JSON and conform to the OAuth 2.0 specification. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OAuthRevokeRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/OAuthRevokeResponse' examples: example-1: value: request_id: m8MDqcS6F3lzqvP default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/OAuthErrorResponse' /statements/list: post: tags: - plaid summary: Retrieve a list of all statements associated with an Item. externalDocs: url: /api/products/statements#statementslist responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/StatementsListResponse' examples: example-1: value: item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 institution_id: ins_56 institution_name: Chase accounts: - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr account_mask: "0000" account_name: Plaid Saving account_official_name: Plaid Silver Standard 0.1% Interest Saving account_subtype: savings account_type: depository statements: - statement_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D month: 5 year: 2023 date_posted: "2023-05-01" request_id: eYupqX1mZkEuQRx default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: statementsList description: The `/statements/list` endpoint retrieves a list of all statements associated with an Item. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StatementsListRequest' description: "" /statements/download: post: tags: - plaid summary: Retrieve a single statement. externalDocs: url: /api/products/statements#statementsdownload responses: "200": description: OK content: application/pdf: schema: $ref: '#/components/schemas/StatementsDownloadResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: statementsDownload description: The `/statements/download` endpoint retrieves a single statement PDF in binary format. The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StatementsDownloadRequest' description: "" /statements/refresh: post: tags: - plaid externalDocs: url: /api/products/statements#statementsrefresh summary: Refresh statements data. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/StatementsRefreshResponse' examples: example-1: value: request_id: eYupqX1mZkEuQRx default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: statementsRefresh description: '`/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StatementsRefreshRequest' description: "" /consent/events/get: post: tags: - plaid summary: List a historical log of item consent events externalDocs: url: /api/consent/#consenteventsget operationId: consentEventsGet description: List a historical log of Item consent events. Consent logs are only available for events occurring on or after November 7, 2024. Extremely recent events (occurring within the past 12 hours) may not be available via this endpoint. Up to three years of consent logs will be available via the endpoint. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ConsentEventsGetResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV consent_events: - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr event_type: CONSENT_GRANTED event_code: USER_AGREEMENT institution_id: ins_123456 institution_name: Platypus bank initiator: END_USER created_at: "2019-02-15T15:51:39Z" consented_use_cases: [] consented_data_scopes: [] consented_accounts: [] - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr event_type: CONSENT_GRANTED event_code: USE_CASES institution_id: ins_123456 institution_name: Platypus bank initiator: END_USER created_at: "2019-02-15T15:52:39Z" consented_use_cases: - Send and receive money - Track and manage your finances consented_data_scopes: [] consented_accounts: [] - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr event_type: CONSENT_GRANTED event_code: DATA_SCOPES institution_id: ins_123456 institution_name: Platypus bank initiator: END_USER created_at: "2019-02-15T15:52:39Z" consented_use_cases: [] consented_data_scopes: - account_balance_info - contact_info - account_routing_number consented_accounts: [] - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr event_type: CONSENT_GRANTED event_code: ACCOUNT_SCOPES institution_id: ins_123456 institution_name: Platypus bank initiator: END_USER created_at: "2019-02-15T15:53:39Z" consented_use_cases: [] consented_data_scopes: [] consented_accounts: - account_id: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking type: depository subtype: checking - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr event_type: CONSENT_REVOKED event_code: REVOCATION institution_id: ins_123456 institution_name: Platypus bank initiator: END_USER created_at: "2020-02-20T15:53:39Z" consented_use_cases: [] consented_data_scopes: [] consented_accounts: [] default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConsentEventsGetRequest' /item/activity/list: post: tags: - plaid summary: List a historical log of user consent events operationId: itemActivityList description: List a historical log of user consent events responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemActivityListResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV activities: [] last_data_access_times: [] default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemActivityListRequest' /item/application/list: post: tags: - plaid summary: List a user's connected applications operationId: itemApplicationList description: List a user's connected applications responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemApplicationListResponse' default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemApplicationListRequest' /item/application/unlink: post: tags: - plaid summary: Unlink a user's connected application externalDocs: url: none operationId: itemApplicationUnlink description: |- Unlink a user's connected application. On an unlink request, Plaid will immediately revoke the Application's access to the User's data. The User will have to redo the OAuth authentication process in order to restore functionality. This endpoint only removes ongoing data access permissions, therefore the User will need to reach out to the Application itself in order to disable and delete their account and delete any data that the Application already received (if the Application does not do so by default). This endpoint should be called in real time as the User is unlinking an Application, and should not be batched in order to ensure that the change is reflected as soon as possible. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemApplicationUnlinkResponse' 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/ItemApplicationUnlinkRequest' /item/application/scopes/update: post: tags: - plaid summary: Update the scopes of access for a particular application operationId: itemApplicationScopesUpdate description: Enable consumers to update product access on selected accounts for an application. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ItemApplicationScopesUpdateResponse' default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemApplicationScopesUpdateRequest' /application/get: post: tags: - plaid summary: Retrieve information about a Plaid application operationId: applicationGet description: Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ApplicationGetResponse' default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicationGetRequest' description: "" /item/get: post: tags: - plaid summary: Retrieve an Item externalDocs: url: /api/items/#itemget operationId: itemGet description: Returns information about the status of an Item. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ItemGetResponse' examples: example-1: value: item: created_at: "2019-01-22T04:32:00Z" available_products: - balance - auth billed_products: - identity - transactions products: - identity - transactions error: null institution_id: ins_109508 institution_name: First Platypus Bank item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr update_type: background webhook: https://plaid.com/example/hook auth_method: null consented_products: - identity - transactions consented_data_scopes: - account_balance_info - contact_info - transactions consented_use_cases: - Verify your account - Track and manage your finances consent_expiration_time: "2024-03-16T15:53:00Z" status: transactions: last_successful_update: "2019-02-15T15:52:39Z" last_failed_update: "2019-01-22T04:32:00Z" last_webhook: sent_at: "2019-02-15T15:53:00Z" code_sent: DEFAULT_UPDATE 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/ItemGetRequest' description: "" /user_account/session/get: post: tags: - plaid summary: Retrieve User Account externalDocs: url: /api/products/layer/#user_accountsessionget operationId: userAccountSessionGet description: This endpoint returns user permissioned account data, including identity and Item access tokens, for use with [Plaid Layer](https://plaid.com/docs/layer). Note that end users are permitted to edit the prefilled identity data in the Link flow before sharing it with you; you should treat any identity data returned by this endpoint as user-submitted, unverified data. For a verification layer, you can add [Identity Verification](https://plaid.com/docs/identity-verification/) to your flow, or check the submitted identity data against bank account data from linked accounts using [Identity Match](https://plaid.com/docs/identity/#identity-match). responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/UserAccountSessionGetResponse' examples: example-1: value: identity: name: first_name: Leslie last_name: Knope address: street: 123 Main St. street2: "" city: Pawnee region: IN postal_code: "41006" country: US email: leslie@knope.com phone_number: "+14157452130" date_of_birth: "1975-01-18" ssn: "987654321" ssn_last_4: "4321" identity_edit_history: name: edits_current: 0 edits_1d: 0 edits_30d: 1 edits_365d: 1 edits_all_time: 1 address: edits_current: 1 edits_1d: 1 edits_30d: 2 edits_365d: 2 edits_all_time: 2 email: edits_current: 0 edits_1d: 0 edits_30d: 0 edits_365d: 0 edits_all_time: 0 date_of_birth: edits_current: 0 edits_1d: 0 edits_30d: 0 edits_365d: 0 edits_all_time: 0 official_document: ssn: edits_current: 0 edits_1d: 0 edits_30d: 0 edits_365d: 0 edits_all_time: 0 items: - item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr access_token: access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0 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/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: tags: - plaid summary: Check a user's Plaid Network status 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. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ProfileNetworkStatusGetResponse' examples: example-1: value: network_status: RETURNING_USER 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/ProfileNetworkStatusGetRequest' description: "" /network/status/get: post: tags: - plaid summary: Check a user's Plaid Network status externalDocs: url: /api/network/#networkstatusget operationId: networkStatusGet description: |- The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user. This is useful for determining if a user is eligible for a streamlined experience, such as Layer. To access this endpoint, contact your Plaid account manager. Note: it is strongly recommended to check for Layer eligibility in the frontend. `/network/status/get` should only be used for checking Layer eligibility if a frontend check is not possible for your use case. For instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview). responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/NetworkStatusGetResponse' examples: example-1: value: network_status: RETURNING_USER 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/NetworkStatusGetRequest' description: "" /auth/get: post: tags: - plaid summary: Retrieve auth data externalDocs: url: /api/products/auth/#authget operationId: authGet description: |- The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item's checking, savings, and cash management accounts, along with high-level account data and balances when available. Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22). responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/AuthGetResponse' examples: example-1: value: accounts: - account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D balances: available: 100 current: 110 limit: null iso_currency_code: USD unofficial_currency_code: null mask: "9606" name: Plaid Checking official_name: Plaid Gold Checking subtype: checking type: depository numbers: ach: - account: "9900009606" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D routing: "011401533" wire_routing: "021000021" is_tokenized_account_number: false eft: - account: "111122223333" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D institution: "021" branch: "01140" international: - account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D bic: NWBKGB21 iban: GB29NWBK60161331926819 bacs: - account: "31926819" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D sort_code: "601613" item: available_products: - balance - identity - payment_initiation - transactions billed_products: - assets - auth consent_expiration_time: null error: null institution_id: ins_117650 institution_name: Royal Bank of Plaid item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: m8MDnv9okwxFNBV default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Default error requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthGetRequest' examples: {} description: "" /auth/verify: post: tags: - plaid summary: Verify auth data externalDocs: url: /api/products/auth/#authverify operationId: authVerify description: |- The `/auth/verify` endpoint verifies bank account and routing numbers and (optionally) account owner names against Plaid's database via [Database Auth](https://plaid.com/docs/auth/coverage/database-auth/). It can be used to verify account numbers that were not collected via the Plaid Link flow. This endpoint is currently in Early Availability; contact sales or your Plaid account manager to request access. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/AuthVerifyResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 verification_status: database_insights_pass verification_insights: name_match_score: 85 network_status: has_numbers_match: true is_numbers_match_verified: true previous_returns: has_previous_administrative_return: false account_number_format: valid default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Default error requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthVerifyRequest' examples: {} description: "" /transactions/get: post: tags: - plaid summary: Get transaction data externalDocs: url: /api/products/transactions/#transactionsget operationId: transactionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsGetResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 transactions: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place item: available_products: - balance - identity - investments billed_products: - assets - auth - liabilities - transactions consent_expiration_time: null error: null 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: 2 request_id: 45QSn default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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` 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. 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 content: application/json: schema: $ref: '#/components/schemas/TransactionsGetRequest' examples: {} /transactions/refresh: post: tags: - plaid summary: Refresh transaction data externalDocs: url: /api/products/transactions/#transactionsrefresh operationId: transactionsRefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsRefreshResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- `/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item. The on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled Item. The Item must already have Transactions added as a product in order to call `/transactions/refresh`. If changes to transactions are discovered after calling `/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 `/transactions/sync` and `/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 `/transactions/get` or `/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. 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. `/transactions/refresh` is offered as an optional add-on to Transactions and has a separate [fee model](https://plaid.com/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsRefreshRequest' /sandbox/transactions/create: post: tags: - plaid summary: Create sandbox transactions externalDocs: url: /api/sandbox/#sandboxtransactionscreate operationId: sandboxTransactionsCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransactionsCreateResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV "400": description: Invalid request content: application/json: schema: $ref: '#/components/schemas/PlaidError' examples: too_many_transactions: value: error_type: INVALID_REQUEST error_code: INVALID_FIELD error_message: The request contains too many transactions. display_message: The request contains too many transactions. status: 400 request_id: m8MDnv9okwxFNBV invalid_dates: value: error_type: INVALID_REQUEST error_code: INVALID_FIELD error_message: Transaction and posted dates must be within the last 14 days. The posted date cannot be before the transaction date. display_message: Transaction and posted dates must be within the last 14 days. The posted date cannot be before the transaction date. status: 400 request_id: m8MDnv9okwxFNBV default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- Use the `/sandbox/transactions/create` endpoint to create new transactions for an existing Item. This endpoint can be used to add up to 10 transactions to any Item at a time. This endpoint can only be used with Items that were created in the Sandbox environment using the `user_transactions_dynamic` test user. You can use this to add transactions to test the `/transactions/get` and `/transactions/sync` endpoints. Custom transactions are only applied to the depository account. Support for per-account targeting may be added in the future. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransactionsCreateRequest' /cashflow_report/refresh: x-hidden-from-docs: true post: tags: - plaid summary: Refresh transaction data in `cashflow_report` externalDocs: url: /api/products/transactions/#cashflowReportRefresh operationId: cashflowReportRefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CashflowReportRefreshResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- `/cashflow_report/refresh` is an endpoint that initiates an on-demand extraction to fetch the newest transactions for an Item (given an `item_id`). The Item must already have Cashflow Report added as a product in order to call `/cashflow_report/refresh`. After calling `/cashflow_report/refresh`, Plaid will fire a webhook `CASHFLOW_REPORT_READY` alerting clients that new transactions data can then be ingested via `/cashflow_report/get` or the webhook will contain an error code informing there was an error in refreshing transactions data. Note that the `/cashflow_report/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 up to 30 seconds or more). If you encounter errors, you may find it necessary to adjust your timeout period for requests. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CashflowReportRefreshRequest' /cashflow_report/get: x-hidden-from-docs: true post: tags: - plaid summary: Gets transaction data in `cashflow_report` externalDocs: url: /api/products/transactions/#cashflowReportGet operationId: cashflowReportGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CashflowReportGetResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "3125550123" primary: false type: work - data: "4155550123" primary: false type: mobile transactions: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place total_transactions: 2 item: available_products: - balance - identity - investments billed_products: - assets - auth - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH next_cursor: eu4rIDi328130dKJEoqieej has_more: true request_id: 45QSn last_successful_update_time: "2025-07-02T00:00:00Z" default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/cashflow_report/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions. 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: required: true content: application/json: schema: $ref: '#/components/schemas/CashflowReportGetRequest' examples: {} /cashflow_report/transactions/get: x-hidden-from-docs: true post: tags: - plaid summary: Gets transaction data in `cashflow_report` externalDocs: url: /api/products/transactions/#cashflowReportTransactionsGet operationId: cashflowReportTransactionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CashflowReportTransactionsGetResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "1112224444" primary: false type: work - data: "1112225555" primary: false type: mobile transactions: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place total_transactions: 2 item: available_products: - balance - identity - investments billed_products: - assets - auth - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH next_cursor: eu4rIDi328130dKJEoqieej has_more: true request_id: 45QSn default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/cashflow_report/transactions/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions. 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: required: true content: application/json: schema: $ref: '#/components/schemas/CashflowReportTransactionsGetRequest' examples: {} /cashflow_report/insights/get: post: tags: - plaid summary: Gets insights data in Cashflow Report externalDocs: url: /api/products/transactions/#cashflowReportInsightsGet operationId: cashflowReportInsightsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CashflowReportInsightsGetResponse' examples: example-1: value: item: available_products: - balance - identity - investments billed_products: - assets - auth - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "1112224444" primary: false type: work - data: "1112225555" primary: false type: mobile account_insights: historical_balances: - amount: 48050 date: "2023-06-04" iso_currency_code: USD unofficial_currency_code: null - amount: 49050 date: "2023-06-03" iso_currency_code: USD unofficial_currency_code: null - amount: 37050 date: "2023-06-02" iso_currency_code: USD unofficial_currency_code: null - amount: 35050 date: "2023-06-01" iso_currency_code: USD unofficial_currency_code: null monthly_summaries: - start_date: "2023-06-01" end_date: "2023-06-30" starting_balance: null ending_balance: null average_daily_ending_balance: amount: 42300 iso_currency_code: USD unofficial_currency_code: null average_daily_inflow_amount: amount: 3050 iso_currency_code: USD unofficial_currency_code: null average_daily_outflow_amount: amount: 250 iso_currency_code: USD unofficial_currency_code: null average_daily_net_cashflow_amount: amount: 2800 iso_currency_code: USD unofficial_currency_code: null average_daily_inflow_transaction_count: 6 average_daily_outflow_transaction_count: 2 total_revenue: amount: 16200 iso_currency_code: USD unofficial_currency_code: null total_loan_payment: amount: 1000 iso_currency_code: USD unofficial_currency_code: null total_variable_expense: amount: 250 iso_currency_code: USD unofficial_currency_code: null total_payroll: amount: 200 iso_currency_code: USD unofficial_currency_code: null nsf_transaction_count: 0 overdraft_transaction_count: 1 negative_ending_balance_day_count: 0 request_id: 45QSn last_generated_time: "2023-06-04T10:34:50Z" default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: The `/cashflow_report/insights/get` endpoint retrieves insights data associated with an Item. Insights are only calculated on credit and depository accounts. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CashflowReportInsightsGetRequest' examples: {} /transactions/recurring/get: post: tags: - plaid summary: Fetch recurring transaction streams externalDocs: url: /api/products/transactions/#transactionsrecurringget operationId: transactionsRecurringGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsRecurringGetResponse' examples: example-1: value: updated_datetime: "2022-05-01T00:00:00Z" inflow_streams: - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje stream_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc category: null category_id: null description: Platypus Payroll merchant_name: null personal_finance_category: primary: INCOME detailed: INCOME_WAGES confidence_level: UNKNOWN first_date: "2022-02-28" last_date: "2022-04-30" predicted_next_date: "2022-05-15" frequency: SEMI_MONTHLY transaction_ids: - nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw - EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL - ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd - QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK - uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF average_amount: amount: -800 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: -1000 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false outflow_streams: - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff stream_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd category: null category_id: null description: ConEd Bill Payment merchant_name: ConEd personal_finance_category: primary: RENT_AND_UTILITIES detailed: RENT_AND_UTILITIES_GAS_AND_ELECTRICITY confidence_level: UNKNOWN first_date: "2022-02-04" last_date: "2022-05-02" predicted_next_date: "2022-06-02" frequency: MONTHLY transaction_ids: - yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 - HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR - jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L - CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l average_amount: amount: 85 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 100 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff stream_id: SrBNJZDuUMweodmPmSOeOImwsWt53ZXfJQAfC category: null category_id: null description: Costco Annual Membership merchant_name: Costco personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: UNKNOWN first_date: "2022-01-23" last_date: "2023-01-22" predicted_next_date: "2024-01-22" frequency: ANNUALLY transaction_ids: - yqEBJ72cS4jFwcpxJcDuQr94oAQ1R1lMC33D4 - Kz5Hm3cZCgpn4tMEKUGAGD6kAcxMBsEZDSwJJ average_amount: amount: 120 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 120 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false request_id: tbFyCEqkU775ZGG default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user's checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. This endpoint can only be called on an Item that has already been initialized with Transactions (either during Link, by specifying it in `/link/token/create`; or after Link, by calling `/transactions/get` or `/transactions/sync`). 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 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: application/json: schema: $ref: '#/components/schemas/TransactionsRecurringGetRequest' examples: {} /transactions/recurring/deactivate: {} /transactions/sync: post: tags: - plaid summary: Get incremental transaction updates on an Item externalDocs: url: /api/products/transactions/#transactionssync operationId: transactionsSync responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsSyncResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 added: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place modified: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital removed: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp transaction_id: CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l next_cursor: tVUUL15lYQN5rBnfDIc1I8xudpGdIlw9nsgeXWvhOfkECvUeR663i3Dt1uf/94S8ASkitgLcIiOSqNwzzp+bh89kirazha5vuZHBb2ZA5NtCDkkV has_more: false request_id: Wvhy9PZHQLV8njG transactions_update_status: HISTORICAL_UPDATE_COMPLETE default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen. 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` 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. If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/transactions/sync` was called within a few seconds of Item creation, `/transactions/sync` will return empty transactions arrays. Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, 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, use the `/transactions/refresh` endpoint. To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsSyncRequest' examples: {} /transactions/enrich: post: tags: - plaid summary: Enrich locally-held transaction data externalDocs: url: /api/products/enrich/#transactionsenrich operationId: transactionsEnrich responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsEnrichResponse' examples: example-1: value: enriched_transactions: - id: 6135818adda16500147e7c1d description: 'PURCHASE WM SUPERCENTER #1700' amount: 72.1 direction: OUTFLOW iso_currency_code: USD enrichments: counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH phone_number: "+18009256278" entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US store_number: "1700" lat: 32.959068 lon: -117.037666 logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png merchant_name: Walmart payment_channel: in store personal_finance_category: detailed: GENERAL_MERCHANDISE_SUPERSTORES primary: GENERAL_MERCHANDISE confidence_level: VERY_HIGH phone_number: "+18009256278" personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png website: walmart.com - id: 3958434bhde9384bcmeo3401 description: DD DOORDASH BURGERKIN 855-123-4567 CA amount: 28.34 direction: OUTFLOW iso_currency_code: USD enrichments: counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: VERY_HIGH phone_number: "+18001234567" - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH phone_number: null location: address: null city: null region: null postal_code: null country: null store_number: null lat: null lon: null entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png merchant_name: Burger King payment_channel: online personal_finance_category: detailed: FOOD_AND_DRINK_FAST_FOOD primary: FOOD_AND_DRINK confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png phone_number: null website: burgerking.com request_id: Wvhy9PZHQLV8njG default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsEnrichRequest' /user/transactions/refresh: post: tags: - plaid summary: Refresh user items for Transactions bundle externalDocs: url: /api/products/transactions/#usertransactionsrefresh operationId: userTransactionsRefresh description: |- `/user/transactions/refresh` is an optional endpoint that initiates an on-demand extraction to fetch the newest transactions for a User using the Transactions bundle. This bundle refreshes only the Transactions product data. This endpoint is for clients who use the Transactions 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/transactions/refresh` to target all Items for a user instead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserTransactionsRefreshRequest' examples: example-1: value: user_id: usr_8c3ZbDBYjaqUXZ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserTransactionsRefreshResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM user_id: usr_8c3ZbDBYjaqUXZ results: - item_id: Fd7bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr product: transactions - item_id: AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 product: transactions error: error_type: ITEM_ERROR error_code: ITEM_LOGIN_REQUIRED error_code_reason: null error_message: The login credentials for this Item have changed. display_message: Please update your login credentials. request_id: req_xyz789 causes: [] status: 400 documentation_url: https://plaid.com/docs/errors/item/#item_login_required suggested_action: Prompt the user to re-authenticate their account. default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /user/financial_data/refresh: post: tags: - plaid summary: Refresh user items for Financial-Insights bundle externalDocs: url: /api/products/transactions/#userfinancialdatarefresh operationId: userFinancialDataRefresh 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 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. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserFinancialDataRefreshRequest' examples: example-1: value: user_id: usr_8c3ZbDBYjaqUXZ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserFinancialDataRefreshResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM user_id: usr_8c3ZbDBYjaqUXZ results: - item_id: Fd7bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr product: transactions - item_id: AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 product: transactions error: error_type: ITEM_ERROR error_code: ITEM_LOGIN_REQUIRED error_code_reason: null error_message: The login credentials for this Item have changed. display_message: Please update your login credentials. request_id: req_xyz789 causes: [] status: 400 documentation_url: https://plaid.com/docs/errors/item/#item_login_required suggested_action: Prompt the user to re-authenticate their account. default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /institutions/get: post: tags: - plaid summary: Get details of all supported institutions externalDocs: url: /api/institutions/#institutionsget operationId: institutionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstitutionsGetResponse' examples: example-1: value: institutions: - country_codes: - US institution_id: ins_1 name: Bank of America products: - assets - auth - balance - transactions - identity - liabilities routing_numbers: - "011000138" - "011200365" - "011400495" dtc_numbers: - "2236" - "0955" - "1367" oauth: false request_id: tbFyCEqkU774ZGG total: 11384 default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated. If there is no overlap between an institution's enabled products and a client's enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InstitutionsGetRequest' description: "" /institutions/search: post: tags: - plaid summary: Search institutions externalDocs: url: /api/institutions/#institutionssearch operationId: institutionsSearch responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstitutionsSearchResponse' examples: example-1: value: institutions: - country_codes: - US institution_id: ins_109513 name: Theoretical Bank oauth: true products: - assets - auth - balance - cra_lend_score - cra_plaid_credit_score - identity - identity_match - income - pay_by_bank - processor_payments - recurring_transactions - transactions - transfer routing_numbers: - "031101270" - "103100194" - "103112357" request_id: QheuqaazREmq9xp default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: | Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query. Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InstitutionsSearchRequest' /institutions/get_by_id: post: tags: - plaid summary: Get details of an institution externalDocs: url: /api/institutions/#institutionsget_by_id operationId: institutionsGetById responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstitutionsGetByIdResponse' examples: example-1: value: institution: country_codes: - US institution_id: ins_109512 name: Houndstooth Bank products: - auth - balance - identity - transactions 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 primary_color: '#004966' url: https://plaid.com logo: null request_id: m8MDnv9okwxFNBV default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: | Returns a JSON response containing details on a specified financial institution currently supported by Plaid. Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InstitutionsGetByIdRequest' description: "" /item/remove: post: tags: - plaid summary: Remove an Item externalDocs: url: /api/items/#itemremove operationId: itemRemove description: |- The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token`, as well as any processor tokens or bank account tokens associated with the Item, is no longer valid and cannot be used to access any data that was associated with the Item. Calling `/item/remove` is a recommended best practice when offboarding users or if a user chooses to disconnect an account linked via Plaid. For subscription products, such as Transactions, Liabilities, and Investments, calling `/item/remove` is required to end subscription billing for the Item, unless the end user revoked permission (e.g. via [https://my.plaid.com/](https://my.plaid.com/)). For more details, see [Subscription fee model](https://plaid.com/docs/account/billing/#subscription-fee). On a Trial plan, calling `/item/remove` does not impact the number of remaining Trial Items (bank connections) you have available. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove access to them specifically using the `/asset_report/remove` endpoint. Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution's OAuth permission manager. API versions 2019-05-29 and earlier return a `removed` boolean as part of the response. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ItemRemoveResponse' 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/ItemRemoveRequest' description: "" /item/products/terminate: post: tags: - plaid summary: Terminate products for an Item externalDocs: url: /api/items/#itemproductsterminate operationId: itemProductsTerminate description: |- The `/item/products/terminate` endpoint allows you to terminate an Item. Once terminated, the `access_token` associated with the Item is no longer valid, billing for the Item's products is ended, and relevant webhooks are fired. `/item/products/terminate` is the recommended way to offboard users or disconnect accounts linked via Plaid. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ItemProductsTerminateResponse' 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/ItemProductsTerminateRequest' /accounts/get: post: tags: - plaid summary: Retrieve accounts externalDocs: url: /api/accounts/#accountsget operationId: accountsGet description: |- The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts -- that is, accounts that are not closed and are capable of carrying a balance. To return new accounts that were created after the user linked their Item, you can listen for the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/items/#new_accounts_available) webhook and then use Link's [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you. `/accounts/get` is free to use and retrieves cached information, rather than extracting fresh information from the institution. The balance returned will reflect the balance at the time of the last successful Item update. If the Item is enabled for a regularly updating product, such as Transactions, Investments, or Liabilities, the balance will typically update about once a day, as long as the Item is healthy. If the Item is enabled only for products that do not frequently update, such as Auth or Identity, balance data may be much older. For real-time balance information, use the paid endpoints `/accounts/balance/get` or `/signal/evaluate` instead. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/AccountsGetResponse' examples: example-1: value: accounts: - account_id: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo balances: available: 100 current: 110 iso_currency_code: USD limit: null unofficial_currency_code: null holder_category: personal mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking subtype: checking type: depository - account_id: 6PdjjRP6LmugpBy5NgQvUqpRXMWxzktg3rwrk balances: available: null current: 23631.9805 iso_currency_code: USD limit: null unofficial_currency_code: null mask: "6666" name: Plaid 401k official_name: null subtype: 401k type: investment - account_id: XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58 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 item: available_products: - balance - identity - payment_initiation - transactions billed_products: - assets - auth consent_expiration_time: null error: null institution_id: ins_117650 institution_name: Royal Bank of Plaid item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: bkVE1BHWMAZ9Rnr default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountsGetRequest' examples: example-1: value: client_id: string secret: string access_token: string options: account_ids: - string /categories/get: post: security: [] tags: - plaid summary: (Deprecated) Get legacy categories deprecated: true externalDocs: url: /api/products/transactions/#categoriesget operationId: categoriesGet description: |- Send a request to the `/categories/get` endpoint to get detailed information on legacy categories returned by Plaid. This endpoint does not require authentication. All implementations are recommended to [use the newer `personal_finance_category` taxonomy](https://plaid.com/docs/transactions/pfc-migration/) instead of the legacy `category` taxonomy supported by this endpoint. responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/CategoriesGetResponse' examples: example-1: value: categories: - category_id: "10000000" group: special hierarchy: - Bank Fees - category_id: "10001000" group: special hierarchy: - Bank Fees - Overdraft - category_id: "12001000" group: place hierarchy: - Community - Animal Shelter request_id: ixTBLZGvhD4NnmB default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CategoriesGetRequest' /sandbox/processor_token/create: post: tags: - plaid summary: Create a test Item and processor token externalDocs: url: /api/sandbox/#sandboxprocessor_tokencreate operationId: sandboxProcessorTokenCreate description: Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxProcessorTokenCreateResponse' examples: example-1: value: processor_token: processor-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d request_id: Aim3b default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxProcessorTokenCreateRequest' /sandbox/public_token/create: post: tags: - plaid summary: Create a test Item externalDocs: url: /api/sandbox/#sandboxpublic_tokencreate operationId: sandboxPublicTokenCreate description: Use the `/sandbox/public_token/create` endpoint to create a valid `public_token` for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data, or with Plaid's [pre-populated Sandbox test accounts](https://plaid.com/docs/sandbox/test-credentials/). responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/SandboxPublicTokenCreateResponse' examples: example-1: value: public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d request_id: Aim3b default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true description: "" content: application/json: schema: $ref: '#/components/schemas/SandboxPublicTokenCreateRequest' /sandbox/item/fire_webhook: post: tags: - plaid summary: Fire a test webhook externalDocs: url: /api/sandbox/#sandboxitemfire_webhook operationId: sandboxItemFireWebhook description: |- The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks: `DEFAULT_UPDATE`: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the `webhook_type` in the request body. Valid Sandbox `DEFAULT_UPDATE` webhook types include: `AUTH`, `IDENTITY`, `TRANSACTIONS`, `INVESTMENTS_TRANSACTIONS`, `LIABILITIES`, `HOLDINGS`. If the Item does not support the product, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. `NEW_ACCOUNTS_AVAILABLE`: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it. `SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given Same-Day Micro-deposit Item is verified via SMS verification. `LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app. `PENDING_DISCONNECT`: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working. `RECURRING_TRANSACTIONS_UPDATE`: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. `SYNC_UPDATES_AVAILABLE`: Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. `PRODUCT_READY`: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. `ERROR`: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. `USER_PERMISSION_REVOKED`: Indicates an end user has revoked the permission that they previously granted to access an Item. May not always fire upon revocation, as some institutions' consent portals do not trigger this webhook. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item. `USER_ACCOUNT_REVOKED`: Fired when an end user has revoked access to their account on the Data Provider's portal. This webhook is currently sent only for PNC Items, but may be sent in the future for other financial institutions. Upon receiving this webhook, it is recommended to delete any stored data from Plaid associated with the account or Item. Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type `TRANSFER`). responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/SandboxItemFireWebhookResponse' examples: example-1: value: webhook_fired: true request_id: 1vwmF5TBQwiqfwP default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true description: "" content: application/json: schema: $ref: '#/components/schemas/SandboxItemFireWebhookRequest' /accounts/balance/get: post: tags: - plaid summary: Retrieve real-time balance data externalDocs: url: /api/products/signal/#accountsbalanceget operationId: accountsBalanceGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AccountsGetResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 100 current: 110 iso_currency_code: USD limit: null unofficial_currency_code: null holder_category: personal 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 item: available_products: - balance - identity - investments billed_products: - assets - auth - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: qk5Bxes3gDfv4F2 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints, such as `/accounts/get`, return a balance object, `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid's other products. This endpoint can be used as long as Link has been initialized with any other product; `balance` itself is not a product that can be used to initialize Link. As this endpoint triggers a synchronous request for fresh data, latency may be higher than for other Plaid endpoints (typically less than 10 seconds, but occasionally up to 30 seconds or more); if you encounter errors, you may find it necessary to adjust your timeout period when making requests. Note: If you are getting real-time balance for the purpose of assessing the return risk of a proposed ACH transaction, it is recommended to use `/signal/evaluate` instead of `/accounts/balance/get`. `/signal/evaluate` returns the same real-time balance information and also provides access to Signal Rules, which provides no-code transaction business logic configuration, backtesting and recommendations for tuning your transaction acceptance logic, and the ability to easily switch between Balance and Signal Transaction Scores as needed for ultra-low-latency, ML-powered risk assessments. For more details, see the [Balance documentation](https://plaid.com/docs/balance/#balance-integration-options). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AccountsBalanceGetRequest' examples: example-1: value: access_token: string secret: string client_id: string options: account_ids: - string /identity/get: post: tags: - plaid summary: Retrieve identity data externalDocs: url: /api/products/identity/#identityget operationId: identityGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityGetResponse' examples: example-1: 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 owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "1112224444" primary: false type: work - data: "1112225555" primary: false type: mobile subtype: checking type: depository - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr balances: available: 200 current: 210 iso_currency_code: USD limit: null unofficial_currency_code: null mask: "1111" name: Plaid Saving official_name: Plaid Silver Standard 0.1% Interest Saving owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "1112224444" primary: false type: work - data: "1112225555" primary: false type: mobile subtype: savings type: depository item: available_products: - balance - investments billed_products: - assets - auth - identity - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: 3nARps6TOYtbACO default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution. Note: 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). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IdentityGetRequest' description: "" /identity/documents/uploads/get: post: tags: - plaid summary: Returns uploaded document identity externalDocs: url: /api/products/identity/#identitydocumentsuploadsget operationId: identityDocumentsUploadsGet description: Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/). responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityDocumentsUploadsGetResponse' examples: example-1: value: accounts: - account_id: ZXEbW7Rkr9iv1qj8abebU1KDMlkexgSgrLAod balances: available: null current: null iso_currency_code: USD limit: null unofficial_currency_code: null documents: - document_id: 9f838fef-b0a5-4ef4-bf73-8e5248d43ad7 metadata: document_type: BANK_STATEMENT is_account_number_match: true last_updated: "2024-09-25T23:57:12Z" page_count: 1 uploaded_at: "2024-09-25T23:57:12Z" risk_insights: risk_signals: - has_fraud_risk: true page_number: 0 signal_description: Creation date and modification date do not match type: METADATA_DATES_OUTSIDE_WINDOW - has_fraud_risk: true page_number: 0 signal_description: Adobe Acrobat type: SOFTWARE_BLACKLIST risk_summary: risk_score: 100 mask: "0000" name: Checking ...0000 official_name: null owners: - addresses: - data: city: OAKLAND country: US postal_code: "94103" region: CA street: 1234 GRAND AVE primary: true document_id: 9f838fef-b0a5-4ef4-bf73-8e5248d43ad7 emails: [] names: - JANE DOE phone_numbers: [] subtype: checking type: depository verification_status: manually_verified item: available_products: [] billed_products: - auth consent_expiration_time: null error: null item_id: QwpzDByRv8uvdpwKEW3WU4PkGEApajtp3o4NN products: - auth update_type: background webhook: https://www.example.com/webhook request_id: b5jvmskusjwX5Gs default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IdentityDocumentsUploadsGetRequest' /identity/match: post: tags: - plaid summary: Retrieve identity match score externalDocs: url: /api/products/identity/#identitymatch operationId: identityMatch responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityMatchResponse' examples: example-1: value: accounts: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: null current: null iso_currency_code: null limit: null unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking legal_name: score: 90 is_nickname_match: true is_first_name_or_last_name_match: true is_business_name_detected: false phone_number: score: 100 email_address: score: 100 address: score: 100 is_postal_code_match: true subtype: checking type: depository - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr balances: available: null current: null iso_currency_code: null limit: null unofficial_currency_code: null mask: "1111" name: Plaid Saving official_name: Plaid Silver Standard 0.1% Interest Saving legal_name: score: 30 is_first_name_or_last_name_match: false phone_number: score: 100 email_address: null address: score: 100 is_postal_code_match: true subtype: savings type: depository item: available_products: - balance - investments billed_products: - assets - auth - identity - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: 3nARps6TOYtbACO default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/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` or `/signal/evaluate` for real-time data. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IdentityMatchRequest' description: "" /identity/refresh: post: tags: - plaid summary: Refresh identity data externalDocs: url: /api/products/identity/#identityrefresh operationId: identityRefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityRefreshResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- `/identity/refresh` is an optional endpoint for users of the Identity product. It initiates an on-demand extraction to fetch the most up to date Identity information from the Financial Institution. This on-demand extraction takes place in addition to the periodic extractions that automatically occur for any Identity-enabled Item. If changes to Identity are discovered after calling `/identity/refresh`, Plaid will fire a webhook [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/identity/#default_update). 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. `/identity/refresh` is offered as an add-on to Identity and has a separate [fee model](https://plaid.com/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IdentityRefreshRequest' /dashboard_user/get: post: summary: Retrieve a Dashboard user tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/DashboardUserGetResponse' examples: example-1: value: id: 54350110fedcbaf01234ffee created_at: "2020-07-24T03:26:02Z" email_address: user@example.com status: active request_id: saKrIBuEB9qJZng operationId: dashboardUserGet description: The `/dashboard_user/get` endpoint provides details (such as email address) about a specific Dashboard user based on the `dashboard_user_id` field, which is returned in the `audit_trail` object of certain Monitor and Beacon endpoints. This can be used to identify the specific reviewer who performed a Dashboard action. requestBody: content: application/json: schema: $ref: '#/components/schemas/DashboardUserGetRequest' required: true externalDocs: url: /api/kyc-aml-users/#dashboard_userget /dashboard_user/list: post: summary: List Dashboard users tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/DashboardUserListResponse' examples: example-1: value: dashboard_users: - id: 54350110fedcbaf01234ffee created_at: "2020-07-24T03:26:02Z" email_address: user@example.com status: active next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: dashboardUserList description: The `/dashboard_user/list` endpoint provides details (such as email address) about all Dashboard users associated with your account. This can be used to audit or track the list of reviewers for Monitor, Beacon, and Identity Verification products. requestBody: content: application/json: schema: $ref: '#/components/schemas/DashboardUserListRequest' required: true externalDocs: url: /api/kyc-aml-users/#dashboard_userlist /identity_verification/create: 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. 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 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationCreateResponse' examples: example-1: value: id: idv_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" previous_attempt_id: idv_42cF1MNo42r9Xj shareable_url: https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f template: id: idvtmp_4FrXJvfQU3zGUR version: 2 user: phone_number: "+12345678909" date_of_birth: "1990-05-29" ip_address: 192.0.2.42 email_address: user@example.com name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US id_number: value: "123456789" type: us_ssn status: success steps: accept_tos: success verify_sms: success kyc_check: success documentary_verification: success selfie_check: success watchlist_screening: success risk_check: success documentary_verification: status: success documents: - status: success attempt: 1 images: original_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg original_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg cropped_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg cropped_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg face: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg extracted_data: id_number: AB123456 category: drivers_license expiration_date: "2030-05-29" issue_date: "2020-05-29" issuing_country: US issuing_region: IN date_of_birth: "1990-05-29" address: street: 123 Main St. Unit 42 city: Pawnee region: IN postal_code: "46001" country: US name: given_name: Leslie family_name: Knope analysis: authenticity: match image_quality: high extracted_data: name: match date_of_birth: match expiration_date: not_expired issuing_country: match aamva_verification: is_verified: true id_number: match id_issue_date: match id_expiration_date: match street: match city: match postal_code: match date_of_birth: match gender: match height: match eye_color: match first_name: match middle_name: match last_name: match fraud_analysis_details: type_supported: success portrait_presence_check: success portrait_details_check: success image_composition_check: success integrity_check: success detail_check: success issue_date_check: success image_quality_details: glare_check: success blur_check: success dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success selfies: - status: success attempt: 1 capture: image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match liveness_check: success age_check: status: match reported_age: 36 age_estimate_lower_bound: 32 age_estimate_upper_bound: 38 kyc_check: status: success address: summary: match po_box: "yes" type: residential name: summary: match date_of_birth: summary: match id_number: summary: match phone_number: summary: match area_code: match risk_check: status: success behavior: user_interactions: risky fraud_ring_detected: "yes" bot_detected: "yes" email: is_deliverable: "yes" breach_count: 1 first_breached_at: "1990-05-29" last_breached_at: "1990-05-29" domain_registered_at: "1990-05-29" domain_is_free_provider: "yes" domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" is_edu: "yes" includes_date_of_birth: "yes" name: match linked_services: - apple phone: linked_services: - apple devices: - ip_proxy_type: none_detected ip_spam_list_count: 1 ip_timezone_offset: "+06:00:00" identity_abuse_signals: synthetic_identity: score: 0 stolen_identity: score: 0 facial_duplicates: - id: idv_52xR9LKo77r1Np similarity: 95 matched_after_completed: true trust_index_score: 86 verify_sms: status: success verifications: - status: success attempt: 1 phone_number: "+12345678909" delivery_attempt_count: 1 solve_attempt_count: 1 initially_sent_at: "2020-07-24T03:26:02Z" last_sent_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" watchlist_screening_id: scr_52xR9LKo77r1Np beacon_user_id: null user_id: usr_dddAs9ewdcDQQQ redacted_at: "2020-07-24T03:26:02Z" latest_scored_protect_event: event_id: ptevt_7AJYTMFxRUgJ timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: identityVerificationCreate requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationCreateRequest' required: true externalDocs: url: /api/products/identity-verification/#identity_verificationcreate /identity_verification/get: post: summary: Retrieve Identity Verification tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationGetResponse' examples: example-1: value: id: idv_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" previous_attempt_id: idv_42cF1MNo42r9Xj shareable_url: https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f template: id: idvtmp_4FrXJvfQU3zGUR version: 2 user: phone_number: "+12345678909" date_of_birth: "1990-05-29" ip_address: 192.0.2.42 email_address: user@example.com name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US id_number: value: "123456789" type: us_ssn status: success steps: accept_tos: success verify_sms: success kyc_check: success documentary_verification: success selfie_check: success watchlist_screening: success risk_check: success documentary_verification: status: success documents: - status: success attempt: 1 images: original_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg original_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg cropped_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg cropped_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg face: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg extracted_data: id_number: AB123456 category: drivers_license expiration_date: "2030-05-29" issue_date: "2020-05-29" issuing_country: US issuing_region: IN date_of_birth: "1990-05-29" address: street: 123 Main St. Unit 42 city: Pawnee region: IN postal_code: "46001" country: US name: given_name: Leslie family_name: Knope analysis: authenticity: match image_quality: high extracted_data: name: match date_of_birth: match expiration_date: not_expired issuing_country: match aamva_verification: is_verified: true id_number: match id_issue_date: match id_expiration_date: match street: match city: match postal_code: match date_of_birth: match gender: match height: match eye_color: match first_name: match middle_name: match last_name: match fraud_analysis_details: type_supported: success portrait_presence_check: success portrait_details_check: success image_composition_check: success integrity_check: success detail_check: success issue_date_check: success image_quality_details: glare_check: success blur_check: success dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success selfies: - status: success attempt: 1 capture: image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match liveness_check: success age_check: status: match reported_age: 36 age_estimate_lower_bound: 32 age_estimate_upper_bound: 38 kyc_check: status: success address: summary: match po_box: "yes" type: residential name: summary: match date_of_birth: summary: match id_number: summary: match phone_number: summary: match area_code: match risk_check: status: success behavior: user_interactions: risky fraud_ring_detected: "yes" bot_detected: "yes" email: is_deliverable: "yes" breach_count: 1 first_breached_at: "1990-05-29" last_breached_at: "1990-05-29" domain_registered_at: "1990-05-29" domain_is_free_provider: "yes" domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" is_edu: "yes" includes_date_of_birth: "yes" name: match linked_services: - apple phone: linked_services: - apple devices: - ip_proxy_type: none_detected ip_spam_list_count: 1 ip_timezone_offset: "+06:00:00" identity_abuse_signals: synthetic_identity: score: 0 stolen_identity: score: 0 facial_duplicates: - id: idv_52xR9LKo77r1Np similarity: 95 matched_after_completed: true trust_index_score: 86 verify_sms: status: success verifications: - status: success attempt: 1 phone_number: "+12345678909" delivery_attempt_count: 1 solve_attempt_count: 1 initially_sent_at: "2020-07-24T03:26:02Z" last_sent_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" watchlist_screening_id: scr_52xR9LKo77r1Np beacon_user_id: null user_id: usr_dddAs9ewdcDQQQ redacted_at: "2020-07-24T03:26:02Z" latest_scored_protect_event: event_id: ptevt_7AJYTMFxRUgJ timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: identityVerificationGet description: Retrieve a previously created Identity Verification. requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationGetRequest' required: true externalDocs: url: /api/products/identity-verification/#identity_verificationget /identity_verification/list: post: summary: List Identity Verifications tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationListResponse' examples: example-1: value: identity_verifications: - id: idv_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" previous_attempt_id: idv_42cF1MNo42r9Xj shareable_url: https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f template: id: idvtmp_4FrXJvfQU3zGUR version: 2 user: phone_number: "+12345678909" date_of_birth: "1990-05-29" ip_address: 192.0.2.42 email_address: user@example.com name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US id_number: value: "123456789" type: us_ssn status: success steps: accept_tos: success verify_sms: success kyc_check: success documentary_verification: success selfie_check: success watchlist_screening: success risk_check: success documentary_verification: status: success documents: - status: success attempt: 1 images: original_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg original_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg cropped_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg cropped_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg face: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg extracted_data: id_number: AB123456 category: drivers_license expiration_date: "2030-05-29" issue_date: "2020-05-29" issuing_country: US issuing_region: IN date_of_birth: "1990-05-29" address: street: 123 Main St. Unit 42 city: Pawnee region: IN postal_code: "46001" country: US name: given_name: Leslie family_name: Knope analysis: authenticity: match image_quality: high extracted_data: name: match date_of_birth: match expiration_date: not_expired issuing_country: match aamva_verification: is_verified: true id_number: match id_issue_date: match id_expiration_date: match street: match city: match postal_code: match date_of_birth: match gender: match height: match eye_color: match first_name: match middle_name: match last_name: match fraud_analysis_details: type_supported: success portrait_presence_check: success portrait_details_check: success image_composition_check: success integrity_check: success detail_check: success issue_date_check: success image_quality_details: glare_check: success blur_check: success dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success selfies: - status: success attempt: 1 capture: image_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match liveness_check: success age_check: status: match reported_age: 36 age_estimate_lower_bound: 32 age_estimate_upper_bound: 38 kyc_check: status: success address: summary: match po_box: "yes" type: residential name: summary: match date_of_birth: summary: match id_number: summary: match phone_number: summary: match area_code: match risk_check: status: success behavior: user_interactions: risky fraud_ring_detected: "yes" bot_detected: "yes" email: is_deliverable: "yes" breach_count: 1 first_breached_at: "1990-05-29" last_breached_at: "1990-05-29" domain_registered_at: "1990-05-29" domain_is_free_provider: "yes" domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" is_edu: "yes" includes_date_of_birth: "yes" name: match linked_services: - apple phone: linked_services: - apple devices: - ip_proxy_type: none_detected ip_spam_list_count: 1 ip_timezone_offset: "+06:00:00" identity_abuse_signals: synthetic_identity: score: 0 stolen_identity: score: 0 facial_duplicates: - id: idv_52xR9LKo77r1Np similarity: 95 matched_after_completed: true trust_index_score: 86 verify_sms: status: success verifications: - status: success attempt: 1 phone_number: "+12345678909" delivery_attempt_count: 1 solve_attempt_count: 1 initially_sent_at: "2020-07-24T03:26:02Z" last_sent_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" watchlist_screening_id: scr_52xR9LKo77r1Np beacon_user_id: null user_id: usr_dddAs9ewdcDQQQ redacted_at: "2020-07-24T03:26:02Z" latest_scored_protect_event: event_id: ptevt_7AJYTMFxRUgJ timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: identityVerificationList description: Filter and list Identity Verifications created by your account requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationListRequest' required: true externalDocs: url: /api/products/identity-verification/#identity_verificationlist /identity_verification/retry: post: summary: Retry an Identity Verification requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationRetryRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationRetryResponse' examples: example-1: value: id: idv_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" previous_attempt_id: idv_42cF1MNo42r9Xj shareable_url: https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f template: id: idvtmp_4FrXJvfQU3zGUR version: 2 user: phone_number: "+12345678909" date_of_birth: "1990-05-29" ip_address: 192.0.2.42 email_address: user@example.com name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US id_number: value: "123456789" type: us_ssn status: success steps: accept_tos: success verify_sms: success kyc_check: success documentary_verification: success selfie_check: success watchlist_screening: success risk_check: success documentary_verification: status: success documents: - status: success attempt: 1 images: original_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg original_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg cropped_front: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg cropped_back: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg face: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg extracted_data: id_number: AB123456 category: drivers_license expiration_date: "2030-05-29" issue_date: "2020-05-29" issuing_country: US issuing_region: IN date_of_birth: "1990-05-29" address: street: 123 Main St. Unit 42 city: Pawnee region: IN postal_code: "46001" country: US name: given_name: Leslie family_name: Knope analysis: authenticity: match image_quality: high extracted_data: name: match date_of_birth: match expiration_date: not_expired issuing_country: match aamva_verification: is_verified: true id_number: match id_issue_date: match id_expiration_date: match street: match city: match postal_code: match date_of_birth: match gender: match height: match eye_color: match first_name: match middle_name: match last_name: match fraud_analysis_details: type_supported: success portrait_presence_check: success portrait_details_check: success image_composition_check: success integrity_check: success detail_check: success issue_date_check: success image_quality_details: glare_check: success blur_check: success dimensions_check: success redacted_at: "2020-07-24T03:26:02Z" selfie_check: status: success selfies: - status: success attempt: 1 capture: image_url: null video_url: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm analysis: document_comparison: match liveness_check: success age_check: status: match reported_age: 36 age_estimate_lower_bound: 32 age_estimate_upper_bound: 38 kyc_check: status: success address: summary: match po_box: "yes" type: residential name: summary: match date_of_birth: summary: match id_number: summary: match phone_number: summary: match area_code: match risk_check: status: success behavior: user_interactions: risky fraud_ring_detected: "yes" bot_detected: "yes" email: is_deliverable: "yes" breach_count: 1 first_breached_at: "1990-05-29" last_breached_at: "1990-05-29" domain_registered_at: "1990-05-29" domain_is_free_provider: "yes" domain_is_custom: "yes" domain_is_disposable: "yes" top_level_domain_is_suspicious: "yes" is_edu: "yes" includes_date_of_birth: "yes" name: match linked_services: - apple phone: linked_services: - apple devices: - ip_proxy_type: none_detected ip_spam_list_count: 1 ip_timezone_offset: "+06:00:00" identity_abuse_signals: synthetic_identity: score: 0 stolen_identity: score: 0 facial_duplicates: - id: idv_52xR9LKo77r1Np similarity: 95 matched_after_completed: true trust_index_score: 86 verify_sms: status: success verifications: - status: success attempt: 1 phone_number: "+12345678909" delivery_attempt_count: 1 solve_attempt_count: 1 initially_sent_at: "2020-07-24T03:26:02Z" last_sent_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" watchlist_screening_id: scr_52xR9LKo77r1Np beacon_user_id: null user_id: usr_dddAs9ewdcDQQQ redacted_at: "2020-07-24T03:26:02Z" latest_scored_protect_event: event_id: ptevt_7AJYTMFxRUgJ timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: identityVerificationRetry description: Allow a customer to retry their Identity Verification externalDocs: url: /api/products/identity-verification/#identity_verificationretry /watchlist_screening/entity/create: post: summary: Create a watchlist screening for an entity operationId: watchlistScreeningEntityCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityCreateResponse' examples: example-1: value: id: entscr_52xR9LKo77r1Np search_terms: entity_watchlist_program_id: entprg_2eRPsDnL66rZ7H legal_name: Al-Qaida document_number: C31195855 email_address: user@example.com country: US phone_number: "+14025671234" url: https://example.com version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng description: Create a new entity watchlist screening to check your customer against watchlists defined in the associated entity watchlist program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityCreateRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentitycreate /watchlist_screening/entity/get: post: summary: Get an entity screening tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityGetResponse' examples: example-1: value: id: entscr_52xR9LKo77r1Np search_terms: entity_watchlist_program_id: entprg_2eRPsDnL66rZ7H legal_name: Al-Qaida document_number: C31195855 email_address: user@example.com country: US phone_number: "+14025671234" url: https://example.com version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityGet description: Retrieve an entity watchlist screening. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityGetRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityget /watchlist_screening/entity/history/list: post: summary: List history for entity watchlist screenings tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityHistoryListResponse' examples: example-1: value: entity_watchlist_screenings: - id: entscr_52xR9LKo77r1Np search_terms: entity_watchlist_program_id: entprg_2eRPsDnL66rZ7H legal_name: Al-Qaida document_number: C31195855 email_address: user@example.com country: US phone_number: "+14025671234" url: https://example.com version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityHistoryList description: List all changes to the entity watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityHistoryListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityhistorylist /watchlist_screening/entity/hit/list: post: summary: List hits for entity watchlist screenings tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityHitListResponse' examples: example-1: value: entity_watchlist_screening_hits: - id: enthit_52xR9LKo77r1Np review_status: pending_review first_active: "2020-07-24T03:26:02Z" inactive_since: "2020-07-24T03:26:02Z" historical_since: "2020-07-24T03:26:02Z" list_code: EU_CON plaid_uid: uid_3NggckTimGSJHS source_uid: 26192ABC sub_programs: [] analysis: documents: match email_addresses: match locations: match names: match phone_numbers: match urls: match search_terms_version: 1 data: documents: - analysis: summary: match data: type: swift number: C31195855 email_addresses: - analysis: summary: match data: email_address: user@example.com locations: - analysis: summary: match data: full: Florida, US country: US names: - analysis: summary: match data: full: Al Qaida is_primary: false weak_alias_determination: none phone_numbers: - analysis: summary: match data: type: phone phone_number: "+14025671234" urls: - analysis: summary: match data: url: https://example.com next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityHitList description: List all hits for the entity watchlist screening. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityHitListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityhitlist /watchlist_screening/entity/list: post: summary: List entity watchlist screenings responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityListResponse' examples: example-1: value: entity_watchlist_screenings: - id: entscr_52xR9LKo77r1Np search_terms: entity_watchlist_program_id: entprg_2eRPsDnL66rZ7H legal_name: Al-Qaida document_number: C31195855 email_address: user@example.com country: US phone_number: "+14025671234" url: https://example.com version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityList description: List all entity screenings. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentitylist /watchlist_screening/entity/program/get: post: summary: Get entity watchlist screening program tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityProgramGetResponse' examples: example-1: value: id: entprg_2eRPsDnL66rZ7H created_at: "2020-07-24T03:26:02Z" is_rescanning_enabled: true lists_enabled: - EU_CON name: Sample Program name_sensitivity: balanced audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" is_archived: false request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityProgramGet description: Get an entity watchlist screening program requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityProgramGetRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityprogramget /watchlist_screening/entity/program/list: post: summary: List entity watchlist screening programs responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityProgramListResponse' examples: example-1: value: entity_watchlist_programs: - id: entprg_2eRPsDnL66rZ7H created_at: "2020-07-24T03:26:02Z" is_rescanning_enabled: true lists_enabled: - EU_CON name: Sample Program name_sensitivity: balanced audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" is_archived: false next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityProgramList description: List all entity watchlist screening programs tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityProgramListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityprogramlist /watchlist_screening/entity/review/create: post: summary: Create a review for an entity watchlist screening operationId: watchlistScreeningEntityReviewCreate description: Create a review for an entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityReviewCreateRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityReviewCreateResponse' examples: example-1: value: id: entrev_aCLNRxK3UVzn2r confirmed_hits: - enthit_52xR9LKo77r1Np dismissed_hits: - enthit_52xR9LKo77r1Np comment: These look like legitimate matches, rejecting the customer. audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng tags: - plaid externalDocs: url: /api/products/monitor/#watchlist_screeningentityreviewcreate /watchlist_screening/entity/review/list: post: summary: List reviews for entity watchlist screenings tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityReviewListResponse' examples: example-1: value: entity_watchlist_screening_reviews: - id: entrev_aCLNRxK3UVzn2r confirmed_hits: - enthit_52xR9LKo77r1Np dismissed_hits: - enthit_52xR9LKo77r1Np comment: These look like legitimate matches, rejecting the customer. audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningEntityReviewList description: List all reviews for a particular entity watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityReviewListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityreviewlist /watchlist_screening/entity/update: post: summary: Update an entity screening operationId: watchlistScreeningEntityUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityUpdateResponse' examples: example-1: value: id: entscr_52xR9LKo77r1Np search_terms: entity_watchlist_program_id: entprg_2eRPsDnL66rZ7H legal_name: Al-Qaida document_number: C31195855 email_address: user@example.com country: US phone_number: "+14025671234" url: https://example.com version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng description: Update an entity watchlist screening. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningEntityUpdateRequest' description: The entity screening was successfully updated. required: true externalDocs: url: /api/products/monitor/#watchlist_screeningentityupdate /watchlist_screening/individual/create: post: summary: Create a watchlist screening for a person operationId: watchlistScreeningIndividualCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualCreateResponse' examples: example-1: value: id: scr_52xR9LKo77r1Np search_terms: watchlist_program_id: prg_2eRPsDnL66rZ7H legal_name: Aleksey Potemkin date_of_birth: "1990-05-29" document_number: C31195855 country: US version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng description: Create a new Watchlist Screening to check your customer against watchlists defined in the associated Watchlist Program. If your associated program has ongoing screening enabled, this is the profile information that will be used to monitor your customer over time. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualCreateRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualcreate /watchlist_screening/individual/get: post: summary: Retrieve an individual watchlist screening tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualGetResponse' examples: example-1: value: id: scr_52xR9LKo77r1Np search_terms: watchlist_program_id: prg_2eRPsDnL66rZ7H legal_name: Aleksey Potemkin date_of_birth: "1990-05-29" document_number: C31195855 country: US version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualGet description: Retrieve a previously created individual watchlist screening requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualGetRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualget /watchlist_screening/individual/history/list: post: summary: List history for individual watchlist screenings tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualHistoryListResponse' examples: example-1: value: watchlist_screenings: - id: scr_52xR9LKo77r1Np search_terms: watchlist_program_id: prg_2eRPsDnL66rZ7H legal_name: Aleksey Potemkin date_of_birth: "1990-05-29" document_number: C31195855 country: US version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualHistoryList description: List all changes to the individual watchlist screening in reverse-chronological order. If the watchlist screening has not been edited, no history will be returned. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualHistoryListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualhistorylist /watchlist_screening/individual/hit/list: post: summary: List hits for individual watchlist screening tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualHitListResponse' examples: example-1: value: watchlist_screening_hits: - id: scrhit_52xR9LKo77r1Np review_status: pending_review first_active: "2020-07-24T03:26:02Z" inactive_since: "2020-07-24T03:26:02Z" historical_since: "2020-07-24T03:26:02Z" list_code: US_SDN plaid_uid: uid_3NggckTimGSJHS source_uid: 26192ABC sub_programs: - SDGT analysis: dates_of_birth: match documents: match locations: match names: match search_terms_version: 1 data: dates_of_birth: - analysis: summary: match data: beginning: "1990-05-29" ending: "1990-05-29" documents: - analysis: summary: match data: type: passport number: C31195855 locations: - analysis: summary: match data: full: Florida, US country: US names: - analysis: summary: match data: full: Aleksey Potemkin is_primary: false weak_alias_determination: none next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualHitList description: List all hits found by Plaid for a particular individual watchlist screening. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualHitListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualhitlist /watchlist_screening/individual/list: post: summary: List Individual Watchlist Screenings responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualListResponse' examples: example-1: value: watchlist_screenings: - id: scr_52xR9LKo77r1Np search_terms: watchlist_program_id: prg_2eRPsDnL66rZ7H legal_name: Aleksey Potemkin date_of_birth: "1990-05-29" document_number: C31195855 country: US version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualList description: List previously created watchlist screenings for individuals tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividuallist /watchlist_screening/individual/program/get: post: summary: Get individual watchlist screening program tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualProgramGetResponse' examples: example-1: value: id: prg_2eRPsDnL66rZ7H created_at: "2020-07-24T03:26:02Z" is_rescanning_enabled: true lists_enabled: - US_SDN name: Sample Program name_sensitivity: balanced audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" is_archived: false request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualProgramGet description: Get an individual watchlist screening program requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualProgramGetRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualprogramget /watchlist_screening/individual/program/list: post: summary: List individual watchlist screening programs responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualProgramListResponse' examples: example-1: value: watchlist_programs: - id: prg_2eRPsDnL66rZ7H created_at: "2020-07-24T03:26:02Z" is_rescanning_enabled: true lists_enabled: - US_SDN name: Sample Program name_sensitivity: balanced audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" is_archived: false next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualProgramList description: List all individual watchlist screening programs tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualProgramListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualprogramlist /watchlist_screening/individual/review/create: post: summary: Create a review for an individual watchlist screening operationId: watchlistScreeningIndividualReviewCreate description: Create a review for the individual watchlist screening. Reviews are compliance reports created by users in your organization regarding the relevance of potential hits found by Plaid. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualReviewCreateRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualReviewCreateResponse' examples: example-1: value: id: rev_aCLNRxK3UVzn2r confirmed_hits: - scrhit_52xR9LKo77r1Np dismissed_hits: - scrhit_52xR9LKo77r1Np comment: These look like legitimate matches, rejecting the customer. audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng tags: - plaid externalDocs: url: /api/products/monitor/#watchlist_screeningindividualreviewcreate /watchlist_screening/individual/review/list: post: summary: List reviews for individual watchlist screenings tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualReviewListResponse' examples: example-1: value: watchlist_screening_reviews: - id: rev_aCLNRxK3UVzn2r confirmed_hits: - scrhit_52xR9LKo77r1Np dismissed_hits: - scrhit_52xR9LKo77r1Np comment: These look like legitimate matches, rejecting the customer. audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: watchlistScreeningIndividualReviewList description: List all reviews for the individual watchlist screening. requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualReviewListRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualreviewlist /watchlist_screening/individual/update: post: summary: Update individual watchlist screening operationId: watchlistScreeningIndividualUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualUpdateResponse' examples: example-1: value: id: scr_52xR9LKo77r1Np search_terms: watchlist_program_id: prg_2eRPsDnL66rZ7H legal_name: Aleksey Potemkin date_of_birth: "1990-05-29" document_number: C31195855 country: US version: 1 assignee: 54350110fedcbaf01234ffee status: cleared client_user_id: your-db-id-3b24110 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng description: Update a specific individual watchlist screening. This endpoint can be used to add additional customer information, correct outdated information, add a reference id, assign the individual to a reviewer, and update which program it is associated with. Please note that you may not update `search_terms` and `status` at the same time since editing `search_terms` may trigger an automatic `status` change. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/WatchlistScreeningIndividualUpdateRequest' required: true externalDocs: url: /api/products/monitor/#watchlist_screeningindividualupdate /beacon/account_risk/v1/evaluate: x-hidden-from-docs: true post: tags: - plaid summary: (Deprecated) Evaluate risk of a bank account deprecated: true externalDocs: url: none operationId: beaconAccountRiskEvaluate description: Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconAccountRiskEvaluateResponse' examples: example-1: value: accounts: - account_id: mbVr0axYMECQ07NJ5gXnHRM9DeD2RJCxm9roR attributes: days_since_first_plaid_connection: 510 plaid_connections_count_7d: 6 plaid_connections_count_30d: 7 total_plaid_connections_count: 15 subtype: checking type: depository request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BeaconAccountRiskEvaluateRequest' /beacon/user/create: post: summary: (Deprecated) Create a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserCreateRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserCreateResponse' examples: example-1: value: item_ids: - 515cd85321d3649aecddc015 id: becusr_42cF1MNo42r9Xj version: 1 created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" status: cleared program_id: becprg_11111111111111 client_user_id: your-db-id-3b24110 user: date_of_birth: "1990-05-29" name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US email_address: user@example.com phone_number: "+19876543212" id_number: value: "123456789" type: us_ssn ip_address: 192.0.2.42 depository_accounts: - account_mask: "4000" routing_number: "021000021" added_at: "2020-07-24T03:26:02Z" audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconUserCreate description: |- Create and scan a Beacon User against your Beacon Program, according to your program's settings. When you submit a new user to `/beacon/user/create`, several checks are performed immediately: - The user's PII (provided within the `user` object) is searched against all other users within the Beacon Program you specified. If a match is found that violates your program's "Duplicate Information Filtering" settings, the user will be returned with a status of `pending_review`. - 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 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: post: summary: (Deprecated) Get a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserGetRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserGetResponse' examples: example-1: value: item_ids: - 515cd85321d3649aecddc015 id: becusr_42cF1MNo42r9Xj version: 1 created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" status: cleared program_id: becprg_11111111111111 client_user_id: your-db-id-3b24110 user: date_of_birth: "1990-05-29" name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US email_address: user@example.com phone_number: "+19876543212" id_number: value: "123456789" type: us_ssn ip_address: 192.0.2.42 depository_accounts: - account_mask: "4000" routing_number: "021000021" added_at: "2020-07-24T03:26:02Z" audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconUserGet description: | Fetch a Beacon User. The Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks. externalDocs: url: /api/products/beacon/#beaconuserget /beacon/user/review: post: summary: (Deprecated) Review a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserReviewRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserGetResponse' examples: example-1: value: item_ids: - 515cd85321d3649aecddc015 id: becusr_42cF1MNo42r9Xj version: 1 created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" status: cleared program_id: becprg_11111111111111 client_user_id: your-db-id-3b24110 user: date_of_birth: "1990-05-29" name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US email_address: user@example.com phone_number: "+19876543212" id_number: value: "123456789" type: us_ssn ip_address: 192.0.2.42 depository_accounts: - account_mask: "4000" routing_number: "021000021" added_at: "2020-07-24T03:26:02Z" audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconUserReview description: |- Update the status of a Beacon User. When updating a Beacon User's status via this endpoint, Plaid validates that the status change is consistent with the related state for this Beacon User. Specifically, we will check: 1. Whether there are any associated Beacon Reports connected to the Beacon User, and 2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User. When updating a Beacon User's status to `rejected`, we enforce that either a Beacon Report has been created for the Beacon User or a Beacon Report Syndication has been confirmed. When updating a Beacon User's status to `cleared`, we enforce that there are no active Beacon Reports or confirmed Beacon Report Syndications associated with the user. If you previously created a Beacon Report for this user, you must delete it before updating the Beacon User's status to `cleared`. There are no restrictions on updating a Beacon User's status to `pending_review`. If these conditions are not met, the request will be rejected with an error explaining the issue. externalDocs: url: /api/products/beacon/#beaconuserreview /beacon/report/create: post: summary: (Deprecated) Create a Beacon Report deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconReportCreateRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconReportCreateResponse' examples: example-1: value: id: becrpt_11111111111111 beacon_user_id: becusr_42cF1MNo42r9Xj created_at: "2020-07-24T03:26:02Z" type: first_party fraud_date: "1990-05-29" event_date: "1990-05-29" fraud_amount: iso_currency_code: USD value: 100 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconReportCreate description: Create a fraud report for a given Beacon User. externalDocs: url: /api/products/beacon/#beaconreportcreate /beacon/report/list: post: summary: (Deprecated) List Beacon Reports for a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconReportListRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconReportListResponse' examples: example-1: value: beacon_reports: - id: becrpt_11111111111111 beacon_user_id: becusr_42cF1MNo42r9Xj created_at: "2020-07-24T03:26:02Z" type: first_party fraud_date: "1990-05-29" event_date: "1990-05-29" fraud_amount: iso_currency_code: USD value: 100 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: beaconReportList description: Use the `/beacon/report/list` endpoint to view all Beacon Reports you created for a specific Beacon User. The reports returned by this endpoint are exclusively reports you created for a specific user. A Beacon User can only have one active report at a time, but a new report can be created if a previous report has been deleted. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request. externalDocs: url: /api/products/beacon/#beaconreportlist /beacon/report_syndication/list: post: summary: (Deprecated) List Beacon Report Syndications for a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconReportSyndicationListRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconReportSyndicationListResponse' examples: example-1: value: beacon_report_syndications: - id: becrsn_11111111111111 beacon_user_id: becusr_42cF1MNo42r9Xj report: id: becrpt_11111111111111 created_at: "2020-07-24T03:26:02Z" type: first_party fraud_date: "1990-05-29" event_date: "1990-05-29" analysis: address: match date_of_birth: match email_address: match name: match id_number: match ip_address: match phone_number: match depository_accounts: - account_mask: "4000" routing_number: "021000021" match_status: match next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: beaconReportSyndicationList description: Use the `/beacon/report_syndication/list` endpoint to view all Beacon Reports that have been syndicated to a specific Beacon User. This endpoint returns Beacon Report Syndications which are references to Beacon Reports created either by you, or another Beacon customer, that matched the specified Beacon User. A Beacon User can have multiple active Beacon Report Syndications at once. The results from this endpoint are paginated; the `next_cursor` field will be populated if there is another page of results that can be retrieved. To fetch the next page, pass the `next_cursor` value as the `cursor` parameter in the next request. externalDocs: url: /api/products/beacon/#beaconreport_syndicationlist /beacon/report/get: post: summary: (Deprecated) Get a Beacon Report deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconReportGetRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconReportGetResponse' examples: example-1: value: id: becrpt_11111111111111 beacon_user_id: becusr_42cF1MNo42r9Xj created_at: "2020-07-24T03:26:02Z" type: first_party fraud_date: "1990-05-29" event_date: "1990-05-29" fraud_amount: iso_currency_code: USD value: 100 audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconReportGet description: Returns a Beacon Report for a given Beacon Report ID. externalDocs: url: /api/products/beacon/#beaconreportget /beacon/report_syndication/get: post: summary: (Deprecated) Get a Beacon Report Syndication deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconReportSyndicationGetRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconReportSyndicationGetResponse' examples: example-1: value: id: becrsn_11111111111111 beacon_user_id: becusr_42cF1MNo42r9Xj report: id: becrpt_11111111111111 created_at: "2020-07-24T03:26:02Z" type: first_party fraud_date: "1990-05-29" event_date: "1990-05-29" analysis: address: match date_of_birth: match email_address: match name: match id_number: match ip_address: match phone_number: match depository_accounts: - account_mask: "4000" routing_number: "021000021" match_status: match request_id: saKrIBuEB9qJZng operationId: beaconReportSyndicationGet description: Returns a Beacon Report Syndication for a given Beacon Report Syndication id. externalDocs: url: /api/products/beacon/#beaconreport_syndicationget /beacon/user/update: post: summary: (Deprecated) Update the identity data of a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserUpdateRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserUpdateResponse' examples: example-1: value: item_ids: - 515cd85321d3649aecddc015 id: becusr_42cF1MNo42r9Xj version: 1 created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" status: cleared program_id: becprg_11111111111111 client_user_id: your-db-id-3b24110 user: date_of_birth: "1990-05-29" name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US email_address: user@example.com phone_number: "+19876543212" id_number: value: "123456789" type: us_ssn ip_address: 192.0.2.42 depository_accounts: - account_mask: "4000" routing_number: "021000021" added_at: "2020-07-24T03:26:02Z" audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" request_id: saKrIBuEB9qJZng operationId: beaconUserUpdate description: |- Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User. Similar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`: - The user's updated PII is searched against all other users within the Beacon Program you specified. If a match is found that violates your program's "Duplicate Information Filtering" settings, the user will be returned with a status of `pending_review`. - 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 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: url: /api/products/beacon/#beaconuserupdate /beacon/duplicate/get: post: summary: (Deprecated) Get a Beacon Duplicate deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconDuplicateGetRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconDuplicateGetResponse' examples: example-1: value: id: becdup_11111111111111 beacon_user1: id: becusr_42cF1MNo42r9Xj version: 1 beacon_user2: id: becusr_42cF1MNo42r9Xj version: 1 analysis: address: match date_of_birth: match email_address: match name: match id_number: match ip_address: match phone_number: match request_id: saKrIBuEB9qJZng operationId: beaconDuplicateGet description: | Returns a Beacon Duplicate for a given Beacon Duplicate id. A Beacon Duplicate represents a pair of similar Beacon Users within your organization. Two Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields. The `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`. externalDocs: url: /api/products/beacon/#beaconduplicateget /identity_verification/autofill/create: post: x-hidden-from-docs: true summary: Create autofill for an Identity Verification description: Try to autofill an Identity Verification based on the provided phone number, date of birth and country of residence. tags: - plaid requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationAutofillCreateRequest' example: identity_verification_id: flwses_42cF1MNo42r9Xj required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityVerificationAutofillCreateResponse' examples: example-1: value: status: success user: name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US po_box: "yes" type: residential id_number: value: "123456789" type: us_ssn request_id: saKrIBuEB9qJZng operationId: identityVerificationAutofillCreate externalDocs: url: /api/products/identity-verification/#identity_verificationautofillcreate /beacon/user/history/list: post: summary: (Deprecated) List a Beacon User's history deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserHistoryListRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserHistoryListResponse' examples: example-1: value: beacon_users: - item_ids: - 515cd85321d3649aecddc015 id: becusr_42cF1MNo42r9Xj version: 1 created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" status: cleared program_id: becprg_11111111111111 client_user_id: your-db-id-3b24110 user: date_of_birth: "1990-05-29" name: given_name: Leslie family_name: Knope address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US email_address: user@example.com phone_number: "+19876543212" id_number: value: "123456789" type: us_ssn ip_address: 192.0.2.42 depository_accounts: - account_mask: "4000" routing_number: "021000021" added_at: "2020-07-24T03:26:02Z" audit_trail: source: dashboard dashboard_user_id: 54350110fedcbaf01234ffee timestamp: "2020-07-24T03:26:02Z" next_cursor: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM request_id: saKrIBuEB9qJZng operationId: beaconUserHistoryList description: List all changes to the Beacon User in reverse-chronological order. externalDocs: url: /api/products/beacon/#beaconuserhistorylist /beacon/user/account_insights/get: post: summary: (Deprecated) Get Account Insights for a Beacon User deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/BeaconUserAccountInsightsGetRequest' required: true tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BeaconUserAccountInsightsGetResponse' examples: example-1: value: beacon_user_id: becusr_42cF1MNo42r9Xj created_at: "2020-07-24T03:26:02Z" updated_at: "2020-07-24T03:26:02Z" bank_account_insights: item_id: 515cd85321d3649aecddc015 accounts: - account_id: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo type: depository subtype: checking attributes: days_since_first_plaid_connection: 1 is_account_closed: false is_account_frozen_or_restricted: false total_plaid_connections_count: 1 plaid_connections_count_7d: 1 plaid_connections_count_30d: 1 failed_plaid_non_oauth_authentication_attempts_count_3d: 1 plaid_non_oauth_authentication_attempts_count_3d: 1 failed_plaid_non_oauth_authentication_attempts_count_7d: 1 plaid_non_oauth_authentication_attempts_count_7d: 1 failed_plaid_non_oauth_authentication_attempts_count_30d: 1 plaid_non_oauth_authentication_attempts_count_30d: 1 distinct_ip_addresses_count_3d: 1 distinct_ip_addresses_count_7d: 1 distinct_ip_addresses_count_30d: 1 distinct_ip_addresses_count_90d: 1 distinct_user_agents_count_3d: 1 distinct_user_agents_count_7d: 1 distinct_user_agents_count_30d: 1 distinct_user_agents_count_90d: 1 address_change_count_28d: 1 email_change_count_28d: 2 phone_change_count_28d: 1 address_change_count_90d: 3 email_change_count_90d: 4 phone_change_count_90d: 2 days_since_account_opening: 365 days_since_first_observed_transaction: 180 request_id: saKrIBuEB9qJZng operationId: beaconUserAccountInsightsGet description: Get Account Insights for all Accounts linked to this Beacon User. The insights for each account are computed based on the information that was last retrieved from the financial institution. externalDocs: url: /api/products/beacon/#beaconuseraccount_insightsget /protect/user/insights/get: post: tags: - plaid summary: Get Protect user insights externalDocs: url: /api/products/protect/#protectuserinsightsget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProtectUserInsightsGetResponse' examples: example-1: value: user_id: plaid-user-6009db6e latest_scored_event: event_id: ptevt_cYNnF8xYE1v1om timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: protectUserInsightsGet description: Use this endpoint to get basic information about a user as it relates to their fraud profile with Protect. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectUserInsightsGetRequest' /protect/report/create: post: tags: - plaid summary: Create a Protect report externalDocs: url: /api/products/protect/#protectreportcreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProtectReportCreateResponse' examples: example-1: value: report_id: ptrpt_42cF1MNo42r9Xj request_id: saKrIBuEB9qJZng operationId: protectReportCreate description: |- Use this endpoint to create a Protect report to document fraud incidents, investigation outcomes, or other risk events. This endpoint allows you to report various types of incidents including account takeovers, identity fraud, unauthorized transactions, and other security events. The reported data helps improve fraud detection models and provides valuable feedback to enhance the overall security of the Plaid network. Reports can be created for confirmed incidents that have been fully investigated, or for suspected incidents that require further review. You can associate reports with specific users, sessions, or transactions to provide comprehensive context about the incident. Each report must include `user_id`, or an `incident_event` with at least one supported identifier: `link_session_id`, `idv_session_id`, `protect_event_id`, `signal_client_transaction_id`, or `access_token`. Context fields such as `internal_reference`, `time`, `amount`, and `bank_account` do not satisfy this identifier requirement. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectReportCreateRequest' /protect/compute: post: tags: - plaid summary: Compute Protect Trust Index scores and subscores externalDocs: url: /api/products/protect/#protectcompute responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProtectComputeResponse' examples: example-1: value: score: 86 model: ti-link-session-2.0 attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: protectCompute description: |- Compute a Protect Trust Index score for a user. The model selected determines what is scored and what additional fields the response contains. For example, `ti-link-session-2.0` scores a completed Link session for fraud risk; `cash-advance-onboarding-1.0` scores repayment risk for a first-time cash advance and additionally populates per-amount-bucket subscores. Cash-advance models require that the user have a Plaid Item with Transactions enabled, or an Assets Report, before scoring. The endpoint returns HTTP 400 with `error_type` = `INVALID_REQUEST` and `error_code` = `FAILED_PRECONDITION` when a required precondition is not met: for link-session models, when the Link session has not completed; for cash-advance models, when the user has not successfully linked any Item. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectComputeRequest' /protect/event/send: post: tags: - plaid summary: Send a new event to enrich user data deprecated: true externalDocs: url: none responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProtectEventSendResponse' examples: example-1: value: event_id: ptevt_cYNnF8xYE1v1om trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: protectEventSend description: Send a new event to enrich user data and optionally get a Trust Index score for the event. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectEventSendRequest' /protect/event/get: post: tags: - plaid summary: Get information about a user event deprecated: true externalDocs: url: none responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProtectEventGetResponse' examples: example-1: value: event_id: ptevt_cYNnF8xYE1v1om timestamp: "2020-07-24T03:26:02Z" trust_index: score: 86 model: trust_index.2.0.0 subscores: device_and_connection: score: 87 bank_account_insights: score: 85 fraud_attributes: link_session.linked_bank_accounts.user_pi_matches_owners: true link_session.linked_bank_accounts.connected_apps.days_since_first_connection: 582 session.challenged_with_mfa: false user.bank_accounts.num_of_frozen_or_restricted_accounts: 0 user.linked_bank_accounts.num_family_names: 1 user.linked_bank_accounts.num_of_connected_banks: 1 user.link_sessions.days_since_first_link_session: 150 user.pi.email.history_yrs: 7.03 user.pi.email.num_social_networks_linked: 12 user.pi.ssn.user_likely_has_better_ssn: false request_id: saKrIBuEB9qJZng operationId: protectEventGet description: Get information about a user event including Trust Index score and fraud attributes. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProtectEventGetRequest' /idv_classic/identity_assessments: {} /idv_classic/identity_searches/:id: {} /idv_classic/identity_searches: {} /idv_classic/profiles/:id/identity_searches: {} /idv_classic/profiles/:id: {} /idv_classic/profiles: {} /idv_classic/identity_searches/jobs/:id: {} /idv_classic/identity_assessments/:id: {} /business_verification/get: post: x-hidden-from-docs: true summary: Get a Business Verification operationId: businessVerificationGet externalDocs: url: /api/products/business-verification/#businessverificationget tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BusinessVerificationGetResponse' examples: example-1: value: id: busver_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" status: success search_terms: name: Acme Corporation alternative_names: - Acme Widgets address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US website: https://example.com phone_number: "+14025671234" email_address: user@example.com kyb_check: status: success score: 85 name: summary: match address: summary: match website: summary: match match_details: names: - is_primary: true name: Acme Corporation - is_primary: false name: Acme Widgets entity_type: llc addresses: - street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US is_primary: true phone_numbers: - number: "+12345678909" email_addresses: - email_address: business@example.com websites: - url: https://example.com formation_date: "1990-05-29" risk_check: status: success score: 92 industry_prediction: code: 518210 title: Data Processing, Hosting, and Related Services digital_presence_check: status: success score: 55 address: summary: match phone_number: summary: match email_address: summary: match website: summary: match website_analysis: is_parked: "no" email_is_deliverable: "yes" website_build_status: active whois_record: domain_created_at: "1995-08-16T00:00:00Z" domain_updated_at: "2025-07-11T00:00:00Z" domain_expires_at: "2026-08-15T00:00:00Z" registrar: GANDI SAS ssl: is_valid: "yes" shareable_url: https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f request_id: saKrIBuEB9qJZng description: Retrieve the current state of a specific business verification. requestBody: content: application/json: schema: $ref: '#/components/schemas/BusinessVerificationGetRequest' required: true /business_verification/create: post: x-hidden-from-docs: true summary: Create a Business Verification operationId: businessVerificationCreate externalDocs: url: /api/products/business-verification/#businessverificationcreate tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BusinessVerificationCreateResponse' examples: example-1: value: id: busver_52xR9LKo77r1Np client_user_id: your-db-id-3b24110 created_at: "2020-07-24T03:26:02Z" completed_at: "2020-07-24T03:26:02Z" redacted_at: "2020-07-24T03:26:02Z" status: success search_terms: name: Acme Corporation alternative_names: - Acme Widgets address: street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US website: https://example.com phone_number: "+14025671234" email_address: user@example.com kyb_check: status: success score: 85 name: summary: match address: summary: match website: summary: match match_details: names: - is_primary: true name: Acme Corporation - is_primary: false name: Acme Widgets entity_type: llc addresses: - street: 123 Main St. street2: Unit 42 city: Pawnee region: IN postal_code: "46001" country: US is_primary: true phone_numbers: - number: "+12345678909" email_addresses: - email_address: business@example.com websites: - url: https://example.com formation_date: "1990-05-29" risk_check: status: success score: 92 industry_prediction: code: 518210 title: Data Processing, Hosting, and Related Services digital_presence_check: status: success score: 55 address: summary: match phone_number: summary: match email_address: summary: match website: summary: match website_analysis: is_parked: "no" email_is_deliverable: "yes" website_build_status: active whois_record: domain_created_at: "1995-08-16T00:00:00Z" domain_updated_at: "2025-07-11T00:00:00Z" domain_expires_at: "2026-08-15T00:00:00Z" registrar: GANDI SAS ssl: is_valid: "yes" shareable_url: https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f request_id: saKrIBuEB9qJZng requestBody: content: application/json: schema: $ref: '#/components/schemas/BusinessVerificationCreateRequest' required: true description: Create a new business verification to check a business's identity and risk profile. /processor/auth/get: post: tags: - plaid summary: Retrieve Auth data externalDocs: url: /api/processor-partners/#processorauthget operationId: processorAuthGet responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ProcessorAuthGetResponse' examples: example-1: value: account: account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D balances: available: 100 current: 110 iso_currency_code: USD limit: null unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Checking subtype: checking type: depository numbers: ach: account: "9900009606" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D routing: "011401533" wire_routing: "021000021" eft: account: "111122223333" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D institution: "021" branch: "01140" international: account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D bic: NWBKGB21 iban: GB29NWBK60161331926819 bacs: account: "31926819" account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D sort_code: "601613" request_id: 1zlMf default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking, savings, or cash management account that''s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available. Versioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorAuthGetRequest' /processor/account/get: post: tags: - plaid summary: Retrieve the account associated with a processor token externalDocs: url: /api/processor-partners/#processoraccountget operationId: processorAccountGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorAccountGetResponse' examples: example-1: value: account: account_id: QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv balances: available: 100 current: 110 limit: null iso_currency_code: USD unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Checking subtype: checking type: depository institution_id: ins_109508 request_id: 1zlMf default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | This endpoint returns the account associated with a given processor token. This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, the account balance returned may not be up-to-date; for real-time balance information, use `/processor/balance/get` instead. Note that some information is nullable. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorAccountGetRequest' /processor/investments/holdings/get: post: tags: - plaid summary: Retrieve Investment Holdings externalDocs: url: /api/processor-partners/#processorinvestmentsholdingsget operationId: processorInvestmentsHoldingsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorInvestmentsHoldingsGetResponse' examples: example-1: value: account: account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 balances: available: null current: 110.01 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "5555" name: Plaid IRA official_name: null subtype: ira type: investment holdings: - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 1 institution_price: 1 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 0.01 iso_currency_code: USD quantity: 0.01 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 0.01 institution_price: 0.011 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 110 iso_currency_code: USD quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] securities: - close_price: 0.011 close_price_as_of: "2021-04-13" cusip: null institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD name: Nflx Feb 01'18 $355 Call proxy_security_id: null security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb sedol: null ticker_symbol: NFLX180201C00355000 type: derivative subtype: option unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Technology Services industry: Internet Software or Services cfi_code: OCASPS figi: null option_contract: contract_type: call expiration_date: "2018-02-01" strike_price: 355 underlying_security_ticker: NFLX fixed_income: null - close_price: 1 close_price_as_of: null cusip: null institution_id: null institution_security_id: null is_cash_equivalent: true isin: null iso_currency_code: USD name: U S Dollar proxy_security_id: null security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are sedol: null ticker_symbol: USD type: cash subtype: cash unofficial_currency_code: null update_datetime: null market_identifier_code: null sector: null industry: null cfi_code: null figi: null option_contract: null fixed_income: null request_id: 24MxmGFZz89Xg2f default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | This endpoint returns the stock position data of the account associated with a given processor token. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorInvestmentsHoldingsGetRequest' /processor/investments/auth/get: post: tags: - plaid summary: Get investment account authentication data description: | The `/processor/investments/auth/get` endpoint allows you to retrieve information about the account authorized by a processor token, including account numbers, account owners, holdings, and data provenance information. To receive Investments Auth webhooks for a processor token, set its webhook URL via the [`/processor/token/webhook/update`](https://plaid.com/docs/api/processor-partners/#processortokenwebhookupdate) endpoint. externalDocs: url: /api/processor-partners/#processorinvestmentsauthget operationId: processorInvestmentsAuthGet responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/ProcessorInvestmentsAuthGetResponse' examples: example-1: value: account: account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy balances: available: null current: 415.57 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "5555" name: Plaid IRA official_name: null subtype: ira type: investment owners: - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy names: - Alberta Bobbeth Charleson numbers: acats: - account: TR5555 account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy dtc_numbers: - "1111" - "2222" - "3333" holdings: - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 0.01 institution_price: 0.011 institution_price_as_of: "2021-05-25" institution_price_datetime: null institution_value: 110 iso_currency_code: USD quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 40 institution_price: 42.15 institution_price_as_of: "2021-05-25" institution_price_datetime: null institution_value: 210.75 iso_currency_code: USD quantity: 5 security_id: abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4 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 is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: Nflx Feb 01'18 $355 Call option_contract: null fixed_income: null proxy_security_id: null sector: null security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb sedol: null ticker_symbol: NFLX180201C00355000 type: derivative subtype: option unofficial_currency_code: null update_datetime: null - close_price: 42.15 close_price_as_of: null cusip: null cfi_code: CEOIES figi: null fixed_income: null industry: null institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: iShares Inc MSCI Brazil option_contract: null proxy_security_id: null sector: null security_id: abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4 sedol: null ticker_symbol: EWZ type: etf subtype: etf unofficial_currency_code: null update_datetime: null data_sources: numbers: INSTITUTION owners: INSTITUTION holdings: INSTITUTION 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/ProcessorInvestmentsAuthGetRequest' /processor/investments/transactions/get: post: tags: - plaid summary: Get investment transactions data externalDocs: url: /api/processor-partners/#processorinvestmentstransactionsget operationId: processorInvestmentsTransactionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorInvestmentsTransactionsGetResponse' examples: example-1: value: account: account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj balances: available: null current: 23631.9805 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "6666" name: Plaid 401k official_name: null subtype: 401k type: investment investment_transactions: - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj amount: -8.72 cancel_transaction_id: null date: "2020-05-29" transaction_datetime: null fees: 0 investment_transaction_id: oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW iso_currency_code: USD name: INCOME DIV DIVIDEND RECEIVED price: 0 quantity: 0 security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ subtype: dividend type: cash unofficial_currency_code: null - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj amount: -1289.01 cancel_transaction_id: null date: "2020-05-28" transaction_datetime: "2020-05-28T15:10:09Z" fees: 7.99 investment_transaction_id: pK99jB9e7mtwjA435GpVuMvmWQKVbVFLWme57 iso_currency_code: USD name: SELL Matthews Pacific Tiger Fund Insti Class price: 27.53 quantity: -47.74104242992852 security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP subtype: sell type: sell unofficial_currency_code: null request_id: iv4q3ZlytOOthkv securities: - close_price: 27 close_price_as_of: null cusip: "577130834" institution_id: null institution_security_id: null is_cash_equivalent: false isin: US5771308344 iso_currency_code: USD name: Matthews Pacific Tiger Fund Insti Class proxy_security_id: null security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP sedol: null ticker_symbol: MIPTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES figi: null option_contract: null fixed_income: null - close_price: 34.73 close_price_as_of: null cusip: 84470P109 institution_id: null institution_security_id: null is_cash_equivalent: false isin: US84470P1093 iso_currency_code: USD name: Southside Bancshares Inc. proxy_security_id: null security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ sedol: null ticker_symbol: SBSI type: equity subtype: common stock unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Finance industry: Regional Banks cfi_code: ESVUFR figi: null option_contract: null fixed_income: null total_investment_transactions: 2 default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/processor/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for the investment account associated with the processor token. Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift. Due to the potentially large number of investment transactions associated with the account, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions. Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/processor/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/processor/investments/transactions/get` immediately after Link may take up to one to two minutes to return. Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/processor/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/processor/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error. To receive Investments 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: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorInvestmentsTransactionsGetRequest' examples: {} /processor/transactions/get: post: tags: - plaid summary: Get transaction data externalDocs: url: /api/processor-partners/#processortransactionsget operationId: processorTransactionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsGetResponse' examples: example-1: value: account: account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 transactions: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place total_transactions: 2 request_id: Wvhy9PZHQLV8njG default: content: application/json: schema: $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` 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). Due to the potentially large number of transactions associated with a processor token, 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 `/processor/transactions/get` will be the data available for the processor token 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 force Plaid to check for new transactions, you can use the `/processor/transactions/refresh` endpoint. Note that data may not be immediately available to `/processor/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/processor/transactions/get`, if it wasn't. If no transaction history is ready when `/processor/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error. 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: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsGetRequest' examples: {} /processor/transactions/sync: post: tags: - plaid summary: Get incremental transaction updates on a processor token externalDocs: url: /api/processor-partners/#processortransactionssync operationId: processorTransactionsSync responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsSyncResponse' examples: example-1: value: account: account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: 110.94 current: 110.94 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 added: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 72.1 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: Walmart type: merchant logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM confidence_level: VERY_HIGH date: "2023-09-24" datetime: "2023-09-24T11:01:01Z" authorized_date: "2023-09-22" authorized_datetime: "2023-09-22T10:34:50Z" location: address: 13425 Community Rd city: Poway region: CA postal_code: "92064" country: US lat: 32.959068 lon: -117.037666 store_number: "1700" name: 'PURCHASE WM SUPERCENTER #1700' merchant_name: Walmart merchant_entity_id: O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM logo_url: https://plaid-merchant-logos.plaid.com/walmart_1100.png website: walmart.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: in store pending: false pending_transaction_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje transaction_code: null transaction_type: place modified: - account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_owner: null amount: 28.34 iso_currency_code: USD unofficial_currency_code: null check_number: null counterparties: - name: DoorDash type: marketplace logo_url: https://plaid-counterparty-logos.plaid.com/doordash_1.png website: doordash.com entity_id: YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm confidence_level: HIGH - name: Burger King type: merchant logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 confidence_level: VERY_HIGH date: "2023-09-28" datetime: "2023-09-28T15:10:09Z" authorized_date: "2023-09-27" authorized_datetime: "2023-09-27T08:01:58Z" location: address: null city: null region: null postal_code: null country: null lat: null lon: null store_number: null name: Dd Doordash Burgerkin merchant_name: Burger King merchant_entity_id: mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1 logo_url: https://plaid-merchant-logos.plaid.com/burger_king_155.png website: burgerking.com payment_meta: by_order_of: null payee: null payer: null payment_method: null payment_processor: null ppd_id: null reason: null reference_number: null payment_channel: online pending: true pending_transaction_id: null personal_finance_category: primary: FOOD_AND_DRINK detailed: FOOD_AND_DRINK_FAST_FOOD confidence_level: VERY_HIGH personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png transaction_id: yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 transaction_code: null transaction_type: digital removed: - transaction_id: CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp next_cursor: tVUUL15lYQN5rBnfDIc1I8xudpGdIlw9nsgeXWvhOfkECvUeR663i3Dt1uf/94S8ASkitgLcIiOSqNwzzp+bh89kirazha5vuZHBb2ZA5NtCDkkV has_more: false request_id: 45QSn transactions_update_status: HISTORICAL_UPDATE_COMPLETE default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |2- The `/processor/transactions/sync` endpoint retrieves transactions associated with an Item and can fetch updates using a cursor to track which updates have already been seen. 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` 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. If transactions data is not yet available for the Item, which can happen if the Item was not initialized with transactions during the `/link/token/create` call or if `/processor/transactions/sync` was called within a few seconds of Item creation, `/processor/transactions/sync` will return empty transactions arrays. Plaid typically checks for new transactions data between one and four times per day, depending on the institution. To find out when transactions were last updated for an Item, 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, use the `/processor/transactions/refresh` endpoint. To be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook. 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: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsSyncRequest' examples: {} /processor/transactions/refresh: post: tags: - plaid summary: Refresh transaction data externalDocs: url: /api/processor-partners/#processortransactionsrefresh operationId: processorTransactionsRefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsRefreshResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: content: application/json: schema: $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 `/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. `/processor/transactions/refresh` is offered as an add-on to Transactions and has a separate [fee model](https://plaid.com/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsRefreshRequest' /processor/transactions/recurring/get: post: tags: - plaid summary: Fetch recurring transaction streams externalDocs: url: /api/processor-partners/#processortransactionsrecurringget operationId: processorTransactionsRecurringGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsRecurringGetResponse' examples: example-1: value: updated_datetime: "2022-05-01T00:00:00Z" inflow_streams: - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje stream_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc category: null category_id: null description: Platypus Payroll merchant_name: null personal_finance_category: primary: INCOME detailed: INCOME_WAGES confidence_level: UNKNOWN first_date: "2022-02-28" last_date: "2022-04-30" predicted_next_date: "2022-05-15" frequency: SEMI_MONTHLY transaction_ids: - nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw - EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL - ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd - QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK - uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF average_amount: amount: -800 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: -1000 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false outflow_streams: - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff stream_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd category: null category_id: null description: ConEd Bill Payment merchant_name: ConEd personal_finance_category: primary: RENT_AND_UTILITIES detailed: RENT_AND_UTILITIES_GAS_AND_ELECTRICITY confidence_level: UNKNOWN first_date: "2022-02-04" last_date: "2022-05-02" predicted_next_date: "2022-06-02" frequency: MONTHLY transaction_ids: - yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 - HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR - jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L - CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l average_amount: amount: 85 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 100 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false - account_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff stream_id: SrBNJZDuUMweodmPmSOeOImwsWt53ZXfJQAfC category: null category_id: null description: Costco Annual Membership merchant_name: Costco personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_SUPERSTORES confidence_level: UNKNOWN first_date: "2022-01-23" last_date: "2023-01-22" predicted_next_date: "2024-01-22" frequency: ANNUALLY transaction_ids: - yqEBJ72cS4jFwcpxJcDuQr94oAQ1R1lMC33D4 - Kz5Hm3cZCgpn4tMEKUGAGD6kAcxMBsEZDSwJJ average_amount: amount: 120 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 120 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE is_user_modified: false request_id: tbFyCEqkU775ZGG default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/processor/transactions/recurring/get` endpoint allows developers to receive a summary of the recurring outflow and inflow streams (expenses and deposits) from a user's checking, savings or credit card accounts. Additionally, Plaid provides key insights about each recurring stream including the category, merchant, last amount, and more. Developers can use these insights to build tools and experiences that help their users better manage cash flow, monitor subscriptions, reduce spend, and stay on track with bill payments. This endpoint is offered as an add-on to Transactions. To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. 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 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: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTransactionsRecurringGetRequest' examples: {} /processor/signal/evaluate: post: tags: - plaid summary: Evaluate a planned ACH transaction externalDocs: url: /api/processor-partners/#processorsignalevaluate operationId: processorSignalEvaluate description: |- Use `/processor/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment and additional risk signals. `/processor/signal/evaluate` uses Rulesets that are configured on the end customer's Dashboard and can be used with either the Signal Transaction Scores product or the Balance product. Which product is used will be determined by the `ruleset_key` that you provide. Note that only customer-configured rulesets work with this endpoint; as a processor partner, you cannot create or configure your own rulesets. For more details, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/). Note: This request may have higher latency if Signal Transaction Scores is being added to an existing Item for the first time, or when using a Balance-only ruleset. This is because Plaid must communicate directly with the institution to request data. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalEvaluateResponse' examples: example-1: value: ruleset: result: ACCEPT ruleset_key: primary-ruleset triggered_rule_details: {} scores: customer_initiated_return_risk: score: 9 bank_initiated_return_risk: score: 72 core_attributes: available_balance: 2000 current_balance: 2200 warnings: [] request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalEvaluateRequest' /processor/signal/decision/report: post: tags: - plaid summary: Report whether you initiated an ACH transaction externalDocs: url: /api/processor-partners/#processorsignaldecisionreport operationId: processorSignalDecisionReport description: |- After you call `/processor/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 `/processor/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 `/processor/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 `/processor/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 `/processor/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 content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalDecisionReportResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalDecisionReportRequest' /processor/signal/return/report: post: tags: - plaid summary: Report a return for an ACH transaction externalDocs: url: /api/processor-partners/#processorsignalreturnreport operationId: processorSignalReturnReport description: |- Call the `/processor/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/processor/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio. If you are using the [Plaid Transfer product](https://plaid.com/docs/transfer) to create transfers, it is not necessary to use this endpoint, as Plaid already knows whether the transfer was returned. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalReturnReportResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalReturnReportRequest' /processor/signal/prepare: post: tags: - plaid summary: Opt-in a processor token to Signal externalDocs: url: /api/processor-partners/#processorsignalprepare operationId: processorSignalPrepare description: |- When a processor token is not initialized with `signal`, call `/processor/signal/prepare` to opt-in that processor token to the data collection process, which will improve the accuracy of the Signal Transaction Score. If this endpoint is called with a processor token that is already initialized with `signal`, it will return a 200 response and will not modify the processor token. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalPrepareResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorSignalPrepareRequest' /processor/bank_transfer/create: post: tags: - plaid summary: (Deprecated) Create a bank transfer as a processor deprecated: true externalDocs: url: /api/processor-partners/#bank_transfercreate operationId: processorBankTransferCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorBankTransferCreateResponse' examples: example-1: value: bank_transfer: account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B ach_class: ppd amount: "12.34" cancellable: true created: "2020-08-06T17:27:15Z" custom_tag: my tag description: Testing2 direction: outbound failure_reason: null id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 iso_currency_code: USD metadata: key1: value1 key2: value2 network: ach origination_account_id: 11111111-1111-1111-1111-111111111111 status: pending type: credit user: email_address: plaid@plaid.com legal_name: John Smith routing_number: "111111111" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorBankTransferCreateRequest' /processor/liabilities/get: post: tags: - plaid summary: Retrieve Liabilities data externalDocs: url: /api/processor-partners/#processorliabilitiesget operationId: processorLiabilitiesGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorLiabilitiesGetResponse' examples: example-1: value: account: 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 liabilities: credit: - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK aprs: - apr_percentage: 15.24 apr_type: balance_transfer_apr balance_subject_to_apr: 1562.32 interest_charge_amount: 130.22 - apr_percentage: 27.95 apr_type: cash_apr balance_subject_to_apr: 56.22 interest_charge_amount: 14.81 - apr_percentage: 12.5 apr_type: purchase_apr balance_subject_to_apr: 157.01 interest_charge_amount: 25.66 - apr_percentage: 0 apr_type: special balance_subject_to_apr: 1000 interest_charge_amount: 0 is_overdue: false last_payment_amount: 168.25 last_payment_date: "2019-05-22" last_statement_issue_date: "2019-05-28" last_statement_balance: 1708.77 minimum_payment_amount: 20 next_payment_due_date: "2020-05-28" mortgage: [] student: [] request_id: dTnnm60WgKGLnKL default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/processor/liabilities/get` endpoint returns various details about a loan or credit account. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/processor/liabilities/get`. Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the processor token. This is because Plaid must communicate directly with the institution to retrieve the additional data. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorLiabilitiesGetRequest' /processor/identity/get: post: tags: - plaid summary: Retrieve Identity data externalDocs: url: /api/processor-partners/#processoridentityget operationId: processorIdentityGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorIdentityGetResponse' examples: example-1: value: account: account_id: XMGPJy4q1gsQoKd5z9R3tK8kJ9EWL8SdkgKMq 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 owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: "2025550123" primary: false type: home - data: "1112224444" primary: false type: work - data: "1112225555" primary: false type: mobile1 subtype: checking type: depository request_id: eOPkBl6t33veI2J default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorIdentityGetRequest' /processor/identity/match: post: tags: - plaid summary: Retrieve identity match score externalDocs: url: /api/processor-partners/#processoridentitymatch operationId: processorIdentityMatch responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorIdentityMatchResponse' examples: example-1: value: account: account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp balances: available: null current: null iso_currency_code: null limit: null unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking legal_name: score: 90 is_nickname_match: true is_first_name_or_last_name_match: true is_business_name_detected: false phone_number: score: 100 email_address: score: 100 address: score: 100 is_postal_code_match: true subtype: checking type: depository request_id: 3nARps6TOYtbACO default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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 `/processor/identity/match`. Instead, use the `/processor/balance/get` endpoint to retrieve balance data. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorIdentityMatchRequest' description: "" /processor/balance/get: post: tags: - plaid summary: Retrieve Balance data externalDocs: url: /api/processor-partners/#processorbalanceget operationId: processorBalanceGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorBalanceGetResponse' examples: example-1: value: account: account_id: QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv balances: available: 100 current: 110 limit: null iso_currency_code: USD unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Checking subtype: checking type: depository request_id: 1zlMf default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: 'The `/processor/balance/get` endpoint returns the real-time balance for each of an Item''s accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorBalanceGetRequest' description: |- The `/processor/balance/get` endpoint returns the real-time balance for the account associated with a given `processor_token`. The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account. Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of `null`. /item/webhook/update: post: tags: - plaid summary: Update Webhook URL externalDocs: url: /api/items/#itemwebhookupdate operationId: itemWebhookUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemWebhookUpdateResponse' examples: example-1: value: item: available_products: - balance - identity - payment_initiation - transactions billed_products: - assets - auth consent_expiration_time: null error: null institution_id: ins_117650 institution_name: Royal Bank of Plaid item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: vYK11LNTfRoAMbj default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/items/#webhook_update_acknowledged) webhook to the newly specified webhook URL. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemWebhookUpdateRequest' /item/access_token/invalidate: post: tags: - plaid summary: Invalidate access_token externalDocs: url: /api/items/#itemaccess_tokeninvalidate operationId: itemAccessTokenInvalidate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemAccessTokenInvalidateResponse' examples: example-1: value: new_access_token: access-sandbox-8ab976e6-64bc-4b38-98f7-731e7a349970 request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner. You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemAccessTokenInvalidateRequest' /webhook_verification_key/get: post: tags: - plaid summary: Get webhook verification key externalDocs: url: /api/webhooks/webhook-verification/#get-webhook-verification-key operationId: webhookVerificationKeyGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WebhookVerificationKeyGetResponse' examples: example-1: value: key: alg: ES256 created_at: 1560466150 crv: P-256 expired_at: null kid: bfbd5111-8e33-4643-8ced-b2e642a72f3c kty: EC use: sig x: hKXLGIjWvCBv-cP5euCTxl8g9GLG9zHo_3pO5NN1DwQ "y": shhexqPB7YffGn6fR6h2UhTSuCtPmfzQJ6ENVIoO4Ys request_id: RZ6Omi1bzzwDaLo default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header. The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WebhookVerificationKeyGetRequest' description: "" /liabilities/get: post: tags: - plaid summary: Retrieve Liabilities data externalDocs: url: /api/products/liabilities/#liabilitiesget operationId: liabilitiesGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LiabilitiesGetResponse' examples: example-1: 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 - account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J balances: available: null current: 56302.06 iso_currency_code: USD limit: null unofficial_currency_code: null mask: "8888" name: Plaid Mortgage official_name: null subtype: mortgage type: loan item: available_products: - balance - investments billed_products: - assets - auth - identity - liabilities - transactions consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH liabilities: credit: - account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK aprs: - apr_percentage: 15.24 apr_type: balance_transfer_apr balance_subject_to_apr: 1562.32 interest_charge_amount: 130.22 - apr_percentage: 27.95 apr_type: cash_apr balance_subject_to_apr: 56.22 interest_charge_amount: 14.81 - apr_percentage: 12.5 apr_type: purchase_apr balance_subject_to_apr: 157.01 interest_charge_amount: 25.66 - apr_percentage: 0 apr_type: special balance_subject_to_apr: 1000 interest_charge_amount: 0 is_overdue: false last_payment_amount: 168.25 last_payment_date: "2019-05-22" last_statement_issue_date: "2019-05-28" last_statement_balance: 1708.77 minimum_payment_amount: 20 next_payment_due_date: "2020-05-28" mortgage: - account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J account_number: "3120194154" current_late_fee: 25 escrow_balance: 3141.54 has_pmi: true has_prepayment_penalty: true interest_rate: percentage: 3.99 type: fixed last_payment_amount: 3141.54 last_payment_date: "2019-08-01" loan_term: 30 year loan_type_description: conventional maturity_date: "2045-07-31" next_monthly_payment: 3141.54 next_payment_due_date: "2019-11-15" origination_date: "2015-08-01" origination_principal_amount: 425000 past_due_amount: 2304 property_address: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road ytd_interest_paid: 12300.4 ytd_principal_paid: 12340.5 student: - account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE account_number: "4277075694" disbursement_dates: - "2002-08-28" expected_payoff_date: "2032-07-28" guarantor: DEPT OF ED interest_rate_percentage: 5.25 is_overdue: false last_payment_amount: 138.05 last_payment_date: "2019-04-22" last_statement_issue_date: "2019-04-28" last_statement_balance: 1708.77 loan_name: Consolidation loan_status: end_date: "2032-07-28" type: repayment minimum_payment_amount: 25 next_payment_due_date: "2019-05-28" origination_date: "2002-08-28" origination_principal_amount: 25000 outstanding_interest_amount: 6227.36 payment_reference_number: "4277075694" pslf_status: estimated_eligibility_date: null payments_made: null payments_remaining: null repayment_plan: description: Standard Repayment type: standard sequence_number: "1" servicer_address: city: San Matias country: US postal_code: "99415" region: CA street: 123 Relaxation Road ytd_interest_paid: 280.55 ytd_principal_paid: 271.65 request_id: dTnnm60WgKGLnKL default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LiabilitiesGetRequest' description: |- The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/link/#linktokencreate). The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`. /payment_initiation/recipient/create: post: tags: - plaid summary: Create payment recipient externalDocs: url: /api/products/payment-initiation/#payment_initiationrecipientcreate operationId: paymentInitiationRecipientCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientCreateResponse' examples: example-1: value: recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6 request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | Create a payment recipient for payment initiation. The recipient must be in Europe, within a country that is a member of the Single Euro Payments Area (SEPA) or a non-Eurozone country [supported](https://support.plaid.com/hc/en-us/articles/27895826947735-What-Plaid-products-are-supported-in-each-country-and-region) by Plaid. For a standing order (recurring) payment, the recipient must be in the UK. It is recommended to use `bacs` in the UK and `iban` in EU. The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientCreateRequest' /payment_initiation/payment/reverse: post: tags: - plaid summary: Reverse an existing payment externalDocs: url: /api/products/payment-initiation/#payment_initiationpaymentreverse operationId: paymentInitiationPaymentReverse responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentReverseResponse' examples: example-1: value: refund_id: wallet-transaction-id-production-c5f8cd31-6cae-4cad-9b0d-f7c10be9cc4b request_id: HtlKzBX0fMeF7mU status: INITIATED default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | Reverse a settled payment from a Plaid virtual account. The original payment must be in a settled state to be refunded. To refund partially, specify the amount as part of the request. If the amount is not specified, the refund amount will be equal to all of the remaining payment amount that has not been refunded yet. The refund will go back to the source account that initiated the payment. The original payment must have been initiated to a Plaid virtual account so that this account can be used to initiate the refund. Providing counterparty information such as date of birth and address increases the likelihood of refund being successful without human intervention. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentReverseRequest' /payment_initiation/recipient/get: post: tags: - plaid summary: Get payment recipient externalDocs: url: /api/products/payment-initiation/#payment_initiationrecipientget operationId: paymentInitiationRecipientGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientGetResponse' examples: example-1: value: recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6 name: Wonder Wallet iban: GB29NWBK60161331926819 address: street: - 96 Guild Street - 9th Floor city: London postal_code: SE14 8JW country: GB request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Get details about a payment recipient you have previously created. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientGetRequest' /payment_initiation/recipient/list: post: tags: - plaid summary: List payment recipients externalDocs: url: /api/products/payment-initiation/#payment_initiationrecipientlist operationId: paymentInitiationRecipientList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientListResponse' examples: example-1: value: recipients: - recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6 name: Wonder Wallet iban: GB29NWBK60161331926819 address: street: - 96 Guild Street - 9th Floor city: London postal_code: SE14 8JW country: GB next_cursor: YWJjMTIzIT8kKiYoKSctPUE request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/payment_initiation/recipient/list` endpoint lists the payment recipients that you have previously created. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRecipientListRequest' /payment_initiation/payment/create: post: tags: - plaid summary: Create a payment externalDocs: url: /api/products/payment-initiation/#payment_initiationpaymentcreate operationId: paymentInitiationPaymentCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentCreateResponse' examples: example-1: value: payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 status: PAYMENT_STATUS_INPUT_NEEDED request_id: 4ciYVmesrySiUAB default: description: Error response content: application/json: 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 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: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentCreateRequest' description: "" /payment_initiation/payment/token/create: post: tags: - plaid deprecated: true summary: Create payment token externalDocs: url: /link/maintain-legacy-integration/#creating-a-payment-token operationId: createPaymentToken responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentTokenCreateResponse' examples: example-1: value: payment_token: payment-token-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 payment_token_expiration_time: "2020-01-01T00:00:00Z" request_id: 4ciYVmesrySiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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` 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: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentTokenCreateRequest' /payment_initiation/consent/create: post: tags: - plaid summary: Create payment consent externalDocs: url: /api/products/payment-initiation/#payment_initiationconsentcreate operationId: paymentInitiationConsentCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentCreateResponse' examples: example-1: value: consent_id: consent-id-production-feca8a7a-5491-4444-9999-f3062bb735d3 status: UNAUTHORISED request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/payment_initiation/consent/create` endpoint is used to create a payment consent, which can be used to initiate payments on behalf of the user. Payment consents are created with `UNAUTHORISED` status by default and must be authorised by the user before payments can be initiated. Consents can be limited in time and scope, and have constraints that describe limitations for payments. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentCreateRequest' /payment_initiation/consent/get: post: tags: - plaid summary: Get payment consent externalDocs: url: /api/products/payment-initiation/#payment_initiationconsentget operationId: paymentInitiationConsentGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentGetResponse' examples: example-1: value: request_id: 4ciYuuesdqSiUAB consent_id: consent-id-production-feca8a7a-5491-4aef-9298-f3062bb735d3 status: AUTHORISED created_at: "2021-10-30T15:26:48Z" recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6 reference: ref-00001 constraints: valid_date_time: from: "2021-12-25T11:12:13Z" to: "2022-12-31T15:26:48Z" max_payment_amount: currency: GBP value: 100 periodic_amounts: - amount: currency: GBP value: 300 interval: WEEK alignment: CALENDAR type: SWEEPING default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/payment_initiation/consent/get` endpoint can be used to check the status of a payment consent, as well as to receive basic information such as recipient and constraints. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentGetRequest' /payment_initiation/consent/revoke: post: tags: - plaid summary: Revoke payment consent externalDocs: url: /api/products/payment-initiation/#payment_initiationconsentrevoke operationId: paymentInitiationConsentRevoke responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentRevokeResponse' examples: example-1: value: request_id: 4ciYaaesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/payment_initiation/consent/revoke` endpoint can be used to revoke the payment consent. Once the consent is revoked, it is not possible to initiate payments using it. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentRevokeRequest' /payment_initiation/consent/payment/execute: post: tags: - plaid summary: Execute a single payment using consent externalDocs: url: /api/products/payment-initiation/#payment_initiationconsentpaymentexecute operationId: paymentInitiationConsentPaymentExecute responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentPaymentExecuteResponse' examples: example-1: value: payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 request_id: 4ciYccesdqSiUAB status: PAYMENT_STATUS_INITIATED default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationConsentPaymentExecuteRequest' /sandbox/item/reset_login: post: tags: - plaid summary: Force a Sandbox Item into an error state externalDocs: url: /api/sandbox/#sandboxitemreset_login operationId: sandboxItemResetLogin responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxItemResetLoginResponse' examples: example-1: value: reset_login: true request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: 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. 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 content: application/json: schema: $ref: '#/components/schemas/SandboxItemResetLoginRequest' /sandbox/item/application/seed: post: tags: - plaid summary: Seed a connected application for a Permissions Manager sandbox item operationId: sandboxItemApplicationSeed description: |- `/sandbox/item/application/seed` creates a test connected application on an existing Permissions Manager Item's login. The seeded application will appear in subsequent calls to `/item/application/list`. The `access_token` must belong to a Permissions Manager Item created via `/item/import` in Sandbox. The `application_id` identifies the application to seed as a connected app. To disconnect a seeded application, use `/item/application/unlink`. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxItemApplicationSeedResponse' examples: example-1: value: item_id: 9xGbdRaG3gianaxoELGpILQ7drV3RnclMGdKJ 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/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: - plaid summary: Set verification status for Sandbox account externalDocs: url: /api/sandbox/#sandboxitemset_verification_status operationId: sandboxItemSetVerificationStatus responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxItemSetVerificationStatusResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in the Sandbox in order to simulate the Automated Micro-deposit flow. For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxItemSetVerificationStatusRequest' /sandbox/user/reset_login: post: tags: - plaid summary: Force item(s) for a Sandbox User into an error state externalDocs: url: /api/sandbox/#sandboxuserreset_login operationId: sandboxUserResetLogin responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxUserResetLoginResponse' examples: example-1: value: request_id: n7XQnv8ozwyFPBC default: description: Error response content: application/json: 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. 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 content: application/json: schema: $ref: '#/components/schemas/SandboxUserResetLoginRequest' /item/public_token/exchange: post: tags: - plaid summary: Exchange public token for an access token externalDocs: url: /api/items/#itempublic_tokenexchange operationId: itemPublicTokenExchange responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemPublicTokenExchangeResponse' examples: example-1: value: access_token: access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6 item_id: M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op request_id: Aim3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes. An `access_token` does not expire, but can be revoked by calling `/item/remove`. The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemPublicTokenExchangeRequest' /item/public_token/create: post: tags: - plaid summary: (Deprecated) Create public token deprecated: true externalDocs: url: /api/link/#itempublic_tokencreate operationId: itemCreatePublicToken responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemPublicTokenCreateResponse' examples: example-1: value: public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d request_id: Aim3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode). If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`. A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally. The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemPublicTokenCreateRequest' /user/create: post: tags: - plaid summary: Create user externalDocs: url: /api/users/#usercreate operationId: userCreate security: - clientId: [] secret: [] plaidVersion: [] - oauth2: - user:write responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserCreateResponse' examples: example-1: value: user_id: usr_9nSp2KuZ2x4JDw request_id: Aim3b example-2: value: 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 (Identity). If you are using Plaid Protect Link session scoring, you do not need to call `/user/create` first; Plaid will resolve or create the user when `user.client_user_id` is provided in `/link/token/create`. For 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). 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. When using Plaid Protect, it is highly recommended that you provide an `identity` object to better identify and block fraud across your Link sessions. Plaid will normalize identity fields before storing them and utilize the same identity across different user-based products. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserCreateRequest' parameters: - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' /user/get: post: tags: - plaid summary: Retrieve user identity and information externalDocs: url: /api/users/#userget operationId: userGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserGetResponse' examples: example-1: value: user_id: usr_8c6ZbDAYjacUXF client_user_id: uid_12345 created_at: "2019-02-15T15:51:39Z" updated_at: "2019-02-15T15:52:39Z" request_id: m8MDnv9okwxFNBV identity: name: given_name: Alice family_name: Johnson date_of_birth: "1988-07-22" emails: - data: alice.johnson@example.com primary: true - data: alice.j@workmail.com primary: false phone_numbers: - data: "+15551234567" primary: true - data: "+15559876543" primary: false addresses: - street_1: 123 Main St street_2: Apt 4B city: Anytown region: CA country: US postal_code: "90210" primary: true id_numbers: - value: "1234" type: us_ssn_last_4 default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Get user details using a `user_id`. This endpoint only supports users that were created on the new user API flow, without a `user_token`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). requestBody: required: true content: application/json: schema: $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: - plaid summary: Update user information externalDocs: url: /api/users/#userupdate operationId: userUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserUpdateResponse' examples: example-1: value: request_id: Aim3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- This endpoint updates user information for an existing `user_id` or `user_token`. If an existing `user_id` or `user_token` is missing fields required for a given use case (e.g. creating a Consumer Report) use `/user/update` to add values for those fields. Identity updates use merge semantics: provided fields overwrite existing ones; omitted fields remain unchanged. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserUpdateRequest' parameters: - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' /user/remove: post: tags: - plaid summary: Remove user externalDocs: url: /api/users/#userremove operationId: userRemove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserRemoveResponse' examples: example-1: value: request_id: Aim3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: '`/user/remove` deletes a `user_id` or `user_token` and associated information, including any Items associated with the user.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserRemoveRequest' parameters: - $ref: '#/components/parameters/PlaidNewUserApiEnabledHeader' /user/products/terminate: post: tags: - plaid summary: Terminate user-based products externalDocs: url: /api/users/#userproductsterminate operationId: userProductsTerminate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserProductsTerminateResponse' examples: example-1: value: request_id: TxlxEcCmP9HTTT default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Terminates user-based recurring subscription bundles or products (Financial Management, Plaid Protect, and CRA Cash Flow Updates) associated with a `user_id`. After you call this endpoint, the user will no longer be billed for these products. For CRA Monitoring, the subscription is canceled but historical data remains available for future report requests. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserProductsTerminateRequest' examples: example-1: value: user_id: usr_8c3ZbDBYjaqUXZ reason_code: CONSUMER_ACCOUNT_CLOSED reason_note: User closed account with client. example-2: value: user_id: usr_8c3ZbDBYjaqUXZ reason_code: CONSUMER_LOAN_PAID_OFF reason_note: Consumer loan has been paid in full. /user/items/get: post: tags: - plaid summary: Get Items associated with a User externalDocs: url: /api/users/#useritemsget operationId: userItemsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserItemsGetResponse' examples: example-1: value: items: - available_products: - balance - auth billed_products: - identity - transactions error: null institution_id: ins_109508 institution_name: First Platypus Bank item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr update_type: background webhook: https://plaid.com/example/hook consent_expiration_time: null - available_products: - balance - identity - payment_initiation - transactions billed_products: - assets - auth error: null institution_id: ins_109508 institution_name: First Platypus Bank item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 update_type: background webhook: https://plaid.com/example/hook consent_expiration_time: null request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Returns Items associated with a `user_id`, along with their corresponding statuses. Plaid associates an Item with a User when it has been successfully connected within a Link session initialized with that `user_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserItemsGetRequest' /user/items/associate: x-hidden-from-docs: true post: tags: - plaid summary: Associate Items to a User externalDocs: url: /api/users/#useritemsassociate operationId: userItemsAssociate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserItemsAssociateResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Associates Items to the target user. If an Item is already associated to another user, the Item will be disassociated with the existing user and associated to the target user. This operation supports a max of 100 Items. requestBody: required: true content: 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: |- Removes specific Items associated with a user. It is equivalent to calling `/item/remove` on each Item individually, but supports use cases (such as Plaid Check) where access tokens are not available. All specified Items must belong to the user or the entire operation fails. Similar to `/item/remove`, this deletes Item product data and terminates billing on the Item's products. Once removed, Items cannot be reconnected without going through Link again. This endpoint is not intended to remove all data for a user, as it will only remove Items and no other data for the user. If the user has any user-based recurring subscription products (Financial Management, Plaid Protect, or CRA Cash Flow Updates) and is deleting their account with your product, also call `/user/products/terminate` to end those subscriptions; per-Item billing is already terminated by this endpoint. For a user initiated data deletion request, see the [Consumer Service Center](https://plaid.com/check/consumer-service-center/) to revoke access to data. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserItemsRemoveRequest' /user/third_party_token/create: x-hidden-from-docs: true post: tags: - plaid summary: Create a third-party user token externalDocs: url: /api/users/#userthirdpartytokencreate operationId: userThirdPartyTokenCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserThirdPartyTokenCreateResponse' examples: example-1: value: request_id: Aim3b third_party_user_token: third-party-user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- This endpoint is used to create a third-party user token. This token can be shared with and used by a specified third-party client to access data associated with the user through supported endpoints. Ensure you store the `third_party_user_token` along with the `user_token` and `third_party_client_id`, as it is not possible to retrieve a previously created `third_party_user_token`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserThirdPartyTokenCreateRequest' /user/third_party_token/remove: x-hidden-from-docs: true post: tags: - plaid summary: Remove a third-party user token externalDocs: url: /api/users/#userthirdpartytokenremove operationId: userThirdPartyTokenRemove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserThirdPartyTokenRemoveResponse' examples: example-1: value: request_id: Aim3b removed: true default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- 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: required: true content: application/json: schema: $ref: '#/components/schemas/UserThirdPartyTokenRemoveRequest' /credit/sessions/get: post: tags: - plaid summary: Retrieve Link sessions for your user externalDocs: url: /api/products/income/#creditsessionsget operationId: creditSessionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditSessionsGetResponse' examples: example-1: value: request_id: Aim3b sessions: - link_session_id: 356dbb28-7f98-44d1-8e6d-0cec580f3171 results: item_add_results: - public_token: public-sandbox-5c224a01-8314-4491-a06f-39e193d5cddc item_id: M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op institution_id: ins_56 bank_income_results: - status: APPROVED item_id: M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op institution_id: ins_56 session_start_time: "2022-09-30T23:40:30.946225Z" - link_session_id: f742cae8-31e4-49cc-a621-6cafbdb26fb9 results: payroll_income_results: - num_paystubs_retrieved: 2 num_w2s_retrieved: 1 institution_id: ins_92 session_start_time: "2022-09-26T23:40:30.946225Z" default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- This endpoint can be used for your end users after they complete the Link flow. This endpoint returns a list of Link sessions that your user completed, where each session includes the results from the Link flow. These results include details about the Item that was created and some product related metadata (showing, for example, whether the user finished the bank income verification step). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditSessionsGetRequest' /payment_initiation/payment/get: post: tags: - plaid summary: Get payment details externalDocs: url: /api/products/payment-initiation/#payment_initiationpaymentget operationId: paymentInitiationPaymentGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentGetResponse' examples: example-1: value: payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 reference: Account Funding 99744 amount: currency: GBP value: 100 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: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- 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. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentGetRequest' description: "" /payment_initiation/payment/list: post: tags: - plaid summary: List payments externalDocs: url: /api/products/payment-initiation/#payment_initiationpaymentlist operationId: paymentInitiationPaymentList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentListResponse' examples: example-1: value: payments: - payment_id: payment-id-sandbox-feca8a7a-5581-4aef-9297-f3062bb735d3 reference: Account Funding 99744 amount: currency: GBP value: 100 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 end_to_end_id: sptch8cde8390bfd363888 next_cursor: "2020-01-01T00:00:00Z" request_id: aEAQmewMzlVa1k6 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationPaymentListRequest' description: The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters. /investments/holdings/get: post: tags: - plaid summary: Get Investment holdings externalDocs: url: /api/products/investments/#investmentsholdingsget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InvestmentsHoldingsGetResponse' examples: example-1: value: accounts: - account_id: 5Bvpj4QknlhVWk7GygpwfVKdd133GoCxB814g balances: available: 43200 current: 43200 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "4444" name: Plaid Money Market official_name: Plaid Platinum Standard 1.85% Interest Money Market subtype: money market type: depository - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 balances: available: null current: 110.01 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "5555" name: Plaid IRA official_name: null subtype: ira type: investment - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm balances: available: null current: 24580.0605 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "6666" name: Plaid 401k official_name: null subtype: 401k type: investment - account_id: ax0xgOBYRAIqOOjeLZr0iZBb8r6K88HZXpvmq balances: available: 48200.03 current: 48200.03 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "4092" name: Plaid Crypto Exchange Account official_name: null subtype: crypto exchange type: investment holdings: - account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1 cost_basis: 1 institution_price: 1 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 0.01 iso_currency_code: USD quantity: 0.01 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1.5 institution_price: 2.11 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 2.11 iso_currency_code: USD quantity: 1 security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 10 institution_price: 10.42 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 20.84 iso_currency_code: USD quantity: 2 security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk 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 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 110 iso_currency_code: USD quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 23 institution_price: 27 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 636.309 iso_currency_code: USD quantity: 23.567 security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 15 institution_price: 13.73 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 1373.6865 iso_currency_code: USD quantity: 100.05 security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 948.08 institution_price: 94.808 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 948.08 iso_currency_code: USD quantity: 10 security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm cost_basis: 1 institution_price: 1 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 12345.67 iso_currency_code: USD quantity: 12345.67 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: ax0xgOBYRAIqOOjeLZr0iZBb8r6K88HZXpvmq cost_basis: 92.47 institution_price: 0.177494362 institution_price_as_of: "2022-01-14" institution_price_datetime: "2022-06-07T23:01:00Z" institution_value: 4437.35905 iso_currency_code: USD quantity: 25000 security_id: vLRMV3MvY1FYNP91on35CJD5QN5rw9Fpa9qOL unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] item: available_products: - balance - identity - liabilities - transactions billed_products: - assets - auth - investments consent_expiration_time: null error: null institution_id: ins_56 institution_name: Chase item_id: 4z9LPae1nRHWy8pvg9jrsgbRP4ZNQvIdbLq7g update_type: background webhook: https://www.genericwebhookurl.com/webhook auth_method: INSTANT_AUTH request_id: l68wb8zpS0hqmsJ securities: - close_price: 0.011 close_price_as_of: "2021-04-13" cusip: null institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD name: Nflx Feb 01'18 $355 Call proxy_security_id: null security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb sedol: null ticker_symbol: NFLX180201C00355000 type: derivative subtype: option unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Technology Services industry: Internet Software or Services cfi_code: OCASPS figi: null option_contract: contract_type: call expiration_date: "2018-02-01" strike_price: 355 underlying_security_ticker: NFLX fixed_income: null - close_price: 27 close_price_as_of: null cusip: "577130834" institution_id: null institution_security_id: null is_cash_equivalent: false isin: US5771308344 iso_currency_code: USD name: Matthews Pacific Tiger Fund Insti Class proxy_security_id: null security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP sedol: null ticker_symbol: MIPTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES figi: null option_contract: null fixed_income: null - close_price: 2.11 close_price_as_of: null cusip: 00448Q201 institution_id: null institution_security_id: null is_cash_equivalent: false isin: US00448Q2012 iso_currency_code: USD name: Achillion Pharmaceuticals Inc. proxy_security_id: null security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy sedol: null ticker_symbol: ACHN type: equity subtype: common stock unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Health Technology industry: Major Pharmaceuticals cfi_code: ESVUFR figi: null option_contract: null fixed_income: null - close_price: 10.42 close_price_as_of: null cusip: "258620103" institution_id: null institution_security_id: null is_cash_equivalent: false isin: US2586201038 iso_currency_code: USD name: DoubleLine Total Return Bond Fund proxy_security_id: null security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk sedol: null ticker_symbol: DBLTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: null industry: null cfi_code: CIOIBS figi: null option_contract: null fixed_income: null - close_price: 1 close_price_as_of: null cusip: null institution_id: null institution_security_id: null is_cash_equivalent: true isin: null iso_currency_code: USD name: U S Dollar proxy_security_id: null security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are sedol: null ticker_symbol: USD type: cash subtype: cash unofficial_currency_code: null update_datetime: null market_identifier_code: null 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_56 institution_security_id: NHX105509 is_cash_equivalent: false isin: null iso_currency_code: USD name: NH PORTFOLIO 1055 (FIDELITY INDEX) proxy_security_id: null security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN sedol: null ticker_symbol: NHX105509 type: etf subtype: etf unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: null industry: null cfi_code: null figi: null option_contract: null fixed_income: null - close_price: 94.808 close_price_as_of: "2023-11-02" cusip: 912797HE0 institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD name: US Treasury Bill - 5.43% 31/10/2024 USD 100 proxy_security_id: null security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea sedol: null ticker_symbol: null type: fixed income subtype: bill unofficial_currency_code: null update_datetime: null market_identifier_code: null sector: Government industry: Sovereign Government cfi_code: DYZTXR figi: null option_contract: null fixed_income: face_value: 100 issue_date: "2023-11-02" maturity_date: "2024-10-31" yield_rate: percentage: 5.43 type: coupon_equivalent - close_price: 0.140034616 close_price_as_of: "2022-01-24" cusip: null institution_id: ins_56 institution_security_id: null is_cash_equivalent: true isin: null iso_currency_code: USD name: Dogecoin proxy_security_id: null security_id: vLRMV3MvY1FYNP91on35CJD5QN5rw9Fpa9qOL sedol: null ticker_symbol: DOGE type: cryptocurrency subtype: cryptocurrency unofficial_currency_code: null update_datetime: "2022-06-07T23:01:00Z" market_identifier_code: XNAS sector: null industry: null cfi_code: null figi: null option_contract: null fixed_income: null default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: investmentsHoldingsGet description: The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvestmentsHoldingsGetRequest' /investments/transactions/get: post: tags: - plaid summary: Get investment transactions externalDocs: url: /api/products/investments/#investmentstransactionsget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InvestmentsTransactionsGetResponse' examples: example-1: value: accounts: - account_id: 5e66Dl6jNatx3nXPGwZ7UkJed4z6KBcZA4Rbe balances: available: 100 current: 110 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking subtype: checking type: depository - account_id: KqZZMoZmBWHJlz7yKaZjHZb78VNpaxfVa7e5z balances: available: null current: 320.76 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "5555" name: Plaid IRA official_name: null subtype: ira type: investment - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj balances: available: null current: 23631.9805 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "6666" name: Plaid 401k official_name: null subtype: 401k type: investment investment_transactions: - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj amount: -8.72 cancel_transaction_id: null date: "2020-05-29" transaction_datetime: null fees: 0 investment_transaction_id: oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW iso_currency_code: USD name: INCOME DIV DIVIDEND RECEIVED price: 0 quantity: 0 security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ subtype: dividend type: cash unofficial_currency_code: null - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj amount: -1289.01 cancel_transaction_id: null date: "2020-05-28" transaction_datetime: "2020-05-28T15:10:09Z" fees: 7.99 investment_transaction_id: pK99jB9e7mtwjA435GpVuMvmWQKVbVFLWme57 iso_currency_code: USD name: SELL Matthews Pacific Tiger Fund Insti Class price: 27.53 quantity: -47.74104242992852 security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP subtype: sell type: sell unofficial_currency_code: null - account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj amount: 7.7 cancel_transaction_id: null date: "2020-05-27" transaction_datetime: "2020-05-27T17:23:22Z" fees: 7.99 investment_transaction_id: LKoo1ko93wtreBwM7yQnuQ3P5DNKbKSPRzBNv iso_currency_code: USD name: BUY DoubleLine Total Return Bond Fund price: 10.42 quantity: 0.7388014749727547 security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk subtype: buy type: buy unofficial_currency_code: null item: available_products: - assets - balance - identity - transactions billed_products: - auth - investments consent_expiration_time: null error: null institution_id: ins_12 item_id: 8Mqq5rqQ7Pcxq9MGDv3JULZ6yzZDLMCwoxGDq update_type: background webhook: https://www.genericwebhookurl.com/webhook request_id: iv4q3ZlytOOthkv securities: - close_price: 27 close_price_as_of: null cusip: "577130834" institution_id: null institution_security_id: null is_cash_equivalent: false isin: US5771308344 iso_currency_code: USD name: Matthews Pacific Tiger Fund Insti Class proxy_security_id: null security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP sedol: null ticker_symbol: MIPTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Miscellaneous industry: Investment Trusts or Mutual Funds cfi_code: CIOGES figi: null option_contract: null fixed_income: null - close_price: 10.42 close_price_as_of: null cusip: "258620103" institution_id: null institution_security_id: null is_cash_equivalent: false isin: US2586201038 iso_currency_code: USD name: DoubleLine Total Return Bond Fund proxy_security_id: null security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk sedol: null ticker_symbol: DBLTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: null industry: null cfi_code: CIOIBS figi: null option_contract: null fixed_income: null - close_price: 34.73 close_price_as_of: null cusip: 84470P109 institution_id: null institution_security_id: null is_cash_equivalent: false isin: US84470P1093 iso_currency_code: USD name: Southside Bancshares Inc. proxy_security_id: null security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ sedol: null ticker_symbol: SBSI type: equity subtype: common stock unofficial_currency_code: null update_datetime: null market_identifier_code: XNAS sector: Finance industry: Regional Banks cfi_code: ESVUFR figi: null option_contract: null fixed_income: null total_investment_transactions: 3 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: investmentsTransactionsGet description: |- The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts. Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift. Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions. Note that Investments does not have a webhook to indicate when initial transaction data has loaded (unless you use the `async_update` option). Instead, if transactions data is not ready when `/investments/transactions/get` is first called, Plaid will wait for the data. For this reason, calling `/investments/transactions/get` immediately after Link may take up to one to two minutes to return. Data returned by the asynchronous investments extraction flow (when `async_update` is set to true) may not be immediately available to `/investments/transactions/get`. To be alerted when the data is ready to be fetched, listen for the `HISTORICAL_UPDATE` webhook. If no investments history is ready when `/investments/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvestmentsTransactionsGetRequest' /investments/refresh: post: tags: - plaid summary: Refresh investment data externalDocs: url: /api/products/investments/#investmentsrefresh operationId: investmentsRefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InvestmentsRefreshResponse' examples: example-1: value: request_id: 1vwmF5TBQwiqfwP default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- `/investments/refresh` is an optional endpoint for users of the Investments product. It initiates an on-demand extraction to fetch the newest investment holdings and transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Investments-enabled Item. If changes to investments are discovered after calling `/investments/refresh`, Plaid will fire webhooks: [`HOLDINGS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#holdings-default_update) if any new holdings are detected, and [`INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE`](https://plaid.com/docs/api/products/investments/#investments_transactions-default_update) if any new investment transactions are detected. This webhook will typically not fire in the Sandbox environment, due to the lack of dynamic investment transactions and holdings data. To test this webhook in Sandbox, call `/sandbox/item/fire_webhook`. Updated holdings and investment transactions can be fetched by calling `/investments/holdings/get` and `/investments/transactions/get`. Note that the `/investments/refresh` endpoint is not supported by all institutions. If called on an Item from an institution that does not support this functionality, it will return a `PRODUCT_NOT_SUPPORTED` error. 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. `/investments/refresh` is offered as an add-on to Investments and has a separate [fee model](https://plaid.com/docs/account/billing/#per-request-flat-fee). To request access to this endpoint, submit a [product access request](https://dashboard.plaid.com/team/products) or contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvestmentsRefreshRequest' /investments/auth/get: post: tags: - plaid summary: Get data needed to authorize an investments transfer externalDocs: url: /api/products/investments-move/#investmentsauthget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InvestmentsAuthGetResponse' examples: example-1: value: accounts: - account_id: 31qEA6LPwGumkA4Z5mGbfyGwr4mL6nSZlQqpZ balances: available: 43200 current: 43200 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "4444" name: Plaid Money Market official_name: Plaid Platinum Standard 1.85% Interest Money Market subtype: money market type: depository - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy balances: available: null current: 415.57 iso_currency_code: USD limit: null margin_loan_amount: null unofficial_currency_code: null mask: "5555" name: Plaid IRA official_name: null subtype: ira type: investment holdings: - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 1 institution_price: 1 institution_price_as_of: "2021-05-25" institution_price_datetime: null institution_value: 0.01 iso_currency_code: USD quantity: 0.01 security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are unofficial_currency_code: null vested_quantity: 1 vested_value: 1 tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 0.01 institution_price: 0.011 institution_price_as_of: "2021-05-25" institution_price_datetime: null institution_value: 110 iso_currency_code: USD quantity: 10000 security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 94.808 institution_price: 94.808 institution_price_as_of: "2021-04-13" institution_price_datetime: null institution_value: 94.808 iso_currency_code: USD quantity: 1 security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea unofficial_currency_code: null vested_quantity: null vested_value: null tax_lots: [] - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy cost_basis: 40 institution_price: 42.15 institution_price_as_of: "2021-05-25" institution_price_datetime: null institution_value: 210.75 iso_currency_code: USD quantity: 5 security_id: abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4 unofficial_currency_code: null vested_quantity: 7 vested_value: 66 tax_lots: [] item: available_products: - assets - balance - beacon - cra_base_report - cra_income_insights - signal - identity - identity_match - income - income_verification - investments - processor_identity - recurring_transactions - transactions billed_products: - investments_auth consent_expiration_time: null error: null institution_id: ins_115616 institution_name: Vanguard item_id: 7qBnDwLP3aIZkD7NKZ5ysk5X9xVxDWHg65oD5 products: - investments_auth update_type: background webhook: https://www.genericwebhookurl.com/webhook numbers: acats: - account: TR5555 account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy dtc_numbers: - "1111" - "2222" - "3333" owners: - account_id: 31qEA6LPwGumkA4Z5mGbfyGwr4mL6nSZlQqpZ names: - Alberta Bobbeth Charleson - account_id: xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy names: - Alberta Bobbeth Charleson request_id: hPCXou4mm9Qwzzu 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 is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: Nflx Feb 01'18 $355 Call option_contract: null fixed_income: null proxy_security_id: null sector: null security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb sedol: null ticker_symbol: NFLX180201C00355000 type: derivative subtype: option unofficial_currency_code: null update_datetime: null - close_price: 94.808 close_price_as_of: "2023-11-02" cusip: 912797HE0 cfi_code: DYZTXR figi: null fixed_income: face_value: 100 issue_date: "2023-11-02" maturity_date: "2024-10-31" yield_rate: percentage: 5.43 type: coupon_equivalent industry: Sovereign Government institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: US Treasury Bill - 5.43% 31/10/2024 USD 100 option_contract: null proxy_security_id: null sector: Government security_id: Lxe4yz4XQEtwb2YArO7RFMpPDvPxy7FALRyea sedol: null ticker_symbol: null type: fixed income subtype: bill unofficial_currency_code: null update_datetime: null - close_price: 9.08 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 institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: DoubleLine Total Return Bond I option_contract: null proxy_security_id: null sector: Miscellaneous security_id: AE5rBXra1AuZLE34rkvvIyG8918m3wtRzElnJ sedol: null ticker_symbol: DBLTX type: mutual fund subtype: mutual fund unofficial_currency_code: null update_datetime: null - close_price: 42.15 close_price_as_of: null cusip: null cfi_code: CEOIES figi: null fixed_income: null industry: null institution_id: null institution_security_id: null is_cash_equivalent: false isin: null iso_currency_code: USD market_identifier_code: null name: iShares Inc MSCI Brazil option_contract: null proxy_security_id: null sector: null security_id: abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4 sedol: null ticker_symbol: EWZ type: etf subtype: etf unofficial_currency_code: null update_datetime: null - close_price: 1 close_price_as_of: null cusip: null cfi_code: null figi: null fixed_income: null industry: null institution_id: null institution_security_id: null is_cash_equivalent: true isin: null iso_currency_code: USD market_identifier_code: null name: U S Dollar option_contract: null proxy_security_id: null sector: null security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are sedol: null ticker_symbol: null type: cash subtype: cash unofficial_currency_code: null update_datetime: null data_sources: numbers: INSTITUTION owners: INSTITUTION holdings: INSTITUTION default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: investmentsAuthGet description: The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/InvestmentsAuthGetRequest' /processor/token/create: post: tags: - plaid summary: Create processor token externalDocs: url: /api/processors/#processortokencreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenCreateResponse' examples: example-1: value: processor_token: processor-sandbox-0asd1-a92nc request_id: xrQNYZ7Zoh6R7gV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: processorTokenCreate description: Used to create a token suitable for sending to one of Plaid's partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations. If using multiple processors, multiple different processor tokens can be created for a single access token. Once created, a processor token for a given Item can be modified by calling `/processor/token/permissions/set`. To revoke the processor's access, the entire Item must be deleted by calling `/item/remove`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenCreateRequest' description: "" /processor/token/permissions/set: post: tags: - plaid summary: Control a processor's access to products externalDocs: url: /api/processors/#processortokenpermissionsset responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenPermissionsSetResponse' examples: example-1: value: request_id: xrQNYZ7Zoh6R7gV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: processorTokenPermissionsSet description: Used to control a processor's access to products on the given processor token. By default, a processor will have access to all available products on the corresponding item. To restrict access to a particular set of products, call this endpoint with the desired products. To restore access to all available products, call this endpoint with an empty list. This endpoint can be called multiple times as your needs and your processor's needs change. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenPermissionsSetRequest' /processor/token/permissions/get: post: tags: - plaid summary: Get a processor token's product permissions externalDocs: url: /api/processors/#processortokenpermissionsget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenPermissionsGetResponse' examples: example-1: value: request_id: xrQNYZ7Zoh6R7gV products: - auth - balance - identity default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: processorTokenPermissionsGet description: Used to get a processor token's product permissions. The `products` field will be an empty list if the processor can access all available products. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenPermissionsGetRequest' /processor/token/webhook/update: post: tags: - plaid summary: Update a processor token's webhook URL externalDocs: url: /api/processor-partners/#processortokenwebhookupdate operationId: processorTokenWebhookUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenWebhookUpdateResponse' examples: example-1: value: request_id: vYK11LNTfRoAMbj default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint allows you, the processor, to update the webhook URL associated with a processor token. This request triggers a `WEBHOOK_UPDATE_ACKNOWLEDGED` webhook to the newly specified webhook URL. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenWebhookUpdateRequest' /processor/stripe/bank_account_token/create: post: tags: - plaid summary: Create Stripe bank account token externalDocs: url: /api/processors/#processorstripebank_account_tokencreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorStripeBankAccountTokenCreateResponse' examples: example-1: value: stripe_bank_account_token: btok_5oEetfLzPklE1fwJZ7SG request_id: xrQNYZ7Zoh6R7gV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: processorStripeBankAccountTokenCreate description: |2- Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/). Note that the Stripe bank account token is a one-time use token. To store bank account information for later use, you can use a Stripe customer object and create an associated bank account from the token, or you can use a Stripe Custom account and create an associated external bank account from the token. This bank account information should work indefinitely, unless the user's bank account information changes or they revoke Plaid's permissions to access their account. Stripe bank account information cannot be modified once the bank account token has been created. If you ever need to change the bank account details used by Stripe for a specific customer, have the user go through Link again and create a new bank account token from the new `access_token`. To revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorStripeBankAccountTokenCreateRequest' description: "" /processor/apex/processor_token/create: post: tags: - plaid summary: Create Apex processor token externalDocs: url: /none/ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorTokenCreateResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: processorApexProcessorTokenCreate description: Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProcessorApexProcessorTokenCreateRequest' description: "" /items/transactions/notify: {} /item/import: post: tags: - plaid summary: Import Item responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ItemImportResponse' examples: example-1: value: access_token: access-sandbox-99ace160-3cf7-4e51-a083-403633425815 request_id: ewIBAn6RZirsk4W default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: itemImport description: |- `/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you. Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ItemImportRequest' /link/token/create: post: tags: - plaid summary: Create Link Token externalDocs: url: /api/link/#linktokencreate operationId: linkTokenCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkTokenCreateResponse' examples: example-1: value: link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176 expiration: "2020-03-27T12:56:34Z" request_id: XQVgFigpGHXkb0b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`. For most Plaid products, the `public_token` is saved and exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview). A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the [update mode](https://plaid.com/docs/link/update-mode) flow for tokens with expired credentials, or the Identity Verification flow. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkTokenCreateRequest' description: "" /link/token/get: post: tags: - plaid summary: Get Link Token externalDocs: url: /api/link/#linktokenget operationId: linkTokenGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkTokenGetResponse' examples: example-1: value: created_at: "2024-07-29T20:22:21Z" expiration: "2024-07-29T20:52:22Z" link_sessions: - events: - event_id: 8b2b5d28-79ec-468b-bbce-f8bd34be635a event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: Nnclj9HntPMu5dm event_name: HANDOFF timestamp: "2024-07-29T20:23:59Z" - event_id: 12a888e0-da26-4c38-8ded-2992bc78c246 event_metadata: request_id: Nnclj9HntPMu5dm event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:59Z" - event_id: 6557bdf1-a20a-43b0-8fed-c8b671e2f478 event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: sR4EGcU8zniznXi event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:56Z" - event_id: c6745f4c-d8fa-4103-8a65-7b995c60809e event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: 4LYDWkxfJ0htDA4 event_name: SUBMIT_CREDENTIALS timestamp: "2024-07-29T20:23:55Z" - event_id: 2610fa06-e765-4c9e-8948-63048d451dbf event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: 4LYDWkxfJ0htDA4 event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:23Z" - event_id: 54b87deb-60a7-4f50-9326-293840090b72 event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: FTEFiPeL9OstwL4 event_name: SELECT_INSTITUTION timestamp: "2024-07-29T20:23:23Z" - event_id: 6b285180-0bac-4ccc-bec0-d4ed75c253d2 event_metadata: request_id: FTEFiPeL9OstwL4 event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:20Z" - event_id: 239a6000-da50-4319-99f7-919378b7db53 event_metadata: request_id: WFgwgGivjBbwOb9 event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:17Z" - event_id: 0a523744-5003-4578-8414-c87e06ef8ca9 event_metadata: institution_id: ins_127989 institution_name: Bank of America request_id: WFgwgGivjBbwOb9 event_name: HANDOFF timestamp: "2024-07-29T20:23:17Z" - event_id: ff44d52a-51ef-4987-b7d0-b6497dfa93cd event_metadata: institution_id: ins_127989 institution_name: Bank of America request_id: uqA0Vq8zuKlsB2y event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:23:14Z" - event_id: e0d7c1dc-8e7e-4361-893f-d6c2d2f050ab event_metadata: institution_id: ins_127989 institution_name: Bank of America request_id: dTGtMHbK21BLrsp event_name: OPEN_OAUTH timestamp: "2024-07-29T20:22:49Z" - event_id: de87a1c0-666e-4d95-88d8-1163f6bf20f1 event_metadata: institution_id: ins_127989 institution_name: Bank of America request_id: dTGtMHbK21BLrsp event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:22:47Z" - event_id: 6edc2c59-96cd-4dee-a86b-140ddfd3076e event_metadata: institution_id: ins_127989 institution_name: Bank of America request_id: BxBukZsBEmxZw0I event_name: SELECT_INSTITUTION timestamp: "2024-07-29T20:22:46Z" - event_id: d176ab57-26d2-45ee-a0fe-67daf0cf0cb0 event_metadata: request_id: BxBukZsBEmxZw0I event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:22:43Z" - event_id: b8be9c3d-7ac5-4851-bd92-0638cb63bdeb event_metadata: request_id: UtqR09RKzJ1gcEx event_name: SKIP_SUBMIT_PHONE timestamp: "2024-07-29T20:22:42Z" - event_id: 7144cca7-533b-4dfc-81ed-f78a750ba95f event_metadata: request_id: UtqR09RKzJ1gcEx event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:22:40Z" - event_id: e6a6dcc0-6bbf-4871-8d59-0c3a5eccff53 event_metadata: request_id: FTiagIVmxfqbevM event_name: TRANSITION_VIEW timestamp: "2024-07-29T20:22:39Z" finished_at: "2024-07-29T20:24:05.330312653Z" link_session_id: 43face8b-a5c2-42a4-adec-4a4ec589eb46 on_success: metadata: accounts: - class_type: null id: DXzZ94ZG9vhaZy8BvyZRSQ4jJwwlkNS3RwoeX mask: "0000" name: Plaid Checking subtype: checking type: depository verification_status: null - class_type: null id: VJyR7wRm79TNGEKxpEG9fjpJ1mmM5Bt9ymVkR mask: "1111" name: Plaid Saving subtype: savings type: depository verification_status: null - class_type: null id: wZXnexn1eoH6LNWmMNL4hqkPB55ndjHPRNp93 mask: "9999" name: Plaid Business Credit Card subtype: credit card type: credit verification_status: null institution: institution_id: ins_127989 name: Bank of America link_session_id: 43face8b-a5c2-42a4-adec-4a4ec589eb46 transfer_status: null public_token: public-sandbox-3b9687f0-3abd-4913-9889-f0ba816d4a3a results: item_add_results: - accounts: - class_type: null id: DXzZ94ZG9vhaZy8BvyZRSQ4jJwwlkNS3RwoeX mask: "0000" name: Plaid Checking subtype: checking type: depository verification_status: null - class_type: null id: VJyR7wRm79TNGEKxpEG9fjpJ1mmM5Bt9ymVkR mask: "1111" name: Plaid Saving subtype: savings type: depository verification_status: null - class_type: null id: wZXnexn1eoH6LNWmMNL4hqkPB55ndjHPRNp93 mask: "9999" name: Plaid Business Credit Card subtype: credit card type: credit verification_status: null institution: institution_id: ins_127989 name: Bank of America public_token: public-sandbox-3b9687f0-3abd-4913-9889-f0ba816d4a3a - accounts: - class_type: null id: qvqrX8gDvxCdyvvgGkKzSNPzDwaQGjFgyQk5Z mask: "4007" name: Checking subtype: checking type: depository verification_status: null institution: institution_id: ins_20 name: Citizens Bank public_token: public-sandbox-44ba202e-bf6b-45c6-a5ba-d526765626a9 cra_item_add_results: [] cra_update_results: [] bank_income_results: [] payroll_income_results: [] document_income_results: null started_at: "2024-07-29T20:22:36.522196741Z" link_token: link-sandbox-e7b6956c-1522-4823-85d2-c4ca74251949 metadata: client_name: Wonderwallet country_codes: - US initial_products: - transactions language: en redirect_uri: null webhook: https://webhook.site/dc9c138f-75de-4db1-883a-a4add4b7eb7e user_id: usr_123456abcdef request_id: Pxpgzy0Wjvn99mY default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- The `/link/token/get` endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don't provide a public token via frontend callbacks, such as the [Hosted Link flow](https://plaid.com/docs/link/hosted-link/) and the [Multi-Item Link flow](https://plaid.com/docs/link/multi-item-link/). It also can be useful for debugging purposes. By default, this endpoint will only return complete event data for Hosted Link sessions. To use `/link/token/get` to retrieve event data for non-Hosted-Link sessions, contact your account manager to request that your account be enabled for Link events. If you do not have an account manager, you can submit this request via a support ticket. Enablement for Link events will also cause you to receive additional webhooks related to Link events, such as the `SESSION_FINISHED` and `EVENTS` webhook. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkTokenGetRequest' description: "" /link/oauth/correlation_id/exchange: post: tags: - plaid summary: Exchange the Link Correlation ID for a Link Token externalDocs: url: /api/oauth/#linkcorrelationid operationId: linkOauthCorrelationIdExchange responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkOAuthCorrelationIdExchangeResponse' examples: example-1: value: link_token: link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183 request_id: u0ydFs493XjyTYn default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Exchange an OAuth `link_correlation_id` for the corresponding `link_token`. The `link_correlation_id` is only available for `payment_initiation` products and is provided to the client via the OAuth `redirect_uri` as a query parameter. The `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the `link_token`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkOAuthCorrelationIdExchangeRequest' description: "" /session/token/create: post: tags: - plaid summary: Create a Link token for Layer externalDocs: url: /api/products/layer/#sessiontokencreate operationId: sessionTokenCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SessionTokenCreateResponse' examples: example-1: value: link: link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176 expiration: "2020-03-27T12:56:34Z" request_id: XQVgFigpGHXkb0b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: '`/session/token/create` is used to create a Link token for Layer. The returned Link token is used as a parameter when initializing the Link SDK. For more details, see the [Link flow overview](https://plaid.com/docs/link/#link-flow-overview).' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SessionTokenCreateRequest' description: "" /transfer/get: post: summary: Retrieve a transfer tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transferget operationId: transferGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferGetResponse' examples: example-1: value: transfer: account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a ach_class: ppd amount: "12.34" cancellable: true created: "2020-08-06T17:27:15Z" description: Desc guarantee_decision: null guarantee_decision_rationale: null failure_reason: failure_code: R13 description: Invalid ACH routing number id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 authorization_id: c9f90aa1-2949-c799-e2b6-ea05c89bb586 metadata: key1: value1 key2: value2 network: ach origination_account_id: "" originator_client_id: null refunds: [] status: pending type: credit iso_currency_code: USD standard_return_window: "2020-08-07" unauthorized_return_window: "2020-10-07" expected_settlement_date: "2020-08-04" user: email_address: acharleston@email.com legal_name: Anne Charleston phone_number: 510-555-0128 address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US recurring_transfer_id: null credit_funds_source: sweep facilitator_fee: "1.23" network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/get` endpoint fetches information about the transfer corresponding to the given `transfer_id` or `authorization_id`. One of `transfer_id` or `authorization_id` must be populated but not both. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferGetRequest' examples: {} parameters: [] /transfer/recurring/get: post: summary: Retrieve a recurring transfer tags: - plaid externalDocs: url: /api/products/transfer/recurring-transfers/#transferrecurringget operationId: transferRecurringGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferRecurringGetResponse' examples: example-1: value: recurring_transfer: recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 created: "2022-07-05T12:48:37Z" next_origination_date: "2022-10-28" test_clock_id: null status: active amount: "12.34" description: payment type: debit ach_class: ppd network: ach origination_account_id: "" account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 iso_currency_code: USD transfer_ids: - 271ef220-dbf8-caeb-a7dc-a2b3e8a80963 - c8dbaf75-2abb-e2dc-4171-12448e13b848 user: legal_name: Anne Charleston phone_number: 510-555-0128 email_address: acharleston@email.com address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US schedule: start_date: "2022-10-01" end_date: "2023-10-01" interval_unit: week interval_count: 1 interval_execution_day: 5 request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRecurringGetRequest' /bank_transfer/get: post: summary: (Deprecated) Retrieve a bank transfer deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transferget operationId: bankTransferGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/BankTransferGetResponse' examples: example-1: value: bank_transfer: account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B ach_class: ppd amount: "12.34" cancellable: true created: "2020-08-06T17:27:15Z" custom_tag: my tag description: Testing2 direction: outbound failure_reason: ach_return_code: R13 description: Invalid ACH routing number id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 iso_currency_code: USD metadata: key1: value1 key2: value2 network: ach origination_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 status: pending type: credit user: email_address: plaid@plaid.com legal_name: John Smith routing_number: "111111111" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferGetRequest' examples: {} parameters: [] /transfer/authorization/create: post: summary: Create a transfer authorization tags: - plaid externalDocs: url: /api/products/transfer/initiating-transfers/#transferauthorizationcreate operationId: transferAuthorizationCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferAuthorizationCreateResponse' examples: example-1: value: authorization: id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 created: "2020-08-06T17:27:15Z" decision: approved decision_rationale: null guarantee_decision: null guarantee_decision_rationale: null payment_risk: null proposed_transfer: ach_class: ppd account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a type: credit user: legal_name: Anne Charleston phone_number: 510-555-0128 email_address: acharleston@email.com address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US amount: "12.34" requested_amount: "12.34" network: ach iso_currency_code: USD origination_account_id: "" originator_client_id: null credit_funds_source: sweep request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/transfer/authorization/create` endpoint to authorize a transfer. This endpoint must be called prior to calling `/transfer/create`. The transfer authorization will expire if not used after one hour. (You can contact your account manager to change the default authorization lifetime.) There are four possible outcomes to calling this endpoint: - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer. - If the `authorization.decision` is `user_action_required`, additional user input is needed, usually to fix a broken bank connection, before Plaid can properly assess the risk. You need to launch Link in update mode to complete the required user action. When calling `/link/token/create` to get a new Link token, instead of providing `access_token` in the request, you should set [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) as the `authorization.id`. After the Link flow is completed, you may re-attempt the authorization. - If the `authorization.decision` is `approved`, and the `authorization.decision_rationale.code` is `null`, the transfer has passed the risk check and you can proceed to call `/transfer/create`. - If the `authorization.decision` is `approved` and the `authorization.decision_rationale.code` is non-`null`, the risk check could not be run: you may proceed with the transfer, but should perform your own risk evaluation. For more details, see the response schema. In Plaid's Sandbox environment the decisions will be returned as follows: - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account. - To approve a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same-Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits). - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required). - To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox. - To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferAuthorizationCreateRequest' /transfer/authorization/cancel: post: summary: Cancel a transfer authorization tags: - plaid externalDocs: url: /api/products/transfer/initiating-transfers/#transferauthorizationcancel operationId: transferAuthorizationCancel responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferAuthorizationCancelResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/authorization/cancel` endpoint to cancel a transfer authorization. A transfer authorization is eligible for cancellation if it has not yet been used to create a transfer. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferAuthorizationCancelRequest' /transfer/balance/get: post: summary: (Deprecated) Retrieve a balance held with Plaid deprecated: true tags: - plaid externalDocs: url: /none/ operationId: transferBalanceGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferBalanceGetResponse' examples: example-1: value: balance: available: "1721.70" type: prefunded_rtp_credits request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: (Deprecated) Use the `/transfer/ledger/get` endpoint to view a balance held with Plaid. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferBalanceGetRequest' /transfer/capabilities/get: post: summary: Get RTP eligibility information of a transfer tags: - plaid externalDocs: url: /api/products/transfer/account-linking/#transfercapabilitiesget operationId: transferCapabilitiesGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferCapabilitiesGetResponse' examples: example-1: value: institution_supported_networks: rtp: credit: true rfp: debit: true request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/capabilities/get` endpoint to determine the RTP eligibility information of an account to be used with Transfer. This endpoint works on all Transfer-capable Items, including those created by `/transfer/migrate_account`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferCapabilitiesGetRequest' /transfer/configuration/get: post: summary: Get transfer product configuration tags: - plaid externalDocs: url: /api/products/transfer/metrics/#transferconfigurationget operationId: transferConfigurationGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferConfigurationGetResponse' examples: example-1: value: max_single_transfer_amount: "" max_single_transfer_credit_amount: "1000.00" max_single_transfer_debit_amount: "1000.00" max_daily_credit_amount: "50000.00" max_daily_debit_amount: "50000.00" max_monthly_amount: "" max_monthly_credit_amount: "500000.00" max_monthly_debit_amount: "500000.00" iso_currency_code: USD request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/configuration/get` endpoint to view your transfer product configurations. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferConfigurationGetRequest' /transfer/ledger/get: post: summary: Retrieve Plaid Ledger balance tags: - plaid externalDocs: url: /api/products/transfer/ledger/#transferledgerget operationId: transferLedgerGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferLedgerGetResponse' examples: example-1: value: ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a name: Default is_default: true balance: available: "1721.70" pending: "123.45" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferLedgerGetRequest' /transfer/ledger/distribute: post: summary: Move available balance between ledgers tags: - plaid externalDocs: url: /api/products/transfer/ledger/#transferledgerdistribute operationId: transferLedgerDistribute responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferLedgerDistributeResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: 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 ledgers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferLedgerDistributeRequest' /transfer/ledger/deposit: post: summary: Deposit funds into a Plaid Ledger balance tags: - plaid externalDocs: url: /api/products/transfer/ledger/#transferledgerdeposit operationId: transferLedgerDeposit responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferLedgerDepositResponse' examples: example-1: value: sweep: id: 8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a created: "2020-08-06T17:27:15Z" amount: "-12.34" iso_currency_code: USD settled: null status: pending trigger: manual description: deposit network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferLedgerDepositRequest' /transfer/ledger/withdraw: post: summary: Withdraw funds from a Plaid Ledger balance tags: - plaid externalDocs: url: /api/products/transfer/ledger/#transferledgerwithdraw operationId: transferLedgerWithdraw responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferLedgerWithdrawResponse' examples: example-1: value: sweep: id: 8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a created: "2020-08-06T17:27:15Z" amount: "12.34" iso_currency_code: USD settled: null status: pending trigger: manual description: withdraw network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferLedgerWithdrawRequest' /transfer/originator/funding_account/update: post: summary: Update the funding account associated with the originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferoriginatorfunding_accountupdate operationId: transferOriginatorFundingAccountUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorFundingAccountUpdateResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorFundingAccountUpdateRequest' /transfer/originator/funding_account/create: post: summary: Create a new funding account for an originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferoriginatorfunding_accountcreate operationId: transferOriginatorFundingAccountCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorFundingAccountCreateResponse' examples: example-1: value: funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/originator/funding_account/create` endpoint to create a new funding account for the originator. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorFundingAccountCreateRequest' /transfer/metrics/get: post: summary: Get transfer product usage metrics tags: - plaid externalDocs: url: /api/products/transfer/metrics/#transfermetricsget operationId: transferMetricsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferMetricsGetResponse' examples: example-1: value: daily_debit_transfer_volume: "1234.56" daily_credit_transfer_volume: "567.89" monthly_transfer_volume: "" monthly_debit_transfer_volume: "10000.00" monthly_credit_transfer_volume: "2345.67" iso_currency_code: USD request_id: saKrIBuEB9qJZno return_rates: last_60d: overall_return_rate: "0.1023" administrative_return_rate: "0.0160" unauthorized_return_rate: "0.0028" authorization_usage: daily_credit_utilization: "0.2300" daily_debit_utilization: "0.3401" monthly_credit_utilization: "0.9843" monthly_debit_utilization: "0.3220" default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics. In the Sandbox environment, this endpoint returns static placeholder values rather than metrics computed from your Sandbox transfer activity. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferMetricsGetRequest' /transfer/create: post: summary: Create a transfer tags: - plaid externalDocs: url: /api/products/transfer/initiating-transfers/#transfercreate operationId: transferCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferCreateResponse' examples: example-1: value: transfer: id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 authorization_id: c9f90aa1-2949-c799-e2b6-ea05c89bb586 ach_class: ppd account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a type: credit user: legal_name: Anne Charleston phone_number: 510-555-0128 email_address: acharleston@email.com address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US amount: "12.34" description: payment created: "2020-08-06T17:27:15Z" refunds: [] status: pending network: ach cancellable: true guarantee_decision: null guarantee_decision_rationale: null failure_reason: null metadata: key1: value1 key2: value2 origination_account_id: "" iso_currency_code: USD standard_return_window: "2023-08-07" unauthorized_return_window: "2023-10-07" expected_settlement_date: "2023-08-04" originator_client_id: 569ed2f36b3a3a021713abc1 recurring_transfer_id: null credit_funds_source: sweep facilitator_fee: "1.23" network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/create` endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided `transfer_id` has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use [Transfer events](https://plaid.com/docs/transfer/reconciling-transfers/). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferCreateRequest' /transfer/recurring/create: post: summary: Create a recurring transfer tags: - plaid externalDocs: url: /api/products/transfer/recurring-transfers/#transferrecurringcreate operationId: transferRecurringCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferRecurringCreateResponse' examples: example-1: value: recurring_transfer: recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 created: "2022-07-05T12:48:37Z" next_origination_date: "2022-10-28" test_clock_id: b33a6eda-5e97-5d64-244a-a9274110151c status: active amount: "12.34" description: payment type: debit ach_class: ppd network: ach origination_account_id: "" account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 iso_currency_code: USD transfer_ids: [] user: legal_name: Anne Charleston phone_number: 510-555-0128 email_address: acharleston@email.com address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US schedule: start_date: "2022-10-01" end_date: "2023-10-01" interval_unit: week interval_count: 1 interval_execution_day: 5 decision: approved decision_rationale: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/recurring/create` endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Transfer for Platforms (beta) customers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRecurringCreateRequest' /bank_transfer/create: post: summary: (Deprecated) Create a bank transfer deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transfercreate operationId: bankTransferCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferCreateResponse' examples: example-1: value: bank_transfer: account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B ach_class: ppd amount: "12.34" cancellable: true created: "2020-08-06T17:27:15Z" custom_tag: my tag description: Testing2 direction: outbound failure_reason: null id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 iso_currency_code: USD metadata: key1: value1 key2: value2 network: ach origination_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 status: pending type: credit user: email_address: plaid@plaid.com legal_name: John Smith routing_number: "111111111" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/bank_transfer/create` endpoint to initiate a new bank transfer. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferCreateRequest' /transfer/list: post: summary: List transfers tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transferlist operationId: transferList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferListResponse' examples: example-1: value: transfers: - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a ach_class: ppd amount: "12.34" cancellable: true created: "2019-12-09T17:27:15Z" description: Desc guarantee_decision: null guarantee_decision_rationale: null failure_reason: failure_code: R13 description: Invalid ACH routing number id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 authorization_id: c9f90aa1-2949-c799-e2b6-ea05c89bb586 metadata: key1: value1 key2: value2 network: ach origination_account_id: "" originator_client_id: null refunds: [] status: pending type: credit iso_currency_code: USD standard_return_window: "2020-08-07" unauthorized_return_window: "2020-10-07" expected_settlement_date: "2020-08-04" user: email_address: acharleston@email.com legal_name: Anne Charleston phone_number: 510-555-0128 address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US recurring_transfer_id: null credit_funds_source: sweep facilitator_fee: "1.23" network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferListRequest' /transfer/recurring/list: post: summary: List recurring transfers tags: - plaid externalDocs: url: /api/products/transfer/recurring-transfers/#transferrecurringlist operationId: transferRecurringList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferRecurringListResponse' examples: example-1: value: recurring_transfers: - recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 created: "2022-07-05T12:48:37Z" next_origination_date: "2022-10-28" test_clock_id: null status: active amount: "12.34" description: payment type: debit ach_class: ppd network: ach origination_account_id: "" account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 iso_currency_code: USD transfer_ids: - 4242fc8d-3ec6-fb38-fa0c-a8e37d03cd57 user: legal_name: Anne Charleston phone_number: 510-555-0128 email_address: acharleston@email.com address: street: 123 Main St. city: San Francisco region: CA postal_code: "94053" country: US schedule: start_date: "2022-10-01" end_date: "2023-10-01" interval_unit: week interval_count: 1 interval_execution_day: 5 request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | Use the `/transfer/recurring/list` endpoint to see a list of all your recurring transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired recurring transfers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRecurringListRequest' /bank_transfer/list: post: summary: (Deprecated) List bank transfers deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transferlist operationId: bankTransferList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferListResponse' examples: example-1: value: bank_transfers: - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B ach_class: ppd amount: "12.34" cancellable: true created: "2020-08-06T17:27:15Z" custom_tag: my tag description: Testing2 direction: outbound failure_reason: ach_return_code: R13 description: Invalid ACH routing number id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 iso_currency_code: USD metadata: key1: value1 key2: value2 network: ach origination_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 originator_client_id: 569ed2f36b3a3a021713abc1 status: pending type: credit user: email_address: plaid@plaid.com legal_name: John Smith routing_number: "111111111" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: | Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferListRequest' /transfer/cancel: post: summary: Cancel a transfer tags: - plaid externalDocs: url: /api/products/transfer/initiating-transfers/#transfercancel operationId: transferCancel responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferCancelResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/cancel` endpoint to cancel a transfer. A transfer is eligible for cancellation if the `cancellable` property returned by `/transfer/get` is `true`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferCancelRequest' /transfer/recurring/cancel: post: summary: Cancel a recurring transfer. tags: - plaid externalDocs: url: /api/products/transfer/recurring-transfers/#transferrecurringcancel operationId: transferRecurringCancel responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferRecurringCancelResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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: application/json: schema: $ref: '#/components/schemas/TransferRecurringCancelRequest' /bank_transfer/cancel: post: summary: (Deprecated) Cancel a bank transfer deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transfercancel operationId: bankTransferCancel responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferCancelResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer. A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferCancelRequest' /transfer/event/list: post: summary: List transfer events tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transfereventlist operationId: transferEventList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferEventListResponse' examples: example-1: value: transfer_events: - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a transfer_amount: "12.34" transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 transfer_type: credit event_id: 1 event_type: posted failure_reason: null origination_account_id: "" originator_client_id: 569ed2f36b3a3a021713abc1 refund_id: null sweep_amount: null sweep_id: null timestamp: "2019-12-09T17:27:15Z" has_more: true request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferEventListRequest' /transfer/ledger/event/list: post: summary: List transfer ledger events tags: - plaid externalDocs: url: /api/products/transfer/ledger/#transferledgereventlist operationId: transferLedgerEventList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferLedgerEventListResponse' examples: example-1: value: ledger_events: - ledger_event_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a amount: "100.00" type: deposit transfer_id: 460cbe92-2dcc-8eae description: Converted to available pending_balance: "100.00" available_balance: "100.00" timestamp: "2023-12-01T10:00:00Z" has_more: false request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/ledger/event/list` endpoint to get a list of ledger events for a specific ledger based on specified filter criteria. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferLedgerEventListRequest' /bank_transfer/event/list: post: summary: List bank transfer events tags: - plaid externalDocs: url: /api/products/auth#bank_transfereventlist operationId: bankTransferEventList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferEventListResponse' examples: example-1: value: bank_transfer_events: - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B bank_transfer_amount: "12.34" bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 bank_transfer_iso_currency_code: USD bank_transfer_type: credit direction: outbound event_id: 1 event_type: pending failure_reason: null origination_account_id: "" receiver_details: null timestamp: "2020-08-06T17:27:15Z" request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/bank_transfer/event/list` endpoint to get a list of Plaid-initiated ACH or bank transfer events based on specified filter criteria. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferEventListRequest' /transfer/event/sync: post: summary: Sync transfer events tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transfereventsync operationId: transferEventSync responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferEventSyncResponse' examples: example-1: value: transfer_events: - account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a transfer_amount: "12.34" transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 transfer_type: credit event_id: 1 event_type: pending failure_reason: null origination_account_id: "" originator_client_id: null refund_id: null sweep_amount: null sweep_id: null timestamp: "2019-12-09T17:27:15Z" has_more: true request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferEventSyncRequest' description: '`/transfer/event/sync` allows you to request up to the next 500 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.' /bank_transfer/event/sync: post: summary: Sync bank transfer events tags: - plaid externalDocs: url: /api/products/auth/#bank_transfereventsync operationId: bankTransferEventSync responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferEventSyncResponse' examples: example-1: value: bank_transfer_events: - account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B bank_transfer_amount: "12.34" bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 bank_transfer_iso_currency_code: USD bank_transfer_type: credit direction: outbound event_id: 1 event_type: pending failure_reason: null origination_account_id: "" receiver_details: null timestamp: "2020-08-06T17:27:15Z" request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferEventSyncRequest' description: '`/bank_transfer/event/sync` allows you to request up to the next 25 Plaid-initiated bank transfer events that happened after a specific `event_id`. When using Auth with micro-deposit verification enabled, this endpoint can be used to fetch status updates on ACH micro-deposits. For more details, see [micro-deposit events](https://plaid.com/docs/auth/coverage/microdeposit-events/).' /transfer/sweep/get: post: summary: Retrieve a sweep tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transfersweepget operationId: transferSweepGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferSweepGetResponse' examples: example-1: value: sweep: id: 8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a created: "2020-08-06T17:27:15Z" amount: "12.34" iso_currency_code: USD settled: "2020-08-07" status: settled network_trace_id: "123456789012345" request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferSweepGetRequest' examples: {} parameters: [] /bank_transfer/sweep/get: post: summary: (Deprecated) Retrieve a sweep deprecated: true tags: - plaid externalDocs: url: /api/products/transfer/#bank_transfersweepget operationId: bankTransferSweepGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/BankTransferSweepGetResponse' examples: example-1: value: sweep: id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d created_at: "2020-08-06T17:27:15Z" amount: "12.34" iso_currency_code: USD request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferSweepGetRequest' examples: {} parameters: [] /transfer/sweep/list: post: summary: List sweeps tags: - plaid externalDocs: url: /api/products/transfer/reading-transfers/#transfersweeplist operationId: transferSweepList responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferSweepListResponse' examples: example-1: value: sweeps: - id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 ledger_id: 563db5f8-4c95-4e17-8c3e-cb988fb9cf1a created: "2019-12-09T17:27:15Z" amount: "-12.34" iso_currency_code: USD settled: "2019-12-10" status: settled originator_client_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferSweepListRequest' examples: {} parameters: [] /bank_transfer/sweep/list: post: summary: (Deprecated) List sweeps deprecated: true tags: - plaid externalDocs: url: /api/products/transfer/#bank_transfersweeplist operationId: bankTransferSweepList responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/BankTransferSweepListResponse' examples: example-1: value: sweeps: - id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d created_at: "2020-08-06T17:27:15Z" amount: "12.34" iso_currency_code: USD request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferSweepListRequest' examples: {} parameters: [] /bank_transfer/balance/get: post: summary: (Deprecated) Get balance of your Bank Transfer account deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transferbalanceget operationId: bankTransferBalanceGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferBalanceGetResponse' examples: example-1: value: balance: available: "1721.70" transactable: "721.70" origination_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created. The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance. Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferBalanceGetRequest' /bank_transfer/migrate_account: post: summary: (Deprecated) Migrate account into Bank Transfers deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference#bank_transfermigrate_account operationId: bankTransferMigrateAccount responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BankTransferMigrateAccountResponse' examples: example-1: value: access_token: access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0 account_id: zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BankTransferMigrateAccountRequest' /transfer/migrate_account: post: summary: Migrate account into Transfers tags: - plaid externalDocs: url: /api/products/transfer/account-linking/#transfermigrate_account operationId: transferMigrateAccount responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferMigrateAccountResponse' examples: example-1: value: access_token: access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0 account_id: zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: As an alternative to adding Items via Link, you can also use the `/transfer/migrate_account` endpoint to migrate previously-verified account and routing numbers to Plaid Items. This endpoint is also required when adding an Item for use with wire transfers; if you intend to create wire transfers on this account, you must provide `wire_routing_number`. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid account manager or [support](https://dashboard.plaid.com/support). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferMigrateAccountRequest' /transfer/intent/create: post: summary: Create a transfer intent object to invoke the Transfer UI tags: - plaid externalDocs: url: /api/products/transfer/account-linking/#transferintentcreate operationId: transferIntentCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferIntentCreateResponse' examples: example-1: value: transfer_intent: account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 9853defc-e703-463d-86b1-dc0607a45359 ach_class: ppd amount: "12.34" iso_currency_code: USD created: "2020-08-06T17:27:15Z" description: Desc id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 metadata: key1: value1 key2: value2 mode: PAYMENT origination_account_id: 9853defc-e703-463d-86b1-dc0607a45359 status: PENDING user: address: street: 100 Market Street city: San Francisco region: CA postal_code: "94103" country: US email_address: acharleston@email.com legal_name: Anne Charleston phone_number: 123-456-7890 request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferIntentCreateRequest' /transfer/intent/get: post: summary: Retrieve more information about a transfer intent tags: - plaid externalDocs: url: /api/products/transfer/account-linking/#transferintentget operationId: transferIntentGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferIntentGetResponse' examples: example-1: value: transfer_intent: account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr funding_account_id: 9853defc-e703-463d-86b1-dc0607a45359 ach_class: ppd amount: "12.34" iso_currency_code: USD authorization_decision: APPROVED authorization_decision_rationale: null created: "2019-12-09T17:27:15Z" description: Desc failure_reason: null guarantee_decision: null guarantee_decision_rationale: null id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 metadata: key1: value1 key2: value2 mode: DISBURSEMENT origination_account_id: 9853defc-e703-463d-86b1-dc0607a45359 status: SUCCEEDED transfer_id: 590ecd12-1dcc-7eae-4ad6-c28d1ec90df2 user: address: street: 123 Main St. city: San Francisco region: California postal_code: "94053" country: US email_address: acharleston@email.com legal_name: Anne Charleston phone_number: 510-555-0128 request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferIntentGetRequest' /transfer/repayment/list: post: summary: Lists historical repayments tags: - plaid externalDocs: url: /api/products/transfer/#transferrepaymentlist operationId: transferRepaymentList responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferRepaymentListResponse' examples: example-1: value: repayments: - repayment_id: d4bfce70-2470-4298-ae87-5e9b3e18bfaf created: "2019-12-09T12:34:56Z" amount: "12.34" iso_currency_code: USD request_id: h0dvmW8g4r2Z0KX default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/repayment/list` endpoint fetches repayments matching the given filters. Repayments are returned in reverse-chronological order (most recent first) starting at the given `start_time`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRepaymentListRequest' examples: example-1: value: start_time: "2022-01-10T12:34:56Z" count: 1 parameters: [] /transfer/repayment/return/list: post: summary: List the returns included in a repayment tags: - plaid externalDocs: url: /api/products/transfer/#transferrepaymentreturnlist operationId: transferRepaymentReturnList responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferRepaymentReturnListResponse' examples: example-1: value: repayment_returns: - transfer_id: d4bfce70-2470-4298-ae87-5e9b3e18bfaf event_id: 5 amount: "12.34" iso_currency_code: USD request_id: Ay70UHyBmbY0wUf default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/repayment/return/list` endpoint retrieves the set of returns that were batched together into the specified repayment. The sum of amounts of returns retrieved by this request equals the amount of the repayment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRepaymentReturnListRequest' examples: example-1: value: start_time: "2022-01-10T12:34:56Z" count: 1 repayment_id: d4bfce70-2470-4298-ae87-5e9b3e18bfaf parameters: [] /transfer/platform/requirement/submit: post: summary: Submit additional onboarding information on behalf of an originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferplatformrequirementsubmit operationId: transferPlatformRequirementSubmit responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferPlatformRequirementSubmitResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/platform/requirement/submit` endpoint to submit additional onboarding information that is needed by Plaid to approve or decline the originator. See [Requirement type schema documentation](https://docs.google.com/document/d/1NEQkTD0sVK50iAQi6xHigrexDUxZ4QxXqSEfV_FFTiU/) for a list of requirement types and possible values. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferPlatformRequirementSubmitRequest' parameters: [] /transfer/originator/create: post: summary: Create a new originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferoriginatorcreate operationId: transferOriginatorCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorCreateResponse' examples: example-1: value: originator_client_id: 6a65dh3d1h0d1027121ak184 company_name: Marketplace of Shannon request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorCreateRequest' examples: {} parameters: [] /transfer/questionnaire/create: post: summary: Generate a Plaid-hosted onboarding UI URL. tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferquestionnairecreate operationId: transferQuestionnaireCreate responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferQuestionnaireCreateResponse' examples: example-1: value: onboarding_url: https://plaid.com/originator/hIFGXx1zM5pFerygu7lw request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/questionnaire/create` endpoint generates a Plaid-hosted onboarding UI URL. Redirect the originator to this URL to provide their due diligence information and agree to Plaid's terms for ACH money movement. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferQuestionnaireCreateRequest' examples: {} parameters: [] /transfer/diligence/submit: post: summary: Submit transfer diligence on behalf of the originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferdiligencesubmit operationId: transferDiligenceSubmit responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferDiligenceSubmitResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferDiligenceSubmitRequest' examples: {} parameters: [] /transfer/diligence/document/upload: post: summary: Upload transfer diligence document on behalf of the originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferdiligencedocumentupload operationId: transferDiligenceDocumentUpload responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferDiligenceDocumentUploadResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- 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 content: application/json: schema: $ref: '#/components/schemas/TransferDiligenceDocumentUploadRequest' examples: {} parameters: [] /transfer/originator/get: post: summary: Get status of an originator's onboarding tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferoriginatorget operationId: transferOriginatorGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorGetResponse' examples: example-1: value: originator: client_id: 6a65dh3d1h0d1027121ak184 transfer_diligence_status: approved company_name: Plaid request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/originator/get` endpoint gets status updates for an originator's onboarding process. This information is also available via the Transfer page on the Plaid dashboard. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorGetRequest' examples: {} parameters: [] /transfer/originator/list: post: summary: Get status of all originators' onboarding tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferoriginatorlist operationId: transferOriginatorList responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorListResponse' examples: example-1: value: originators: - client_id: 6a65dh3d1h0d1027121ak184 transfer_diligence_status: approved - client_id: 8g89as4d2k1d9852938ba019 transfer_diligence_status: denied request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/originator/list` endpoint gets status updates for all of your originators' onboarding. This information is also available via the Plaid dashboard. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferOriginatorListRequest' examples: {} parameters: [] /transfer/refund/create: post: summary: Create a refund tags: - plaid externalDocs: url: /api/products/transfer/refunds/#transferrefundcreate operationId: transferRefundCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferRefundCreateResponse' examples: example-1: value: refund: id: 667af684-9ee1-4f5f-862a-633ec4c545cc transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 amount: "12.34" status: pending created: "2020-08-06T17:27:15Z" failure_reason: null network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/transfer/refund/create` endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days. Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds. A refund can still be issued even if the Item's `access_token` is no longer valid (e.g. if the user revoked OAuth consent or the Item was deleted via `/item/remove`), as long as the account and routing number pair used to make the original transaction is still valid. A refund cannot be issued if the Item has an [invalidated TAN](https://plaid.com/docs/auth/#tokenized-account-numbers), which can occur at Chase or PNC. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRefundCreateRequest' parameters: [] /transfer/return/recover: post: summary: Report a return recovery tags: - plaid externalDocs: url: /api/products/transfer/#transferreturnrecover operationId: transferReturnRecover responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferReturnRecoverResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/transfer/return/recover` endpoint to notify Plaid that you have recovered some or all of the loss on a returned guaranteed transfer. Recovery can be reported in full or in parts; the sum of recovered amounts across calls cannot exceed the original transfer's amount. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferReturnRecoverRequest' parameters: [] /transfer/refund/get: post: summary: Retrieve a refund tags: - plaid externalDocs: url: /api/products/transfer/refunds/#transferrefundget operationId: transferRefundGet responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferRefundGetResponse' examples: example-1: value: refund: id: 667af684-9ee1-4f5f-862a-633ec4c545cc transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 amount: "12.34" status: pending created: "2020-08-06T17:27:15Z" failure_reason: null network_trace_id: null request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRefundGetRequest' examples: {} parameters: [] /transfer/refund/cancel: post: summary: Cancel a refund tags: - plaid externalDocs: url: /api/products/transfer/refunds/#transferrefundcancel operationId: transferRefundCancel responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferRefundCancelResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/refund/cancel` endpoint to cancel a refund. A refund is eligible for cancellation if it has not yet been submitted to the payment network. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferRefundCancelRequest' /transfer/platform/originator/create: post: summary: Create an originator for Transfer for Platforms customers tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferplatformoriginatorcreate operationId: transferPlatformOriginatorCreate responses: "200": description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/TransferPlatformOriginatorCreateResponse' examples: example-1: value: request_id: saKrIBuEB9qJZno default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/platform/originator/create` endpoint to submit information about the originator you are onboarding, including the originator's agreement to the required legal terms. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferPlatformOriginatorCreateRequest' parameters: [] /transfer/platform/person/create: post: summary: Create a person associated with an originator tags: - plaid externalDocs: url: /api/products/transfer/platform-payments/#transferplatformpersoncreate operationId: transferPlatformPersonCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransferPlatformPersonCreateResponse' examples: example-1: value: person_id: 4aa32e78-0cb3-4c13-b45e-7f9f2fc709d1 request_id: qpCtcJz6g3fhMdJ default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/transfer/platform/person/create` endpoint to create a person associated with an originator (e.g. beneficial owner or control person) and optionally submit personal identification information for them. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransferPlatformPersonCreateRequest' /sandbox/bank_transfer/simulate: post: summary: (Deprecated) Simulate a bank transfer event in Sandbox deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference/#sandboxbank_transfersimulate operationId: sandboxBankTransferSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxBankTransferSimulateResponse' examples: example-1: value: request_id: LmHYMwBhZUvsM03 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxBankTransferSimulateRequest' /sandbox/transfer/sweep/simulate: post: summary: Simulate creating a sweep tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfersweepsimulate operationId: sandboxTransferSweepSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferSweepSimulateResponse' examples: example-1: value: sweep: id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d funding_account_id: 8945fedc-e703-463d-86b1-dc0607b55460 created: "2020-08-06T17:27:15Z" amount: "12.34" iso_currency_code: USD settled: "2020-08-07" network_trace_id: null request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of `swept` will become `swept_settled`, all `posted` or `pending` transfers with a sweep status of `unswept` will become `swept`, and all `returned` transfers with a sweep status of `swept` will become `return_swept`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferSweepSimulateRequest' /sandbox/transfer/simulate: post: summary: Simulate a transfer event in Sandbox tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfersimulate operationId: sandboxTransferSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferSimulateResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferSimulateRequest' /sandbox/transfer/refund/simulate: post: summary: Simulate a refund event in Sandbox tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferrefundsimulate operationId: sandboxTransferRefundSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferRefundSimulateResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/refund/simulate` endpoint to simulate a refund event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferRefundSimulateRequest' /sandbox/transfer/ledger/simulate_available: post: summary: Simulate converting pending balance to available balance tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferledgersimulate_available operationId: sandboxTransferLedgerSimulateAvailable responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerSimulateAvailableResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerSimulateAvailableRequest' /sandbox/transfer/ledger/deposit/simulate: post: summary: Simulate a ledger deposit event in Sandbox tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferledgerdepositsimulate operationId: sandboxTransferLedgerDepositSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerDepositSimulateResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerDepositSimulateRequest' /sandbox/transfer/ledger/withdraw/simulate: post: summary: Simulate a ledger withdraw event in Sandbox tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferledgerwithdrawsimulate operationId: sandboxTransferLedgerWithdrawSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerWithdrawSimulateResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferLedgerWithdrawSimulateRequest' /sandbox/transfer/repayment/simulate: post: summary: Trigger the creation of a repayment tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferrepaymentsimulate operationId: sandboxTransferRepaymentSimulate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferRepaymentSimulateResponse' examples: example-1: value: request_id: 4vAbY6XyqqoPQLB default: description: Error response content: 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, a 400 error is returned. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferRepaymentSimulateRequest' /sandbox/transfer/fire_webhook: post: summary: Manually fire a Transfer webhook tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransferfire_webhook operationId: sandboxTransferFireWebhook responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferFireWebhookResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferFireWebhookRequest' /sandbox/transfer/test_clock/create: post: summary: Create a test clock tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfertest_clockcreate operationId: sandboxTransferTestClockCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockCreateResponse' examples: example-1: value: test_clock: test_clock_id: b33a6eda-5e97-5d64-244a-a9274110151c virtual_time: "2006-01-02T15:04:05Z" request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment. A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox. A test clock can be associated with up to 5 recurring transfers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockCreateRequest' /sandbox/transfer/test_clock/advance: post: summary: Advance a test clock tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfertest_clockadvance operationId: sandboxTransferTestClockAdvance responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockAdvanceResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment. A test clock object represents an independent timeline and has a `virtual_time` field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing `virtual_time`, but may never go back to a lower `virtual_time`. If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed. For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting `virtual_time` = t + 15 days, 2 new originations should be created, along with the webhook events. The advancement of the test clock from its current `virtual_time` should be limited such that there are no more than 20 originations resulting from the advance operation on each `recurring_transfer` associated with the `test_clock`. For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the `virtual_time` up to 80 weeks on each API call. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockAdvanceRequest' /sandbox/transfer/test_clock/get: post: summary: Get a test clock tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfertest_clockget operationId: sandboxTransferTestClockGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockGetResponse' examples: example-1: value: test_clock: test_clock_id: b33a6eda-5e97-5d64-244a-a9274110151c virtual_time: "2006-01-02T15:04:05Z" request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockGetRequest' /sandbox/transfer/test_clock/list: post: summary: List test clocks tags: - plaid externalDocs: url: /api/sandbox/#sandboxtransfertest_clocklist operationId: sandboxTransferTestClockList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockListResponse' examples: example-1: value: test_clocks: - test_clock_id: b33a6eda-5e97-5d64-244a-a9274110151c virtual_time: "2006-01-02T15:04:05Z" - test_clock_id: a33a6eda-5e97-5d64-244a-a9274110152d virtual_time: "2006-02-02T15:04:05Z" request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/transfer/test_clock/list` endpoint to see a list of all your test clocks in the Sandbox environment, by ascending `virtual_time`. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired test clocks. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxTransferTestClockListRequest' /sandbox/payment_profile/reset_login: post: deprecated: true tags: - plaid summary: Reset the login of a Payment Profile externalDocs: url: /api/sandbox/#sandboxpayment_profilereset_login operationId: sandboxPaymentProfileResetLogin responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxPaymentProfileResetLoginResponse' examples: example-1: value: reset_login: true request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: 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. 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. In order to invoke this endpoint, you must first [create a Payment Profile](https://plaid.com/docs/transfer/add-to-app/#create-a-payment-profile-optional) and [go through the Link flow](https://plaid.com/docs/transfer/add-to-app/#create-a-link-token). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxPaymentProfileResetLoginRequest' /sandbox/payment/simulate: post: tags: - plaid summary: Simulate a payment event in Sandbox externalDocs: url: /api/sandbox/#sandboxpaymentsimulate operationId: sandboxPaymentSimulate description: Use the `/sandbox/payment/simulate` endpoint to simulate various payment events in the Sandbox environment. This endpoint will trigger the corresponding payment status webhook. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxPaymentSimulateResponse' examples: example-1: value: request_id: m8MDnv9okwxFNBV old_status: PAYMENT_STATUS_INPUT_NEEDED new_status: PAYMENT_STATUS_INITIATED default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxPaymentSimulateRequest' /employers/search: post: tags: - plaid externalDocs: url: /api/employers/#employerssearch operationId: employersSearch summary: (Deprecated) Search employer database deprecated: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/EmployersSearchResponse' examples: example-1: value: employers: - name: Plaid Inc. address: city: San Francisco country: US postal_code: "94103" region: CA street: 1098 Harrison St confidence_score: 1 employer_id: emp_1 request_id: ixTBLZGvhD4NnmB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- `/employers/search` allows you the ability to search Plaid's database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user's employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow. The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmployersSearchRequest' /income/verification/create: post: summary: (Deprecated) Create an income verification instance tags: - plaid deprecated: true externalDocs: url: /api/products/income/#incomeverificationcreate operationId: incomeVerificationCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationCreateResponse' examples: example-1: value: income_verification_id: f2a826d7-25cf-483b-a124-c40beb64b732 request_id: lMjeOeu9X1VUh1F default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: '`/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing. ' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationCreateRequest' /income/verification/paystubs/get: post: summary: (Deprecated) Retrieve information from the paystubs used for income verification deprecated: true tags: - plaid externalDocs: url: /api/products/income/#incomeverificationpaystubsget operationId: incomeVerificationPaystubsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationPaystubsGetResponse' examples: example-1: value: document_metadata: - doc_id: 2jkflanbd doc_type: DOCUMENT_TYPE_PAYSTUB name: paystub.pdf status: DOCUMENT_STATUS_PROCESSING_COMPLETE paystubs: - deductions: breakdown: - current_amount: 123.45 description: taxes iso_currency_code: USD unofficial_currency_code: null ytd_amount: 246.9 total: current_amount: 123.45 iso_currency_code: USD unofficial_currency_code: null ytd_amount: 246.9 doc_id: 2jkflanbd earnings: breakdown: - canonical_description: REGULAR PAY current_amount: 200.22 description: salary earned hours: 80 iso_currency_code: USD rate: null unofficial_currency_code: null ytd_amount: 400.44 - canonical_description: BONUS current_amount: 100 description: bonus earned hours: null iso_currency_code: USD rate: null unofficial_currency_code: null ytd_amount: 100 total: current_amount: 300.22 hours: 160 iso_currency_code: USD unofficial_currency_code: null ytd_amount: 500.44 employee: address: city: SAN FRANCISCO country: US postal_code: "94133" region: CA street: 2140 TAYLOR ST name: ANNA CHARLESTON marital_status: single taxpayer_id: id_type: SSN id_mask: "3333" employer: name: PLAID INC address: city: SAN FRANCISCO country: US postal_code: "94111" region: CA street: 1098 HARRISON ST net_pay: current_amount: 123.34 description: TOTAL NET PAY iso_currency_code: USD unofficial_currency_code: null ytd_amount: 253.54 pay_period_details: check_amount: 1490.21 distribution_breakdown: - account_name: Big time checking bank_name: bank of plaid current_amount: 176.77 iso_currency_code: USD mask: "1223" type: checking unofficial_currency_code: null end_date: "2020-12-15" gross_earnings: 4500 pay_date: "2020-12-15" start_date: "2020-12-01" pay_frequency: PAY_FREQUENCY_BIWEEKLY request_id: 2pxQ59buGdsHRef default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationPaystubsGetRequest' description: "" description: |- `/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user's income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error. This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead. /income/verification/documents/download: post: deprecated: true summary: (Deprecated) Download the original documents used for income verification tags: - plaid externalDocs: url: /api/products/income/#incomeverificationdocumentsdownload operationId: incomeVerificationDocumentsDownload responses: "200": description: A ZIP file containing source documents(s) used as the basis for income verification. content: application/zip: schema: type: string format: binary default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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. 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. The `request_id` is returned in the `Plaid-Request-ID` header. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationDocumentsDownloadRequest' parameters: [] /income/verification/taxforms/get: post: deprecated: true tags: - plaid summary: (Deprecated) Retrieve information from the tax documents used for income verification externalDocs: url: /api/products/income/#incomeverificationtaxformsget operationId: incomeVerificationTaxformsGet description: |- `/income/verification/taxforms/get` returns the information collected from forms that were used to verify an end user''s income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error. This endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationTaxformsGetResponse' examples: example-1: value: document_metadata: - doc_id: q5Ypbbr03p doc_type: DOCUMENT_TYPE_US_TAX_W2 name: my_w2.pdf status: DOCUMENT_STATUS_PROCESSING_COMPLETE request_id: 73W7sz8nIP8Mgck taxforms: - document_type: W2 w2: allocated_tips: "1000" box_12: - amount: "200" code: AA box_9: box9 dependent_care_benefits: "1000" employee: address: city: San Francisco country: US postal_code: "94103" region: CA street: 1234 Grand St name: Josie Georgia Harrison marital_status: single taxpayer_id: id_type: SSN id_mask: "1234" employer: address: city: New York country: US postal_code: "10010" region: NY street: 456 Main St name: Acme Inc employee_id_number: 12-1234567 federal_income_tax_withheld: "1000" medicare_tax_withheld: "1000" medicare_wages_and_tips: "1000" nonqualified_plans: "1000" other: other retirement_plan: CHECKED social_security_tax_withheld: "1000" social_security_tips: "1000" social_security_wages: "1000" state_and_local_wages: - employer_state_id_number: 11111111111AAA local_income_tax: "200" local_wages_tips: "200" locality_name: local state: UT state_income_tax: "200" state_wages_tips: "200" statutory_employee: CHECKED tax_year: "2020" third_party_sick_pay: CHECKED wages_tips_other_comp: "1000" default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationTaxformsGetRequest' description: "" /income/verification/precheck: post: deprecated: true summary: (Deprecated) Check digital income verification eligibility and optimize conversion tags: - plaid operationId: incomeVerificationPrecheck externalDocs: url: /api/products/income/#incomeverificationprecheck responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationPrecheckResponse' examples: example-1: value: request_id: lMjeOeu9X1VUh1F precheck_id: n9elqYlvYm confidence: HIGH default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- `/income/verification/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification and returns a `precheck_id` that can be provided to `/link/token/create`. If the user is eligible for digital verification, providing the `precheck_id` in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the `precheck_id` can still be provided to `/link/token/create` and the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income. While all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result. This endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IncomeVerificationPrecheckRequest' /employment/verification/get: post: deprecated: true summary: (Deprecated) Retrieve a summary of an individual's employment information tags: - plaid operationId: employmentVerificationGet externalDocs: url: /api/products/income/#employmentverificationget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/EmploymentVerificationGetResponse' examples: example-1: value: employments: - status: EMPLOYMENT_STATUS_ACTIVE start_date: "2020-01-01" end_date: null employer: name: Plaid Inc title: Software Engineer platform_ids: employee_id: "1234567" position_id: "8888" payroll_id: "1234567" request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- `/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user. This endpoint has been deprecated; new integrations should use `/credit/employment/get` instead. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EmploymentVerificationGetRequest' /credit/audit_copy_token/create: post: tags: - plaid summary: Create Asset or Income Report Audit Copy Token externalDocs: url: /api/products/income/#creditaudit_copy_tokencreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenCreateResponse' examples: example-1: value: audit_copy_token: a-production-3tau2cwvybdvrhucaaai27ulu4 request_id: Iam3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditAuditCopyTokenCreate description: |- Plaid can create an Audit Copy token of an Asset Report and/or Income Report to share with a participating Government-Sponsored Enterprise (GSE) if you participate in Fannie Mae's Day 1 Certainty™ program or utilize Freddie Mac's Loan Product Advisor® (LPA®) Asset and Income Modeler (AIM). An Audit Copy token contains the same underlying data as the Asset Report and/or Income Report (result of `/credit/payroll_income/get`). Use the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenCreateRequest' /credit/audit_copy_token/remove: post: tags: - plaid summary: Remove an Audit Copy token externalDocs: url: /api/products/income/#creditaudit_copy_tokenremove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenRemoveResponse' examples: example-1: value: removed: true request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditReportAuditCopyRemove requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditAuditCopyTokenRemoveRequest' description: "" description: The `/credit/audit_copy_token/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Report data and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy. /credit/asset_report/freddie_mac/get: post: tags: - plaid summary: Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint. externalDocs: url: /none/ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportFreddieGetResponse' examples: example-1: value: SchemaVersion: 1 DEAL: LOANS: LOAN: LOAN_IDENTIFIERS: LOAN_IDENTIFIER: LoanIdentifier: "100016746" LoanIdentifierType: LenderLoan PARTIES: PARTY: - INDIVIDUAL: NAME: FirstName: John LastName: Deere ROLES: ROLE: ROLE_DETAIL: PartyRoleType: Borrower TAXPAYER_IDENTIFIERS: TAXPAYER_IDENTIFIER: TaxpayerIdentifierType: SocialSecurityNumber TaxpayerIdentifierValue: 123-45-6789 SERVICES: SERVICE: VERIFICATION_OF_ASSET: REPORTING_INFORMATION: ReportingInformationIdentifier: a-prod-kol4xb5y4nf2zecqalb2d55mze SERVICE_PRODUCT_FULFILLMENT: SERVICE_PRODUCT_FULFILLMENT_DETAIL: VendorOrderIdentifier: PLAID ServiceProductFulfillmentIdentifier: VOA VERIFICATION_OF_ASSET_RESPONSE: ASSETS: ASSET: - ASSET_DETAIL: AssetAccountIdentifier: "3847" AssetUniqueIdentifier: c251a55e-c503-471b-a3b1-11a9243bc189 AssetAsOfDate: "2022-07-27" AssetDescription: Unlimited Cash Rewards Visa Signature AssetAvailableBalanceAmount: 2073.99 AssetCurrentBalanceAmount: 2007.09 AssetType: Other AssetTypeAdditionalDescription: credit card AssetDaysRequestedCount: 61 AssetOwnershipType: null ASSET_OWNERS: ASSET_OWNER: - AssetOwnerText: Alberta Bobbeth Charleson ASSET_HOLDER: NAME: FullName: Wells Fargo ASSET_TRANSACTIONS: ASSET_TRANSACTION: - ASSET_TRANSACTION_DETAIL: AssetTransactionUniqueIdentifier: 7jagxo9Eq6cXPKM8eMNJUgeeNnbgQdSDw6zgN AssetTransactionAmount: 34.43 AssetTransactionDate: "2022-07-19" AssetTransactionPostDate: "2022-07-19" AssetTransactionType: Debit AssetInvestmentTransactionTypeDescription: null AssetTransactionPaidByName: null AssetTransactionTypeAdditionalDescription: null AssetTransactionCategoryType: FoodDining FinancialInstitutionTransactionIdentifier: null ASSET_TRANSACTION_DESCRIPTON: - AssetTransactionDescription: TONYS PIZZA NAPOLETANA SAN FRANCISCOCA VALIDATION_SOURCES: VALIDATION_SOURCE: - ValidationSourceName: "" ValidationSourceReferenceIdentifier: "" STATUSES: STATUS: StatusCode: success StatusDescription: null request_id: eYupqX1mZkEuQRx default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditAssetReportFreddieMacGet description: The `/credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac's JSON format. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AssetReportFreddieGetRequest' description: "" /credit/freddie_mac/reports/get: post: tags: - plaid summary: Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint. externalDocs: url: /none/ responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditFreddieMacReportsGetResponse' examples: example-1: value: SchemaVersion: 2.4 DEAL: LOANS: LOAN: LoanRoleType: SubjectLoan LOAN_IDENTIFIERS: LOAN_IDENTIFIER: - LoanIdentifier: "100016746" LoanIdentifierType: LenderLoan PARTIES: PARTY: - INDIVIDUAL: NAME: FirstName: John LastName: Deere MiddleName: S ROLES: ROLE: ROLE_DETAIL: PartyRoleType: Borrower TAXPAYER_IDENTIFIERS: TAXPAYER_IDENTIFIER: TaxpayerIdentifierType: SocialSecurityNumber TaxpayerIdentifierValue: 123-45-6789 SERVICES: SERVICE: VERIFICATION_OF_ASSET: - REPORTING_INFORMATION: ReportIdentifierType: ReportID ReportDateTime: "" ReportingInformationParentIdentifier: a-prod-kol4xb5y4nf2zecqalb2d55mze ReportingInformationIdentifier: assets-prod-20746587-2ad7-407f-a201-0669e1368cf7 SERVICE_PRODUCT_FULFILLMENT: SERVICE_PRODUCT_FULFILLMENT_DETAIL: VendorOrderIdentifier: PLAID ServiceProductFulfillmentIdentifier: VOE VERIFICATION_OF_ASSET_RESPONSE: ASSETS: ASSET: - ASSET_DETAIL: AssetAccountIdentifier: "3847" AssetUniqueIdentifier: c251a55e-c503-471b-a3b1-11a9243bc189 AssetAsOfDate: "2022-07-27" AssetDescription: Unlimited Cash Rewards Visa Signature AssetAvailableBalanceAmount: 0 AssetCurrentBalanceAmount: 0 AssetType: Other AssetTypeAdditionalDescription: credit card AssetDaysRequestedCount: 61 AssetOwnershipType: null ASSET_OWNERS: ASSET_OWNER: - AssetOwnerText: Alberta Bobbeth Charleson ASSET_HOLDER: NAME: FullName: Wells Fargo ASSET_TRANSACTIONS: ASSET_TRANSACTION: - ASSET_TRANSACTION_DETAIL: AssetTransactionCategoryType: Reimbursement AssetTransactionAmount: 0 AssetTransactionDate: "2022-07-28" AssetTransactionPostDate: "2022-07-28" AssetTransactionType: Credit AssetInvestmentTransactionTypeDescription: null AssetTransactionPaidByName: null AssetTransactionPaidToName: null AssetTransactionTypeAdditionalDescription: null AssetTransactionUniqueIdentifier: 8XQ2rJzjagxp87SJLNPKM8eMNJUgeeNnbg FinancialInstitutionTransactionIdentifier: null ASSET_TRANSACTION_DESCRIPTION: - AssetTransactionDescription: UNITED AIRLINES SAN FRANCISCOCA VALIDATION_SOURCES: VALIDATION_SOURCE: - ValidationSourceName: "" ValidationSourceReferenceIdentifier: "" - REPORTING_INFORMATION: ReportDateTime: "" ReportingInformationParentIdentifier: a-prod-kol4xb5y4nf2zecqalb2d55mze ReportingInformationIdentifier: assets-prod-20746587-2ad7-407f-a201-0669e1368cf7 ReportIdentifierType: ReportID SERVICE_PRODUCT_FULFILLMENT: SERVICE_PRODUCT_FULFILLMENT_DETAIL: VendorOrderIdentifier: PLAID ServiceProductFulfillmentIdentifier: VOA VERIFICATION_OF_ASSET_RESPONSE: ASSETS: ASSET: - ASSET_DETAIL: AssetAccountIdentifier: "3847" AssetUniqueIdentifier: c251a55e-c503-471b-a3b1-11a9243bc189 AssetAsOfDate: "2022-07-27" AssetDescription: Unlimited Cash Rewards Visa Signature AssetAvailableBalanceAmount: 2073.99 AssetCurrentBalanceAmount: 2007.09 AssetType: Other AssetTypeAdditionalDescription: credit card AssetDaysRequestedCount: 61 AssetOwnershipType: null ASSET_OWNERS: ASSET_OWNER: - AssetOwnerText: Alberta Bobbeth Charleson ASSET_HOLDER: NAME: FullName: Wells Fargo ASSET_TRANSACTIONS: ASSET_TRANSACTION: - ASSET_TRANSACTION_DETAIL: AssetTransactionUniqueIdentifier: 7jagxo9Eq6cXPKM8eMNJUgeeNnbgQdSDw6zgN AssetTransactionAmount: 34.43 AssetTransactionDate: "2022-07-19" AssetTransactionPostDate: "2022-07-19" AssetTransactionType: Debit AssetInvestmentTransactionTypeDescription: null AssetTransactionPaidByName: null AssetTransactionTypeAdditionalDescription: null AssetTransactionCategoryType: FoodDining FinancialInstitutionTransactionIdentifier: null ASSET_TRANSACTION_DESCRIPTION: - AssetTransactionDescription: TONYS PIZZA NAPOLETANA SAN FRANCISCOCA VALIDATION_SOURCES: VALIDATION_SOURCE: - ValidationSourceName: "" ValidationSourceReferenceIdentifier: "" STATUSES: STATUS: StatusCode: success StatusDescription: null request_id: eYupqX1mZkEuQRx default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditFreddieMacReportsGet description: The `/credit/freddie_mac/reports/get` endpoint retrieves the Verification of Assets and Verification of Employment reports. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditFreddieMacReportsGetRequest' description: "" /beta/credit/v1/bank_employment/get: post: summary: Retrieve information from the bank accounts used for employment verification tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditBankEmploymentGetResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm bank_employment_reports: - bank_employment_report_id: 0a7eaed6-5da7-4846-baaf-ad787306575e generated_time: "2023-01-23T22:47:53Z" days_requested: 120 items: - item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 last_updated_time: "2023-01-23T22:47:53Z" institution_id: ins_0 institution_name: Plaid Bank bank_employments: - bank_employment_id: f17efbdd-caab-4278-8ece-963511cd3d51 account_id: GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9 employer: name: Plaid Inc. latest_deposit_date: "2023-01-15" earliest_deposit_date: "2022-01-15" bank_employment_accounts: - account_id: GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9 mask: "8888" name: Plaid Checking Account official_name: Plaid Checking Account type: depository subtype: checking owners: - addresses: - data: city: Malakoff country: US postal_code: "14236" region: NY street: 2992 Cameron Road primary: true - data: city: San Matias country: US postal_code: 93405-2255 region: CA street: 2493 Leisure Lane primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile warnings: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/income/#creditbank_employmentget operationId: creditBankEmploymentGet description: '`/beta/credit/v1/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankEmploymentGetRequest' /credit/bank_income/get: post: summary: Retrieve information from the bank accounts used for income verification tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeGetResponse' examples: example-1: value: bank_income: - bank_income_id: dacc92a0-cb59-43a5-ba24-1b1c07a03f28 bank_income_summary: end_date: "2024-08-21" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 4090.14 total_amounts: - amount: 4090.14 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 120.12 check_number: null date: "2024-08-07" iso_currency_code: USD name: TEXAS OAG CHILD SUPPORT original_description: TEXAS OAG CHILD SUPPORT transaction_id: EZMmvwREqlSGmlRam7bzFKyBll3kJjU4xKm1w unofficial_currency_code: null - amount: 1525 check_number: null date: "2024-08-08" iso_currency_code: USD name: 'AIRBNB PAYMENTS PPD ID: 1234567890' original_description: 'AIRBNB PAYMENTS PPD ID: 1234567890' transaction_id: Wr6jzLwg1qs6ag9Xa8BrCpBAPPxnEXF6ZmjDR unofficial_currency_code: null - amount: 500 check_number: null date: "2024-08-12" iso_currency_code: USD name: TWC-BENEFITS/UI BENEFIT original_description: TWC-BENEFITS/UI BENEFIT transaction_id: Aj7Apx5bDyIA3VRl35yqC18wXXorBgI9rX5dp unofficial_currency_code: null - amount: 1000.7 check_number: null date: "2024-08-15" iso_currency_code: USD name: PLAID PAYROLL original_description: PLAID PAYROLL transaction_id: G1L9oybBrKSMPmBdPzXoFN8aGGE7gXC6MeoQB unofficial_currency_code: null - amount: 824.2 check_number: null date: "2024-08-15" iso_currency_code: USD name: 'SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890' original_description: 'SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890' transaction_id: nWLlwMm1qxi8DomvDXP3FaGjXX5bm9TAlyQnk unofficial_currency_code: null - amount: 120.12 check_number: null date: "2024-08-21" iso_currency_code: USD name: TEXAS OAG CHILD SUPPORT original_description: TEXAS OAG CHILD SUPPORT transaction_id: b7dkg6eQbPFQeRvVeZlxcqxZooa7nWSmb47dj unofficial_currency_code: null unofficial_currency_code: null income_categories_count: 5 income_sources_count: 5 income_transactions_count: 6 iso_currency_code: USD start_date: "2024-08-07" total_amount: 4090.14 total_amounts: - amount: 4090.14 iso_currency_code: USD unofficial_currency_code: null unofficial_currency_code: null days_requested: 15 generated_time: "2024-08-21T18:10:46.293199Z" items: - bank_income_accounts: - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 mask: "9217" name: Checking official_name: Plaid checking owners: - addresses: [] emails: [] names: - Jane Doe phone_numbers: [] subtype: checking type: depository bank_income_sources: - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 end_date: "2024-08-15" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 1000.7 total_amounts: - amount: 1000.7 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 1000.7 check_number: null date: "2024-08-15" iso_currency_code: USD name: PLAID PAYROLL original_description: PLAID PAYROLL transaction_id: G1L9oybBrKSMPmBdPzXoFN8aGGE7gXC6MeoQB unofficial_currency_code: null unofficial_currency_code: null income_category: SALARY income_description: PLAID PAYROLL income_source_id: 0e9d6fbc-29de-4225-9843-2f71e02a54d1 pay_frequency: UNKNOWN start_date: "2024-08-15" total_amount: 1000.7 transaction_count: 1 - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 end_date: "2024-08-15" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 824.2 total_amounts: - amount: 824.2 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 824.2 check_number: null date: "2024-08-15" iso_currency_code: USD name: 'SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890' original_description: 'SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890' transaction_id: nWLlwMm1qxi8DomvDXP3FaGjXX5bm9TAlyQnk unofficial_currency_code: null unofficial_currency_code: null income_category: LONG_TERM_DISABILITY income_description: 'SSI TREAS 310 XXSUPP SEC PPD ID: 1234567890' income_source_id: 88bc00d8-2bb1-42d0-a054-db3f20948283 pay_frequency: UNKNOWN start_date: "2024-08-15" total_amount: 824.2 transaction_count: 1 - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 end_date: "2024-08-08" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 1525 total_amounts: - amount: 1525 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 1525 check_number: null date: "2024-08-08" iso_currency_code: USD name: 'AIRBNB PAYMENTS PPD ID: 1234567890' original_description: 'AIRBNB PAYMENTS PPD ID: 1234567890' transaction_id: Wr6jzLwg1qs6ag9Xa8BrCpBAPPxnEXF6ZmjDR unofficial_currency_code: null unofficial_currency_code: null income_category: RENTAL income_description: 'AIRBNB PAYMENTS PPD ID: 1234567890' income_source_id: 063689af-7299-4327-b71f-9d8849a40c0e pay_frequency: UNKNOWN start_date: "2024-08-08" total_amount: 1525 transaction_count: 1 - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 end_date: "2024-08-12" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 500 total_amounts: - amount: 500 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 500 check_number: null date: "2024-08-12" iso_currency_code: USD name: TWC-BENEFITS/UI BENEFIT original_description: TWC-BENEFITS/UI BENEFIT transaction_id: Aj7Apx5bDyIA3VRl35yqC18wXXorBgI9rX5dp unofficial_currency_code: null unofficial_currency_code: null income_category: UNEMPLOYMENT income_description: TWC-BENEFITS/UI BENEFIT income_source_id: ce160170-49d0-4811-b58e-cb4878d05f83 pay_frequency: UNKNOWN start_date: "2024-08-12" total_amount: 500 transaction_count: 1 - account_id: G1L9oybBrKSMPmBdPzXoFN8oo16rqqC6PwkA5 end_date: "2024-08-21" historical_summary: - end_date: "2024-08-21" iso_currency_code: USD start_date: "2024-08-06" total_amount: 240.24 total_amounts: - amount: 240.24 iso_currency_code: USD unofficial_currency_code: null transactions: - amount: 120.12 check_number: null date: "2024-08-07" iso_currency_code: USD name: TEXAS OAG CHILD SUPPORT original_description: TEXAS OAG CHILD SUPPORT transaction_id: EZMmvwREqlSGmlRam7bzFKyBll3kJjU4xKm1w unofficial_currency_code: null - amount: 120.12 check_number: null date: "2024-08-21" iso_currency_code: USD name: TEXAS OAG CHILD SUPPORT original_description: TEXAS OAG CHILD SUPPORT transaction_id: b7dkg6eQbPFQeRvVeZlxcqxZooa7nWSmb47dj unofficial_currency_code: null unofficial_currency_code: null income_category: CHILD_SUPPORT income_description: TEXAS OAG CHILD SUPPORT income_source_id: c8e1576e-9de4-47b4-ad55-3f7b068cc863 pay_frequency: UNKNOWN start_date: "2024-08-07" total_amount: 240.24 transaction_count: 2 institution_id: ins_20 institution_name: Citizens Bank item_id: L8EKo4GydxSKmJQGmXyPuDkeNn4rg9fP3MKLv last_updated_time: "2024-08-21T18:10:47.367335Z" request_id: MLM1fFu4fbVg7KR default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/income/#creditbank_incomeget operationId: creditBankIncomeGet description: '`/credit/bank_income/get` returns the bank income report(s) for a specified user. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link). To return older reports, use the `options.count` field.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeGetRequest' /credit/bank_income/pdf/get: post: summary: Retrieve information from the bank accounts used for income verification in PDF format tags: - plaid responses: "200": description: A PDF of the Bank Income Report content: application/pdf: schema: $ref: '#/components/schemas/CreditBankIncomePDFGetResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/income/#creditbank_incomepdfget operationId: creditBankIncomePdfGet description: '`/credit/bank_income/pdf/get` returns the most recent bank income report for a specified user in PDF format. A single report corresponds to all institutions linked in a single Link session. To include multiple institutions in a single report, use [Multi-Item Link](https://plaid.com/docs/link/multi-item-link).' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomePDFGetRequest' /credit/bank_income/refresh: post: summary: Refresh a user's bank income information tags: - plaid externalDocs: url: /api/products/income/#creditbank_incomerefresh operationId: creditBankIncomeRefresh deprecated: true description: '`/credit/bank_income/refresh` is deprecated. The backend implementation was removed (returns an `Unimplemented` error at runtime), and the endpoint is no longer part of the documented API surface. To refresh Bank Income data for an existing user, send the user through Link''s update mode so they can confirm their income sources. For a fully backend refresh, migrate to CRA Income Insights and call `/cra/check_report/create`.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeRefreshRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeRefreshResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /credit/bank_income/webhook/update: post: summary: Subscribe and unsubscribe to proactive notifications for a user's income profile tags: - plaid externalDocs: url: /api/products/income/#creditbank_incomewebhookupdate operationId: creditBankIncomeWebhookUpdate description: |- `/credit/bank_income/webhook/update` allows you to subscribe or unsubscribe a user for income webhook notifications. By default, all users start out unsubscribed. If a user is subscribed, on significant changes to the user's income profile, you will receive a `BANK_INCOME_REFRESH_UPDATE` webhook, prompting you to refresh bank income data for the user. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeWebhookUpdateRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditBankIncomeWebhookUpdateResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /credit/payroll_income/parsing_config/update: post: summary: Update the parsing configuration for a document income verification tags: - plaid externalDocs: url: /api/products/income/#creditpayroll_incomeparsing_configupdate operationId: creditPayrollIncomeParsingConfigUpdate description: '`/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeParsingConfigUpdateRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeParsingConfigUpdateResponse' examples: example-1: value: request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /credit/bank_statements/uploads/get: post: summary: Retrieve data for a user's uploaded bank statements tags: - plaid responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditBankStatementsUploadsGetResponse' examples: example-1: value: items: - item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 bank_statements: - transactions: - amount: -1000 date: "2023-01-01" original_description: PAYCHECK account_id: c6778d3f-e44c-4348-874e-71507c1ac12d document_metadata: document_type: BANK_STATEMENT name: statement_01.pdf status: PROCESSING_COMPLETE download_url: null page_count: 2 document_id: 2jkflanbd bank_accounts: - name: CHASE CHECKING bank_name: CHASE account_type: CHECKING account_number: "000009752" account_id: c6778d3f-e44c-4348-874e-71507c1ac12d owner: name: JANE DOE address: postal_code: "94133" country: US region: CA city: SAN FRANCISCO street: 2140 TAYLOR ST periods: - start_date: "2023-01-01" end_date: "2023-02-01" starting_balance: 2500 ending_balance: 3500 status: processing_status: PROCESSING_COMPLETE updated_at: "2023-02-01T21:14:54Z" request_id: LhQf0THi8SH1yJm default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' externalDocs: url: /api/products/income/#creditbank_statementsuploadsget operationId: creditBankStatementsUploadsGet description: '`/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditBankStatementsUploadsGetRequest' /credit/payroll_income/get: post: summary: Retrieve a user's payroll information tags: - plaid externalDocs: url: /api/products/income/#creditpayroll_incomeget operationId: creditPayrollIncomeGet description: This endpoint gets payroll income information for a specific user, either as a result of the user connecting to their payroll provider or uploading a pay related document. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeGetResponse' examples: example-1: value: items: - item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 institution_id: ins_92 institution_name: ADP accounts: - account_id: GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9 rate_of_pay: pay_amount: 100000 pay_rate: ANNUAL pay_frequency: BIWEEKLY payroll_income: - account_id: GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9 pay_stubs: - deductions: breakdown: - current_amount: 123.45 description: taxes iso_currency_code: USD unofficial_currency_code: null ytd_amount: 246.9 total: current_amount: 123.45 iso_currency_code: USD unofficial_currency_code: null ytd_amount: 246.9 document_metadata: document_type: PAYSTUB name: paystub.pdf status: PROCESSING_COMPLETE download_url: null document_id: 2jkflanbd earnings: breakdown: - canonical_description: REGULAR_PAY current_amount: 200.22 description: salary earned hours: 80 iso_currency_code: USD rate: null unofficial_currency_code: null ytd_amount: 400.44 - canonical_description: BONUS current_amount: 100 description: bonus earned hours: null iso_currency_code: USD rate: null unofficial_currency_code: null ytd_amount: 100 total: current_amount: 300.22 hours: 160 iso_currency_code: USD unofficial_currency_code: null ytd_amount: 500.44 employee: address: city: SAN FRANCISCO country: US postal_code: "94133" region: CA street: 2140 TAYLOR ST name: ANNA CHARLESTON marital_status: SINGLE taxpayer_id: id_type: SSN id_mask: "3333" employer: name: PLAID INC address: city: SAN FRANCISCO country: US postal_code: "94111" region: CA street: 1098 HARRISON ST net_pay: current_amount: 123.34 description: TOTAL NET PAY iso_currency_code: USD unofficial_currency_code: null ytd_amount: 253.54 pay_period_details: distribution_breakdown: - account_name: Big time checking bank_name: bank of plaid current_amount: 176.77 iso_currency_code: USD mask: "1223" type: checking unofficial_currency_code: null end_date: "2020-12-15" gross_earnings: 4500 iso_currency_code: USD pay_amount: 1490.21 pay_date: "2020-12-15" pay_frequency: BIWEEKLY start_date: "2020-12-01" unofficial_currency_code: null w2s: - allocated_tips: "1000" box_12: - amount: "200" code: AA box_9: box9 dependent_care_benefits: "1000" document_metadata: document_type: US_TAX_W2 download_url: null name: w_2.pdf status: PROCESSING_COMPLETE document_id: 1pkflebk4 employee: address: city: San Francisco country: US postal_code: "94103" region: CA street: 1234 Grand St name: Josie Georgia Harrison marital_status: SINGLE taxpayer_id: id_type: SSN id_mask: "1234" employer: address: city: New York country: US postal_code: "10010" region: NY street: 456 Main St name: Acme Inc employer_id_number: 12-1234567 federal_income_tax_withheld: "1000" medicare_tax_withheld: "1000" medicare_wages_and_tips: "1000" nonqualified_plans: "1000" other: other retirement_plan: CHECKED social_security_tax_withheld: "1000" social_security_tips: "1000" social_security_wages: "1000" state_and_local_wages: - employer_state_id_number: 11111111111AAA local_income_tax: "200" local_wages_and_tips: "200" locality_name: local state: UT state_income_tax: "200" state_wages_tips: "200" statutory_employee: CHECKED tax_year: "2020" third_party_sick_pay: CHECKED wages_tips_other_comp: "1000" form1099s: - april_amount: null august_amount: null card_not_present_transaction: null crop_insurance_proceeds: 1000 december_amount: null document_id: mvMZ59Z2a5 document_metadata: document_type: US_TAX_1099_MISC download_url: null name: form_1099_misc.pdf status: PROCESSING_COMPLETE excess_golden_parachute_payments: 1000 february_amount: null federal_income_tax_withheld: 1000 filer: address: city: null country: null postal_code: null region: null street: null name: null tin: null type: null fishing_boat_proceeds: 1000 form_1099_type: FORM_1099_TYPE_MISC gross_amount: 1000 gross_proceeds_paid_to_an_attorney: 1000 january_amount: null july_amount: null june_amount: null march_amount: null may_amount: null medical_and_healthcare_payments: 1000 merchant_category_code: null nonemployee_compensation: 1000 november_amount: null number_of_payment_transactions: null october_amount: null other_income: 1000 payer: address: city: SAN FRANCISCO country: US postal_code: "94111" region: CA street: 1098 HARRISON ST name: PLAID INC telephone_number: (123)456-7890 tin: 12-3456789 payer_made_direct_sales_of_500_or_more_of_consumer_products_to_buyer: null payer_state_number: CA 12345 payer_state_number_lower: null primary_state: null primary_state_id: CA 12345 primary_state_income_tax: 1000 pse_name: null pse_telephone_number: null recipient: account_number: "45678" address: city: SAN FRANCISCO country: US postal_code: "94133" region: CA street: 2140 TAYLOR ST facta_filing_requirement: CHECKED name: Josie Georgia Harrison second_tin_exists: NOT CHECKED tin: 12-3456789 rents: 1000 royalties: 1000 secondary_state: null secondary_state_id: null secondary_state_income_tax: null section_409a_deferrals: 1000 section_409a_income: 1000 september_amount: null state_income: 1000 state_income_lower: null state_tax_withheld: 1000 state_tax_withheld_lower: null 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" request_id: 2pxQ59buGdsHRef default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /credit/payroll_income/risk_signals/get: post: summary: Retrieve fraud insights for a user's manually uploaded document(s). tags: - plaid externalDocs: url: /api/products/income/#creditpayroll_incomerisk_signalsget operationId: creditPayrollIncomeRiskSignalsGet description: |- `/credit/payroll_income/risk_signals/get` can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering. It returns a risk score for each uploaded document that indicates the likelihood of the document being fraudulent, in addition to details on the individual risk signals contributing to the score. To trigger risk signal generation for an Item, call `/link/token/create` with `parsing_config` set to include `risk_signals`, or call `/credit/payroll_income/parsing_config/update`. Once risk signal generation has been triggered, `/credit/payroll_income/risk_signals/get` can be called at any time after the `INCOME_VERIFICATION_RISK_SIGNALS` webhook has been fired. `/credit/payroll_income/risk_signals/get` is offered as an add-on to Document Income and is billed separately. To request access to this endpoint, submit a product access request or contact your Plaid account manager. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeRiskSignalsGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeRiskSignalsGetResponse' examples: example-1: value: items: - item_id: testItemID verification_risk_signals: - account_id: null multi_document_risk_signals: [] single_document_risk_signals: - document_reference: document_id: lRepoQjxlJ1nz document_name: Paystub.pdf file_type: TRUE_PDF risk_summary: risk_score: 70 risk_signals: - actual_value: "0.00" expected_value: "25.09" field: null signal_description: null has_fraud_risk: true type: MASKING page_number: 1 institution_metadata: item_id: testItemID - actual_value: null expected_value: null field: null signal_description: Creation date and modification date do not match has_fraud_risk: true institution_metadata: null type: METADATA_DATES_OUTSIDE_WINDOW page_number: 0 request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /credit/payroll_income/precheck: post: deprecated: true summary: Check income verification eligibility and optimize conversion tags: - plaid operationId: creditPayrollIncomePrecheck externalDocs: url: /api/products/income/#creditpayroll_incomeprecheck responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomePrecheckResponse' examples: example-1: value: request_id: lMjeOeu9X1VUh1F confidence: HIGH default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- `/credit/payroll_income/precheck` is an optional endpoint that can be called before initializing a Link session for income verification. It evaluates whether a given user is supportable by digital income verification. If the user is eligible for digital verification, that information will be associated with the user token, and in this way will generate a Link UI optimized for the end user and their specific employer. If the user cannot be confirmed as eligible, the user can still use the income verification flow, but they may be required to manually upload a paystub to verify their income. While all request fields are optional, providing `employer` data will increase the chance of receiving a useful result. When testing in Sandbox, you can control the results by providing special test values in the `employer` and `access_tokens` fields. `employer_good` and `employer_bad` will result in `HIGH` and `LOW` confidence values, respectively. `employer_multi` will result in a `HIGH` confidence with multiple payroll options. Likewise, `access_good` and `access_bad` will result in `HIGH` and `LOW` confidence values, respectively. Any other value for `employer` and `access_tokens` in Sandbox will result in `UNKNOWN` confidence. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomePrecheckRequest' /credit/employment/get: post: summary: Retrieve a summary of an individual's employment information tags: - plaid operationId: creditEmploymentGet externalDocs: url: /api/products/income/#creditemploymentget responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditEmploymentGetResponse' examples: example-1: value: items: - item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 employments: - account_id: GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9 status: ACTIVE start_date: "2020-01-01" end_date: null employer: name: Plaid Inc title: Software Engineer platform_ids: employee_id: "1234567" position_id: "8888" payroll_id: "1234567" employee_type: FULL_TIME last_paystub_date: "2022-01-15" request_id: LhQf0THi8SH1yJm default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: '`/credit/employment/get` returns a list of items with employment information from a user''s payroll provider that was verified by an end user.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditEmploymentGetRequest' /credit/payroll_income/refresh: post: tags: - plaid summary: Refresh a digital payroll income verification externalDocs: url: /api/products/income/#creditpayroll_incomerefresh operationId: creditPayrollIncomeRefresh description: '`/credit/payroll_income/refresh` refreshes a given digital payroll income verification.' responses: "200": description: success content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeRefreshResponse' examples: example-1: value: request_id: nTkbCH41HYmpbm5 verification_refresh_status: USER_PRESENCE_REQUIRED default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditPayrollIncomeRefreshRequest' /credit/relay/create: post: summary: Create a relay token to share an Asset Report with a partner client tags: - plaid operationId: creditRelayCreate externalDocs: url: /api/products/assets/#creditrelaycreate requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditRelayCreateRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditRelayCreateResponse' examples: example-1: value: relay_token: credit-relay-production-3TAU2CWVYBDVRHUCAAAI27ULU4 request_id: Iam3b default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Plaid can share an Asset Report directly with a participating third party on your behalf. The shared Asset Report is the exact same Asset Report originally created in `/asset_report/create`. To grant a third party access to an Asset Report, use the `/credit/relay/create` endpoint to create a `relay_token` and then pass that token to your third party. Each third party has its own `secondary_client_id`; for example, `ce5bd328dcd34123456`. You'll need to create a separate `relay_token` for each third party that needs access to the report on your behalf. /credit/relay/get: post: summary: Retrieve the reports associated with a relay token that was shared with you tags: - plaid operationId: creditRelayGet externalDocs: url: /api/products/assets/#creditrelayget requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditRelayGetRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/AssetReportGetResponse' examples: example-1: value: report: asset_report_id: 028e8404-a013-4a45-ac9e-002482f9cafc client_report_id: client_report_id_1221 date_generated: "2023-03-30T18:27:37Z" days_requested: 90 items: - accounts: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 balances: available: 43200 current: 43200 limit: null margin_loan_amount: null iso_currency_code: USD unofficial_currency_code: null days_available: 90 historical_balances: - current: 49050 date: "2023-03-29" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-28" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-27" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-26" iso_currency_code: USD unofficial_currency_code: null - current: 49050 date: "2023-03-25" iso_currency_code: USD unofficial_currency_code: null mask: "4444" name: Plaid Money Market official_name: Plaid Platinum Standard 1.85% Interest Money Market owners: - addresses: - data: city: Malakoff country: US region: NY street: 2992 Cameron Road postal_code: "14236" primary: true - data: city: San Matias country: US region: CA street: 2493 Leisure Lane postal_code: 93405-2255 primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: money market transactions: - account_id: 1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8 amount: 5850 date: "2023-03-30" iso_currency_code: USD original_description: ACH Electronic CreditGUSTO PAY 123456 pending: false transaction_id: gGQgjoeyqBF89PND6K14Sow1wddZBmtLomJ78 unofficial_currency_code: null type: depository - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v balances: available: 100 current: 110 limit: null margin_loan_amount: null iso_currency_code: USD unofficial_currency_code: null days_available: 90 historical_balances: - current: 110 date: "2023-03-29" iso_currency_code: USD unofficial_currency_code: null - current: -390 date: "2023-03-28" iso_currency_code: USD unofficial_currency_code: null - current: -373.67 date: "2023-03-27" iso_currency_code: USD unofficial_currency_code: null - current: -284.27 date: "2023-03-26" iso_currency_code: USD unofficial_currency_code: null - current: -284.27 date: "2023-03-25" iso_currency_code: USD unofficial_currency_code: null mask: "0000" name: Plaid Checking official_name: Plaid Gold Standard 0% Interest Checking owners: - addresses: - data: city: Malakoff country: US region: NY street: 2992 Cameron Road postal_code: "14236" primary: true - data: city: San Matias country: US region: CA street: 2493 Leisure Lane postal_code: 93405-2255 primary: false emails: - data: accountholder0@example.com primary: true type: primary - data: accountholder1@example.com primary: false type: secondary - data: extraordinarily.long.email.username.123456@reallylonghostname.com primary: false type: other names: - Alberta Bobbeth Charleson phone_numbers: - data: +1 111-555-3333 primary: false type: home - data: +1 111-555-4444 primary: false type: work - data: +1 111-555-5555 primary: false type: mobile ownership_type: null subtype: checking transactions: - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 89.4 date: "2023-03-27" iso_currency_code: USD original_description: SparkFun pending: false transaction_id: 4zBRq1Qem4uAPnoyKjJNTRQpQddM4ztlo1PLD unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 12 date: "2023-03-28" iso_currency_code: USD original_description: 'McDonalds #3322' pending: false transaction_id: dkjL41PnbKsPral79jpxhMWdW55gkPfBkWpRL unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: 4.33 date: "2023-03-28" iso_currency_code: USD original_description: Starbucks pending: false transaction_id: a84ZxQaWDAtDL3dRgmazT57K7jjN3WFkNWMDy unofficial_currency_code: null - account_id: eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v amount: -500 date: "2023-03-29" iso_currency_code: USD original_description: United Airlines **** REFUND **** pending: false transaction_id: xG9jbv3eMoFWepzB7wQLT3LoLggX5Duy1Gbe5 unofficial_currency_code: null type: depository date_last_updated: "2023-03-30T18:25:26Z" institution_id: ins_109508 institution_name: First Platypus Bank item_id: AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7 user: client_user_id: uid_40332 email: abcharleston@example.com first_name: Anna last_name: Charleston middle_name: B phone_number: 1-415-867-5309 ssn: 111-22-1234 request_id: GVzMdiDd8DDAQK4 warnings: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' 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) tags: - plaid responses: "200": description: A PDF of the Asset Report content: application/pdf: schema: $ref: '#/components/schemas/CreditRelayPDFGetResponse' default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditRelayPdfGet externalDocs: url: /api/products/assets/#creditrelaypdfget requestBody: required: true content: application/json: 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. 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. The response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header. [View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf). /credit/relay/refresh: post: tags: - plaid summary: Refresh a report of a relay token externalDocs: url: /api/products/assets/#creditrelayrefresh responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditRelayRefreshResponse' examples: example-1: value: relay_token: credit-relay-sandbox-8218d5f8-6d6d-403d-92f5-13a9afaa4398 request_id: NBZaq asset_report_id: bf3a0490-344c-4620-a219-2693162e4b1d default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditRelayRefresh description: The `/credit/relay/refresh` endpoint allows third parties to refresh a report that was relayed to them, using a `relay_token` that was created by the report owner. A new report will be created with the original report parameters, but with the most recent data available based on the `days_requested` value of the original report. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditRelayRefreshRequest' description: "" /credit/relay/remove: post: tags: - plaid summary: Remove relay token externalDocs: url: /api/products/assets/#creditrelayremove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreditRelayRemoveResponse' examples: example-1: value: removed: true request_id: m8MDnv9okwxFNBV default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' operationId: creditRelayRemove requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreditRelayRemoveRequest' description: "" description: The `/credit/relay/remove` endpoint allows you to invalidate a `relay_token`. The third party holding the token will no longer be able to access or refresh the reports which the `relay_token` gives access to. The original report, associated Items, and other relay tokens that provide access to the same report are not affected and will remain accessible after removing the given `relay_token`. /sandbox/bank_transfer/fire_webhook: post: summary: (Deprecated) Manually fire a Bank Transfer webhook deprecated: true tags: - plaid externalDocs: url: /bank-transfers/reference/#sandboxbank_transferfire_webhook operationId: sandboxBankTransferFireWebhook responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxBankTransferFireWebhookResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxBankTransferFireWebhookRequest' /sandbox/income/fire_webhook: post: summary: Manually fire an Income webhook tags: - plaid externalDocs: url: /api/sandbox/#sandboxincomefire_webhook operationId: sandboxIncomeFireWebhook responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxIncomeFireWebhookResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxIncomeFireWebhookRequest' /sandbox/bank_income/fire_webhook: post: summary: (Deprecated) Manually fire a Bank Income webhook in Sandbox deprecated: true tags: - plaid externalDocs: url: /api/sandbox/#sandboxbankincomefire_webhook operationId: sandboxBankIncomeFireWebhook responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxBankIncomeFireWebhookResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxBankIncomeFireWebhookRequest' /sandbox/cra/cashflow_updates/update: post: summary: Trigger an update for Cash Flow Updates tags: - plaid externalDocs: url: /api/sandbox/#sandboxcracashflow_updatesupdate operationId: sandboxCraCashflowUpdatesUpdate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxCraCashflowUpdatesUpdateResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for Cash Flow Updates (Monitoring) in the Sandbox environment. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxCraCashflowUpdatesUpdateRequest' /sandbox/oauth/select_accounts: post: summary: Save the selected accounts when connecting to the Platypus OAuth institution description: Save the selected accounts when connecting to the Platypus OAuth institution tags: - plaid operationId: sandboxOauthSelectAccounts responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SandboxOauthSelectAccountsResponse' default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SandboxOauthSelectAccountsRequest' /signal/evaluate: post: tags: - plaid summary: Evaluate a planned ACH transaction externalDocs: url: /api/products/signal#signalevaluate operationId: signalEvaluate description: |- Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment and additional risk signals. Before using `/signal/evaluate`, you must first [create a ruleset](https://plaid.com/docs/signal/signal-rules/) in the Dashboard under [**Signal->Rules**](https://dashboard.plaid.com/signal/risk-profiles). `/signal/evaluate` can be used with either Signal Transaction Scores or the Balance product. Which product is used will be determined by the `ruleset_key` that you provide. For more details, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/). Note: This request may have higher latency when using a Balance-only ruleset. This is because Plaid must communicate directly with the institution to request data. Balance-only rulesets may have latency of up to 30 seconds or more; if you encounter errors, you may find it necessary to adjust your timeout period when making requests. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SignalEvaluateResponse' examples: example-1: value: scores: customer_initiated_return_risk: score: 9 bank_initiated_return_risk: score: 82 core_attributes: available_balance: 2200 current_balance: 2000 ruleset: ruleset_key: onboarding_flow result: REROUTE triggered_rule_details: internal_note: Rerouting customer to different payment method, since bank risk score is too high warnings: [] request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalEvaluateRequest' /signal/schedule: post: tags: - plaid summary: Schedule a planned ACH transaction externalDocs: url: none operationId: signalSchedule description: Use `/signal/schedule` to schedule a planned ACH transaction. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SignalScheduleResponse' examples: example-1: value: optimal_date: "2025-01-17" recommendations: - date: "2025-01-15" recommendation: RECOMMENDED rank: 2 - date: "2025-01-16" recommendation: NOT_RECOMMENDED rank: null - date: "2025-01-17" recommendation: RECOMMENDED rank: 1 - date: "2025-01-20" recommendation: NOT_RECOMMENDED rank: null - date: "2025-01-21" recommendation: UNKNOWN rank: null warnings: [] request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalScheduleRequest' /signal/decision/report: post: tags: - plaid summary: Report whether you initiated an ACH transaction 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. 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 content: application/json: schema: $ref: '#/components/schemas/SignalDecisionReportResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalDecisionReportRequest' /signal/return/report: post: tags: - plaid summary: Report a return for an ACH transaction externalDocs: url: /api/products/signal#signalreturnreport operationId: signalReturnReport description: Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trends into your scores and tune rule logic. If using a Balance-only ruleset, this endpoint will not impact scores (as Balance does not use scores), but is necessary to view accurate transaction outcomes and tune rule logic in the Dashboard. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SignalReturnReportResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalReturnReportRequest' /signal/prepare: post: tags: - plaid summary: Opt-in an Item to Signal Transaction Scores externalDocs: url: /api/products/signal#signalprepare operationId: signalPrepare description: |- When an Item is not initialized with `signal`, call `/signal/prepare` to opt-in that Item to the data collection process used to develop a Signal Transaction Score. This should be done on Items where `signal` was added in the `additional_consented_products` array but not in the `products`, `optional_products`, or `required_if_supported_products` array. If `/signal/prepare` is skipped on an Item that is not initialized with `signal`, the initial call to `/signal/evaluate` on that Item will be less accurate, because Plaid will have access to less data for computing the Signal Transaction Score. If your integration is purely Balance-only, this endpoint will have no effect, as Balance-only rulesets do not calculate a Signal Transaction Score. If run on an Item that is already initialized with `signal`, this endpoint will return a 200 response and will not modify the Item. responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SignalPrepareResponse' examples: example-1: value: request_id: mdqfuVxeoza6mhu default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SignalPrepareRequest' /wallet/create: post: tags: - plaid summary: Create an e-wallet externalDocs: url: /api/products/virtual-accounts/#walletcreate operationId: walletCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletCreateResponse' examples: example-1: value: wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6 balance: iso_currency_code: GBP current: 123.12 available: 100.96 request_id: 4zlKapIkTm8p5KM numbers: bacs: account: "12345678" sort_code: "123456" status: ACTIVE default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Create an e-wallet. The response is the newly created e-wallet object. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletCreateRequest' /wallet/get: post: tags: - plaid summary: Fetch an e-wallet externalDocs: url: /api/products/virtual-accounts/#walletget operationId: walletGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletGetResponse' examples: example-1: value: wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6 balance: iso_currency_code: GBP current: 123.12 available: 100.96 request_id: 4zlKapIkTm8p5KM numbers: bacs: account: "12345678" sort_code: "123456" international: iban: GB33BUKB20201555555555 bic: BUKBGB22 status: ACTIVE example-2: value: wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6 balance: iso_currency_code: EUR current: 123.12 available: 100.96 request_id: 4zlKapIkTm8p5KM numbers: international: iban: NL91ABNA0417164300 bic: ABNANL2A status: ACTIVE default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Fetch an e-wallet. The response includes the current balance. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletGetRequest' /wallet/list: post: tags: - plaid summary: Fetch a list of e-wallets externalDocs: url: /api/products/virtual-accounts/#walletlist operationId: walletList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletListResponse' examples: example-1: value: wallets: - wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6 balance: iso_currency_code: GBP current: 123.12 available: 100.96 numbers: bacs: account: "12345678" sort_code: "123456" status: ACTIVE - wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a999 recipient_id: recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f7 balance: iso_currency_code: EUR current: 456.78 available: 100.96 numbers: international: iban: GB22HBUK40221241555626 bic: HBUKGB4B status: ACTIVE request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint lists all e-wallets in descending order of creation. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletListRequest' /wallet/transaction/execute: post: tags: - plaid summary: Execute a transaction using an e-wallet externalDocs: url: /api/products/virtual-accounts/#wallettransactionexecute operationId: walletTransactionExecute responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletTransactionExecuteResponse' examples: example-1: value: transaction_id: wallet-transaction-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 status: EXECUTED request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction. Transactions will settle in seconds to several days, depending on the underlying payment rail. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletTransactionExecuteRequest' /wallet/transaction/get: post: tags: - plaid summary: Fetch an e-wallet transaction externalDocs: url: /api/products/virtual-accounts/#wallettransactionget operationId: walletTransactionGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletTransactionGetResponse' examples: example-1: value: transaction_id: wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 type: PAYOUT reference: Payout 99744 amount: iso_currency_code: GBP value: 123.12 status: EXECUTED created_at: "2020-12-02T21:14:54Z" last_status_update: "2020-12-02T21:15:01Z" counterparty: numbers: bacs: account: "31926819" sort_code: "601613" name: John Smith request_id: 4zlKapIkTm8p5KM related_transactions: - id: wallet-transaction-id-sandbox-2ba30780-d549-4335-b1fe-c2a938aa39d2 type: RETURN example-2: value: transaction_id: wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 type: PAYOUT reference: Payout 99744 amount: iso_currency_code: EUR value: 456.78 status: EXECUTED created_at: "2020-12-02T21:14:54Z" last_status_update: "2020-12-02T21:15:01Z" counterparty: numbers: international: iban: GB33BUKB20201555555555 name: John Smith request_id: 4zlKapIkTm8p5KM related_transactions: [] default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Fetch a specific e-wallet transaction requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletTransactionGetRequest' /wallet/transaction/list: post: tags: - plaid summary: List e-wallet transactions externalDocs: url: /api/products/virtual-accounts/#wallettransactionlist operationId: walletTransactionList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/WalletTransactionListResponse' examples: example-1: value: next_cursor: YWJjMTIzIT8kKiYoKSctPUB transactions: - transaction_id: wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 type: PAYOUT reference: Payout 99744 amount: iso_currency_code: GBP value: 123.12 status: EXECUTED created_at: "2020-12-02T21:14:54Z" last_status_update: "2020-12-02T21:15:01Z" counterparty: numbers: bacs: account: "31926819" sort_code: "601613" name: John Smith related_transactions: - id: wallet-transaction-id-sandbox-2ba30780-d549-4335-b1fe-c2a938aa39d2 type: RETURN - transaction_id: wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3 wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 type: PAYOUT reference: Payout 99744 amount: iso_currency_code: EUR value: 456.78 status: EXECUTED created_at: "2020-12-02T21:14:54Z" last_status_update: "2020-12-02T21:15:01Z" counterparty: numbers: international: iban: GB33BUKB20201555555555 name: John Smith related_transactions: [] request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WalletTransactionListRequest' /beta/transactions/v1/enhance: post: tags: - plaid summary: Enhance locally-held transaction data operationId: transactionsEnhance responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsEnhanceGetResponse' examples: example-1: value: enhanced_transactions: - id: 6135818adda16500147e7c1d description: Debit purchase Apple 1235 amount: 2307.21 iso_currency_code: USD enhancements: category: - Shops - Computers and Electronics category_id: "19013000" check_number: null counterparties: - name: Apple type: merchant logo_url: https://plaid-merchant-logos.plaid.com/apple_63.png website: apple.com confidence_level: VERY_HIGH phone_number: null location: address: 300 Post St city: San Francisco region: CA postal_code: "94108" country: US lat: 40.740352 lon: -74.001761 store_number: "1235" merchant_name: Apple website: apple.com logo_url: https://plaid-merchant-logos.plaid.com/apple_63.png payment_channel: in store personal_finance_category: primary: GENERAL_MERCHANDISE detailed: GENERAL_MERCHANDISE_ELECTRONICS personal_finance_category_icon_url: https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png phone_number: null default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients. The product is currently in beta. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsEnhanceGetRequest' /beta/transactions/rules/v1/create: post: tags: - plaid summary: Create transaction category rule operationId: transactionsRulesCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesCreateResponse' examples: example-1: value: rule: id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNo user_id: usr_9nSp2KuZ2x4JDw created_at: "2022-02-28T11:00:00Z" updated_at: "2022-02-28T11:00:00Z" pfc_primary_category: FOOD_AND_DRINK pfc_detailed_category: FOOD_AND_DRINK_FAST_FOOD rule_details: field: MERCHANT_NAME type: SUBSTRING_MATCH query: Burger Shack request_id: 4zlKapIkTm8p5KM default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/beta/transactions/rules/v1/create` endpoint creates transaction categorization rules. Rules will be applied on the Item's transactions returned in `/transactions/get` response. The product is currently in beta. To request access, contact transactions-feedback@plaid.com. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesCreateRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 client_user_id: your-client-user-id pfc_primary_category: FOOD_AND_DRINK pfc_detailed_category: FOOD_AND_DRINK_FAST_FOOD rule_details: field: MERCHANT_NAME type: SUBSTRING_MATCH query: Burger Shack /beta/transactions/rules/v1/list: post: tags: - plaid summary: Return a list of rules created for the Item associated with the access token. operationId: transactionsRulesList responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesListResponse' examples: example-1: value: rules: - id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNo user_id: usr_9nSp2KuZ2x4JDw created_at: "2022-02-28T11:00:00Z" updated_at: "2022-02-28T11:00:00Z" pfc_primary_category: FOOD_AND_DRINK pfc_detailed_category: FOOD_AND_DRINK_FAST_FOOD rule_details: field: MERCHANT_NAME type: SUBSTRING_MATCH query: Burger Shack - id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBF user_id: usr_9nSp2KuZ2x4JDw created_at: "2022-02-27T14:50:00Z" updated_at: "2022-02-27T14:50:00Z" pfc_primary_category: TRANSFER_IN pfc_detailed_category: TRANSFER_IN_ACCOUNT_TRANSFER rule_details: field: TRANSACTION_ID type: EXACT_MATCH query: kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no request_id: 4zlKapIkTm8p5KM default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: The `/beta/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesListRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 client_user_id: your-client-user-id /beta/transactions/rules/v1/remove: post: tags: - plaid summary: Remove transaction rule operationId: transactionsRulesRemove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesRemoveResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: The `/beta/transactions/rules/v1/remove` endpoint is used to remove a transaction rule. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsRulesRemoveRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 client_user_id: your-client-user-id rule_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBF /beta/transactions/user_insights/v1/get: x-hidden-from-docs: true post: tags: - plaid summary: Obtain user insights based on transactions sent through /transactions/enrich x-hidden-from-docs: true externalDocs: url: /api/products/enrich/#userinsightsget operationId: transactionsUserInsightsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/TransactionsUserInsightsGetResponse' examples: example-1: value: user_data_overview: transaction_count: 21 oldest_transaction_date: "2023-01-01" newest_transaction_date: "2023-01-31" days_available: 31 total_outflows: 1245.11 total_inflows: 2300.12 counterparty_insights: financial_institution_insights: - name: Chase entity_id: o2Ry34bq605MvmEed3yjqjkYWwqRQYpnkjd0O website: chase.com detected_accounts: - account_type: depository account_subtype: null transaction_count: 1 oldest_transaction_date: "2022-01-24" newest_transaction_date: "2023-01-05" newest_transaction_amount: 500 total_outflows: 503 total_inflows: 0 merchant_insights: - name: Costco entity_id: pBowAoZJMM9DKR37jvNmzM4yWBBXyMzV2rM3A website: costco.com personal_finance_category_primary: GENERAL_MERCHANDISE personal_finance_category_detailed: GENERAL_MERCHANDISE_SUPERSTORES transaction_count: 2 total_outflows: 953.46 total_inflows: 24.99 - name: PG&E entity_id: 6gEJJBrw8daLroaYgBAkpa65v9jVby69vejY0 website: pge.com personal_finance_category_primary: RENT_AND_UTILITIES personal_finance_category_detailed: RENT_AND_UTILITIES_GAS_AND_ELECTRICITY transaction_count: 1 total_outflows: 123.01 total_inflows: 0 category_insights: primary_category_insights: - name: GENERAL_MERCHANDISE transaction_count: 7 total_outflows: 1025.23 total_inflows: 24.99 top_counterparties: - Costco - name: RENT_AND_UTILITIES transaction_count: 1 total_outflows: 123.01 total_inflows: 0 top_counterparties: - PG&E detailed_category_insights: - name: GENERAL_MERCHANDISE_SUPERSTORES transaction_count: 3 total_outflows: 997.11 total_inflows: 24.99 top_counterparties: - Costco recurring_transactions: inflow_streams: - stream_id: yhnUVSIfe7SfeU0bcz8PDQr5ZUxUXebUvbKC0 description: Payroll * Plaid merchant_name: Plaid oldest_transaction_date: "2020-02-04" newest_transaction_date: "2023-08-02" average_days_apart: 7 frequency: WEEKLY transaction_count: 5 transaction_ids: - nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw - EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL - ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd - QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK - uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF average_amount: amount: 1000.91 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 1000 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE personal_finance_category_primary: INCOME personal_finance_category_detailed: INCOME_WAGES outflow_streams: - stream_id: no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd description: ConEd Bill Payment merchant_name: ConEd oldest_transaction_date: "2022-02-04" newest_transaction_date: "2022-05-02" average_days_apart: 29 frequency: MONTHLY transaction_count: 4 transaction_ids: - yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0 - HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR - jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L - CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l average_amount: amount: 85 iso_currency_code: USD unofficial_currency_code: null last_amount: amount: 100 iso_currency_code: USD unofficial_currency_code: null is_active: true status: MATURE personal_finance_category_primary: RENT_AND_UTILITIES personal_finance_category_detailed: RENT_AND_UTILITIES_GAS_AND_ELECTRICITY default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: |- The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`. The product is currently in beta. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TransactionsUserInsightsGetRequest' /beta/ewa_report/v1/get: x-hidden-from-docs: true post: tags: - plaid summary: Get EWA Score Report externalDocs: url: /api/products/beta/#betaewareportv1get operationId: betaEwaReportV1Get description: |- The `/beta/ewa_report/v1/get` endpoint provides an Earned Wage Access (EWA) score that quantifies the delinquency risk associated with a given item. The score is derived from a combination of cashflow patterns and network-based behavioral features. The response returns a list of EWA scores, where each score corresponds to a potential advance amount range. These scores estimate the likelihood of repayment for advances within that range. Score range: 1-99 Interpretation: Higher scores indicate a greater likelihood of repayment. This endpoint enables clients to assess repayment risk and make data-driven decisions when determining eligibility or limits for earned wage advances. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaEwaReportV1GetRequest' examples: example-1: value: access_token: access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175 responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BetaEwaReportV1GetResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM ewa_report_id: bbfc5174-5433-4648-8d93-9fec6a0c0966 generation_time: "2025-10-29T03:32:11Z" ewa_scores: - lowest_amount: 0 highest_amount: 25 score: 75 - lowest_amount: 25 highest_amount: 50 score: 72 - lowest_amount: 50 highest_amount: 100 score: 68 - lowest_amount: 100 highest_amount: 200 score: 65 - lowest_amount: 200 highest_amount: 300 score: 60 - lowest_amount: 300 highest_amount: 400 score: 55 - lowest_amount: 400 highest_amount: 500 score: 50 default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /issues/search: post: tags: - plaid summary: Search for an Issue externalDocs: url: /api/products/issues#issuessearch operationId: issuesSearch responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IssuesSearchResponse' examples: example-1: value: issues: - issue_id: "000001" institution_names: - Bank of Example - Example Credit Union institution_ids: - ins_1 - ins_2 created_at: "2023-09-01T14:35:00Z" summary: Link session failed to complete detailed_description: The Link session was unable to retrieve account information due to a network timeout. status: FIX_IN_PROGRESS - issue_id: "000002" institution_names: - Example National Bank institution_ids: - 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. status: AWAITING_RESOLUTION request_id: "123456" default: content: application/json: 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.' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IssuesSearchRequest' /issues/get: post: tags: - plaid summary: Get an Issue externalDocs: url: /api/products/issues/#issuesget operationId: issuesGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IssuesGetResponse' examples: example-1: value: issue: issue_id: "000001" institution_names: - Bank of Example - Example Credit Union institution_ids: - ins_1 - ins_2 created_at: "2023-09-01T14:35:00Z" summary: Link session failed to complete detailed_description: The Link session was unable to retrieve account information due to a network timeout. status: FIX_IN_PROGRESS request_id: "123456" default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IssuesGetRequest' /issues/subscribe: post: tags: - plaid summary: Subscribe to an Issue externalDocs: url: /api/products/issues/#issuessubscribe operationId: issuesSubscribe responses: "200": description: Subscription was successful content: application/json: schema: $ref: '#/components/schemas/IssuesSubscribeResponse' examples: example-1: value: request_id: "123456" default: content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Error response description: Allows a user to subscribe to updates on a specific `Issue` using a POST method. Subscribers will receive webhook notifications when the issue status changes, particularly when resolved. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/IssuesSubscribeRequest' /payment_profile/create: post: deprecated: true tags: - plaid summary: Create payment profile externalDocs: url: /api/products/transfer/#payment_profilecreate operationId: paymentProfileCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentProfileCreateResponse' examples: example-1: value: payment_profile_token: payment-profile-sandbox-eda0b25e-8ef3-4ebb-9ef7-1ef3db3c5ee8 request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: |- Use `/payment_profile/create` endpoint to create a new payment profile. To initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field. You can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentProfileCreateRequest' /payment_profile/get: post: deprecated: true tags: - plaid summary: Get payment profile externalDocs: url: /api/products/transfer/#payment_profileget operationId: paymentProfileGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentProfileGetResponse' examples: example-1: value: status: READY updated_at: "2022-07-07T12:48:37Z" created_at: "2022-07-05T12:48:37Z" deleted_at: null request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use `/payment_profile/get` endpoint to get the status of a given Payment Profile. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentProfileGetRequest' /payment_profile/remove: post: deprecated: true tags: - plaid summary: Remove payment profile externalDocs: url: /api/products/transfer/#payment_profileremove operationId: paymentProfileRemove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentProfileRemoveResponse' examples: example-1: value: request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/payment_profile/remove` endpoint to remove a given Payment Profile. Once it's removed, it can no longer be used to create transfers. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentProfileRemoveRequest' /partner/customer/create: post: tags: - plaid summary: Creates a new end customer for a Plaid reseller. externalDocs: url: /api/partner/#partnercustomercreate description: The `/partner/customer/create` endpoint is used by reseller partners to create end customers. To create end customers, it should be called in the Production environment only, even when creating Sandbox API keys. If called in the Sandbox environment, it will return a sample response, but no customer will be created and the API keys will not be valid. operationId: partnerCustomerCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerCreateResponse' examples: example-1: value: end_customer: client_id: 7f57eb3d2a9j6480121fx361 company_name: Plaid status: ACTIVE secrets: sandbox: b60b5201d006ca5a7081d27c824d77 production: 79g03eoofwl8240v776r2h667442119 request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerCreateRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 company_name: Plaid is_diligence_attested: true products: - auth - identity create_link_customization: true legal_entity_name: Plaid website: plaid.com application_name: Plaid technical_contact: given_name: Alice family_name: Smith email: alice.smith@example.com billing_contact: given_name: Bob family_name: Jones email: bob.jones@example.com address: city: New York street: 123 Main St region: NY postal_code: "12345" country_code: US is_bank_addendum_completed: true customer_support_info: email: support@example.com phone_number: "1234567890" contact_url: example.com/contact link_update_url: example.com/update redirect_uris: - http://localhost/oauth.html - https://www.example.com/oauth.html /partner/customer/get: post: tags: - plaid summary: Returns a Plaid reseller's end customer. externalDocs: url: /api/partner/#partnercustomerget description: The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer. operationId: partnerCustomerGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerGetResponse' examples: example-1: value: end_customer: client_id: 7f57eb3d2a9j6480121fx361 company_name: Plaid status: ACTIVE request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerGetRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 7f57eb3d2a9j6480121fx361 /partner/customer/enable: post: tags: - plaid summary: Enables a Plaid reseller's end customer in the Production environment. externalDocs: url: /api/partner/#partnercustomerenable description: The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment. operationId: partnerCustomerEnable responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerEnableResponse' examples: example-1: value: production_secret: 79g03eoofwl8240v776r2h667442119 request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerEnableRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 7f57eb3d2a9j6480121fx361 /partner/customer/remove: post: tags: - plaid summary: Removes a Plaid reseller's end customer. externalDocs: url: /api/partner/#partnercustomerremove description: The `/partner/customer/remove` endpoint is used by reseller partners to remove an end customer. Removing an end customer will remove it from view in the Plaid Dashboard and deactivate its API keys. This endpoint can only be used to remove an end customer that has not yet been enabled in full Production. operationId: partnerCustomerRemove responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerRemoveResponse' examples: example-1: value: request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerRemoveRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 7f57eb3d2a9j6480121fx361 /partner/customer/oauth_institutions/get: post: tags: - plaid summary: Returns OAuth-institution registration information for a given end customer. externalDocs: url: /api/partner/#partnercustomeroauth_institutionsget description: The `/partner/customer/oauth_institutions/get` endpoint is used by reseller partners to retrieve OAuth-institution registration information about a single end customer. To learn how to set up a webhook to listen to status update events, visit the [reseller documentation](https://plaid.com/docs/account/resellers/#enabling-end-customers). operationId: partnerCustomerOauthInstitutionsGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerOAuthInstitutionsGetResponse' examples: example-1: value: flowdown_status: COMPLETE questionnaire_status: COMPLETE institutions: - name: Chase institution_id: ins_56 environments: production: PROCESSING production_enablement_date: null classic_disablement_date: "2022-06-30" - name: Capital One institution_id: ins_128026 environments: production: ENABLED production_enablement_date: "2022-12-19" classic_disablement_date: null - name: Bank of America institution_id: ins_1 environments: production: ATTENTION_REQUIRED production_enablement_date: null classic_disablement_date: null errors: - error_type: PARTNER_ERROR error_code: OAUTH_REGISTRATION_ERROR error_message: Application logo is required display_message: null request_id: 4zlKapIkTm8p5KM request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PartnerCustomerOAuthInstitutionsGetRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 7f57eb3d2a9j6480121fx361 /beta/partner/customer/v1/create: x-hidden-from-docs: true post: tags: - plaid summary: Creates a new end customer for a Plaid reseller. externalDocs: url: /api/partner/#partnercustomercreate description: The `/beta/partner/customer/v1/create` endpoint creates a new end customer record. You can provide as much information as you have available. If any required information is missing for the products you intend to use, it will be listed in the `requirements_due` field of the response. operationId: betaPartnerCustomerV1Create responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1CreateResponse' examples: example-1: value: end_customer: client_id: 7f57eb3d2a9j6480121fx361 company_name: Plaid status: MORE_INFORMATION_NEEDED product_statuses: cra_base_report: MORE_INFORMATION_NEEDED requirements_due: - is_diligence_attested - bank_addendum_acceptance - questionnaires.cra secrets: sandbox: b60b5201d006ca5a7081d27c824d77 production: 79g03eoofwl8240v776r2h667442119 request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1CreateRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 company_name: Plaid products: - auth - identity create_link_customization: true legal_entity_name: Plaid website: plaid.com application_name: Plaid technical_contact: given_name: Alice family_name: Smith email: alice.smith@example.com billing_contact: given_name: Bob family_name: Jones email: bob.jones@example.com address: city: New York street: 123 Main St region: NY postal_code: "12345" country_code: US customer_support_info: email: support@example.com phone_number: "1234567890" contact_url: example.com/contact link_update_url: example.com/update redirect_uris: - http://localhost/oauth.html - https://www.example.com/oauth.html /beta/partner/customer/v1/get: x-hidden-from-docs: true post: tags: - plaid summary: Retrieves the details of a Plaid reseller's end customer. externalDocs: url: /api/partner/#partnercustomerget description: The `/beta/partner/customer/v1/get` endpoint is used by reseller partners to retrieve data about a single end customer. operationId: betaPartnerCustomerV1Get responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1GetResponse' examples: example-1: value: end_customer: client_id: 634758733ebb4f00134b85ea company_name: Plaid status: MORE_INFORMATION_NEEDED product_statuses: cra_base_report: MORE_INFORMATION_NEEDED requirements_due: - is_diligence_attested - bank_addendum_acceptance - questionnaires.cra request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1GetRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 634758733ebb4f00134b85ea /beta/partner/customer/v1/update: x-hidden-from-docs: true post: tags: - plaid summary: Updates an existing end customer. externalDocs: url: /api/partner/#partnercustomercreate description: The `/beta/partner/customer/v1/update` endpoint updates an existing end customer record. operationId: betaPartnerCustomerV1Update responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1UpdateResponse' examples: example-1: value: end_customer: client_id: 634758733ebb4f00134b85ea company_name: Plaid status: PENDING_ENABLEMENT product_statuses: cra_base_report: PENDING_ENABLEMENT request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1UpdateRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 634758733ebb4f00134b85ea bank_addendum_acceptance: customer_accepted: true customer_agreement_timestamp: "2025-01-01T01:00:00Z" customer_ip_address: 127.0.0.1 questionnaires: cra: is_technical_service_provider_involved: true is_third_party_involved: true purposes: WRITTEN_INSTRUCTION: use_cases: - CREDIT_UNDERWRITING - TENANT_SCREENING /beta/partner/customer/v1/enable: x-hidden-from-docs: true post: tags: - plaid summary: Enables a Plaid reseller's end customer in the Production environment. externalDocs: url: /api/partner/#partnercustomerenable description: The `/beta/partner/customer/v1/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment. operationId: betaPartnerCustomerV1Enable responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1EnableResponse' examples: example-1: value: end_customer_client_id: 634758733ebb4f00134b85ea status: ACTIVE product_statuses: auth: ACTIVE cra_base_report: PENDING_ENABLEMENT production_secret: 79g03eoofwl8240v776r2h667442119 request_id: 4zlKapIkTm8p5KM default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BetaPartnerCustomerV1EnableRequest' examples: example-1: value: client_id: 7f57eb3d2a9j6480121fx361 secret: 79g03eoofwl8240v776r2h667442119 end_customer_client_id: 634758733ebb4f00134b85ea products: - auth /link_delivery/create: post: deprecated: true tags: - plaid summary: Create Hosted Link session externalDocs: url: /none/ operationId: linkDeliveryCreate responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkDeliveryCreateResponse' examples: example-1: value: link_delivery_url: https://secure.plaid.com/99ace160-3cf7-4e51-a083-403633425815 link_delivery_session_id: 99ace160-3cf7-4e51-a083-403633425815 request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/link_delivery/create` endpoint to create a Hosted Link session. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkDeliveryCreateRequest' /link_delivery/get: post: deprecated: true tags: - plaid summary: Get Hosted Link session externalDocs: url: /none/ operationId: linkDeliveryGet responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkDeliveryGetResponse' examples: example-1: value: status: COMPLETED created_at: "2019-10-12T07:20:50.52Z" public_tokens: - public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d completed_at: "2019-10-12T07:21:50.52Z" request_id: 4ciYmmesdqSiUAB default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' description: Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LinkDeliveryGetRequest' /fdx/notifications: post: tags: - plaid description: A generic webhook receiver endpoint for FDX Event Notifications x-hidden-from-docs: true externalDocs: url: /api/fdx/notifications/#post summary: Webhook receiver for fdx notifications operationId: fdxNotifications requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FDXNotification' responses: "200": description: OK default: description: Error response. content: application/json: schema: $ref: '#/components/schemas/PlaidError' /fdx/recipients: x-hidden-from-docs: true get: tags: - plaid summary: Get Recipients operationId: getRecipients description: Returns a list of Recipients responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/GetRecipientsResponse' example: recipients: - recipient_id: 98c8990b-72a9-4dc2-a4c5-f45b9b269178 client_name: My Example Client logo_uri: https://client-logos.plaid.com/logo.png joined_date: "2021-08-31" category: Robo advisors connection_count: 128 third_party_legal_name: My Example Client LLC - recipient_id: 1a6ad795-2b9a-4a9f-8615-e771816c92db client_name: Another Example Client logo_uri: https://client-logos.plaid.com/logo2.png joined_date: "2027-04-15" category: eCommerce connection_count: 209 third_party_legal_name: Another Example Client LLC default: description: Error response content: 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: tags: - plaid summary: Revoke FDX Consent Grant operationId: fdxConsentsRevoke description: Appends a REVOKED status record to the named consent grant parameters: - in: path name: consentId description: Consent Grant Identifier. Uniquely identifies the consent grant required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FDXConsentRevocation' responses: "204": description: No Content default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' get: tags: - plaid summary: Retrieve FDX Consent Grant revocation records operationId: fdxConsentsRevocationGet description: Returns the revocation history of a consent grant parameters: - in: path name: consentId description: Consent Grant Identifier. Uniquely identifies the consent grant required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/FDXConsentRevocations' example: revocations: - status: REVOKED reason: USER_ACTION initiator: DATA_PROVIDER updatedTime: "2026-01-03T00:00:00Z" default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /fdx/consents/{consentId}: x-hidden-from-docs: true get: tags: - plaid summary: Get FDX Consent Grant operationId: fdxConsentsGet description: Returns a consent grant by its identifier parameters: - in: path name: consentId description: Consent Grant Identifier. Uniquely identifies the consent grant required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/FDXConsentGrant' example: id: 9585694d-3ae5-8863-1234-567890abcdef status: ACTIVE createdTime: "2026-01-01T00:00:00Z" updatedTime: "2026-01-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 - BALANCES - TRANSACTIONS - SCHEDULED_PAYMENTS default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' /fdx/recipient/{recipientId}: x-hidden-from-docs: true get: tags: - plaid summary: Get Recipient operationId: getRecipient description: Get a specific recipient parameters: - in: path name: recipientId description: Recipient Identifier. Uniquely identifies the recipient required: true schema: type: string - in: header name: OAUTH-STATE-ID description: The value that is passed into the OAuth URI 'state' query parameter. schema: type: string required: false responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/GetRecipientResponse' example: recipient_id: 7bf0b839-861e-444e-b103-9007610ffbaf client_name: My Example Client logo_uri: https://client-logos.plaid.com/logo.png third_party_legal_name: My Example Client LLC default: description: Error response content: application/json: schema: $ref: '#/components/schemas/PlaidError' components: securitySchemes: clientId: type: apiKey in: header name: PLAID-CLIENT-ID secret: type: apiKey in: header name: PLAID-SECRET plaidVersion: 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 in: header required: false x-hidden-from-docs: true description: 'The HTTP header used in API requests to determine which set of User APIs to invoke: the legacy CRA version or the new User API version.' schema: type: boolean default: false schemas: NetworkStatusGetRequest: type: object description: NetworkStatusGetRequest defines the request schema for `/network/status/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user: $ref: '#/components/schemas/NetworkStatusGetUser' template_id: type: string description: The id of a template defined in Plaid Dashboard. This field is used if you have additional criteria that you want to check against (e.g. Layer eligibility). required: - user ProfileNetworkStatusGetRequest: type: object x-hidden-from-docs: true description: ProfileNetworkStatusGetRequest defines the request schema for `/profile/network_status/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user: $ref: '#/components/schemas/NetworkStatusGetUser' required: - user NetworkStatusGetUser: type: object additionalProperties: true description: An object specifying information about the end user for the network status check. properties: phone_number: type: string description: The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. required: - phone_number NetworkStatusGetResponse: type: object additionalProperties: true description: NetworkStatusGetResponse defines the response schema for `/network/status/get` properties: network_status: $ref: '#/components/schemas/NetworkStatusGetResponseNetworkStatus' layer: $ref: '#/components/schemas/NetworkStatusGetResponseLayer' request_id: $ref: '#/components/schemas/RequestID' required: - network_status - request_id ProfileNetworkStatusGetResponse: type: object x-hidden-from-docs: true additionalProperties: true description: ProfileNetworkStatusGetResponse defines the response schema for `/profile/network_status/get` properties: network_status: $ref: '#/components/schemas/NetworkStatusGetResponseNetworkStatus' request_id: $ref: '#/components/schemas/RequestID' required: - network_status - request_id NetworkStatusGetResponseNetworkStatus: nullable: false type: string description: Enum representing the overall network status of the user. enum: - UNKNOWN - RETURNING_USER NetworkStatusGetResponseLayer: type: object nullable: true additionalProperties: true description: An object representing Layer-related metadata for the requested user. properties: eligible: type: boolean description: Indicates if the user is eligible for a Layer session. required: - eligible PartnerEndCustomerOAuthStatusUpdatedValues: nullable: false type: string description: The OAuth status of the update enum: - not-started - processing - approved - enabled - attention-required WebhookEnvironmentValues: nullable: false type: string description: The Plaid environment the webhook was sent from enum: - sandbox - production AuthGetRequest: type: object description: AuthGetRequest defines the request schema for `/auth/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/AuthGetRequestOptions' required: - access_token AuthGetRequestOptions: type: object description: An optional object to filter `/auth/get` results. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item. Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string AuthGetResponse: type: object additionalProperties: true description: AuthGetResponse defines the response schema for `/auth/get` properties: accounts: type: array description: The `accounts` for which numbers are being retrieved. items: $ref: '#/components/schemas/AccountBase' numbers: $ref: '#/components/schemas/AuthGetNumbers' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - numbers - item - request_id AuthGetNumbers: type: object additionalProperties: true description: An object containing identifying numbers used for making electronic transfers to and from the `accounts`. The identifying number type (ACH, EFT, IBAN, or Bacs) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by any `accounts` for which data has been requested, the array for that type will be empty. properties: ach: type: array description: An array of ACH numbers identifying accounts. items: $ref: '#/components/schemas/NumbersACH' eft: type: array description: An array of EFT numbers identifying accounts. items: $ref: '#/components/schemas/NumbersEFT' international: type: array description: An array of IBAN numbers identifying accounts. items: $ref: '#/components/schemas/NumbersInternational' bacs: type: array description: An array of Bacs numbers identifying accounts. items: $ref: '#/components/schemas/NumbersBACS' required: - ach - eft - international - bacs AuthVerifyRequestNumbers: type: object description: An object containing identifying account numbers for verification via Database Auth properties: ach: $ref: '#/components/schemas/AuthVerifyNumbersACH' required: - ach AuthVerifyNumbersACH: type: object description: ACH numbers for verification via Database Auth properties: account: type: string description: Account's account number routing: type: string description: Account's routing number required: - account - routing AuthVerifyRequest: type: object description: AuthVerifyRequest defines the request schema for `/auth/verify` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' legal_name: type: string nullable: true description: Account owner's legal name numbers: $ref: '#/components/schemas/AuthVerifyRequestNumbers' required: - numbers AuthVerifyResponse: type: object additionalProperties: true description: AuthVerifyResponse defines the response schema for `/auth/verify` properties: request_id: $ref: '#/components/schemas/RequestID' item_id: type: string nullable: true description: The `item_id` value of the Item created for verification. If numbers data provided is invalid, an Item may not be created. verification_status: type: string description: | Indicates the Item's database verification status. Possible values are: `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth. `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth. `database_insights_pass_with_caution`: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. verification_insights: $ref: '#/components/schemas/AccountVerificationInsights' required: - request_id - verification_status - verification_insights UserAccountSessionGetRequest: description: UserAccountSessionGetRequest defines the request schema for `/user_account/session/get` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' public_token: type: string description: The public token generated by the end user Layer session. required: - public_token UserAccountSessionGetResponse: type: object additionalProperties: true description: UserAccountSessionGetResponse defines the response schema for `/user_account/session/get` properties: identity: $ref: '#/components/schemas/UserAccountIdentity' items: type: array items: $ref: '#/components/schemas/UserAccountItem' identity_edit_history: $ref: '#/components/schemas/UserAccountIdentityEditHistory' request_id: $ref: '#/components/schemas/RequestID' required: - 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` properties: client_id: $ref: '#/components/schemas/APIClientID' options: $ref: '#/components/schemas/TransactionsGetRequestOptions' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date description: The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. required: - access_token - start_date - end_date PersonalFinanceCategoryVersion: title: PersonalFinanceCategoryVersion type: string 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 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 3, 2025, you may only receive the `v2` taxonomy. enum: - v1 - v2 TransactionsGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string count: type: integer default: 100 description: The number of transactions to fetch. minimum: 1 maximum: 500 exclusiveMinimum: false offset: type: integer default: 0 description: The number of transactions to skip. The default value is 0. minimum: 0 include_original_description: type: boolean default: false description: Include the raw unparsed transaction description from the financial institution. nullable: true include_personal_finance_category_beta: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true include_personal_finance_category: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true include_logo_and_counterparty_beta: type: boolean default: false description: Counterparties and extra merchant fields are now returned by default. deprecated: true x-hidden-from-docs: true personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' days_requested: description: |- This field only applies to calls for Items where the Transactions product has not already been initialized (i.e. by specifying `transactions` in the `products`, `optional_products`, or `required_if_supported_products` array when calling `/link/token/create` or by making a previous call to `/transactions/sync` or `/transactions/get`). In those cases, the field controls the maximum number of days of transaction history that Plaid will request from the financial institution. The more transaction history is requested, the longer the historical update poll will take. If no value is specified, 90 days of history will be requested by default. In Production, if a value under 30 is provided, a minimum of 30 days of history will be requested. If you are initializing your Items with transactions during the `/link/token/create` call (e.g. by including `transactions` in the `/link/token/create` `products` array), you must use the [`transactions.days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) field in the `/link/token/create` request instead of in the `/transactions/get` request. If the Item has already been initialized with the Transactions product, this field will have no effect. The maximum amount of transaction history to request on an Item cannot be updated if Transactions has already been added to the Item. To request older transaction history on an Item where Transactions has already been added, you must delete the Item via `/item/remove` and send the user through Link to create a new Item. Customers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results. type: integer minimum: 1 maximum: 730 default: 90 TransactionsGetResponse: type: object additionalProperties: true description: TransactionsGetResponse defines the response schema for `/transactions/get` properties: accounts: type: array description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field. items: $ref: '#/components/schemas/AccountBase' transactions: type: array description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter. items: $ref: '#/components/schemas/Transaction' 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. item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - transactions - total_transactions - item - request_id TransactionsRefreshRequest: type: object description: TransactionsRefreshRequest defines the request schema for `/transactions/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' required: - access_token TransactionsRefreshResponse: type: object additionalProperties: true description: TransactionsRefreshResponse defines the response schema for `/transactions/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransactionsCreateRequest: type: object description: SandboxTransactionsCreateRequest defines the request schema for `/sandbox/transactions/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' transactions: type: array description: List of transactions to be added items: $ref: '#/components/schemas/CustomSandboxTransaction' required: - transactions - access_token SandboxTransactionsCreateResponse: type: object additionalProperties: true description: SandboxTransactionsCreateResponse defines the response schema for `/sandbox/transactions/create` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CashflowReportRefreshRequest: x-hidden-from-docs: true type: object description: CashflowReportRefreshRequest defines the request schema for `/cashflow_report/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' days_requested: type: integer description: Number of days to retrieve transactions data for (1 to 730) minimum: 1 maximum: 730 default: 365 required: - access_token - days_requested CashflowReportRefreshResponse: x-hidden-from-docs: true type: object additionalProperties: true description: CashflowReportRefreshResponse defines the response schema for `/cashflow_report/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CashflowReportGetRequest: x-hidden-from-docs: true type: object description: CashflowReportGetRequest defines the request schema for `/cashflow_report/get` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' days_requested: type: integer description: Number of days to retrieve transactions data for (1 to 730) minimum: 1 maximum: 730 count: type: integer description: Number of transactions to fetch per call minimum: 1 maximum: 500 default: 100 cursor: type: string description: The cursor value represents the last update requested. Pass in the empty string "" in the first call. options: $ref: '#/components/schemas/CashflowReportGetRequestOptions' required: - access_token - days_requested CashflowReportGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string CashflowReportGetResponse: type: object additionalProperties: true description: CashflowReportGetResponse defines the response schema for `/cashflow_report/get` properties: accounts: type: array description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field. items: $ref: '#/components/schemas/BusinessAccount' transactions: type: array description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter. items: $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 using the `cursor` parameter. item: $ref: '#/components/schemas/Item' next_cursor: type: string description: Cursor used for fetching any future updates after the latest update provided in this response. has_more: type: boolean description: Represents if more than requested count of transactions exists to be fetched last_successful_update_time: type: string format: date-time description: The last successful update time in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ) request_id: $ref: '#/components/schemas/RequestID' required: - accounts - transactions - total_transactions - item - next_cursor - has_more - last_successful_update_time - request_id CashflowReportTransactionsGetRequest: x-hidden-from-docs: true type: object description: CashflowReportTransactionsGetRequest defines the request schema for `/cashflow_report/transactions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' count: type: integer description: Number of transactions to fetch per call minimum: 1 maximum: 500 default: 100 cursor: type: string description: The cursor value represents the last update requested. Pass in the empty string "" in the first call. options: $ref: '#/components/schemas/CashflowReportTransactionsGetRequestOptions' required: - access_token CashflowReportTransactionsGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string CashflowReportTransactionsGetResponse: type: object additionalProperties: true description: CashflowReportTransactionsGetResponse defines the response schema for `/cashflow_report/transactions/get` properties: accounts: type: array description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field. items: $ref: '#/components/schemas/BusinessAccount' transactions: type: array description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter. items: $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 using the `cursor` parameter. item: $ref: '#/components/schemas/Item' next_cursor: type: string description: Cursor used for fetching any future updates after the latest update provided in this response. has_more: type: boolean description: Represents if more than requested count of transactions exists to be fetched request_id: $ref: '#/components/schemas/RequestID' required: - accounts - transactions - total_transactions - item - next_cursor - has_more - request_id CashflowReportInsightsGetRequest: type: object description: CashflowReportInsightsGetRequest defines the request schema for `/cashflow_report/insights/get` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' required: - access_token CashflowReportInsightsGetResponse: type: object additionalProperties: true description: CashflowReportInsightsGetResponse defines the response schema for `/cashflow_report/insights/get` properties: item: $ref: '#/components/schemas/Item' accounts: type: array description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field. items: $ref: '#/components/schemas/BusinessAccount' account_insights: $ref: '#/components/schemas/CashflowReportAccountInsights' last_generated_time: type: string format: date-time description: Datetime of last Cashflow Report generation in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ) request_id: $ref: '#/components/schemas/RequestID' required: - item - accounts - account_insights - last_generated_time - request_id CashflowReportAccountInsights: title: CashflowAccountInsights type: object additionalProperties: true description: Insights on the account level. These are only returned for Credit and Depository type accounts. properties: historical_balances: type: array description: |- Calculated data about the historical balances on the account. Available for `credit` and `depository` type accounts. items: $ref: '#/components/schemas/CashflowReportHistoricalBalance' monthly_summaries: type: array description: Monthly summary statistics derived from transaction-level data. items: $ref: '#/components/schemas/CashflowReportMonthlySummary' required: - historical_balances - monthly_summaries CashflowReportHistoricalBalance: title: CashflowReportHistoricalBalance type: object additionalProperties: true description: An object representing a balance held by an account in the past properties: date: type: string format: date description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD) amount: type: number format: double description: |- The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction. If the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting. iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`. 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: - date - amount - iso_currency_code - unofficial_currency_code CashflowIsoCurrencyCode: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null` nullable: true CashflowUnofficialCurrencyCode: type: string description: The unofficial currency code of the amount. 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. nullable: true CashflowReportMonthlySummaryStartingBalance: type: object description: The starting balance of the month. This will be the same as the ending balance of the previous month. This field will not be available for the first monthly summary. nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryEndingBalance: type: object description: The ending balance of the month. This will be the same as the starting balance of the next month. This field will not be available for the last monthly summary. nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryAverageDailyEndingBalance: type: object description: Calendar-day average of the ending balance. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryAverageDailyInflowAmount: type: object description: The average daily sum of inflow transactions, calculated over the month. Always represented as a positive monetary amount. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryAverageDailyOutflowAmount: type: object description: The average daily sum of outflow transactions, calculated over the month. Always represented as a positive monetary amount. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryAverageDailyNetCashflowAmount: type: object description: The average daily net cash flow amount, calculated as total daily inflows less total daily outflows. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryTotalRevenue: type: object description: The total amount of all revenue transactions during this month. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryTotalLoanPayment: type: object description: The total amount of all loan payment transactions during this month. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryTotalVariableExpense: type: object description: The total amount of all variable expense transactions during this month. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummaryTotalPayroll: type: object description: The total amount of all payroll transactions during this month. properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CashflowIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CashflowUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CashflowReportMonthlySummary: description: Monthly summary statistics derived from transaction-level data. title: CashflowReportMonthlySummary type: object additionalProperties: true properties: start_date: type: string format: date description: |- The start date of the period covered in this monthly summary. This date will be the first day of the month, unless the month being covered is a partial month because it is the first month included in the summary and the date range being requested does not begin with the first day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of the period included in this monthly summary. This date will be the last day of the month, unless the month being covered is a partial month because it is the last month included in the summary and the date range being requested does not end with the last day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). starting_balance: $ref: '#/components/schemas/CashflowReportMonthlySummaryStartingBalance' ending_balance: $ref: '#/components/schemas/CashflowReportMonthlySummaryEndingBalance' average_daily_ending_balance: $ref: '#/components/schemas/CashflowReportMonthlySummaryAverageDailyEndingBalance' average_daily_inflow_amount: $ref: '#/components/schemas/CashflowReportMonthlySummaryAverageDailyInflowAmount' average_daily_outflow_amount: $ref: '#/components/schemas/CashflowReportMonthlySummaryAverageDailyOutflowAmount' average_daily_net_cashflow_amount: $ref: '#/components/schemas/CashflowReportMonthlySummaryAverageDailyNetCashflowAmount' average_daily_inflow_transaction_count: type: number description: The average count of the number of daily inflow transactions. Rounded to 2 decimal places. average_daily_outflow_transaction_count: type: number description: The average count of the number of daily outflow transactions. Rounded to 2 decimal places. total_revenue: $ref: '#/components/schemas/CashflowReportMonthlySummaryTotalRevenue' total_loan_payment: $ref: '#/components/schemas/CashflowReportMonthlySummaryTotalLoanPayment' total_variable_expense: $ref: '#/components/schemas/CashflowReportMonthlySummaryTotalVariableExpense' total_payroll: $ref: '#/components/schemas/CashflowReportMonthlySummaryTotalPayroll' nsf_transaction_count: type: integer description: The total number of all NSF transactions during this month. overdraft_transaction_count: type: integer description: The total number of all overdraft transactions during this month. negative_ending_balance_day_count: type: integer description: The number of days with a negative daily average ending balance. The daily average is calculated across all valid accounts. Values will be in the range [0, 31]. required: - start_date - end_date - starting_balance - ending_balance - average_daily_ending_balance - average_daily_inflow_amount - average_daily_outflow_amount - average_daily_net_cashflow_amount - average_daily_inflow_transaction_count - average_daily_outflow_transaction_count - total_revenue - total_loan_payment - total_variable_expense - total_payroll - nsf_transaction_count - overdraft_transaction_count - negative_ending_balance_day_count BusinessAccount: description: Business identity information about an account title: BusinessAccount allOf: - $ref: '#/components/schemas/AccountBase' - type: object additionalProperties: true properties: name: type: string official_name: type: string nullable: true mask: type: string nullable: true verification_name: type: string owners: type: array description: Data returned by the financial institution about the account owner or owners. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution. Multiple owners on a single account will be represented in the same owner object, not in multiple owner objects within the array. items: $ref: '#/components/schemas/Owner' TransactionsRecurringUpdateRequest: type: object description: TransactionsRecurringUpdateRequest defines the request schema for `/transactions/recurring/streams/update` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' inputs: type: array description: A list of all the operations to be performed. This will either all succeed or all fail. items: $ref: '#/components/schemas/TransactionsRecurringUpdateInput' required: - access_token - inputs TransactionsRecurringUpdateInput: type: object description: TransactionsRecurringUpdateInput defines a single operation to the `/transactions/recurring/streams/update` endpoint. properties: stream_id: type: string 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 exists in another stream, it will be removed from the other stream. items: type: string required: - stream_id - transaction_ids TransactionsRecurringUpdateResponse: type: object additionalProperties: true description: TransactionsRecurringUpdateResponse defines the response schema for the `/transactions/recurring/streams/update` endpoint. properties: modified_streams: type: array description: Directly modified stream, along with other streams with transactions removed from them as a result of the operation (in no particular order). items: $ref: '#/components/schemas/TransactionStream' removed_stream_ids: type: array description: The ids of streams that are no longer qualified as recurring transaction streams (in no particular order). items: type: string description: ID of the removed stream required: - modified_streams TransactionsRecurringMergeRequest: type: object description: TransactionsRecurringMergeRequest defines the request schema for `/transactions/recurring/streams/merge` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' inputs: type: array description: A list of all the operations to be performed. This will either all succeed or all fail. items: $ref: '#/components/schemas/TransactionsRecurringMergeInput' required: - access_token - inputs TransactionsRecurringMergeInput: type: object description: TransactionsRecurringMergeInput defines a single input to the `/transactions/recurring/streams/merge` endpoint. properties: stream_ids: type: array description: IDs of all the streams that will be merged into the first stream. This operation will retain the `stream_id` of the first stream. items: type: string required: - stream_ids TransactionsRecurringMergeResponse: type: object additionalProperties: true description: TransactionsRecurringMergeResponse defines the response schema for the `/transactions/recurring/streams/merge` endpoint. properties: modified_streams: type: array description: Directly modified stream, along with other streams with transactions removed from them as a result of the operation (in no particular order). items: $ref: '#/components/schemas/TransactionStream' removed_stream_ids: type: array description: The ids of streams that are no longer qualified as recurring transaction streams (in no particular order). items: type: string description: ID of the removed stream required: - modified_streams TransactionsRecurringCreateRequest: type: object description: TransactionsRecurringCreateRequest defines the request schema for `/transactions/recurring/streams/create` endpoint. properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' inputs: type: array description: A list of all the operations to be performed. This will either all succeed or all fail. items: $ref: '#/components/schemas/TransactionsRecurringCreateInput' required: - access_token - inputs TransactionsRecurringCreateInput: type: object description: TransactionsRecurringCreateInput defines a single input to the `/transactions/recurring/streams/create` endpoint. properties: transaction_ids: type: array description: IDs of all the transactions that will be merged into one stream. If any transaction currently exists in another stream, it will be removed from the other stream. items: type: string required: - stream_ids TransactionsRecurringCreateResponse: type: object additionalProperties: true description: TransactionsRecurringCreateResponse defines the response schema for the `/transactions/recurring/streams/create` endpoint. properties: added_streams: type: array description: Streams created as a result of the operation. items: $ref: '#/components/schemas/TransactionStream' modified_streams: type: array description: Other streams with transactions removed from them as a result of the operation (in no particular order). items: $ref: '#/components/schemas/TransactionStream' removed_stream_ids: type: array description: The ids of streams that are no longer qualified as recurring transaction streams (in no particular order). items: type: string description: ID of the removed stream required: - added_streams TransactionsRecurringGetRequest: type: object description: TransactionsRecurringGetRequest defines the request schema for `/transactions/recurring/get` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' options: $ref: '#/components/schemas/TransactionsRecurringGetRequestOptions' account_ids: type: array description: |- An optional list of `account_ids` to retrieve for the Item. Retrieves all active accounts on item if no `account_id`s are provided. Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string required: - access_token TransactionsRecurringGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: include_personal_finance_category: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' TransactionsRecurringGetResponse: type: object additionalProperties: true description: TransactionsRecurringGetResponse defines the response schema for `/transactions/recurring/get` properties: inflow_streams: type: array description: An array of inflow transaction streams. items: $ref: '#/components/schemas/TransactionStream' outflow_streams: type: array description: An array of expense transaction streams. items: $ref: '#/components/schemas/TransactionStream' updated_datetime: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time transaction streams for the given account were updated on personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' request_id: $ref: '#/components/schemas/RequestID' required: - inflow_streams - outflow_streams - updated_datetime - request_id TransactionsRulesCreateRequest: type: object description: TransactionsRulesCreateRequest defines the request schema for `/beta/transactions/rules/v1/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_user_id: type: string description: A unique ID representing the end user. This ID is used to associate rules with a specific user. pfc_primary_category: $ref: '#/components/schemas/PfcPrimaryCategory' pfc_detailed_category: $ref: '#/components/schemas/PfcDetailedCategory' rule_details: $ref: '#/components/schemas/TransactionsRuleDetails' required: - client_user_id - pfc_primary_category - pfc_detailed_category - rule_details TransactionsRulesCreateResponse: type: object additionalProperties: true description: TransactionsRulesCreateResponse defines the response schema for `/beta/transactions/rules/v1/create` properties: rule: $ref: '#/components/schemas/TransactionsCategoryRule' request_id: $ref: '#/components/schemas/RequestID' required: - rule - request_id TransactionsRulesListRequest: type: object description: TransactionsRulesListRequest defines the request schema for `/beta/transactions/rules/v1/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_user_id: type: string description: A unique ID representing the end user whose rules should be listed. required: - client_user_id TransactionsRulesListResponse: type: object additionalProperties: true description: TransactionsRulesListResponse defines the response schema for `/beta/transactions/rules/v1/list` properties: rules: type: array description: A list of the user's transaction rules items: $ref: '#/components/schemas/TransactionsCategoryRule' request_id: $ref: '#/components/schemas/RequestID' required: - rules - request_id TransactionsRulesRemoveRequest: type: object description: TransactionsRulesRemoveRequest defines the request schema for `/beta/transactions/rules/v1/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_user_id: type: string description: A unique ID representing the end user the rule belongs to. rule_id: type: string description: A rule's unique identifier required: - client_user_id - rule_id TransactionsRulesRemoveResponse: type: object additionalProperties: true description: TransactionsRulesRemoveResponse defines the response schema for `/beta/transactions/rules/v1/remove` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransactionsSyncRequest: type: object description: TransactionsSyncRequest defines the request schema for `/transactions/sync` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' cursor: type: string description: |- The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update. If omitted, the entire history of updates will be returned, starting with the first-added transactions on the Item. The cursor also accepts the special value of `"now"`, which can be used to fast-forward the cursor as part of migrating an existing Item from `/transactions/get` to `/transactions/sync`. For more information, see the [Transactions sync migration guide](https://plaid.com/docs/transactions/sync-migration/). Note that using the `"now"` value is not supported for any use case other than migrating existing Items from `/transactions/get`. The upper-bound length of this cursor is 256 characters of base64. count: type: integer default: 100 description: The number of transaction updates to fetch. minimum: 1 maximum: 500 exclusiveMinimum: false options: $ref: '#/components/schemas/TransactionsSyncRequestOptions' required: - access_token TransactionsSyncRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: include_original_description: type: boolean default: false description: Include the raw unparsed transaction description from the financial institution. nullable: true include_personal_finance_category: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true include_logo_and_counterparty_beta: type: boolean default: false description: Counterparties and extra merchant fields are now returned by default. deprecated: true x-hidden-from-docs: true personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' days_requested: description: |- This field only applies to calls for Items where the Transactions product has not already been initialized (i.e., by specifying `transactions` in the `products`, `required_if_supported_products`, or `optional_products` array when calling `/link/token/create` or by making a previous call to `/transactions/sync` or `/transactions/get`). In those cases, the field controls the maximum number of days of transaction history that Plaid will request from the financial institution. The more transaction history is requested, the longer the historical update poll will take. If no value is specified, 90 days of history will be requested by default. In Production, if a value less than 30 is provided, a minimum of 30 days of transaction history will be requested. If you are initializing your Items with transactions during the `/link/token/create` call (e.g. by including `transactions` in the `/link/token/create` `products` array), you must use the [`transactions.days_requested`](https://plaid.com/docs/api/link/#link-token-create-request-transactions-days-requested) field in the `/link/token/create` request instead of in the `/transactions/sync` request. If the Item has already been initialized with the Transactions product, this field will have no effect. The maximum amount of transaction history to request on an Item cannot be updated if Transactions has already been added to the Item. To request older transaction history on an Item where Transactions has already been added, you must delete the Item via `/item/remove` and send the user through Link to create a new Item. Customers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results. type: integer minimum: 1 maximum: 730 default: 90 account_id: type: string description: |- If provided, the returned updates and cursor will only reflect the specified account's transactions. Omitting `account_id` returns updates for all accounts under the Item. Note that specifying an `account_id` effectively creates a separate incremental update stream -- and therefore a separate cursor -- for that account. If multiple accounts are queried this way, you will maintain multiple cursors, one per `account_id`. If you decide to begin filtering by `account_id` after using no `account_id`, start fresh with a null cursor and maintain separate `(account_id, cursor)` pairs going forward. Do not reuse any previously saved cursors, as this can cause pagination errors or incomplete data. Note: An error will be returned if a provided `account_id` is not associated with the Item. TransactionsSyncResponse: type: object additionalProperties: true description: TransactionsSyncResponse defines the response schema for `/transactions/sync` properties: transactions_update_status: $ref: '#/components/schemas/TransactionsUpdateStatus' accounts: type: array description: An array of accounts at a financial institution associated with the transactions in this response. Only accounts that have associated transactions will be shown. For example, `investment`-type accounts will be omitted. items: $ref: '#/components/schemas/AccountBase' added: type: array description: Transactions that have been added to the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/Transaction' modified: type: array description: Transactions that have been modified on the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/Transaction' removed: type: array description: Transactions that have been removed from the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/RemovedTransaction' next_cursor: type: string description: |- Cursor used for fetching any future updates after the latest update provided in this response. The cursor obtained after all pages have been pulled (indicated by `has_more` being `false`) will be valid for at least 1 year. This cursor should be persisted for later calls. If transactions are not yet available, this will be an empty string. If `account_id` is included in the request, the returned cursor will reflect updates for that specific account. has_more: type: boolean description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it's important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. request_id: $ref: '#/components/schemas/RequestID' required: - accounts - added - modified - removed - next_cursor - has_more - request_id - transactions_update_status InstitutionsGetRequest: type: object description: InstitutionsGetRequest defines the request schema for `/institutions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' count: type: integer minimum: 1 maximum: 500 description: The total number of Institutions to return. offset: type: integer description: The number of Institutions to skip. minimum: 0 country_codes: type: array description: | Specify which country or countries to include institutions from, using the ISO-3166-1 alpha-2 country code standard. In API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied. minItems: 1 items: $ref: '#/components/schemas/CountryCode' options: $ref: '#/components/schemas/InstitutionsGetRequestOptions' required: - count - offset - country_codes InstitutionsGetRequestOptions: type: object description: An optional object to filter `/institutions/get` results. properties: products: type: array description: Filter the Institutions based on which products they support. Will only return institutions that support all listed products. When filtering based on `auth`, an institution must support Instant Auth to match the criterion. To filter for Signal Transaction Scores support, use `balance`. To filter for Transfer support, use `auth`. nullable: true minItems: 1 items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - balance - employment - identity - cra_base_report - cra_income_insights - cra_cashflow_insights - cra_lend_score - cra_network_insights - cra_partner_insights - income_verification - identity_verification - investments - liabilities - payment_initiation - standing_orders - transactions routing_numbers: type: array description: Specify an array of routing numbers to filter institutions. The response will only return institutions that match all of the routing numbers in the array. Routing number records used for this matching are generally comprehensive; however, failure to match a given routing number to an institution does not necessarily mean that the institution is unsupported by Plaid. Invalid routing numbers (numbers that are not 9 digits in length or do not have a valid checksum) will be filtered from the array before the response is processed. If all provided routing numbers are invalid, an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. nullable: true items: type: string oauth: type: boolean nullable: true description: Limit results to institutions with or without OAuth login flows. Note that institutions will have `oauth` set to `true` if some Items associated with that institution are required to use OAuth flows; institutions in a state of migration to OAuth will have the `oauth` attribute set to `true`. include_optional_metadata: type: boolean description: |- When `true`, return the institution's homepage URL, logo and primary brand color. Not all institutions' logos are available. Note that Plaid does not own any of the logos shared by the API, and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos. include_auth_metadata: type: boolean default: false description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported. include_payment_initiation_metadata: type: boolean default: false description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported. InstitutionsGetResponse: type: object additionalProperties: true description: InstitutionsGetResponse defines the response schema for `/institutions/get` properties: institutions: type: array description: A list of Plaid institutions items: $ref: '#/components/schemas/Institution' total: type: integer description: The total number of institutions available via this endpoint request_id: $ref: '#/components/schemas/RequestID' required: - institutions - total - request_id InstitutionsSearchRequest: type: object description: InstitutionsSearchRequest defines the request schema for `/institutions/search` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' query: type: string description: The search query. Institutions with names matching the query are returned minLength: 1 products: type: array description: Filter the Institutions based on whether they support all products listed in `products`. Provide `null` to get institutions regardless of supported products. Note that when `auth` is specified as a product, if you are enabled for Instant Match or Automated Micro-deposits, institutions that support those products will be returned even if `auth` is not present in their product array. To search for Transfer support, use `auth`; to search for Signal Transaction Scores support, use `balance`. minItems: 1 nullable: true items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - balance - employment - identity - income_verification - investments - liabilities - identity_verification - payment_initiation - standing_orders - statements - transactions country_codes: type: array description: | Specify which country or countries to include institutions from, using the ISO-3166-1 alpha-2 country code standard. In API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied. items: $ref: '#/components/schemas/CountryCode' options: $ref: '#/components/schemas/InstitutionsSearchRequestOptions' required: - query - country_codes InstitutionsSearchRequestOptions: type: object description: An optional object to filter `/institutions/search` results. properties: oauth: type: boolean nullable: true description: Limit results to institutions with or without OAuth login flows. Note that institutions will have `oauth` set to `true` if some Items associated with that institution are required to use OAuth flows; institutions in a state of migration to OAuth will have the `oauth` attribute set to `true`. include_optional_metadata: type: boolean description: When true, return the institution's homepage URL, logo and primary brand color. include_auth_metadata: type: boolean default: false nullable: true description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported. include_payment_initiation_metadata: type: boolean default: false nullable: true description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported. payment_initiation: $ref: '#/components/schemas/InstitutionsSearchPaymentInitiationOptions' InstitutionsSearchPaymentInitiationOptions: type: object description: Additional options that will be used to filter institutions by various Payment Initiation configurations. nullable: true properties: payment_id: type: string nullable: true description: A unique ID identifying the payment consent_id: type: string nullable: true description: A unique ID identifying the payment consent InstitutionsSearchResponse: type: object additionalProperties: true description: InstitutionsSearchResponse defines the response schema for `/institutions/search` properties: institutions: type: array description: An array of institutions matching the search criteria items: $ref: '#/components/schemas/Institution' request_id: $ref: '#/components/schemas/RequestID' required: - institutions - request_id InstitutionsGetByIdRequest: type: object description: InstitutionsGetByIdRequest defines the request schema for `/institutions/get_by_id` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' institution_id: type: string description: The ID of the institution to get details about minLength: 1 country_codes: type: array description: | Specify which country or countries to include institutions from, using the ISO-3166-1 alpha-2 country code standard. In API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied. items: $ref: '#/components/schemas/CountryCode' options: $ref: '#/components/schemas/InstitutionsGetByIdRequestOptions' required: - institution_id - country_codes InstitutionsGetByIdRequestOptions: type: object description: Specifies optional parameters for `/institutions/get_by_id`. If provided, must not be `null`. properties: include_optional_metadata: default: false type: boolean description: |- When `true`, return an institution's logo, brand color, and URL. When available, the bank's logo is returned as a base64 encoded 152x152 PNG, the brand color is in hexadecimal format. The default value is `false`. Note that Plaid does not own any of the logos shared by the API and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos. include_status: type: boolean default: false description: If `true`, the response will include status information about the institution. Default value is `false`. include_auth_metadata: type: boolean default: false description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported. include_payment_initiation_metadata: type: boolean default: false description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported. InstitutionsGetByIdResponse: type: object additionalProperties: true description: InstitutionsGetByIdResponse defines the response schema for `/institutions/get_by_id` properties: institution: $ref: '#/components/schemas/Institution' request_id: $ref: '#/components/schemas/RequestID' required: - institution - request_id AccountsGetRequest: type: object description: AccountsGetRequest defines the request schema for `/accounts/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/AccountsGetRequestOptions' required: - access_token x-examples: example-1: {} AccountsGetRequestOptions: type: object description: An optional object to filter `/accounts/get` results. properties: account_ids: type: array description: An array of `account_ids` to retrieve for the Account. items: type: string AccountsGetResponse: type: object additionalProperties: true description: AccountsGetResponse defines the response schema for `/accounts/get` and `/accounts/balance/get`. properties: accounts: type: array description: |- An array of financial institution accounts associated with the Item. If `/accounts/balance/get` was called, each account will include real-time balance information. items: $ref: '#/components/schemas/AccountBase' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - item - request_id CategoriesGetRequest: type: object description: CategoriesGetRequest defines the request schema for `/categories/get` CategoriesGetResponse: type: object additionalProperties: true description: CategoriesGetResponse defines the response schema for `/categories/get` properties: categories: type: array description: An array of all of the transaction categories used by Plaid. items: $ref: '#/components/schemas/Category' request_id: $ref: '#/components/schemas/RequestID' required: - categories - request_id SandboxOverridePassword: type: string nullable: true default: pass_good description: Test password to use for the creation of the Sandbox Item. Default value is `pass_good`. You can also use a custom test user — reference one configured in the Dashboard via `override_username`, or set `override_username` to `user_custom` and pass the JSON-stringified custom user configuration object as this field to define one entirely via API. See [Sandbox Custom Users](https://plaid.com/docs/sandbox/user-custom) for more details. SandboxOverrideUsername: type: string nullable: true default: user_good description: Test username to use for the creation of the Sandbox Item. Default value is `user_good`. You can also use a custom test user — either set this to the username of a custom user configured in the Dashboard, or set it to `user_custom` and pass the JSON-stringified custom user configuration object as `override_password` to define one entirely via API. See [Sandbox Custom Users](https://plaid.com/docs/sandbox/user-custom) for more details. SandboxProcessorTokenCreateRequest: description: SandboxProcessorTokenCreateRequest defines the request schema for `/sandbox/processor_token/create` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' institution_id: type: string description: The ID of the institution the Item will be associated with options: $ref: '#/components/schemas/SandboxProcessorTokenCreateRequestOptions' required: - institution_id SandboxProcessorTokenCreateRequestOptions: type: object description: An optional set of options to be used when configuring the Item. If specified, must not be `null`. properties: override_username: $ref: '#/components/schemas/SandboxOverrideUsername' override_password: $ref: '#/components/schemas/SandboxOverridePassword' SandboxProcessorTokenCreateResponse: type: object additionalProperties: true properties: processor_token: type: string description: A processor token that can be used to call the `/processor/` endpoints. request_id: $ref: '#/components/schemas/RequestID' description: SandboxProcessorTokenCreateResponse defines the response schema for `/sandbox/processor_token/create` required: - processor_token - request_id SandboxPublicTokenCreateRequest: type: object description: SandboxPublicTokenCreateRequest defines the request schema for `/sandbox/public_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' institution_id: type: string description: The ID of the institution the Item will be associated with initial_products: type: array description: The products to initially pull for the Item. May be any products that the specified `institution_id` supports. This array may not be empty. items: $ref: '#/components/schemas/Products' minItems: 1 x-override-enum-values-shown: - assets - auth - cra_base_report - cra_income_insights - cra_lend_score - cra_partner_insights - cra_monitoring - identity - income_verification - investments_auth - investments - liabilities - payment_initiation - signal - standing_orders - statements - transactions - transfer options: $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptions' user_token: $ref: '#/components/schemas/UserToken' user_id: $ref: '#/components/schemas/NewUserID' required: - institution_id - initial_products SandboxPublicTokenCreateRequestOptions: type: object description: An optional set of options to be used when configuring the Item. If specified, must not be `null`. properties: webhook: type: string description: Specify a webhook to associate with the new Item. format: url override_username: $ref: '#/components/schemas/SandboxOverrideUsername' override_password: $ref: '#/components/schemas/SandboxOverridePassword' transactions: $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptionsTransactions' statements: $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptionsStatements' income_verification: $ref: '#/components/schemas/SandboxPublicTokenCreateRequestOptionsIncomeVerification' SandboxPublicTokenCreateRequestOptionsTransactions: type: object description: An optional set of parameters corresponding to transactions options. nullable: true properties: start_date: type: string format: date description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD. days_requested: description: The maximum number of days of transaction history to request for the Transactions product. type: integer minimum: 1 maximum: 730 default: 90 x-hidden-from-docs: true title: SandboxPublicTokenCreateRequestOptionsTransactions SandboxPublicTokenCreateRequestOptionsStatements: title: SandboxPublicTokenCreateRequestOptionsStatements type: object nullable: true description: An optional set of parameters corresponding to statements options. properties: start_date: type: string format: date description: The earliest date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The most recent date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD. required: - start_date - end_date SandboxPublicTokenCreateRequestOptionsIncomeVerification: type: object description: A set of parameters for income verification options. This field is required if `income_verification` is included in the `initial_products` array. properties: income_source_types: type: array description: The types of source income data that users will be permitted to share. Options include `bank` and `payroll`. Currently you can only specify one of these options. items: $ref: '#/components/schemas/IncomeVerificationSourceType' bank_income: $ref: '#/components/schemas/SandboxPublicTokenCreateRequestIncomeVerificationBankIncome' SandboxPublicTokenCreateRequestIncomeVerificationBankIncome: type: object description: Specifies options for Bank Income. This field is required if `income_verification` is included in the `initial_products` array and `bank` is specified in `income_source_types`. properties: days_requested: type: integer description: The number of days of data to request for the Bank Income product SandboxPublicTokenCreateResponse: type: object additionalProperties: true description: SandboxPublicTokenCreateResponse defines the response schema for `/sandbox/public_token/create` properties: public_token: type: string description: A public token that can be exchanged for an access token using `/item/public_token/exchange` request_id: $ref: '#/components/schemas/RequestID' required: - public_token - request_id SandboxItemFireWebhookRequest: type: object description: SandboxItemFireWebhookRequest defines the request schema for `/sandbox/item/fire_webhook` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' webhook_type: $ref: '#/components/schemas/WebhookType' webhook_code: type: string enum: - DEFAULT_UPDATE - NEW_ACCOUNTS_AVAILABLE - SMS_MICRODEPOSITS_VERIFICATION - AUTHORIZATION_GRANTED - USER_PERMISSION_REVOKED - USER_ACCOUNT_REVOKED - PENDING_DISCONNECT - RECURRING_TRANSACTIONS_UPDATE - LOGIN_REPAIRED - SYNC_UPDATES_AVAILABLE - PRODUCT_READY - ERROR x-override-enum-values-shown: - DEFAULT_UPDATE - NEW_ACCOUNTS_AVAILABLE - SMS_MICRODEPOSITS_VERIFICATION - USER_PERMISSION_REVOKED - USER_ACCOUNT_REVOKED - PENDING_DISCONNECT - RECURRING_TRANSACTIONS_UPDATE - LOGIN_REPAIRED - SYNC_UPDATES_AVAILABLE - PRODUCT_READY - ERROR description: The webhook codes that can be fired by this test endpoint. required: - access_token - webhook_code WebhookType: type: string enum: - AUTH - HOLDINGS - INVESTMENTS_TRANSACTIONS - ITEM - LIABILITIES - TRANSACTIONS - ASSETS description: The webhook types that can be fired by this test endpoint. SandboxItemFireWebhookResponse: type: object additionalProperties: true description: SandboxItemFireWebhookResponse defines the response schema for `/sandbox/item/fire_webhook` properties: webhook_fired: type: boolean description: Value is `true` if the test `webhook_code` was successfully fired. request_id: $ref: '#/components/schemas/RequestID' required: - webhook_fired - request_id AccountsBalanceGetRequest: type: object description: AccountsBalanceGetRequest defines the request schema for `/accounts/balance/get` properties: access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' options: $ref: '#/components/schemas/AccountsBalanceGetRequestOptions' required: - access_token AccountsBalanceGetRequestOptions: type: object description: Optional parameters to `/accounts/balance/get`. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item. The default value is `null`. Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string min_last_updated_datetime: $ref: '#/components/schemas/MinLastUpdatedDatetime' MinLastUpdatedDatetime: title: MinLastUpdatedDatetime type: string format: date-time description: |- Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the oldest acceptable balance when making a request to `/accounts/balance/get`. This field is only necessary when the institution is `ins_128026` (Capital One), *and* one or more account types being requested is a non-depository account (such as a credit card) as Capital One does not provide real-time balance for non-depository accounts. In this case, a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For all other institutions, as well as for depository accounts at Capital One (including all checking and savings accounts) this field is ignored and real-time balance information will be fetched. If this field is not ignored, and no acceptable balance is available, an `INVALID_RESULT` error with the code `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned. IdentityGetRequest: type: object description: IdentityGetRequest defines the request schema for `/identity/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/IdentityGetRequestOptions' required: - access_token IdentityGetRequestOptions: type: object description: An optional object to filter `/identity/get` results. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item. Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string IdentityGetResponse: type: object additionalProperties: true description: IdentityGetResponse defines the response schema for `/identity/get` properties: accounts: type: array description: The accounts for which Identity data has been requested items: $ref: '#/components/schemas/AccountIdentity' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - item - request_id IdentityMatchRequest: type: object description: IdentityMatchRequest defines the request schema for `/identity/match` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' user: $ref: '#/components/schemas/IdentityMatchUser' options: $ref: '#/components/schemas/IdentityMatchRequestOptions' required: - access_token IdentityMatchRequestOptions: type: object description: An optional object to filter `/identity/match` results properties: account_ids: type: array description: An array of `account_ids` to perform fuzzy match items: type: string IdentityMatchUser: title: IdentityMatchUser type: object additionalProperties: true description: The user's legal name, phone number, email address and address used to perform fuzzy match. If Financial Account Matching is enabled in the Identity Verification product, leave this field empty to automatically match against PII collected from the Identity Verification checks. properties: legal_name: type: string description: The user's full legal name. nullable: true phone_number: type: string nullable: true description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14157452130". Phone numbers provided in other formats will be parsed on a best-effort basis. Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment.' email_address: type: string description: The user's email address. nullable: true address: $ref: '#/components/schemas/AddressDataNullableNoRequiredFields' IdentityMatchResponse: type: object additionalProperties: true description: IdentityMatchResponse defines the response schema for `/identity/match` properties: accounts: type: array description: The accounts for which Identity match has been requested items: $ref: '#/components/schemas/AccountIdentityMatchScore' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - item - request_id IdentityRefreshRequest: type: object description: IdentityRefreshRequest defines the request schema for `/identity/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' required: - access_token IdentityRefreshResponse: type: object additionalProperties: true description: IdentityRefreshResponse defines the response schema for `/identity/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorAuthGetRequest: type: object description: ProcessorAuthGetRequest defines the request schema for `/processor/auth/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorAuthGetResponse: type: object additionalProperties: true description: ProcessorAuthGetResponse defines the response schema for `/processor/auth/get` properties: request_id: $ref: '#/components/schemas/RequestID' numbers: $ref: '#/components/schemas/ProcessorNumber' account: $ref: '#/components/schemas/AccountBase' required: - request_id - numbers - account ProcessorAccountGetRequest: type: object description: ProcessorAccountGetRequest defines the request schema for `/processor/account/get` properties: client_id: $ref: '#/components/schemas/APIClientID' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' required: - processor_token ProcessorAccountGetResponse: type: object additionalProperties: true description: ProcessorAccountGetResponse defines the response schema for `/processor/account/get` properties: account: $ref: '#/components/schemas/AccountBase' institution_id: description: The Plaid Institution ID associated with the Account. type: string request_id: $ref: '#/components/schemas/RequestID' required: - account - institution_id - request_id ProcessorInvestmentsHoldingsGetRequest: type: object description: ProcessorInvestmentsHoldingsGetRequest defines the request schema for `/processor/investments/holdings/get` properties: client_id: $ref: '#/components/schemas/APIClientID' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' required: - processor_token ProcessorInvestmentsHoldingsGetResponse: type: object additionalProperties: true description: ProcessorInvestmentsHoldingsGetResponse defines the response schema for `/processor/investments/holdings/get` properties: account: $ref: '#/components/schemas/InvestmentAccount' holdings: type: array description: 'The holdings belonging to investment accounts associated with the Item. Details of the securities in the holdings are provided in the `securities` field. ' items: $ref: '#/components/schemas/Holding' securities: description: Objects describing the securities held in the account. type: array items: $ref: '#/components/schemas/Security' is_investments_fallback_item: type: boolean description: When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow. request_id: $ref: '#/components/schemas/RequestID' required: - account - holdings - securities ProcessorInvestmentsAuthGetRequest: type: object description: ProcessorInvestmentsAuthGetRequest defines the request schema for `/processor/investments/auth/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorInvestmentsAuthGetResponse: type: object description: ProcessorInvestmentsAuthGetResponse defines the response schema for `/processor/investments/auth/get` additionalProperties: true properties: account: $ref: '#/components/schemas/AccountBase' holdings: type: array description: The holdings belonging to the investment account. Details of the securities in the holdings are provided in the `securities` field. items: $ref: '#/components/schemas/Holding' securities: description: Objects describing the securities held in the account. type: array items: $ref: '#/components/schemas/Security' owners: description: Information about the account owners for the account. type: array items: $ref: '#/components/schemas/InvestmentsAuthOwner' numbers: $ref: '#/components/schemas/InvestmentsAuthGetNumbers' data_sources: $ref: '#/components/schemas/InvestmentsAuthDataSources' account_details_401k: type: array x-hidden-from-docs: true description: Additional information for accounts of 401k subtype. items: $ref: '#/components/schemas/InvestmentsAuthAccountDetails401k' is_investments_fallback_item: type: boolean description: When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow. request_id: $ref: '#/components/schemas/RequestID' required: - account - holdings - securities - numbers - owners - data_sources - request_id ProcessorTransactionsGetRequestOptions: type: object description: An optional object to be used with the request. If specified, `options` must not be `null`. properties: count: type: integer default: 100 description: The number of transactions to fetch. minimum: 1 maximum: 500 exclusiveMinimum: false offset: type: integer default: 0 description: The number of transactions to skip. The default value is 0. minimum: 0 include_original_description: type: boolean default: false description: Include the raw unparsed transaction description from the financial institution. nullable: true include_personal_finance_category_beta: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true include_personal_finance_category: type: boolean default: false description: Personal finance categories are now returned by default. deprecated: true x-hidden-from-docs: true include_logo_and_counterparty_beta: type: boolean default: false description: Counterparties and extra merchant fields are now returned by default. deprecated: true x-hidden-from-docs: true ProcessorTransactionsGetRequest: type: object description: ProcessorTransactionsGetRequest defines the request schema for `/processor/transactions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' options: $ref: '#/components/schemas/ProcessorTransactionsGetRequestOptions' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date description: The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. required: - processor_token - start_date - end_date ProcessorTransactionsGetResponse: type: object additionalProperties: true description: ProcessorTransactionsGetResponse defines the response schema for `/processor/transactions/get` properties: account: $ref: '#/components/schemas/AccountBase' transactions: type: array description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter. items: $ref: '#/components/schemas/Transaction' 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. request_id: $ref: '#/components/schemas/RequestID' required: - account - transactions - total_transactions - request_id ProcessorTransactionsSyncRequest: type: object description: ProcessorTransactionsSyncRequest defines the request schema for `/processor/transactions/sync` properties: client_id: $ref: '#/components/schemas/APIClientID' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' cursor: type: string description: |- The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update. If omitted, the entire history of updates will be returned, starting with the first-added transactions on the Item. Note: The upper-bound length of this cursor is 256 characters of base64. count: type: integer default: 100 description: The number of transaction updates to fetch. minimum: 1 maximum: 500 exclusiveMinimum: false options: $ref: '#/components/schemas/TransactionsSyncRequestOptions' required: - processor_token ProcessorTransactionsSyncResponse: type: object additionalProperties: true description: ProcessorTransactionsSyncResponse defines the response schema for `/processor/transactions/sync` properties: transactions_update_status: $ref: '#/components/schemas/TransactionsUpdateStatus' account: $ref: '#/components/schemas/AccountBaseNullable' added: type: array description: Transactions that have been added to the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/Transaction' modified: type: array description: Transactions that have been modified on the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/Transaction' removed: type: array description: Transactions that have been removed from the Item since `cursor` ordered by ascending last modified time. items: $ref: '#/components/schemas/RemovedTransaction' next_cursor: type: string description: Cursor used for fetching any future updates after the latest update provided in this response. The cursor obtained after all pages have been pulled (indicated by `has_more` being `false`) will be valid for at least 1 year. This cursor should be persisted for later calls. If transactions are not yet available, this will be an empty string. has_more: type: boolean description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`. If `has_more` is true, it's important to pull all available pages, to make it less likely for underlying data changes to conflict with pagination. request_id: $ref: '#/components/schemas/RequestID' required: - account - added - modified - removed - next_cursor - has_more - request_id - transactions_update_status ProcessorTransactionsRefreshRequest: type: object description: ProcessorTransactionsRefreshRequest defines the request schema for `/processor/transactions/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' required: - processor_token ProcessorTransactionsRefreshResponse: type: object additionalProperties: true description: ProcessorTransactionsRefreshResponse defines the response schema for `/processor/transactions/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorTransactionsRecurringGetRequest: type: object description: ProcessorTransactionsRecurringGetRequest defines the request schema for `/processor/transactions/recurring/get` properties: client_id: $ref: '#/components/schemas/APIClientID' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' options: $ref: '#/components/schemas/TransactionsRecurringGetRequestOptions' required: - processor_token ProcessorTransactionsRecurringGetResponse: type: object additionalProperties: true description: ProcessorTransactionsRecurringGetResponse defines the response schema for `/processor/transactions/recurring/get` properties: inflow_streams: type: array description: An array of inflow transaction streams. items: $ref: '#/components/schemas/TransactionStream' outflow_streams: type: array description: An array of expense transaction streams. items: $ref: '#/components/schemas/TransactionStream' updated_datetime: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time transaction streams for the given account were updated on personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' request_id: $ref: '#/components/schemas/RequestID' required: - inflow_streams - outflow_streams - updated_datetime - request_id ProcessorBankTransferCreateRequest: title: ProcessorBankTransferCreateRequest type: object description: Defines the request schema for `/processor/bank_transfer/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' idempotency_key: $ref: '#/components/schemas/BankTransferIdempotencyKey' processor_token: $ref: '#/components/schemas/ProcessorToken' type: $ref: '#/components/schemas/BankTransferType' network: $ref: '#/components/schemas/BankTransferNetwork' amount: $ref: '#/components/schemas/BankTransferAmount' iso_currency_code: type: string description: The currency of the transfer amount - should be set to "USD". description: type: string description: The transfer description. Maximum of 10 characters. maxLength: 10 ach_class: $ref: '#/components/schemas/ACHClass' user: $ref: '#/components/schemas/BankTransferUser' custom_tag: type: string maxLength: 100 nullable: true description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters. metadata: $ref: '#/components/schemas/BankTransferMetadata' origination_account_id: type: string nullable: true description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. required: - idempotency_key - processor_token - type - network - amount - iso_currency_code - description - user ProcessorBankTransferCreateResponse: title: ProcessorBankTransferCreateResponse type: object additionalProperties: true description: Defines the response schema for `/processor/bank_transfer/create` properties: bank_transfer: $ref: '#/components/schemas/BankTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfer - request_id ProcessorNumber: type: object additionalProperties: true description: An object containing identifying numbers used for making electronic transfers to and from the `account`. The identifying number type (ACH, EFT, IBAN, or Bacs) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by the `account` for which auth data has been requested, a null value will be returned. properties: ach: $ref: '#/components/schemas/NumbersACHNullable' eft: $ref: '#/components/schemas/NumbersEFTNullable' international: $ref: '#/components/schemas/NumbersInternationalNullable' bacs: $ref: '#/components/schemas/NumbersBACSNullable' ProcessorLiabilitiesGetRequest: type: object description: ProcessorLiabilitiesGetRequest defines the request schema for `/processor/liabilities/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorLiabilitiesGetResponse: type: object additionalProperties: true description: ProcessorLiabilitiesGetResponse defines the response schema for `/processor/liabilities/get` properties: account: $ref: '#/components/schemas/AccountBase' liabilities: $ref: '#/components/schemas/LiabilitiesObject' request_id: $ref: '#/components/schemas/RequestID' required: - account - liabilities - request_id ProcessorIdentityGetRequest: type: object description: ProcessorIdentityGetRequest defines the request schema for `/processor/identity/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorIdentityGetResponse: type: object additionalProperties: true description: ProcessorIdentityGetResponse defines the response schema for `/processor/identity/get` properties: account: $ref: '#/components/schemas/AccountIdentity' request_id: $ref: '#/components/schemas/RequestID' required: - account - request_id ProcessorIdentityMatchRequest: type: object description: ProcessorIdentityMatchRequest defines the request schema for `/processor/identity/match` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' user: $ref: '#/components/schemas/IdentityMatchUser' required: - processor_token ProcessorIdentityMatchResponse: type: object additionalProperties: true description: ProcessorIdentityMatchResponse defines the response schema for `/processor/identity/match` properties: account: $ref: '#/components/schemas/AccountIdentityMatchScore' request_id: $ref: '#/components/schemas/RequestID' required: - account - request_id ProcessorBalanceGetRequest: type: object description: ProcessorBalanceGetRequest defines the request schema for `/processor/balance/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' options: $ref: '#/components/schemas/ProcessorBalanceGetRequestOptions' required: - processor_token ProcessorBalanceGetRequestOptions: type: object description: Optional parameters to `/processor/balance/get`. properties: min_last_updated_datetime: $ref: '#/components/schemas/MinLastUpdatedDatetime' ProcessorBalanceGetResponse: type: object additionalProperties: true description: ProcessorBalanceGetResponse defines the response schema for `/processor/balance/get` properties: account: $ref: '#/components/schemas/AccountBase' request_id: $ref: '#/components/schemas/RequestID' required: - account - request_id WebhookVerificationKeyGetRequest: type: object description: WebhookVerificationKeyGetRequest defines the request schema for `/webhook_verification_key/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' key_id: type: string description: The key ID ( `kid` ) from the JWT header. required: - key_id WebhookVerificationKeyGetResponse: type: object additionalProperties: true description: WebhookVerificationKeyGetResponse defines the response schema for `/webhook_verification_key/get` properties: key: $ref: '#/components/schemas/JWKPublicKey' request_id: $ref: '#/components/schemas/RequestID' required: - key - request_id JWKPublicKey: type: object additionalProperties: true description: A JSON Web Key (JWK) that can be used in conjunction with [JWT libraries](https://jwt.io/#libraries-io) to verify Plaid webhooks properties: alg: type: string description: The alg member identifies the cryptographic algorithm family used with the key. crv: type: string description: The crv member identifies the cryptographic curve used with the key. kid: type: string description: The kid (Key ID) member can be used to match a specific key. This can be used, for instance, to choose among a set of keys within the JWK during key rollover. kty: type: string description: The kty (key type) parameter identifies the cryptographic algorithm family used with the key, such as RSA or EC. use: type: string description: The use (public key use) parameter identifies the intended use of the public key. x: type: string description: The x member contains the x coordinate for the elliptic curve point, provided as a base64url-encoded string of the coordinate's big endian representation. "y": type: string description: The y member contains the y coordinate for the elliptic curve point, provided as a base64url-encoded string of the coordinate's big endian representation. created_at: type: integer description: The timestamp when the key was created, in Unix time. expired_at: type: integer description: The timestamp when the key expired, in Unix time. nullable: true required: - alg - kid - kty - crv - x - "y" - use - created_at - expired_at LiabilitiesGetRequest: type: object description: LiabilitiesGetRequest defines the request schema for `/liabilities/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/LiabilitiesGetRequestOptions' required: - access_token LiabilitiesGetRequestOptions: type: object description: An optional object to filter `/liabilities/get` results. If provided, `options` cannot be null. properties: account_ids: type: array description: |- A list of accounts to retrieve for the Item. An error will be returned if a provided `account_id` is not associated with the Item items: type: string LiabilitiesGetResponse: type: object additionalProperties: true description: LiabilitiesGetResponse defines the response schema for `/liabilities/get` properties: accounts: type: array description: An array of accounts associated with the Item items: $ref: '#/components/schemas/AccountBase' item: $ref: '#/components/schemas/Item' liabilities: $ref: '#/components/schemas/LiabilitiesObject' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - item - liabilities - request_id PaymentInitiationRecipientCreateRequest: type: object description: PaymentInitiationRecipientCreateRequest defines the request schema for `/payment_initiation/recipient/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' name: type: string description: The name of the recipient. We recommend using strings of length 18 or less and avoid special characters to ensure compatibility with all institutions. minLength: 1 iban: type: string description: The International Bank Account Number (IBAN) for the recipient. If Bacs data is not provided, an IBAN is required. nullable: true minLength: 15 maxLength: 34 bacs: $ref: '#/components/schemas/RecipientBACSNullable' address: $ref: '#/components/schemas/PaymentInitiationAddress' required: - name PaymentInitiationRecipientCreateResponse: type: object additionalProperties: true description: PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initiation/recipient/create` properties: recipient_id: type: string description: A unique ID identifying the recipient request_id: $ref: '#/components/schemas/RequestID' required: - recipient_id - request_id PaymentInitiationPaymentReverseResponse: type: object additionalProperties: true description: PaymentInitiationPaymentReverseResponse defines the response schema for `/payment_initiation/payment/reverse` properties: refund_id: type: string description: A unique ID identifying the refund status: $ref: '#/components/schemas/WalletTransactionStatus' request_id: $ref: '#/components/schemas/RequestID' required: - refund_id - request_id - status PaymentInitiationRecipientGetRequest: type: object description: PaymentInitiationRecipientGetRequest defines the request schema for `/payment_initiation/recipient/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' recipient_id: type: string description: The ID of the recipient required: - recipient_id PaymentInitiationRecipientGetResponse: additionalProperties: true description: PaymentInitiationRecipientGetResponse defines the response schema for `/payment_initiation/recipient/get` allOf: - $ref: '#/components/schemas/PaymentInitiationRecipient' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - recipient_id - name - request_id PaymentInitiationRecipient: type: object additionalProperties: true description: PaymentInitiationRecipient defines a payment initiation recipient properties: recipient_id: type: string description: The ID of the recipient. name: type: string description: The name of the recipient. address: $ref: '#/components/schemas/PaymentInitiationAddress' iban: type: string description: The International Bank Account Number (IBAN) for the recipient. nullable: true bacs: $ref: '#/components/schemas/RecipientBACSNullable' required: - recipient_id - name title: PaymentInitiationRecipient PaymentInitiationRecipientListRequest: type: object description: PaymentInitiationRecipientListRequest defines the request schema for `/payment_initiation/recipient/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' count: type: integer minimum: 1 maximum: 100 default: 100 description: The maximum number of recipients to return. If `count` is not specified, a maximum of 100 recipients will be returned, beginning with the recipient at the cursor (if specified). nullable: true cursor: type: string description: A value representing the latest recipient to be included in the response. Set this from `next_cursor` received from the previous `/payment_initiation/recipient/list` request. If provided, the response will only contain that recipient and recipients created before it. If omitted, the response will contain recipients starting from the most recent, and in descending order by the `created_at` time. maxLength: 256 PaymentInitiationRecipientListResponse: type: object additionalProperties: true description: PaymentInitiationRecipientListResponse defines the response schema for `/payment_initiation/recipient/list` properties: recipients: type: array description: An array of payment recipients created for Payment Initiation items: $ref: '#/components/schemas/PaymentInitiationRecipient' request_id: $ref: '#/components/schemas/RequestID' next_cursor: type: string description: The value that, when used as the optional `cursor` parameter to `/payment_initiation/recipient/list`, will return the corresponding recipient as its first recipient. maxLength: 256 required: - recipients - request_id PaymentInitiationPaymentCreateRequest: type: object description: PaymentInitiationPaymentCreateRequest defines the request schema for `/payment_initiation/payment/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' recipient_id: type: string description: The ID of the recipient the payment is for. reference: type: string description: |- A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any special characters (since not all institutions support them). In order to track settlement via Payment Confirmation, each payment must have a unique reference. If the reference provided through the API is not unique, Plaid will adjust it. Some institutions may limit the reference to less than 18 characters. If necessary, Plaid will adjust the reference by truncating it to fit the institution's requirements. Both the originally provided and automatically adjusted references (if any) can be found in the `reference` and `adjusted_reference` fields, respectively. minLength: 1 maxLength: 18 amount: $ref: '#/components/schemas/PaymentAmount' schedule: $ref: '#/components/schemas/ExternalPaymentScheduleRequest' options: $ref: '#/components/schemas/ExternalPaymentOptions' required: - recipient_id - reference - amount PaymentInitiationPaymentReverseRequest: type: object description: PaymentInitiationPaymentReverseRequest defines the request schema for `/payment_initiation/payment/reverse` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_id: type: string description: The ID of the payment to reverse idempotency_key: $ref: '#/components/schemas/WalletTransactionIdempotencyKey' reference: type: string maxLength: 18 minLength: 6 description: A reference for the refund. This must be an alphanumeric string with 6 to 18 characters and must not contain any special characters or spaces. amount: $ref: '#/components/schemas/PaymentAmountToRefund' counterparty_date_of_birth: type: string format: date nullable: true description: The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. counterparty_address: $ref: '#/components/schemas/PaymentInitiationAddress' required: - payment_id - idempotency_key - reference PaymentInitiationPaymentCreateStatus: type: string enum: - PAYMENT_STATUS_INPUT_NEEDED description: |- For a payment returned by this endpoint, there is only one possible value: `PAYMENT_STATUS_INPUT_NEEDED`: The initial phase of the payment PaymentInitiationPaymentCreateResponse: type: object additionalProperties: true description: PaymentInitiationPaymentCreateResponse defines the response schema for `/payment_initiation/payment/create` properties: payment_id: type: string description: A unique ID identifying the payment status: $ref: '#/components/schemas/PaymentInitiationPaymentCreateStatus' request_id: $ref: '#/components/schemas/RequestID' required: - payment_id - status - request_id SandboxItemApplicationSeedRequest: type: object description: SandboxItemApplicationSeedRequest defines the request schema for `/sandbox/item/application/seed` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' application_id: $ref: '#/components/schemas/ApplicationID' required: - access_token - application_id SandboxItemApplicationSeedResponse: type: object additionalProperties: true description: SandboxItemApplicationSeedResponse defines the response schema for `/sandbox/item/application/seed` properties: item_id: type: string description: The `item_id` of the newly seeded item representing the application connection. request_id: $ref: '#/components/schemas/RequestID' 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` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token SandboxItemResetLoginResponse: type: object additionalProperties: true description: SandboxItemResetLoginResponse defines the response schema for `/sandbox/item/reset_login` properties: reset_login: type: boolean description: '`true` if the call succeeded' request_id: $ref: '#/components/schemas/RequestID' required: - reset_login - request_id SandboxUserResetLoginRequest: type: object description: SandboxUserResetLoginRequest defines the request schema for `/sandbox/user/reset_login` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' item_ids: type: array items: $ref: '#/components/schemas/ItemId' nullable: true description: An array of `item_id`s associated with the User to be reset. If empty or `null`, this field will default to resetting all Items associated with the User. user_id: $ref: '#/components/schemas/NewUserID' SandboxUserResetLoginResponse: type: object additionalProperties: true description: SandboxUserResetLoginResponse defines the response schema for `/sandbox/user/reset_login` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxPaymentProfileResetLoginRequest: type: object description: SandboxPaymentProfileResetLoginRequest defines the request schema for `/sandbox/payment_profile/reset_login` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_profile_token: $ref: '#/components/schemas/PaymentProfileToken' required: - payment_profile_token SandboxPaymentProfileResetLoginResponse: type: object additionalProperties: true description: SandboxPaymentProfileResetLoginResponse defines the response schema for `/sandbox/payment_profile/reset_login` properties: reset_login: type: boolean description: '`true` if the call succeeded' request_id: $ref: '#/components/schemas/RequestID' required: - reset_login - request_id SandboxItemSetVerificationStatusRequest: type: object description: SandboxItemSetVerificationStatusRequest defines the request schema for `/sandbox/item/set_verification_status` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: The `account_id` of the account whose verification status is to be modified verification_status: enum: - automatically_verified - verification_expired type: string description: The verification status to set the account to. required: - access_token - account_id - verification_status SandboxItemSetVerificationStatusResponse: type: object additionalProperties: true description: SandboxItemSetVerificationStatusResponse defines the response schema for `/sandbox/item/set_verification_status` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id UserCreateRequest: type: object description: UserCreateRequest defines the request schema for `/user/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_user_id: description: A unique ID representing the end user. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. type: string maxLength: 128 minLength: 1 identity: $ref: '#/components/schemas/ClientUserIdentity' end_customer: x-hidden-from-docs: true description: A unique ID representing a CRA reseller's end customer. Maximum of 128 characters. type: string maxLength: 128 minLength: 0 consumer_report_user_identity: $ref: '#/components/schemas/ConsumerReportUserIdentity' with_upgraded_user: description: If your integration with the User API predates December 10, 2025, set this field to `true` to opt into the [New User APIs](https://plaid.com/docs/api/users/user-apis/). When enabled, you can use the `identity` field instead of `consumer_report_user_identity`. type: boolean required: - client_user_id UserCreateResponse: type: object additionalProperties: true description: UserCreateResponse defines the response schema for `/user/create` properties: user_token: $ref: '#/components/schemas/UserToken' user_id: $ref: '#/components/schemas/NewUserID' request_id: $ref: '#/components/schemas/RequestID' required: - user_id - request_id UserGetRequest: type: object description: UserGetRequest defines the request schema for `/user/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' required: - user_id UserGetResponse: type: object additionalProperties: true description: UserGetResponse defines the response schema for `/user/get`. properties: request_id: $ref: '#/components/schemas/RequestID' user_id: $ref: '#/components/schemas/NewUserID' client_user_id: type: string nullable: true description: Client provided user ID. created_at: type: string format: date-time description: Timestamp of user creation. updated_at: type: string format: date-time description: Timestamp of last user update. identity: $ref: '#/components/schemas/ClientUserIdentity' required: - request_id - 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` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' identity: $ref: '#/components/schemas/ClientUserIdentity' user_token: $ref: '#/components/schemas/UserToken' consumer_report_user_identity: $ref: '#/components/schemas/ConsumerReportUserIdentity' UserUpdateResponse: type: object additionalProperties: true description: UserUpdateResponse defines the response schema for `/user/update` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id UserRemoveRequest: type: object description: UserRemoveRequest defines the request schema for `/user/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' user_token: $ref: '#/components/schemas/UserToken' UserRemoveResponse: type: object additionalProperties: true description: UserRemoveResponse defines the response schema for `/user/remove` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id UserProductsTerminateRequest: type: object description: UserProductsTerminateRequest defines the request schema for `/user/products/terminate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' reason_code: $ref: '#/components/schemas/ProductsTerminateReasonCode' reason_note: type: string nullable: true maxLength: 512 description: Additional context or details about the reason for terminating user-based products. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`. required: - user_id - reason_code UserProductsTerminateResponse: type: object additionalProperties: true description: UserProductsTerminateResponse defines the response schema for `/user/products/terminate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id UserThirdPartyTokenCreateRequest: x-hidden-from-docs: true type: object description: UserThirdPartyTokenCreateRequest defines the request schema for `/user/third_party_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' third_party_client_id: type: string description: The Plaid API `client_id` of the third-party client the token will be shared with. The token will only be valid for the specified client. expiration_time: type: string nullable: true description: The expiration date and time for the third-party user token in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). The expiration is restricted to a maximum of 24 hours from the token's creation time. If not provided, the token will automatically expire after 24 hours. format: date-time user_id: $ref: '#/components/schemas/NewUserID' required: - third_party_client_id UserThirdPartyTokenCreateResponse: x-hidden-from-docs: true type: object additionalProperties: true description: UserThirdPartyTokenCreateResponse defines the response schema for `/user/third_party_token/create` properties: request_id: $ref: '#/components/schemas/RequestID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' required: - request_id - third_party_user_token UserThirdPartyTokenRemoveRequest: x-hidden-from-docs: true type: object description: UserThirdPartyTokenRemoveRequest defines the request schema for `/user/third_party_token/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' required: - third_party_user_token UserThirdPartyTokenRemoveResponse: x-hidden-from-docs: true type: object additionalProperties: true description: UserThirdPartyTokenRemoveResponse defines the response schema for `/user/third_party_token/remove` properties: removed: type: boolean description: '`true` if the third-party user token was successfully removed.' request_id: $ref: '#/components/schemas/RequestID' required: - removed - request_id UserItemsGetRequest: type: object description: UserItemsGetRequest defines the request schema for `/user/items/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: $ref: '#/components/schemas/NewUserID' UserItemsGetResponse: type: object additionalProperties: true description: UserItemsGetResponse defines the response schema for `/user/items/get` properties: items: type: array items: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - items - request_id UserItemsAssociateRequest: type: object description: UserItemsAssociateRequest defines the request schema for `/user/items/associate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' item_ids: type: array items: $ref: '#/components/schemas/ItemId' description: An array of `item_id`s to be associated with the `user_id`. required: - user_id - item_ids UserItemsAssociateResponse: type: object additionalProperties: true description: UserItemsAssociateResponse defines the response schema for `/user/items/associate` properties: request_id: $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 additionalProperties: true description: The identity data permissioned by the end user during the authorization flow. properties: name: $ref: '#/components/schemas/UserAccountIdentityName' address: $ref: '#/components/schemas/UserAccountIdentityAddress' phone_number: type: string description: The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format email: description: |- The user's email address. Note: email is currently not returned. type: string nullable: true date_of_birth: description: The user's date of birth. type: string nullable: true ssn: description: The user's Social Security number. type: string nullable: true ssn_last_4: description: The last 4 digits of the user's Social Security number. type: string nullable: true UserAccountIdentityName: type: object nullable: true additionalProperties: true description: The user's first name and last name. properties: first_name: type: string last_name: type: string UserAccountIdentityAddress: description: The user's address. additionalProperties: true nullable: true type: object properties: city: type: string description: The full city name nullable: true region: type: string description: |- The region or state. Example: `"NC"` nullable: true street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` nullable: true street2: type: string nullable: true description: The second line street address postal_code: type: string description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code nullable: true UserAccountIdentityEditCounts: description: Edit counts over various time periods. type: object additionalProperties: true properties: edits_current: type: integer description: Number of edits in the current session edits_1d: type: integer description: Number of edits in the last 1 day edits_30d: type: integer description: Number of edits in the last 30 days edits_365d: type: integer description: Number of edits in the last 365 days edits_all_time: type: integer description: Total number of edits UserAccountIdentityOfficialDocument: description: Official identity document edit statistics. type: object nullable: true additionalProperties: true properties: ssn: $ref: '#/components/schemas/UserAccountIdentityEditCounts' UserAccountIdentityEditHistory: description: Statistics tracking the number of edits made to identity fields over various time periods. type: object nullable: true additionalProperties: true properties: name: $ref: '#/components/schemas/UserAccountIdentityEditCounts' address: $ref: '#/components/schemas/UserAccountIdentityEditCounts' email: $ref: '#/components/schemas/UserAccountIdentityEditCounts' date_of_birth: $ref: '#/components/schemas/UserAccountIdentityEditCounts' official_document: $ref: '#/components/schemas/UserAccountIdentityOfficialDocument' UserAccountItem: description: An Item created during a Layer authorization session. type: object additionalProperties: true properties: item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string access_token: $ref: '#/components/schemas/AccessToken' ConsumerReportUserIdentity: type: object nullable: true additionalProperties: true description: |- This field is only used by integrations created before December 10, 2025. All other integrations must use the `identity` object instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). To create a Plaid Check Consumer Report for a user when using a `user_token`, this field must be present. If this field is not provided during user token creation, you can add it to the user later by calling `/user/update`. Once the field has been added to the user, you will be able to call `/link/token/create` with a non-empty `consumer_report_permissible_purpose` (which will automatically create a Plaid Check Consumer Report), or call `/cra/check_report/create` for that user. properties: first_name: type: string description: The user's first name last_name: type: string description: The user's last name phone_numbers: description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14157452130". Phone numbers provided in other formats will be parsed on a best-effort basis. Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment.' type: array items: type: string emails: description: The user's emails type: array items: type: string ssn_full: description: |- The user's full Social Security number. This field should only be provided by lenders intending to share the resulting consumer report with a Government-Sponsored Enterprise (GSE), such as Fannie Mae or Freddie Mac. Format: "ddd-dd-dddd" type: string nullable: true ssn_last_4: description: The last 4 digits of the user's Social Security number. type: string nullable: true maxLength: 4 minLength: 4 date_of_birth: type: string nullable: true format: date description: |- To be provided in the format "yyyy-mm-dd". This field is required for all Plaid Check customers. primary_address: $ref: '#/components/schemas/AddressData' required: - first_name - last_name - phone_numbers - emails - date_of_birth - primary_address ClientUserIdentityName: type: object nullable: true description: User name information. properties: given_name: type: string description: User's given name. family_name: type: string description: User's family name. required: - given_name - family_name ClientUserIdentityPhoneNumber: type: object description: User phone number information. properties: data: type: string description: User's phone number. primary: type: boolean description: Indicates whether this is the primary phone number for the User. required: - data - primary ClientUserIdentityEmail: type: object description: User email information. properties: data: type: string description: User's email. primary: type: boolean description: Indicates whether this is the primary email for the User. required: - data - primary ClientUserIdentityAddress: type: object description: User address information. properties: street_1: type: string nullable: true description: First line of street address. street_2: type: string nullable: true description: Second line of street address. city: type: string nullable: true description: City name. region: type: string nullable: true description: State, province or region. country: type: string description: Country code. postal_code: type: string nullable: true description: Postal or ZIP code. primary: type: boolean description: Indicates whether this is the primary address for the User. required: - country - primary ClientUserIdentity: type: object nullable: true additionalProperties: true 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' date_of_birth: description: The user's date of birth, to be provided in the format "yyyy-mm-dd". type: string nullable: true format: date emails: description: The user's emails. type: array items: $ref: '#/components/schemas/ClientUserIdentityEmail' phone_numbers: description: 'The user''s phone numbers, in E.164 format: +{countrycode}{number}. For example: "+14157452130". Phone numbers provided in other formats will be parsed on a best-effort basis. Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment.' type: array items: $ref: '#/components/schemas/ClientUserIdentityPhoneNumber' addresses: type: array description: The user's addresses. items: $ref: '#/components/schemas/ClientUserIdentityAddress' id_numbers: type: array description: The user's ID numbers. items: $ref: '#/components/schemas/UserIDNumber' CreditSessionsGetRequest: type: object description: CreditSessionsGetRequest defines the request schema for `/credit/sessions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' required: - user_token CreditSessionsGetResponse: type: object additionalProperties: true description: CreditSessionsGetResponse defines the response schema for `/credit/sessions/get` properties: sessions: type: array description: A list of Link sessions for the user. Sessions will be sorted in reverse chronological order. items: $ref: '#/components/schemas/CreditSession' request_id: $ref: '#/components/schemas/RequestID' required: - request_id CreditSession: type: object description: Metadata and results for a Link session properties: link_session_id: type: string description: The unique identifier associated with the Link session. This identifier matches the `link_session_id` returned in the onSuccess/onExit callbacks. session_start_time: type: string description: The time when the Link session started format: date-time results: $ref: '#/components/schemas/CreditSessionResults' errors: type: array description: The set of errors that occurred during the Link session. items: $ref: '#/components/schemas/CreditSessionError' CreditSessionResults: type: object description: The set of results for a Link session. properties: item_add_results: type: array description: The set of Item adds for the Link session. items: $ref: '#/components/schemas/CreditSessionItemAddResult' bank_income_results: type: array description: The set of bank income verifications for the Link session. items: $ref: '#/components/schemas/CreditSessionBankIncomeResult' bank_employment_results: type: array description: The set of bank employment verifications for the Link session. items: $ref: '#/components/schemas/CreditSessionBankEmploymentResult' payroll_income_results: type: array description: The set of payroll income verifications for the Link session. items: $ref: '#/components/schemas/CreditSessionPayrollIncomeResult' document_income_results: $ref: '#/components/schemas/CreditSessionDocumentIncomeResult' CreditSessionItemAddResult: type: object description: The details of an Item add in Link. properties: public_token: description: Returned once a user has successfully linked their Item. type: string item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution_id: description: The Plaid Institution ID associated with the Item. type: string CreditSessionBankIncomeResult: type: object description: The details of a bank income verification in Link properties: status: $ref: '#/components/schemas/CreditSessionBankIncomeStatus' item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution_id: description: The Plaid Institution ID associated with the Item. type: string CreditSessionBankEmploymentResult: type: object description: The details of a bank employment verification in Link. properties: status: $ref: '#/components/schemas/CreditSessionBankEmploymentStatus' item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution_id: description: The Plaid Institution ID associated with the Item. type: string CreditSessionError: type: object description: The details of a Link error. properties: error_type: type: string description: A broad categorization of the error. error_code: description: The particular error code. type: string error_message: description: A developer-friendly representation of the error code. type: string display_message: description: A user-friendly representation of the error code. `null` if the error is not related to user action. type: string nullable: true CreditSessionPayrollIncomeResult: type: object description: The details of a digital payroll income verification in Link properties: num_paystubs_retrieved: type: integer description: The number of paystubs retrieved from a payroll provider. num_w2s_retrieved: type: integer description: The number of w2s retrieved from a payroll provider. institution_id: type: string description: The Plaid Institution ID associated with the Item. institution_name: type: string description: The Institution Name associated with the Item. CreditSessionDocumentIncomeResult: type: object nullable: true description: The details of a document income verification in Link properties: num_paystubs_uploaded: type: integer description: The number of paystubs uploaded by the user. num_w2s_uploaded: type: integer description: The number of w2s uploaded by the user. num_bank_statements_uploaded: type: integer description: The number of bank statements uploaded by the user. 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 properties: num_bank_statements_uploaded: type: integer description: The number of bank statements uploaded by the user. required: - num_bank_statements_uploaded CreditSessionBankIncomeStatus: type: string enum: - APPROVED - NO_DEPOSITS_FOUND - USER_REPORTED_NO_INCOME - STARTED - INTERNAL_ERROR description: |- Status of the Bank Income Link session. `APPROVED`: User has approved and verified their income `NO_DEPOSITS_FOUND`: We attempted, but were unable to find any income in the connected account. `USER_REPORTED_NO_INCOME`: The user explicitly indicated that they don't receive income in the connected account. `STARTED`: The user began the bank income portion of the link flow. `INTERNAL_ERROR`: The user encountered an internal error. CreditSessionBankEmploymentStatus: type: string enum: - APPROVED - NO_EMPLOYERS_FOUND - EMPLOYER_NOT_LISTED - STARTED - INTERNAL_ERROR description: |- Status of the Bank Employment Link session. `APPROVED`: User has approved and verified their employment. `NO_EMPLOYERS_FOUND`: We attempted, but were unable to find any employment in the connected account. `EMPLOYER_NOT_LISTED`: The user explicitly indicated that they did not see their current or previous employer in the list of employer names found. `STARTED`: The user began the bank employment portion of the link flow. `INTERNAL_ERROR`: The user encountered an internal error. CreditPayStubPayBasisType: type: string description: The explicit pay basis on the paystub (if present). enum: - SALARY - HOURLY - COMMISSION PaymentInitiationPaymentGetRequest: type: object description: PaymentInitiationPaymentGetRequest defines the request schema for `/payment_initiation/payment/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_id: type: string description: The `payment_id` returned from `/payment_initiation/payment/create`. required: - payment_id PaymentInitiationPaymentGetResponse: additionalProperties: true description: PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initiation/payment/get` allOf: - $ref: '#/components/schemas/PaymentInitiationPayment' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id - payment_id - amount - status - recipient_id - reference - last_status_update - bacs - iban PaymentInitiationPaymentStatus: type: string enum: - PAYMENT_STATUS_INPUT_NEEDED - PAYMENT_STATUS_PROCESSING - PAYMENT_STATUS_INITIATED - PAYMENT_STATUS_COMPLETED - PAYMENT_STATUS_INSUFFICIENT_FUNDS - PAYMENT_STATUS_FAILED - PAYMENT_STATUS_BLOCKED - PAYMENT_STATUS_UNKNOWN - PAYMENT_STATUS_EXECUTED - PAYMENT_STATUS_SETTLED - PAYMENT_STATUS_AUTHORISING - PAYMENT_STATUS_CANCELLED - PAYMENT_STATUS_ESTABLISHED - PAYMENT_STATUS_REJECTED description: |- The status of the payment. Core lifecycle statuses: **`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. **`PAYMENT_STATUS_AUTHORISING`:** Transitional. The payment is being authorised by the financial institution. It will automatically move on once authorisation completes. **`PAYMENT_STATUS_INITIATED`:** The payment has been authorised and accepted by the financial institution. In many EU markets, `PAYMENT_STATUS_EXECUTED` is not supported, and a payment will remain in `PAYMENT_STATUS_INITIATED` until the funds settle, making this a terminal success state in those cases. A payment in `PAYMENT_STATUS_INITIATED` should be treated as a successfully submitted payment; do not gate downstream processing on reaching `PAYMENT_STATUS_EXECUTED`. For a full explanation of payment statuses and how to handle each, see the [Payment Status guide](https://plaid.com/docs/payment-initiation/payment-status/). **`PAYMENT_STATUS_EXECUTED`: Terminal.** The funds have left the payer's account and the payment is en route to settlement. Note that this status does not confirm that funds have arrived in the recipient's account; do not use it as proof of fund receipt. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in `PAYMENT_STATUS_INITIATED` before settling. When using Plaid Virtual Accounts, `PAYMENT_STATUS_EXECUTED` is not terminal -- the payment will continue to `PAYMENT_STATUS_SETTLED` once funds are available. **`PAYMENT_STATUS_SETTLED`: Terminal.** The funds are available in the recipient's account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/). Failure statuses: **`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer's balance is replenished. **`PAYMENT_STATUS_FAILED`: Terminal (retryable).** The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved. **`PAYMENT_STATUS_BLOCKED`: Terminal (retryable).** The payment was blocked by Plaid (e.g., flagged as risky). Resolve any compliance or risk issues and retry. **`PAYMENT_STATUS_REJECTED`: Terminal.** The payment was rejected by the financial institution. No automatic retry is possible. **`PAYMENT_STATUS_CANCELLED`: Terminal.** The end user cancelled the payment during authorisation. Standing-order statuses: **`PAYMENT_STATUS_ESTABLISHED`: Terminal.** A recurring/standing order has been successfully created. Deprecated (to be removed in a future release): `PAYMENT_STATUS_UNKNOWN`: The payment status is unknown. `PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. `PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. PaymentInitiationPayment: type: object additionalProperties: true description: PaymentInitiationPayment defines a payment initiation payment properties: payment_id: type: string description: The ID of the payment. Like all Plaid identifiers, the `payment_id` is case sensitive. amount: $ref: '#/components/schemas/PaymentAmount' status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' recipient_id: type: string description: The ID of the recipient reference: type: string description: A reference for the payment. adjusted_reference: type: string description: The value of the reference sent to the bank after adjustment to pass bank validation rules. nullable: true last_status_update: format: date-time type: string description: The date and time of the last time the `status` was updated, in ISO 8601 format schedule: $ref: '#/components/schemas/ExternalPaymentScheduleGet' refund_details: $ref: '#/components/schemas/ExternalPaymentRefundDetails' bacs: $ref: '#/components/schemas/SenderBACSNullable' iban: type: string description: The International Bank Account Number (IBAN) for the sender, if specified in the `/payment_initiation/payment/create` call. nullable: true refund_ids: type: array description: Refund IDs associated with the payment. items: type: string nullable: true amount_refunded: $ref: '#/components/schemas/PaymentAmountRefunded' 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. nullable: true scheme: $ref: '#/components/schemas/PaymentScheme' adjusted_scheme: $ref: '#/components/schemas/PaymentScheme' consent_id: type: string description: The payment consent ID that this payment was initiated with. Is present only when payment was initiated using the payment consent. nullable: true transaction_id: type: string description: The transaction ID that this payment is associated with, if any. This is present only when a payment was initiated using virtual accounts. nullable: true end_to_end_id: type: string description: |- A unique identifier assigned by Plaid to each payment for tracking and reconciliation purposes. Note: Not all banks handle `end_to_end_id` consistently. To ensure accurate matching, clients should convert both the incoming `end_to_end_id` and the one provided by Plaid to the same case (either lower or upper) before comparison. For virtual account payments, Plaid manages this field automatically. nullable: true error: $ref: '#/components/schemas/PlaidError' required: - payment_id - amount - status - recipient_id - reference - last_status_update - bacs - iban PaymentInitiationPaymentTokenCreateRequest: type: object description: PaymentInitiationPaymentTokenCreateRequest defines the request schema for `/payment_initiation/payment/token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_id: type: string description: The `payment_id` returned from `/payment_initiation/payment/create`. required: - payment_id PaymentInitiationPaymentTokenCreateResponse: type: object additionalProperties: true description: PaymentInitiationPaymentTokenCreateResponse defines the response schema for `/payment_initiation/payment/token/create` properties: payment_token: type: string description: A `payment_token` that can be provided to Link initialization to enter the payment initiation flow payment_token_expiration_time: format: date-time type: string description: The date and time at which the token will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `payment_token` expires after 15 minutes. request_id: $ref: '#/components/schemas/RequestID' required: - payment_token - payment_token_expiration_time - request_id PaymentInitiationConsentCreateRequest: type: object description: PaymentInitiationConsentCreateRequest defines the request schema for `/payment_initiation/consent/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' recipient_id: type: string description: The ID of the recipient the payment consent is for. The created consent can be used to transfer funds to this recipient only. reference: type: string description: A reference for the payment consent. This must be an alphanumeric string with at most 18 characters and must not contain any special characters. minLength: 1 maxLength: 18 scopes: type: array deprecated: true description: An array of payment consent scopes. minItems: 1 uniqueItems: true items: $ref: '#/components/schemas/PaymentInitiationConsentScope' type: $ref: '#/components/schemas/PaymentInitiationConsentType' constraints: $ref: '#/components/schemas/PaymentInitiationConsentConstraints' options: $ref: '#/components/schemas/ExternalPaymentInitiationConsentOptions' payer_details: $ref: '#/components/schemas/PaymentInitiationConsentPayerDetails' required: - recipient_id - reference - constraints PaymentInitiationConsentCreateResponse: type: object additionalProperties: true description: PaymentInitiationConsentCreateResponse defines the response schema for `/payment_initiation/consent/create` properties: consent_id: type: string description: A unique ID identifying the payment consent. status: $ref: '#/components/schemas/PaymentInitiationConsentStatus' request_id: $ref: '#/components/schemas/RequestID' required: - consent_id - status - request_id PaymentInitiationConsentGetRequest: type: object description: PaymentInitiationConsentGetRequest defines the request schema for `/payment_initiation/consent/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' consent_id: type: string description: The `consent_id` returned from `/payment_initiation/consent/create`. required: - consent_id PaymentInitiationConsentGetResponse: type: object additionalProperties: true description: PaymentInitiationConsentGetResponse defines the response schema for `/payment_initiation/consent/get` allOf: - $ref: '#/components/schemas/PaymentInitiationConsent' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id PaymentInitiationConsent: type: object additionalProperties: true description: PaymentInitiationConsent defines a payment initiation consent. properties: consent_id: type: string description: The consent ID. minLength: 1 status: $ref: '#/components/schemas/PaymentInitiationConsentStatus' created_at: type: string format: date-time description: Consent creation timestamp, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. recipient_id: type: string description: The ID of the recipient the payment consent is for. minLength: 1 reference: type: string description: A reference for the payment consent. constraints: $ref: '#/components/schemas/PaymentInitiationConsentConstraints' scopes: type: array deprecated: true description: Deprecated, use the 'type' field instead. items: $ref: '#/components/schemas/PaymentInitiationConsentScope' type: $ref: '#/components/schemas/PaymentInitiationConsentType' payer_details: $ref: '#/components/schemas/ExternalPaymentRefundDetails' required: - consent_id - status - created_at - recipient_id - reference - constraints PaymentInitiationConsentStatus: type: string enum: - UNAUTHORISED - AUTHORISED - REVOKED - REJECTED - EXPIRED description: |- The status of the payment consent. `UNAUTHORISED`: Consent created, but requires user authorisation. `REJECTED`: Consent authorisation was rejected by the bank. `AUTHORISED`: Consent is active and ready to be used. `REVOKED`: Consent has been revoked and can no longer be used. `EXPIRED`: Consent is no longer valid. PaymentInitiationConsentRevokeRequest: type: object description: PaymentInitiationConsentRevokeRequest defines the request schema for `/payment_initiation/consent/revoke` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' consent_id: type: string description: The consent ID. required: - consent_id PaymentInitiationConsentRevokeResponse: type: object additionalProperties: true description: PaymentInitiationConsentRevokeResponse defines the response schema for `/payment_initiation/consent/revoke` properties: request_id: $ref: '#/components/schemas/RequestID' PaymentInitiationConsentPaymentExecuteRequest: type: object description: PaymentInitiationConsentPaymentExecuteRequest defines the request schema for `/payment_initiation/consent/payment/execute` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' consent_id: type: string description: The consent ID. amount: $ref: '#/components/schemas/PaymentAmount' idempotency_key: $ref: '#/components/schemas/ConsentPaymentIdempotencyKey' reference: type: string description: |- A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any special characters (since not all institutions support them). If not provided, Plaid will automatically fall back to the reference from consent. In order to track settlement via Payment Confirmation, each payment must have a unique reference. If the reference provided through the API is not unique, Plaid will adjust it. Some institutions may limit the reference to less than 18 characters. If necessary, Plaid will adjust the reference by truncating it to fit the institution's requirements. Both the originally provided and automatically adjusted references (if any) can be found in the `reference` and `adjusted_reference` fields, respectively. minLength: 1 maxLength: 18 nullable: true scope: deprecated: true allOf: - $ref: '#/components/schemas/PaymentInitiationConsentScope' - type: string description: |- Deprecated, payments will be executed within the type of the consent. A scope of the payment. Must be one of the scopes mentioned in the consent. Optional if the appropriate consent has only one scope defined, required otherwise. nullable: true processing_mode: $ref: '#/components/schemas/PaymentInitiationConsentProcessingMode' required: - consent_id - amount - idempotency_key PaymentInitiationConsentPaymentExecuteResponse: type: object additionalProperties: true description: PaymentInitiationConsentPaymentExecuteResponse defines the response schema for `/payment_initiation/consent/payment/execute` properties: payment_id: type: string description: A unique ID identifying the payment status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' request_id: $ref: '#/components/schemas/RequestID' error: $ref: '#/components/schemas/PlaidError' required: - payment_id - status - request_id PaymentInitiationPaymentListRequest: type: object description: PaymentInitiationPaymentListRequest defines the request schema for `/payment_initiation/payment/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' count: type: integer minimum: 1 maximum: 200 default: 10 description: The maximum number of payments to return. If `count` is not specified, a maximum of 10 payments will be returned, beginning with the most recent payment before the cursor (if specified). nullable: true cursor: type: string description: A string in RFC 3339 format (i.e. "2019-12-06T22:35:49Z"). Only payments created before the cursor will be returned. format: date-time nullable: true consent_id: type: string description: The consent ID. If specified, only payments, executed using this consent, will be returned. nullable: true PaymentInitiationPaymentListResponse: type: object additionalProperties: true description: PaymentInitiationPaymentListResponse defines the response schema for `/payment_initiation/payment/list` properties: payments: type: array description: An array of payments that have been created, associated with the given `client_id`. items: $ref: '#/components/schemas/PaymentInitiationPayment' next_cursor: nullable: true format: date-time type: string description: The value that, when used as the optional `cursor` parameter to `/payment_initiation/payment/list`, will return the next unreturned payment as its first payment. request_id: $ref: '#/components/schemas/RequestID' required: - payments - next_cursor - request_id InvestmentsHoldingsGetRequest: type: object description: InvestmentsHoldingsGetRequest defines the request schema for `/investments/holdings/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/InvestmentHoldingsGetRequestOptions' required: - access_token InvestmentHoldingsGetRequestOptions: type: object description: An optional object to filter `/investments/holdings/get` results. If provided, must not be `null`. properties: account_ids: type: array description: An array of `account_id`s to retrieve for the Item. An error will be returned if a provided `account_id` is not associated with the Item. items: type: string InvestmentsHoldingsGetResponse: type: object additionalProperties: true description: InvestmentsHoldingsGetResponse defines the response schema for `/investments/holdings/get` properties: accounts: type: array description: The accounts associated with the Item items: $ref: '#/components/schemas/InvestmentAccount' holdings: type: array description: 'The holdings belonging to investment accounts associated with the Item. Details of the securities in the holdings are provided in the `securities` field. ' items: $ref: '#/components/schemas/Holding' securities: description: 'Objects describing the securities held in the accounts associated with the Item. ' type: array items: $ref: '#/components/schemas/Security' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' is_investments_fallback_item: type: boolean description: When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow. required: - accounts - holdings - securities - item - request_id InvestmentsAuthGetRequest: type: object description: InvestmentsAuthGetRequest defines the request schema for `/investments/auth/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/InvestmentsAuthGetRequestOptions' required: - access_token InvestmentsAuthGetRequestOptions: type: object description: An optional object to filter `/investments/auth/get` results. properties: account_ids: type: array description: An array of `account_id`s to retrieve for the Item. An error will be returned if a provided `account_id` is not associated with the Item. items: type: string InvestmentsAuthGetResponse: type: object additionalProperties: true description: InvestmentsAuthGetResponse defines the response schema for `/investments/auth/get` properties: accounts: type: array description: The accounts for which data is being retrieved items: $ref: '#/components/schemas/InvestmentAccount' holdings: type: array description: 'The holdings belonging to investment accounts associated with the Item. Details of the securities in the holdings are provided in the `securities` field. ' items: $ref: '#/components/schemas/Holding' securities: description: 'Objects describing the securities held in the accounts associated with the Item. ' type: array items: $ref: '#/components/schemas/Security' owners: description: 'Information about the account owners for the accounts associated with the Item. ' type: array items: $ref: '#/components/schemas/InvestmentsAuthOwner' numbers: $ref: '#/components/schemas/InvestmentsAuthGetNumbers' data_sources: $ref: '#/components/schemas/InvestmentsAuthDataSources' account_details_401k: type: array x-hidden-from-docs: true description: Additional information for accounts of 401k subtype. items: $ref: '#/components/schemas/InvestmentsAuthAccountDetails401k' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - holdings - securities - item - numbers - owners - data_sources - request_id ProcessorInvestmentsTransactionsGetRequest: type: object description: ProcessorInvestmentsTransactionsGetRequest defines the request schema for `/processor/investments/transactions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' options: $ref: '#/components/schemas/InvestmentsTransactionsGetRequestOptions' processor_token: $ref: '#/components/schemas/ProcessorToken' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date description: The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD. required: - processor_token - start_date - end_date ProcessorInvestmentsTransactionsGetResponse: type: object description: ProcessorInvestmentsTransactionsGetResponse defines the response schema for `/processor/investments/transactions/get` additionalProperties: true properties: account: $ref: '#/components/schemas/InvestmentAccount' investment_transactions: type: array description: An array containing investment transactions from the account. Investments transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter. items: $ref: '#/components/schemas/InvestmentTransaction' securities: type: array description: All securities for which there is a corresponding transaction being fetched. items: $ref: '#/components/schemas/Security' total_investment_transactions: type: integer description: The total number of transactions available within the date range specified. If `total_investment_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter. request_id: $ref: '#/components/schemas/RequestID' is_investments_fallback_item: type: boolean description: When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow. required: - account - securities - investment_transactions - total_investment_transactions - request_id InvestmentsTransactionsGetRequest: type: object description: InvestmentsTransactionsGetRequest defines the request schema for `/investments/transactions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' start_date: type: string format: date description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD. end_date: type: string format: date description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD. options: $ref: '#/components/schemas/InvestmentsTransactionsGetRequestOptions' required: - access_token - start_date - end_date InvestmentsTransactionsGetRequestOptions: description: An optional object to filter `/investments/transactions/get` results. If provided, must be non-`null`. type: object properties: account_ids: type: array description: An array of `account_ids` to retrieve for the Item. items: type: string count: type: integer default: 100 minimum: 1 maximum: 500 description: | The number of transactions to fetch. offset: type: integer description: The number of transactions to skip when fetching transaction history default: 0 minimum: 0 async_update: type: boolean description: If the Item was not initialized with the investments product via the `products`, `required_if_supported_products`, or `optional_products` array when calling `/link/token/create`, and `async_update` is set to true, the initial Investments extraction will happen asynchronously. Plaid will subsequently fire a `HISTORICAL_UPDATE` webhook when the extraction completes. When `false`, Plaid will wait to return a response until extraction completion and no `HISTORICAL_UPDATE` webhook will fire. Note that while the extraction is happening asynchronously, calls to `/investments/transactions/get` and `/investments/refresh` will return `PRODUCT_NOT_READY` errors until the extraction completes. default: false InvestmentsTransactionsGetResponse: type: object additionalProperties: true description: InvestmentsTransactionsGetResponse defines the response schema for `/investments/transactions/get` properties: item: $ref: '#/components/schemas/Item' accounts: type: array description: The accounts for which transaction history is being fetched. items: $ref: '#/components/schemas/InvestmentAccount' securities: type: array description: All securities for which there is a corresponding transaction being fetched. items: $ref: '#/components/schemas/Security' investment_transactions: type: array description: The transactions being fetched items: $ref: '#/components/schemas/InvestmentTransaction' total_investment_transactions: type: integer description: The total number of transactions available within the date range specified. If `total_investment_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter. request_id: $ref: '#/components/schemas/RequestID' is_investments_fallback_item: type: boolean description: When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow. required: - item - accounts - securities - investment_transactions - total_investment_transactions - request_id InvestmentsRefreshRequest: type: object description: InvestmentsRefreshRequest defines the request schema for `/investments/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' access_token: $ref: '#/components/schemas/AccessToken' secret: $ref: '#/components/schemas/APISecret' required: - access_token InvestmentsRefreshResponse: type: object additionalProperties: true description: InvestmentsRefreshResponse defines the response schema for `/investments/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorTokenCreateRequest: type: object description: ProcessorTokenCreateRequest defines the request schema for `/processor/token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: The `account_id` value obtained from the `onSuccess` callback in Link processor: type: string enum: - dwolla - galileo - modern_treasury - ocrolus - vesta - drivewealth - vopay - achq - check - checkbook - circle - sila_money - rize - svb_api - unit - wyre - lithic - alpaca - astra - moov - treasury_prime - marqeta - checkout - solid - highnote - gemini - apex_clearing - gusto - adyen - atomic - i2c - wepay - riskified - utb - adp_roll - fortress_trust - bond - bakkt - teal - zero_hash - taba_pay - knot - sardine - alloy - finix - nuvei - layer - boom - paynote - stake - wedbush - esusu - ansa - scribeup - straddle - loanpro - bloom_credit - sfox - brale - parafin - cardless - open_ledger - valon - gainbridge - cardlytics - pinwheel - thread_bank - array - fiant - oatfi - curinos - frame - interchecks - interchange - atomicfi - pay - natural - kanmon - kick - increase description: The processor you are integrating with. required: - access_token - account_id - processor ProcessorTokenCreateResponse: type: object additionalProperties: true description: ProcessorTokenCreateResponse defines the response schema for `/processor/token/create` and `/processor/apex/processor_token/create` properties: processor_token: type: string description: The `processor_token` that can then be used by the Plaid partner to make API requests request_id: $ref: '#/components/schemas/RequestID' required: - processor_token - request_id ProcessorTokenPermissionsSetRequest: type: object description: ProcessorTokenPermissionsSetRequest defines the request schema for `/processor/token/permissions/set` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' products: type: array description: A list of products the processor token should have access to. An empty list will grant access to all products. items: $ref: '#/components/schemas/Products' required: - processor_token - products ProcessorTokenPermissionsSetResponse: type: object additionalProperties: true description: ProcessorTokenPermissionsSetResponse defines the response schema for `/processor/token/permissions/set` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorTokenPermissionsGetRequest: type: object description: ProcessorTokenPermissionsGetRequest defines the request schema for `/processor/token/permissions/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorTokenPermissionsGetResponse: type: object additionalProperties: true description: ProcessorTokenPermissionsGetResponse defines the response schema for `/processor/token/permissions/get` properties: request_id: $ref: '#/components/schemas/RequestID' products: type: array description: A list of products the processor token should have access to. An empty list means that the processor has access to all available products, including future products. items: $ref: '#/components/schemas/Products' required: - request_id - products ProcessorTokenWebhookUpdateRequest: type: object description: ProcessorTokenWebhookUpdateRequest defines the request schema for `/processor/token/webhook/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' webhook: type: string description: The new webhook URL to associate with the processor token. To remove a webhook from a processor token, set to `null`. format: url nullable: true required: - processor_token - webhook ProcessorTokenWebhookUpdateResponse: type: object additionalProperties: true description: ProcessorTokenWebhookUpdateResponse defines the response schema for `/processor/token/webhook/update` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorStripeBankAccountTokenCreateRequest: type: object description: ProcessorStripeBankAccountTokenCreateRequest defines the request schema for `/processor/stripe/bank_account_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: The `account_id` value obtained from the `onSuccess` callback in Link required: - access_token - account_id ProcessorStripeBankAccountTokenCreateResponse: type: object additionalProperties: true description: ProcessorStripeBankAccountTokenCreateResponse defines the response schema for `/processor/stripe/bank_account_token/create` properties: stripe_bank_account_token: type: string description: A token that can be sent to Stripe for use in making API calls to Plaid request_id: $ref: '#/components/schemas/RequestID' required: - stripe_bank_account_token - request_id ProcessorApexProcessorTokenCreateRequest: type: object description: ProcessorApexProcessorTokenCreateRequest defines the request schema for `/processor/apex/processor_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: The `account_id` value obtained from the `onSuccess` callback in Link required: - access_token - account_id LinkTokenGetRequest: type: object description: LinkTokenGetRequest defines the request schema for `/link/token/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' link_token: type: string description: A `link_token` from a previous invocation of `/link/token/create` required: - link_token LinkTokenCreateRequestAppearanceMode: x-hidden-from-docs: true nullable: true type: string description: Enum representing the desired appearance mode for Link, used to force light or dark modes or set Link to change depending on user system settings. Currently in closed beta. enum: - LIGHT - DARK - SYSTEM - null LinkTokenCreateRequest: type: object description: LinkTokenCreateRequest defines the request schema for `/link/token/create` x-reserved-keys: - deposit_switch properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_name: type: string description: The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display "This Application" instead. minLength: 1 language: type: string description: |- The language that Link should be displayed in. When initializing with Identity Verification, this field is not used; for more details, see [Identity Verification supported languages](https://plaid.com/docs/identity-verification/#supported-languages). Supported languages are: - Danish (`'da'`) - Dutch (`'nl'`) - English (`'en'`) - Estonian (`'et'`) - French (`'fr'`) - German (`'de'`) - Hindi (`'hi'`) - Italian (`'it'`) - Latvian (`'lv'`) - Lithuanian (`'lt'`) - Norwegian (`'no'`) - Polish (`'pl'`) - Portuguese (`'pt'`) - Romanian (`'ro'`) - Spanish (`'es'`) - Swedish (`'sv'`) - Vietnamese (`'vi'`) When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied. minLength: 1 country_codes: type: array description: |- Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://support.plaid.com/hc/en-us/articles/27895826947735-What-Plaid-products-are-supported-in-each-country-and-region. For access to additional countries beyond what you have been approved for, [contact sales](https://plaid.com/contact/), your account manager, or support. If using Identity Verification, `country_codes` should be set to the country where your company is based, not the country where your user is located. For all other products, `country_codes` represents the location of your user's financial institution. If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. While all countries are enabled by default in Sandbox, in Production only the countries you have requested access for are shown. To request access to additional countries, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`, or the customization may not be applied. If using the Auth features Instant Match, Instant Micro-deposits, Same-Day Micro-deposits, Automated Micro-deposits, or Database Auth, `country_codes` must be set to `['US']`. items: $ref: '#/components/schemas/CountryCode' minItems: 1 user: $ref: '#/components/schemas/LinkTokenCreateRequestUser' user_id: type: string description: A `user_id` generated using `/user/create`. Required for integrations that began using Plaid Protect, Multi-Item Link, or Plaid Check Consumer Report after December 10, 2025. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). One of either the `user_id` or the `user` field is required. products: type: array description: |- List of Plaid product(s) that the linked Item must support. If launching Link in update mode, should be omitted (unless you are using update mode to add a credit product, such as Assets, Statements, Income, or Plaid Check Consumer Report, to an existing Item); at least one `product` is required otherwise. To maximize the number of institutions and accounts available, initialize Link with the minimal product set required for your use case, as the products specified will limit which institutions and account types will be available to your users in Link. Only institutions that support *all* requested products can be selected; if a user attempts to select an institution that does not support a listed product, a "Connectivity not supported" error message will appear in Link. For each specified product, the Item connected by the user must contain at least one compatible account. For details on compatible product / account type combinations, see [the account type/product support matrix](https://plaid.com/docs/api/accounts/#account-type--product-support-matrix). To add products without limiting the institution list or account types, use the [`optional_products`](https://plaid.com/docs/api/link/#link-token-create-request-optional-products) or [`required_if_supported_products`](https://plaid.com/docs/api/link/#link-token-create-request-required-if-supported-products) fields. Products can also be added to an Item by calling the product endpoint after obtaining an access token; this may require the product to be listed in the [`additional_consented_products`](https://plaid.com/docs/api/link/#link-token-create-request-additional-consented-products) array. For details, see [Choosing when to initialize products](https://plaid.com/docs/link/initializing-products/). `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_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. In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`. items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - beacon - employment - identity - income_verification - identity_verification - investments - investments_auth - liabilities - payment_initiation - protect_transactions - standing_orders - signal - statements - transactions - transfer - cra_base_report - cra_income_insights - cra_cashflow_insights - cra_lend_score - cra_partner_insights - cra_network_insights - cra_monitoring - layer - protect_linked_bank nullable: true required_if_supported_products: type: array description: |- List of Plaid product(s) you wish to use only if the institution and account(s) selected by the user support the product. Institutions that do not support these products will still be shown in Link. The products will only be extracted and billed if the user selects an institution and account type that supports them. There should be no overlap between this array and the `products`, `optional_products`, or `additional_consented_products` arrays. The `products` array must have at least one product. For more details on using this feature, see [Required if Supported Products](https://plaid.com/docs/link/initializing-products/#required-if-supported-products). items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - auth - identity - investments - liabilities - transactions - signal - statements - protect_linked_bank - protect_transactions nullable: true optional_products: type: array description: |- List of Plaid product(s) that will enhance the consumer's use case, but that your app can function without. Plaid will attempt to fetch data for these products on a best-effort basis, and failure to support these products will not affect Item creation. There should be no overlap between this array and the `products`, `required_if_supported_products`, or `additional_consented_products` arrays. The `products` array must have at least one product. For more details on using this feature, see [Optional Products](https://plaid.com/docs/link/initializing-products/#optional-products). items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - auth - identity - investments - liabilities - signal - statements - transactions - cra_base_report - cra_income_insights - cra_cashflow_insights - cra_lend_score - cra_partner_insights - cra_network_insights - cra_monitoring nullable: true additional_consented_products: type: array description: |- List of additional Plaid product(s) you wish to collect consent for to support your use case. These products will not be billed until you start using them by calling the relevant endpoints. `balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically have consent collected. Institutions that do not support these products will still be shown in Link. There should be no overlap between this array and the `products` or `required_if_supported_products` arrays. If you include `signal` in `additional_consented_products`, you will need to call [`/signal/prepare`](https://plaid.com/docs/api/products/signal/#signalprepare) before calling `/signal/evaluate` for the first time on an Item in order to get the most accurate results. For more details, see [`/signal/prepare`](https://plaid.com/docs/api/products/signal/#signalprepare). items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - auth - balance_plus - identity - investments - investments_auth - liabilities - transactions - signal nullable: true webhook: type: string description: The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet transactions only), Transfer, Bank Transfer (including Auth micro-deposit notification webhooks), Monitor, and Identity Verification are configured via the Dashboard instead. In update mode, this field will not have an effect; to update the webhook receiver endpoint for an existing Item, use `/item/webhook/update` instead. format: url access_token: type: string description: The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an existing `access_token`. Used when launching Link in update mode, when completing the Same-Day Micro-deposit (manual) flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow. minLength: 1 nullable: true access_tokens: x-hidden-from-docs: true type: array description: A list of access tokens associated with the items to update in Link update mode for the Assets product. Using this instead of the `access_token` field allows the updating of multiple items at once. This feature is in closed beta, please contact your account manager for more info. items: type: string link_customization_name: type: string description: The name of the Link customization from the Plaid Dashboard to be applied to Link. If not specified, the `default` customization will be used. When using a Link customization, the language in the customization must match the language selected via the `language` parameter, and the countries in the customization should match the country codes selected via `country_codes`. appearance_mode: $ref: '#/components/schemas/LinkTokenCreateRequestAppearanceMode' redirect_uri: $ref: '#/components/schemas/LinkTokenCreateRequestRedirectUri' android_package_name: type: string description: The name of your app's Android package. Required if using the `link_token` to initialize Link on Android. Any package name specified here must also be added to the Allowed Android package names setting on the [developer dashboard](https://dashboard.plaid.com/team/api). When creating a `link_token` for initializing Link on other platforms, `android_package_name` must be left blank and `redirect_uri` should be used instead. institution_data: $ref: '#/components/schemas/LinkTokenCreateInstitutionData' card_switch: $ref: '#/components/schemas/LinkTokenCreateCardSwitch' account_filters: $ref: '#/components/schemas/LinkTokenAccountFilters' eu_config: $ref: '#/components/schemas/LinkTokenEUConfig' institution_id: type: string description: Used for certain legacy use cases payment_configuration: $ref: '#/components/schemas/LinkTokenCreateRequestPaymentConfiguration' payment_initiation: $ref: '#/components/schemas/LinkTokenCreateRequestPaymentInitiation' employment: $ref: '#/components/schemas/LinkTokenCreateRequestEmployment' income_verification: $ref: '#/components/schemas/LinkTokenCreateRequestIncomeVerification' base_report: $ref: '#/components/schemas/LinkTokenCreateRequestBaseReport' credit_partner_insights: $ref: '#/components/schemas/LinkTokenCreateRequestCreditPartnerInsights' cra_options: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptions' consumer_report_permissible_purpose: $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' auth: $ref: '#/components/schemas/LinkTokenCreateRequestAuth' transfer: $ref: '#/components/schemas/LinkTokenCreateRequestTransfer' update: $ref: '#/components/schemas/LinkTokenCreateRequestUpdate' identity_verification: $ref: '#/components/schemas/LinkTokenCreateRequestIdentityVerification' statements: $ref: '#/components/schemas/LinkTokenCreateRequestStatements' third_party_user_token: x-hidden-from-docs: true type: string description: A third party user token associated with the current user. investments: $ref: '#/components/schemas/LinkTokenInvestments' investments_auth: $ref: '#/components/schemas/LinkTokenInvestmentsAuth' hosted_link: $ref: '#/components/schemas/LinkTokenCreateHostedLink' transactions: $ref: '#/components/schemas/LinkTokenTransactions' cashflow_report: $ref: '#/components/schemas/LinkTokenCashflowReport' cra_enabled: x-hidden-from-docs: true type: boolean description: If `true`, request a CRA connection. Defaults to `false`. identity: $ref: '#/components/schemas/LinkTokenCreateIdentity' financekit_supported: x-hidden-from-docs: true type: boolean description: If `true`, indicates that client supports linking FinanceKit / AppleCard items. Defaults to `false`. enable_multi_item_link: type: boolean description: If `true`, enable linking multiple items in the same Link session. Defaults to `false`. user_token: type: string description: A user token generated using `/user/create`. Any Item created during the Link session will be associated with the user. Integrations that began using Plaid Protect, Multi-Item Link, or Plaid Check Consumer Report before December 10, 2025 use this field instead of the `user_id`. required: - client_name - language - country_codes LinkTokenAccountFilters: description: | By default, Link will provide limited account filtering: it will only display Institutions that are compatible with all products supplied in the `products` parameter of `/link/token/create`, and, if `auth` is specified in the `products` array, will also filter out accounts other than `checking`, `savings`, and `cash management` accounts on the Account Select pane. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). The filter may or may not impact the list of accounts shown by the institution in the OAuth account selection flow, depending on the specific institution. If the user selects excluded account subtypes in the OAuth flow, these accounts will not be added to the Item. If the user selects only excluded account subtypes, the link attempt will fail and the user will be prompted to try again. type: object additionalProperties: true properties: depository: $ref: '#/components/schemas/DepositoryFilter' credit: $ref: '#/components/schemas/CreditFilter' loan: $ref: '#/components/schemas/LoanFilter' investment: $ref: '#/components/schemas/InvestmentFilter' other: $ref: '#/components/schemas/OtherFilter' LinkTokenEUConfig: x-hidden-from-docs: true deprecated: true description: Configuration parameters for EU flows type: object properties: headless: type: boolean description: If `true`, open Link without an initial UI. Defaults to `false`. LinkTokenInvestments: description: Configuration parameters for the Investments product type: object properties: allow_unverified_crypto_wallets: type: boolean description: If `true`, allow self-custody crypto wallets to be added without requiring signature verification. Defaults to `false`. allow_manual_entry: type: boolean description: If `true`, allow users to manually enter Investments account and holdings information. Defaults to `false`. LinkTokenInvestmentsAuth: description: Configuration parameters for the Investments Move product type: object properties: manual_entry_enabled: nullable: true default: false type: boolean description: If `true`, show institutions that use the manual entry fallback flow. masked_number_match_enabled: nullable: true default: false type: boolean description: If `true`, show institutions that use the masked number match fallback flow. stated_account_number_enabled: nullable: true default: false type: boolean description: If `true`, show institutions that use the stated account number fallback flow. rollover_401k_enabled: x-hidden-from-docs: true nullable: true default: false type: boolean description: If `true`, the fee and contribution details for 401k accounts will be returned. LinkTokenTransactions: description: Configuration parameters for the Transactions product type: object properties: days_requested: description: |- The maximum number of days of transaction history to request for the Transactions product. The more transaction history is requested, the longer the historical update poll will take. The default value is 90 days. In Production, if a value under 30 is provided, a minimum of 30 days of history will be requested. Once Transactions has been added to an Item, this value cannot be updated. Customers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results. type: integer minimum: 1 maximum: 730 default: 90 LinkTokenCashflowReport: x-hidden-from-docs: true description: Configuration parameters for the Cashflow Report product. Currently in closed beta. type: object properties: days_requested: description: Number of days of transaction history to request in the Cashflow Report product. type: integer minimum: 1 maximum: 730 default: 365 LinkTokenCreateHostedLink: description: Configuration parameters for Hosted Link. To enable the session for Hosted Link, send this object in the request. It can be empty. additionalProperties: true type: object properties: delivery_method: $ref: '#/components/schemas/HostedLinkDeliveryMethod' completion_redirect_uri: $ref: '#/components/schemas/HostedLinkCompletionRedirectURI' url_lifetime_seconds: $ref: '#/components/schemas/HostedLinkURLLifetimeSeconds' is_mobile_app: $ref: '#/components/schemas/HostedLinkIsMobileApp' SessionTokenCreateRequest: type: object description: SessionTokenCreateRequest defines the request schema for `/session/token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' template_id: type: string description: The id of a template defined in Plaid Dashboard user: $ref: '#/components/schemas/SessionTokenCreateRequestUser' redirect_uri: $ref: '#/components/schemas/LinkTokenCreateRequestRedirectUri' android_package_name: type: string description: The name of your app's Android package. Required if using the session token to initialize Layer on Android. Any package name specified here must also be added to the Allowed Android package names setting on the [developer dashboard](https://dashboard.plaid.com/team/api). When creating a session token for initializing Layer on other platforms, `android_package_name` must be left blank and `redirect_uri` should be used instead. webhook: type: string description: The destination URL to which any webhooks should be sent. If you use the same webhook listener for all Sandbox or all Production activity, set this value in the Layer template editor in the Dashboard instead. Only provide a value in this field if you need to use multiple webhook URLs per environment (an uncommon use case). If provided, a value in this field will take priority over webhook values set in the Layer template editor. format: url user_id: $ref: '#/components/schemas/NewUserID' required: - template_id SessionTokenCreateRequestUser: type: object description: Details about the end user. Required if a root-level `user_id` is not provided. properties: client_user_id: type: string description: A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. It is currently used as a means of searching logs for the given user in the Plaid Dashboard. user_id: allOf: - $ref: '#/components/schemas/UserId' - type: string description: The `user_id` created by calling `/user/create`. Provide this field only if you are using Plaid Check Report with Layer and have a `user_token`. required: - client_user_id HostedLinkDeliveryMethod: type: string description: | How Plaid should deliver the Plaid Link session to the customer. Only available to customers enabled for Link Delivery (beta). To request Link Delivery access, contact your account manager. 'sms' will deliver via SMS. Must pass `user.phone_number`. 'email' will deliver via email. Must pass `user.email_address`. In the Sandbox environment, this field will be ignored; use the Production environment to test Link Delivery instead. enum: - sms - email HostedLinkCompletionRedirectURI: type: string description: | URI that Hosted Link will redirect to upon completion of the Link flow. This will only occur in Hosted Link sessions, not in other implementation methods. HostedLinkURLLifetimeSeconds: type: integer description: | How many seconds the link will be valid for. Must be positive. Cannot be longer than 21 days. The default lifetime is 7 days for links delivered by email, 1 day for links delivered via SMS, and 30 minutes for links not sent via Plaid Link delivery. This parameter will override the value of all three link types. HostedLinkIsMobileApp: type: boolean default: false description: | This indicates whether the client is opening Hosted Link in a mobile app in an `AsWebAuthenticationSession` or Chrome custom tab. LinkTokenCreateIdentity: type: object description: Identity object used to specify document upload properties: is_document_upload: type: boolean description: Used to specify whether the Link session is Identity Document Upload account_ids: type: array description: An array of `account_ids`. Currently can only contain one `account_id`. Must be populated if using Document Upload. items: type: string parsing_configs: type: array description: An array of parsing configurations. Valid parsing configurations are `ocr` and `risk_signals`. If parsing configurations are omitted, defaults to `ocr` items: $ref: '#/components/schemas/IncomeVerificationDocParsingConfig' LinkTokenCreateRequestPaymentConfiguration: type: object x-hidden-from-docs: true description: Specifies options for initializing Link for use with the Pay By Bank flow. This is an optional field to configure the user experience, and currently requires the amount field to be set. properties: amount: type: string description: The amount of the transfer (decimal string with two digits of precision e.g. "10.00"). x-hidden-from-docs: true description: type: string description: The description of the transfer that provides the payment context. The max length is 256. x-hidden-from-docs: true required: - amount LinkTokenCreateRequestPaymentInitiation: type: object description: Specifies options for initializing Link for use with the Payment Initiation (Europe) product. This field is required if `payment_initiation` is included in the `products` array. Either `payment_id` or `consent_id` must be provided. properties: payment_id: type: string description: The `payment_id` provided by the `/payment_initiation/payment/create` endpoint. consent_id: type: string description: The `consent_id` provided by the `/payment_initiation/consent/create` endpoint. LinkTokenCreateRequestDepositSwitch: type: object x-hidden-from-docs: true deprecated: true description: (Deprecated) Specifies options for initializing Link for use with the Deposit Switch (beta) product. This field is required if `deposit_switch` is included in the `products` array. properties: deposit_switch_id: type: string description: The `deposit_switch_id` provided by the `/deposit_switch/create` endpoint. required: - deposit_switch_id LinkTokenCreateRequestTransfer: type: object description: Specifies options for initializing Link for use with the Transfer product. properties: intent_id: type: string description: The `id` returned by the `/transfer/intent/create` endpoint. authorization_id: type: string description: The `id` returned by the `/transfer/authorization/create` endpoint. Used to indicate Link session to complete required user action in order to make a decision for the authorization. If set, `access_token` can be omitted. payment_profile_token: x-hidden-from-docs: true type: string description: The `payment_profile_token` returned by the `/payment_profile/create` endpoint. LinkTokenCreateRequestUserStatedIncomeSource: type: object description: Specifies user stated income sources for the Income product properties: employer: type: string description: The employer corresponding to an income source specified by the user category: $ref: '#/components/schemas/UserStatedIncomeSourceCategory' pay_per_cycle: type: number format: double description: The income amount paid per cycle for a specified income source pay_annual: type: number format: double description: The income amount paid annually for a specified income source pay_type: $ref: '#/components/schemas/UserStatedIncomeSourcePayType' pay_frequency: $ref: '#/components/schemas/UserStatedIncomeSourceFrequency' LinkTokenCreateRequestStatements: type: object description: Specifies options for initializing Link for use with the Statements product. This field is required for the statements product. properties: start_date: type: string format: date description: The start date for statements, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) "YYYY-MM-DD" format, e.g. "2020-10-30". end_date: type: string format: date description: The end date for statements, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) "YYYY-MM-DD" format, e.g. "2020-10-30". You can request up to two years of data. required: - start_date - end_date TrustedDeviceData: type: object description: Trusted Device data associated with the previous Link session. properties: trust_level: type: integer device_id: $ref: '#/components/schemas/DeviceId' DeviceId: type: object description: Device ID associated with the device used during the previous Link session properties: type: type: integer id: type: string description: Identifier for the device UserStatedIncomeSourceCategory: type: string description: The income category for a specified income source enum: - OTHER - SALARY - UNEMPLOYMENT - CASH - GIG_ECONOMY - RENTAL - CHILD_SUPPORT - MILITARY - RETIREMENT - LONG_TERM_DISABILITY - BANK_INTEREST UserStatedIncomeSourceFrequency: type: string description: The pay frequency of a specified income source enum: - UNKNOWN - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY UserStatedIncomeSourcePayType: type: string description: The pay type - `GROSS`, `NET`, or `UNKNOWN` for a specified income source enum: - UNKNOWN - GROSS - NET LinkTokenCreateRequestAuth: type: object description: Specifies options for initializing Link for use with the Auth product. This field can be used to enable or disable extended Auth flows for the resulting Link session. Omitting any field will result in a default that can be configured by your account manager. The default behavior described in the documentation is the default behavior that will apply if you have not requested your account manager to apply a different default. If you have enabled the [Dashboard Account Verification pane](https://dashboard.plaid.com/account-verification), the settings enabled there will override any settings in this object. properties: auth_type_select_enabled: type: boolean description: Specifies whether Auth Type Select is enabled for the Link session, allowing the end user to choose between linking via a credentials-based flow (i.e. Instant Auth, Instant Match, Automated Micro-deposits) or a manual flow that does not require login (all other Auth flows) prior to selecting their financial institution. Default behavior is `false`. automated_microdeposits_enabled: type: boolean description: Specifies whether the Link session is enabled for the Automated Micro-deposits flow. Default behavior is `false`. instant_match_enabled: type: boolean description: Specifies whether the Link session is enabled for the Instant Match flow. Instant Match is enabled by default. Instant Match can be disabled by setting this field to `false`. same_day_microdeposits_enabled: type: boolean description: Specifies whether the Link session is enabled for the Same-Day Micro-deposits flow. Default behavior is `false`. instant_microdeposits_enabled: type: boolean description: Specifies whether the Link session is enabled for the Instant Micro-deposits flow. Default behavior for Plaid teams created after November 2023 is `false`; default behavior for Plaid teams created before that date is `true`. reroute_to_credentials: type: string enum: - "OFF" - OPTIONAL - FORCED description: Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/flow-options/#removing-manual-verification-entry-points-with-reroute-to-credentials) pane should be used in the Link session for the Same-Day Micro-deposits flow. Default behavior is `OPTIONAL`. database_match_enabled: type: boolean deprecated: true description: Database Match has been deprecated and replaced with Database Auth. Use the [Account Verification Dashboard](https://dashboard.plaid.com/account-verification) to enable Database Auth. 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. 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 enum: - FLEXIBLE_AUTH description: This field has been deprecated in favor of `auth_type_select_enabled`. deprecated: true sms_microdeposits_verification_enabled: type: boolean description: Specifies whether the Link session is enabled for SMS micro-deposits verification. Default behavior is `true`. LinkTokenCreateRequestIdentityVerification: type: object description: Specifies option for initializing Link for use with the Identity Verification product. properties: template_id: allOf: - $ref: '#/components/schemas/IdentityVerificationTemplateID' consent: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/IdentityVerificationConsent' gave_consent: $ref: '#/components/schemas/IdentityVerificationConsent' required: - template_id LinkTokenCreateInstitutionData: type: object description: A map containing data used to highlight institutions in Link. properties: routing_number: type: string description: 'The routing number of the bank to highlight in Link. Note: in rare cases, a single routing number can be associated with multiple institutions, e.g. due to a brokerage using another institution to manage ACH on its sweep accounts. If this happens, the bank will not be highlighted in Link even if the routing number is provided.' LinkTokenCreateCardSwitch: type: object description: A map containing data to pass in for the Card Switch flow. x-hidden-from-docs: true properties: card_bin: type: string description: The BIN (Bank Identification Number) of the card to switch. required: - card_bin LinkTokenCreateRequestUser: type: object description: An object specifying information about the end user who will be linking their account. **Required** if `user_id` isn't included. properties: client_user_id: type: string description: A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. It is currently used as a means of searching logs for the given user in the Plaid Dashboard. minLength: 1 legal_name: type: string description: The user's full legal name, used for [micro-deposit based verification flows](https://plaid.com/docs/auth/coverage/). For a small number of customers on legacy flows, providing this field is required to enable micro-deposit-based flows. For all other customers, this field is optional. Providing the user's name in this field when using micro-deposit-based verification will streamline the end user experience, as the user will not be prompted to enter their name during the Link flow; Plaid will use the provided legal name instead. name: allOf: - $ref: '#/components/schemas/IdentityVerificationRequestUserName' - description: The user's full name. Optional if using the [Identity Verification](https://plaid.com/docs/api/products/identity-verification) product; if not using Identity Verification, this field is not allowed. Users will not be asked for their name when this field is provided. phone_number: type: string description: The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. If supplied, will be used when applicable to prefill phone number fields in Link for the [returning user flow](https://plaid.com/docs/link/returning-user) and the [Identity Verification flow](https://plaid.com/docs/identity-verification). Phone number input is validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment. phone_number_verified_time: nullable: true format: date-time type: string deprecated: true x-hidden-from-docs: true description: | The date and time the phone number was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. Only pass a verification time for a phone number that you have verified. If you have performed verification but don't have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z` email_address: type: string description: The user's email address. Can be used to prefill Link fields when used with [Identity Verification](https://plaid.com/docs/identity-verification). email_address_verified_time: nullable: true type: string format: date-time deprecated: true x-hidden-from-docs: true description: |- The date and time the email address was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This was previously an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user). This field is no longer required to enable the returning user experience. Only pass a verification time for an email address that you have verified. If you have performed verification but don't have the time, you may supply a signal value of the start of the UNIX epoch. Example: `2020-01-01T00:00:00Z` ssn: type: string deprecated: true description: Deprecated and not currently used, use the `id_number` field instead. x-hidden-from-docs: true date_of_birth: type: string nullable: true format: date description: To be provided in the format "yyyy-mm-dd". Can be used to prefill Link fields when used with Identity Verification. address: allOf: - $ref: '#/components/schemas/UserAddress' - description: The user's address. Used only for Identity Verification and the Identity Match in Link workflows. If provided for Identity Verification, the user will not be shown fields to enter their address in the Identity Verification flow. If provided for Identity Match, the provided data will be used to match against the user's address. May be omitted, but if not omitted, all fields marked as required must be provided. id_number: allOf: - $ref: '#/components/schemas/UserIDNumber' - description: The user's ID number. Used only for Identity Verification. If provided, the user will not be shown fields to enter their ID number in the Identity Verification flow. May be omitted, but if not omitted, all fields marked as required must be provided. required: - client_user_id LinkTokenCreateRequestUpdate: type: object description: Specifies options for initializing Link for [update mode](https://plaid.com/docs/link/update-mode). properties: account_selection_enabled: type: boolean description: If `true`, enables [update mode with Account Select](https://plaid.com/docs/link/update-mode/#using-update-mode-to-request-new-accounts) for institutions in the US and Canada that do not use OAuth, or that use OAuth but do not have their own account selection flow. For institutions in the US that have an OAuth account selection flow (i.e. most OAuth-enabled institutions), update mode with Account Select will always be enabled, regardless of the value of this field. default: false reauthorization_enabled: x-hidden-from-docs: true type: boolean description: | Note: this field is not currently used. Plaid may enable this field in the future if 1033-related expiration begins to be enforced. By default, Plaid will enable the reauthorization flow during update mode for an Item enabled for [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/) if the Item expires within six months. During a reauthorization flow, an end user will review Plaid's end user privacy policy, use case and data scope consents, and account access consents; they may also be required to log in to their financial institution's OAuth flow. After the end user successfully completes the reauthorization flow, the Item's expiration date will be extended to 12 months from the time that the reauthorization took place. This field allows you to optionally override the default reauthorization scheduling logic to either forcibly enable or disable the reauthorization flow for a given update mode session. This field does not impact the flow for Items at institutions in the EU or UK. user: type: boolean description: If `true`, a `user_token` or `user_id` must also be provided, and Link will open in update mode for the given user. default: false item_ids: type: array items: $ref: '#/components/schemas/ItemId' nullable: true description: | An array of `item_id`s associated with the user to be updated in update mode. If empty or `null`, this field will default to initializing update mode for the most recent unhealthy Item associated with the user. A `user_token` must also be provided to use this field. LinkTokenCreateRequestAccountSubtypes: description: | By default, Link will only display account types that are compatible with all products supplied in the `products` parameter of `/link/token/create`. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). For institutions using OAuth, the filter will not affect the list of institutions or accounts shown by the bank in the OAuth window. type: object properties: depository: $ref: '#/components/schemas/LinkTokenCreateDepositoryFilter' credit: $ref: '#/components/schemas/LinkTokenCreateCreditFilter' loan: $ref: '#/components/schemas/LinkTokenCreateLoanFilter' investment: $ref: '#/components/schemas/LinkTokenCreateInvestmentFilter' LinkTokenCreateRequestRedirectUri: description: A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. The `redirect_uri` should not contain any query parameters. When used in Production, must be an https URI. Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api). If initializing on Android, `android_package_name` must be specified instead and `redirect_uri` should be left blank. type: string LinkTokenCreateDepositoryFilter: description: A filter to apply to `depository`-type accounts type: object properties: account_subtypes: $ref: '#/components/schemas/DepositoryAccountSubtypes' limited_purpose_types: $ref: '#/components/schemas/LimitedPurposeTypes' LinkTokenCreateCreditFilter: description: A filter to apply to `credit`-type accounts type: object properties: account_subtypes: $ref: '#/components/schemas/CreditAccountSubtypes' LinkTokenCreateLoanFilter: description: A filter to apply to `loan`-type accounts type: object properties: account_subtypes: $ref: '#/components/schemas/LoanAccountSubtypes' LinkTokenCreateInvestmentFilter: description: A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier). type: object properties: account_subtypes: $ref: '#/components/schemas/InvestmentAccountSubtypes' LinkOAuthCorrelationIdExchangeRequest: type: object description: LinkOAuthCorrelationIdExchangeRequest defines the request schema for `/link/oauth/correlation_id/exchange` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' link_correlation_id: type: string description: A `link_correlation_id` from a received OAuth redirect URI callback required: - link_correlation_id LinkOAuthCorrelationIdExchangeResponse: type: object additionalProperties: true description: LinkOAuthCorrelationIdExchangeResponse defines the response schema for `/link/oauth/correlation_id/exchange` properties: link_token: type: string description: The `link_token` associated to the given `link_correlation_id`, which can be used to re-initialize Link. request_id: $ref: '#/components/schemas/RequestID' required: - link_token - request_id LinkTokenGetResponse: type: object additionalProperties: true description: LinkTokenGetResponse defines the response schema for `/link/token/get` properties: link_token: type: string description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`. created_at: type: string format: date-time nullable: true description: The creation timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. expiration: type: string format: date-time nullable: true description: The expiration timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. link_sessions: type: array description: Information about Link sessions created using this `link_token`. Session data will be provided for up to six hours after the session has ended. items: $ref: '#/components/schemas/LinkTokenGetSessionsResponse' metadata: $ref: '#/components/schemas/LinkTokenGetMetadataResponse' user_id: $ref: '#/components/schemas/NewUserID' request_id: $ref: '#/components/schemas/RequestID' required: - link_token - created_at - expiration - metadata - request_id LinkTokenGetSessionsResponse: type: object description: An object containing information about a link session. Session data will be provided for up to six hours after the session has ended. additionalProperties: true properties: link_session_id: type: string description: The unique ID for the link session. started_at: type: string format: date-time description: The timestamp at which the link session was first started, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. finished_at: type: string nullable: true format: date-time description: The timestamp at which the link session was finished, if available, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. on_success: $ref: '#/components/schemas/LinkSessionSuccess' on_exit: $ref: '#/components/schemas/LinkSessionExitDeprecated' exit: $ref: '#/components/schemas/LinkSessionExit' events: type: array description: List of customer-related Link events items: $ref: '#/components/schemas/LinkEvent' results: $ref: '#/components/schemas/LinkSessionResults' required: - link_session_id LinkSessionResults: type: object description: The set of results for a Link session. nullable: true additionalProperties: true properties: item_add_results: type: array description: The set of Item adds for the Link session. If you are not receiving this field and are instead receiving the deprecated `on_success` field, contact your account manager to update your integration. items: $ref: '#/components/schemas/LinkSessionItemAddResult' cra_item_add_results: type: array description: The set of Plaid Check Item adds for the Link session. items: $ref: '#/components/schemas/LinkSessionCraItemAddResult' cra_update_results: type: array description: The set of Plaid Check Item updates for the Link session. items: $ref: '#/components/schemas/LinkSessionCraUpdateResult' bank_income_results: type: array description: The set of bank income verifications for the Link session. items: $ref: '#/components/schemas/LinkSessionBankIncomeResult' payroll_income_results: type: array description: The set of payroll income verifications for the Link session. items: $ref: '#/components/schemas/LinkSessionPayrollIncomeResult' document_income_results: $ref: '#/components/schemas/CreditSessionDocumentIncomeResult' cra_document_upload_results: $ref: '#/components/schemas/LinkSessionCraDocumentUploadResult' required: - item_add_results - cra_item_add_results - cra_update_results - bank_income_results - payroll_income_results - document_income_results LinkSessionItemAddResult: type: object description: The details of an Item add in Link. additionalProperties: true properties: public_token: description: Returned once a user has successfully linked their Item. type: string accounts: type: array description: A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, `accounts` will only include selected accounts. items: $ref: '#/components/schemas/LinkSessionSuccessMetadataAccount' institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - public_token - accounts - institution LinkSessionCraItemAddResult: type: object description: The details of a Plaid Check Item add in Link. additionalProperties: true properties: item_id: description: The Plaid Check Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. The `item_id` is case-sensitive. type: string accounts: type: array description: A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, `accounts` will only include selected accounts. items: $ref: '#/components/schemas/LinkSessionSuccessMetadataAccount' institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - item_id - accounts - institution LinkSessionCraUpdateResult: type: object description: The details of a Plaid Check Item update via update mode in Link. additionalProperties: true properties: item_id: description: The Plaid Check Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. The `item_id` is case-sensitive. type: string accounts: type: array description: A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, `accounts` will only include selected accounts. items: $ref: '#/components/schemas/LinkSessionSuccessMetadataAccount' institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - item_id - accounts - institution LinkSessionBankIncomeResult: type: object description: The details of a bank income verification in Link. additionalProperties: true properties: status: $ref: '#/components/schemas/CreditSessionBankIncomeStatus' item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - status - item_id - institution LinkSessionBankEmploymentResult: type: object description: The details of a bank employment verification in Link. additionalProperties: true properties: status: $ref: '#/components/schemas/CreditSessionBankEmploymentStatus' item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - status - item_id - institution LinkSessionPayrollIncomeResult: type: object description: The details of a digital payroll income verification in Link. additionalProperties: true properties: num_paystubs_retrieved: type: integer description: The number of paystubs retrieved from a payroll provider. num_w2s_retrieved: type: integer description: The number of W-2s retrieved from a payroll provider. institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' required: - num_paystubs_retrieved - num_w2s_retrieved - institution LinkSessionSuccess: deprecated: true type: object description: An object representing an [onSuccess](https://plaid.com/docs/link/web/#onsuccess) callback from Link. This field is returned only for legacy integrations and is deprecated in favor of [`results.item_add_results`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-results-item-add-results) which can support multiple public tokens in a single Link session, for flows such as multi-Item Link. If you are receiving `on_success`, contact your account manager to migrate to `results.item_add_results` instead. nullable: true properties: public_token: type: string description: Displayed once a user has successfully linked their Item. metadata: $ref: '#/components/schemas/LinkSessionSuccessMetadata' required: - public_token - metadata LinkSessionSuccessMetadata: type: object description: Displayed once a user has successfully linked their Item. nullable: true properties: institution: $ref: '#/components/schemas/LinkSessionSuccessMetadataInstitution' accounts: type: array description: A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, `accounts` will only include selected accounts. items: $ref: '#/components/schemas/LinkSessionSuccessMetadataAccount' link_session_id: type: string description: A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround. transfer_status: $ref: '#/components/schemas/LinkSessionSuccessMetadataTransferStatus' LinkSessionSuccessMetadataInstitution: type: object description: An institution object. If the Item was created via Same-Day or Instant micro-deposit verification, will be `null`. nullable: true properties: name: type: string description: The full institution name, such as `'Wells Fargo'` institution_id: type: string description: The Plaid institution identifier LinkSessionSuccessMetadataAccount: type: object description: An account attached to the connected Item. properties: id: type: string description: | The Plaid `account_id` name: type: string description: The official account name mask: type: string 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. It may also not match the mask that the bank displays to the user. type: type: string description: The account type. See the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full list of possible values subtype: type: string description: The account subtype. See the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full list of possible values verification_status: nullable: true type: string description: | Indicates an Item's micro-deposit-based verification or database verification status. This field is only populated when using Auth and falling back to micro-deposit or database verification. Possible values are: `pending_automatic_verification`: The Item is pending automatic verification. `pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code. `automatically_verified`: The Item has successfully been automatically verified. `manually_verified`: The Item has successfully been manually verified. `verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. `verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. `unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit. `database_insights_pending`: The Database Auth result is pending and will be available upon Auth request. `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth. `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth. `database_insights_pass_with_caution`: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. `database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match. `null` or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item. class_type: nullable: true type: string deprecated: true description: If micro-deposit verification was being used, indicates the user's selection when asked if the account being verified is a `business` or `personal` account. This field is deprecated as Plaid no longer collects this information during the micro-deposit flow. To see whether an account is business or personal, use the `holder_category` field instead. LinkSessionSuccessMetadataTransferStatus: type: string nullable: true description: |- The status of a transfer. Returned only when [Transfer UI](https://plaid.com/docs/transfer/using-transfer-ui) is implemented. - `COMPLETE` - The transfer was completed. - `INCOMPLETE` - The transfer could not be completed. For help, see [Troubleshooting transfers](https://plaid.com/docs/transfer/using-transfer-ui/#troubleshooting-transfer-ui). enum: - COMPLETE - INCOMPLETE - null LinkSessionExit: type: object description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. If you are not receiving this field and are instead receiving the deprecated `on_exit` field, contact your account manager to update your integration. additionalProperties: true nullable: true properties: error: $ref: '#/components/schemas/PlaidError' metadata: $ref: '#/components/schemas/LinkSessionExitMetadata' required: - error - metadata LinkSessionExitDeprecated: type: object deprecated: true description: An object representing an [onExit](https://plaid.com/docs/link/web/#onexit) callback from Link. This field is returned only for legacy implementations and has been deprecated in favor of [`exit`](https://plaid.com/docs/api/link/#link-token-get-response-link-sessions-exit), for improved naming consistency. If you are receiving this field, contact your account manager to migrate to the newer `exit` field. additionalProperties: true nullable: true properties: error: $ref: '#/components/schemas/PlaidError' metadata: $ref: '#/components/schemas/LinkSessionExitMetadata' required: - error - metadata LinkSessionExitMetadata: type: object description: Displayed if a user exits Link without successfully linking an Item. nullable: true properties: institution: $ref: '#/components/schemas/LinkSessionExitMetadataInstitution' status: type: string description: The point at which the user exited the Link flow. One of the following values. properties: requires_questions: description: User prompted to answer security questions requires_selections: description: User prompted to answer multiple choice question(s) requires_code: description: User prompted to provide a one-time passcode choose_device: description: User prompted to select a device on which to receive a one-time passcode requires_credentials: description: User prompted to provide credentials for the selected financial institution or has not yet selected a financial institution requires_account_selection: description: User prompted to select one or more financial accounts to share requires_oauth: description: User prompted to enter an OAuth flow institution_not_found: description: User exited the Link flow after unsuccessfully (no results returned) searching for a financial institution institution_not_supported: description: User exited the Link flow after discovering their selected institution is no longer supported by Plaid link_session_id: type: string description: A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround. request_id: type: string description: The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. LinkSessionExitMetadataInstitution: type: object description: An institution object. If the Item was created via Same-Day or Instant micro-deposit verification, will be `null`. nullable: true properties: name: type: string description: The full institution name, such as `Wells Fargo` institution_id: type: string description: The Plaid institution identifier LinkTokenGetMetadataResponse: type: object additionalProperties: true description: An object specifying the arguments originally provided to the `/link/token/create` call. properties: initial_products: type: array description: The `products` specified in the `/link/token/create` call. items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - employment - identity - income_verification - identity_verification - investments - liabilities - payment_initiation - standing_orders - transactions - transfer webhook: type: string description: The `webhook` specified in the `/link/token/create` call. format: url nullable: true country_codes: type: array description: The `country_codes` specified in the `/link/token/create` call. items: $ref: '#/components/schemas/CountryCode' language: type: string nullable: true description: The `language` specified in the `/link/token/create` call. institution_data: $ref: '#/components/schemas/LinkTokenCreateInstitutionData' account_filters: $ref: '#/components/schemas/AccountFiltersResponse' redirect_uri: type: string description: The `redirect_uri` specified in the `/link/token/create` call. nullable: true client_name: type: string nullable: true description: The `client_name` specified in the `/link/token/create` call. required: - initial_products - webhook - country_codes - language - redirect_uri - client_name LinkTokenCreateResponse: type: object additionalProperties: true description: LinkTokenCreateResponse defines the response schema for `/link/token/create` properties: link_token: type: string description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`. expiration: type: string format: date-time description: The expiration date and time for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. By default, a `link_token` created to generate a `public_token` that will be exchanged for a new `access_token` expires after 4 hours, and a `link_token` created for an existing Item (such as when updating an existing `access_token` by launching Link in update mode) expires after 30 minutes. If using [Hosted Link](https://plaid.com/docs/link/hosted-link/), the `link_token` will expire at the same time as the Hosted Link URL, and you can customize the duration using the `hosted_link.url_lifetime_seconds` option in the request. If using Link Delivery (beta), the `link_token` will expire by default after 24 hours if sent via SMS and after 7 days if sent via email. If using Identity Verification, Link token expiration will not be enforced; an Identity Verification Link session can be created with an expired Link token. request_id: $ref: '#/components/schemas/RequestID' hosted_link_url: type: string description: A URL of a Plaid-hosted Link flow that will use the Link token returned by this request. Only present if the session is enabled for Hosted Link. To enable the session for Hosted Link, send a `hosted_link` object in the request. user_id: $ref: '#/components/schemas/NewUserID' required: - link_token - expiration - request_id SessionTokenCreateResponse: type: object additionalProperties: true description: SessionTokenCreateResponse defines the response schema for `/session/token/create` properties: request_id: $ref: '#/components/schemas/RequestID' link: $ref: '#/components/schemas/SessionTokenCreateResponseLink' required: - request_id SessionTokenCreateResponseLink: type: object additionalProperties: true description: Response data for `/session/token/create` intended for use with the Link SDK. properties: link_token: type: string description: A Link token, which can be supplied to Link in order to initialize it and receive a `public_token`. expiration: type: string format: date-time description: The expiration date for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `link_token` created to generate a `public_token` that will be exchanged for a new `access_token` expires after 4 hours. A `link_token` created for an existing Item (such as when updating an existing `access_token` by launching Link in update mode) expires after 30 minutes. user_id: $ref: '#/components/schemas/NewUserID' required: - link_token - expiration PlaidError: description: 'Errors are identified by `error_code` and categorized by `error_type`. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-`null` error object will only be part of an API response when calling `/item/get` to view Item status. Otherwise, error fields will be `null` if no error has occurred; if an error has occurred, an error code will be returned instead.' type: object additionalProperties: true title: Error nullable: true properties: error_type: $ref: '#/components/schemas/PlaidErrorType' error_code: description: The particular error code. Safe for programmatic use. type: string error_code_reason: type: string nullable: true description: |- The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; `null` will be returned otherwise. Safe for programmatic use. Possible values: `OAUTH_INVALID_TOKEN`: The user's OAuth connection to this institution has been invalidated. `OAUTH_CONSENT_EXPIRED`: The user's access consent for this OAuth connection to this institution has expired. `OAUTH_USER_REVOKED`: The user's OAuth connection to this institution is invalid because the user revoked their connection. error_message: description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use. type: string display_message: description: |- A user-friendly representation of the error code. `null` if the error is not related to user action. This may change over time and is not safe for programmatic use. type: string nullable: true request_id: type: string description: A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks. causes: type: array description: |- In this product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified. `causes` will be provided for the `error_type` `ASSET_REPORT_ERROR` or `CHECK_REPORT_ERROR`. `causes` will also not be populated inside an error nested within a `warning` object. items: {} status: type: integer description: The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook. nullable: true documentation_url: type: string description: The URL of a Plaid documentation page with more information about the error suggested_action: type: string nullable: true description: Suggested steps for resolving the error required_account_subtypes: type: array items: type: string 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` 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 - error_message - display_message PlaidErrorType: title: PlaidErrorType type: string description: A broad categorization of the error. Safe for programmatic use. enum: - INVALID_REQUEST - INVALID_RESULT - INVALID_INPUT - INSTITUTION_ERROR - RATE_LIMIT_EXCEEDED - API_ERROR - ITEM_ERROR - ASSET_REPORT_ERROR - BASE_REPORT_ERROR - RECAPTCHA_ERROR - OAUTH_ERROR - PAYMENT_ERROR - BANK_TRANSFER_ERROR - INCOME_VERIFICATION_ERROR - MICRODEPOSITS_ERROR - SANDBOX_ERROR - PARTNER_ERROR - SIGNAL_ERROR - TRANSACTIONS_ERROR - TRANSACTION_ERROR - TRANSFER_ERROR - CHECK_REPORT_ERROR - 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 enum: - investment - credit - depository - loan - brokerage - other description: |- `investment:` Investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage` instead. `credit:` Credit card `depository:` Depository account `loan:` Loan account `other:` Non-specified account type See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes. OverrideAccountType: type: string title: OverrideAccountType enum: - investment - credit - depository - loan - payroll - other description: |- `investment:` Investment account. `credit:` Credit card `depository:` Depository account `loan:` Loan account `payroll:` Payroll account `other:` Non-specified account type See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes. AccountBase: title: Account type: object additionalProperties: true description: A single account at a financial institution. x-examples: example-1: {} properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. When using a CRA endpoint (an endpoint associated with Plaid Check Consumer Report, i.e. any endpoint beginning with `/cra/`), the `account_id` returned will not match the `account_id` returned by a non-CRA endpoint. Like all Plaid identifiers, the `account_id` is case sensitive. balances: $ref: '#/components/schemas/AccountBalance' mask: type: string nullable: true description: The last 2-4 alphanumeric characters of either the account's displayed mask or the account's official account number. Note that the mask may be non-unique between an Item's accounts. name: type: string description: The name of the account, either assigned by the user or by the financial institution itself official_name: type: string nullable: true description: The official name of the account as given by the financial institution type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' verification_status: type: string enum: - automatically_verified - pending_automatic_verification - pending_manual_verification - unsent - manually_verified - verification_expired - verification_failed - database_matched - database_insights_pass - database_insights_pass_with_caution - database_insights_fail description: |- Indicates an Item's micro-deposit-based verification or database verification status. This field is only populated when using Auth and falling back to micro-deposit or database verification. Possible values are: `pending_automatic_verification`: The Item is pending automatic verification. `pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code. `automatically_verified`: The Item has successfully been automatically verified. `manually_verified`: The Item has successfully been manually verified. `verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. `verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. `unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit. `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth. `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth. `database_insights_pass_with_caution`: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. `database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match. `null` or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item. verification_name: type: string description: The account holder name that was used for micro-deposit and/or database verification. Only returned for Auth Items created via micro-deposit or database verification. This name was manually-entered by the user during Link, unless it was otherwise provided via the `user.legal_name` request field in `/link/token/create` for the Link session that created the Item. verification_insights: $ref: '#/components/schemas/AccountVerificationInsights' persistent_account_id: type: string description: A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This field is currently supported only for Items at institutions that use Tokenized Account Numbers (i.e., Chase, PNC, and US Bank). Because these accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify an account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field is populated for TAN-based institutions (`ins_56`, `ins_13`, `ins_127990`) as well as the OAuth Sandbox institution (`ins_127287`); in Production, it will only be populated for accounts at applicable institutions. holder_category: $ref: '#/components/schemas/AccountHolderCategory' required: - account_id - balances - mask - name - official_name - type - subtype AccountBaseNullable: title: AccountNullable type: object additionalProperties: true description: A single account at a financial institution. nullable: true allOf: - $ref: '#/components/schemas/AccountBase' - type: object nullable: true InvestmentAccountBalance: title: InvestmentAccountBalance description: A set of fields describing the balance for an account, including margin loan information for investment accounts. allOf: - $ref: '#/components/schemas/AccountBalance' - type: object additionalProperties: true properties: margin_loan_amount: type: number format: double description: |- The total amount of borrowed funds in the account, as determined by the financial institution. For investment-type accounts, the margin balance is the total value of borrowed assets in the account, as presented by the institution. This is commonly referred to as margin or a loan. nullable: true required: - margin_loan_amount InvestmentAccount: title: InvestmentAccount description: A single account at a financial institution, with additional investment-specific balance information. allOf: - $ref: '#/components/schemas/AccountBase' - type: object additionalProperties: true properties: name: type: string official_name: type: string nullable: true mask: type: string nullable: true verification_name: type: string balances: $ref: '#/components/schemas/InvestmentAccountBalance' required: - balances AccountBalance: title: AccountBalance type: object additionalProperties: true 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 format: double description: |- The amount of funds available to be withdrawn from the account, as determined by the financial institution. For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution. Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`. Available balance may be cached and is not guaranteed to be up-to-date in real-time unless the value was returned by `/accounts/balance/get`, or by `/signal/evaluate` with a Balance-only ruleset. If `current` is `null` this field is guaranteed not to be `null`, unless you have opted into enabling [limited-purpose checking accounts](https://plaid.com/docs/auth/#enabling-limited-purpose-checking-accounts-for-rent-or-mortgage), which always have `null` values for both `available` and `current` balance. nullable: true current: type: number format: double description: |- The total amount of funds in or owed by the account. For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder. For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest. Similar to `credit`-type accounts, a positive balance is typically expected, while a negative amount indicates the lender owing the account holder. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution. Note that balance information may be cached unless the value was returned by `/accounts/balance/get` or by `/signal/evaluate` with a Balance-only ruleset; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require real-time balance information, use the `available` balance as provided by `/accounts/balance/get` or `/signal/evaluate` called with a Balance-only `ruleset_key`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`, unless you have opted into enabling [limited-purpose checking accounts](https://plaid.com/docs/auth/#enabling-limited-purpose-checking-accounts-for-rent-or-mortgage), which always have `null` values for both `available` and `current` balance. nullable: true limit: type: number format: double description: |- For `credit`-type accounts, this represents the credit limit. For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe. In North America, this field is typically only available for `credit`-type accounts. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. 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 `unofficial_currency_code`s. nullable: true last_updated_datetime: type: string format: date-time description: |- Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time the balance was updated. This field is returned only when the institution is `ins_128026` (Capital One). nullable: true required: - available - current - limit - iso_currency_code - unofficial_currency_code AccountSubtype: type: string nullable: true title: AccountSubtype description: See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes. enum: - 401a - 401k - 403B - 457b - "529" - auto - brokerage - business - cash isa - cash management - cd - checking - commercial - construction - consumer - credit card - crypto exchange - ebt - education savings account - fhsa - fixed annuity - gic - health reimbursement arrangement - home equity - hsa - isa - ira - keogh - lif - life insurance - limited purpose checking - line of credit - lira - loan - lrif - lrsp - money market - mortgage - mutual fund - non-custodial wallet - non-taxable brokerage account - other - other insurance - other annuity - overdraft - paypal - payroll - pension - prepaid - prif - profit sharing plan - qshr - rdsp - resp - retirement - rlif - roth - roth 401k - roth 403B - roth 457b - roth pension - roth profit sharing plan - roth thrift savings plan - rrif - rrsp - sarsep - savings - sep ira - simple ira - sipp - stock plan - student - thrift savings plan - tfsa - trust - ugma - utma - variable annuity AccountHolderCategory: type: string nullable: true title: HolderCategory description: Indicates the account's categorization as either a personal or a business account. This field is currently in beta; to request access, contact your account manager. enum: - business - personal - unrecognized AccountVerificationInsights: title: VerificationInsights type: object additionalProperties: true description: Insights from performing database verification for the account. Only returned for Auth Items using Database Auth. properties: name_match_score: type: integer nullable: true description: Indicates the score of the name match between the given name provided during database verification (available in the [`verification_name`](https://plaid.com/docs/api/products/auth/#auth-get-response-accounts-verification-name) field if using standard Database Auth, or provided in the request if using `/auth/verify`) and matched Plaid network accounts. If defined, will be a value between 0 and 100. Will be undefined if name matching was not enabled for the database verification session or if there were no eligible Plaid network matches to compare the given name with. network_status: $ref: '#/components/schemas/AccountVerificationInsightsNetworkStatus' previous_returns: $ref: '#/components/schemas/AccountVerificationInsightsPreviousReturns' account_number_format: $ref: '#/components/schemas/AccountVerificationInsightsAccountNumberFormat' required: - network_status - account_number_format AccountVerificationInsightsAccountNumberFormat: title: VerificationInsightsAccountNumberFormat type: string enum: - valid - invalid - unknown description: |- Indicator of account number format validity for institution. `valid`: indicates that the account number has a correct format for the institution. `invalid`: indicates that the account number has an incorrect format for the institution. `unknown`: indicates that there was not enough information to determine whether the format is correct for the institution. AccountVerificationInsightsNetworkStatus: title: VerificationInsightsNetworkStatus type: object additionalProperties: true description: Status information about the account and routing number in the Plaid network. properties: has_numbers_match: type: boolean description: Indicates whether we found at least one matching account for the ACH account and routing number. is_numbers_match_verified: type: boolean description: Indicates if at least one matching account for the ACH account and routing number is already verified. required: - has_numbers_match - is_numbers_match_verified AccountVerificationInsightsPreviousReturns: title: AccountVerificationInsightsPreviousReturns type: object additionalProperties: true description: Information about known ACH returns for the account and routing number. properties: has_previous_administrative_return: type: boolean description: Indicates whether Plaid's data sources include a known administrative ACH return for this account and routing number. required: - has_previous_administrative_return LinkEventName: title: LinkEventName description: A string representing the event that has just occurred in the Link flow. type: string enum: - BANK_INCOME_INSIGHTS_COMPLETED - CLOSE_OAUTH - ERROR - EXIT - FAIL_OAUTH - HANDOFF - ISSUE_FOLLOWED - OPEN - OPEN_MY_PLAID - OPEN_OAUTH - SEARCH_INSTITUTION - SELECT_AUTH_TYPE - SELECT_BRAND - SELECT_DEGRADED_INSTITUTION - SELECT_DOWN_INSTITUTION - SELECT_FILTERED_INSTITUTION - SELECT_INSTITUTION - SUBMIT_ACCOUNT_NUMBER - SUBMIT_CREDENTIALS - SUBMIT_DOCUMENTS - SUBMIT_DOCUMENTS_ERROR - SUBMIT_DOCUMENTS_SUCCESS - SUBMIT_MFA - SUBMIT_ROUTING_NUMBER - TRANSITION_VIEW - VIEW_DATA_TYPES LinkDeliveryWebhookCallbackType: title: LinkDeliveryWebhookCallbackType description: The type of Link callback event type: string enum: - ON_SUCCESS - ON_EVENT - ON_EXIT LinkDeliveryWebhookCommunicationMethod: title: LinkDeliveryWebhookCommunicationMethod description: The communication method used to deliver the Hosted Link session type: string enum: - SMS - EMAIL LinkDeliveryWebhookDeliveryStatus: title: LinkDeliveryWebhookDeliveryStatus description: The status of the delivery of the Hosted Link to the user type: string enum: - SUCCESS - FAILURE LinkDeliveryInstitution: title: LinkDeliveryInstitution type: object additionalProperties: true description: Information related to the financial institution. x-hidden-from-docs: true properties: name: type: string description: The full institution name, such as 'Wells Fargo' institution_id: type: string description: The Plaid institution identifier LinkDeliveryVerificationStatus: title: LinkDeliveryVerificationStatus description: Indicates an Item's micro-deposit-based verification or database verification status. type: string enum: - automatically_verified - pending_automatic_verification - pending_manual_verification - manually_verified - verification_expired - verification_failed - unsent - database_matched - database_insights_pending LinkDeliveryAccount: title: LinkDeliveryAccount type: object additionalProperties: true description: Information related to account attached to the connected Item x-hidden-from-docs: true properties: id: type: string description: The Plaid `account_id` name: type: string description: The official account name mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts. It may also not match the mask that the bank displays to the user. type: type: string description: The account type. See the [Account schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of possible values subtype: type: string description: The account subtype. See the [Account schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of possible values verification_status: $ref: '#/components/schemas/LinkDeliveryVerificationStatus' class_type: type: string description: If micro-deposit verification is being used, indicates whether the account being verified is a `business` or `personal` account. LinkDeliveryMetadata: title: LinkDeliveryMetadata type: object additionalProperties: true description: Information related to the delivery of the link session to users x-hidden-from-docs: true properties: communication_method: $ref: '#/components/schemas/LinkDeliveryWebhookCommunicationMethod' delivery_status: $ref: '#/components/schemas/LinkDeliveryWebhookDeliveryStatus' LinkCallbackMetadata: title: LinkCallbackMetadata type: object additionalProperties: true description: Information related to the callback from the Hosted Link session. x-hidden-from-docs: true properties: callback_type: $ref: '#/components/schemas/LinkDeliveryWebhookCallbackType' event_name: $ref: '#/components/schemas/LinkEventName' status: type: string description: Indicates where in the flow the Link user exited link_session_id: type: string description: A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround. request_id: type: string description: The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. institution: $ref: '#/components/schemas/LinkDeliveryInstitution' accounts: type: array description: A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, accounts will only include selected accounts. items: $ref: '#/components/schemas/LinkDeliveryAccount' NumbersACH: title: NumbersACH type: object additionalProperties: true description: Identifying information for transferring money to or from a US account via ACH or wire transfer. properties: account_id: type: string description: The Plaid account ID associated with the account numbers account: type: string description: |- The ACH account number for the account. 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. 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`. nullable: true can_transfer_in: type: boolean description: Whether the account supports ACH transfers into the account nullable: true x-hidden-from-docs: true can_transfer_out: type: boolean description: Whether the account supports ACH transfers out of the account nullable: true x-hidden-from-docs: true required: - account_id - account - routing - wire_routing NumbersACHNullable: description: Identifying information for transferring money to or from a US account via ACH or wire transfer. nullable: true allOf: - $ref: '#/components/schemas/NumbersACH' - type: object additionalProperties: true NumbersEFT: title: NumbersEFT type: object additionalProperties: true description: Identifying information for transferring money to or from a Canadian bank account via EFT. properties: account_id: type: string description: The Plaid account ID associated with the account numbers account: type: string description: The EFT account number for the account institution: type: string description: The EFT institution number for the account branch: type: string description: The EFT branch number for the account required: - account_id - account - institution - branch NumbersEFTNullable: description: Identifying information for transferring money to or from a Canadian bank account via EFT. nullable: true allOf: - $ref: '#/components/schemas/NumbersEFT' - type: object additionalProperties: true NumbersInternational: title: NumbersInternational type: object additionalProperties: true description: Identifying information for transferring money to or from an international bank account via wire transfer. properties: account_id: type: string description: The Plaid account ID associated with the account numbers iban: type: string description: The International Bank Account Number (IBAN) for the account bic: type: string description: The Business Identifier Code (BIC) for the account required: - account_id - iban - bic NumbersInternationalNullable: description: Identifying information for transferring money to or from an international bank account via wire transfer. nullable: true allOf: - $ref: '#/components/schemas/NumbersInternational' - type: object additionalProperties: true NumbersBACS: title: NumbersBACS type: object additionalProperties: true description: Identifying information for transferring money to or from a UK bank account via Bacs. properties: account_id: type: string description: The Plaid account ID associated with the account numbers account: type: string description: The Bacs account number for the account sort_code: type: string description: The Bacs sort code for the account required: - account_id - account - sort_code NumbersBACSNullable: description: Identifying information for transferring money to or from a UK bank account via Bacs. nullable: true allOf: - $ref: '#/components/schemas/NumbersBACS' - type: object additionalProperties: true NumbersInternationalIBAN: type: object additionalProperties: true description: Account numbers using the International Bank Account Number and BIC/SWIFT code format. nullable: true properties: iban: $ref: '#/components/schemas/NumbersIBAN' bic: type: string description: The Business Identifier Code, also known as SWIFT code, for this bank account. minLength: 8 maxLength: 11 required: - iban - bic NumbersIBAN: type: string description: International Bank Account Number (IBAN). minLength: 15 maxLength: 34 NumbersIBANNullable: type: string description: International Bank Account Number (IBAN). nullable: true allOf: - $ref: '#/components/schemas/NumbersIBAN' InvestmentsAuthGetNumbers: type: object additionalProperties: true description: Identifying information for transferring holdings to an investment account. properties: acats: type: array items: $ref: '#/components/schemas/NumbersACATS' aton: type: array items: $ref: '#/components/schemas/NumbersATON' retirement_401k: type: array items: $ref: '#/components/schemas/NumbersRetirement401k' NumbersACATS: title: NumbersACATS type: object additionalProperties: true description: Identifying information for transferring holdings to an investment account via ACATS. properties: account_id: type: string description: The Plaid account ID associated with the account numbers account: type: string description: The full account number for the account dtc_numbers: type: array description: Identifiers for the clearinghouses that are associated with the account in order of relevance. If this array is empty, call `/institutions/get_by_id` with the `item.institution_id` to get the DTC number. items: type: string required: - account_id - account - dtc_numbers NumbersATON: title: NumbersATON type: object additionalProperties: true description: Identifying information for transferring holdings to an investment account via ATON. properties: account_id: type: string description: The Plaid account ID associated with the account numbers account: type: string description: The full account number for the account required: - account_id - account NumbersRetirement401k: title: NumbersRetirement401k type: object additionalProperties: true description: Identifying information for transferring holdings from a 401k account to another 401k account or IRA via the manual 401k rollover process. properties: account_id: type: string description: The Plaid account ID associated with the account numbers plan: type: string description: The plan number for the employer's 401k retirement plan account: type: string description: The full account number for the account required: - account_id RecipientBACS: title: RecipientBACS type: object additionalProperties: true nullable: true description: An object containing a Bacs account number and sort code. If an IBAN is not provided or if you need to accept domestic GBP-denominated payments, Bacs data is required. properties: account: type: string description: The account number of the account. Maximum of 10 characters. minLength: 1 maxLength: 10 sort_code: type: string description: The 6-character sort code of the account. minLength: 6 maxLength: 6 RecipientBACSNullable: description: An object containing a Bacs account number and sort code. If an IBAN is not provided or if this recipient needs to accept domestic GBP-denominated payments, Bacs data is required. nullable: true allOf: - $ref: '#/components/schemas/RecipientBACS' - type: object additionalProperties: true description: The account number and sort code of the recipient's account. SenderBACSNullable: description: An object containing a Bacs account number and sort code. If an IBAN is not provided or if this recipient needs to accept domestic GBP-denominated payments, Bacs data is required. nullable: true allOf: - $ref: '#/components/schemas/RecipientBACS' - type: object additionalProperties: true description: The account number and sort code of the sender's account, if specified in the `/payment_initiation/payment/create` call. PaymentInitiationOptionalRestrictionBacs: description: An optional object used to restrict the accounts used for payments. If provided, the end user will be able to send payments only from the specified bank account. nullable: true allOf: - $ref: '#/components/schemas/RecipientBACS' - type: object additionalProperties: true TransactionsUpdateStatus: title: TransactionsUpdateStatus type: string description: |- A description of the update status for transaction pulls of an Item. This field contains the same information provided by transactions webhooks, and may be helpful for webhook troubleshooting or when recovering from missed webhooks. `TRANSACTIONS_UPDATE_STATUS_UNKNOWN`: Unable to fetch transactions update status for Item. `NOT_READY`: The Item is pending transaction pull. `INITIAL_UPDATE_COMPLETE`: Initial pull for the Item is complete, historical pull is pending. `HISTORICAL_UPDATE_COMPLETE`: Both initial and historical pull for Item are complete. enum: - TRANSACTIONS_UPDATE_STATUS_UNKNOWN - NOT_READY - INITIAL_UPDATE_COMPLETE - HISTORICAL_UPDATE_COMPLETE RemovedTransaction: title: RemovedTransaction type: object additionalProperties: true description: A representation of a removed transaction x-examples: {} properties: transaction_id: type: string description: The ID of the removed transaction. account_id: type: string description: The ID of the account of the removed transaction. required: - transaction_id - account_id RequestID: title: RequestID type: string description: A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive. TransactionsRuleDetails: title: TransactionsRuleDetails type: object description: A representation of transactions rule details. x-examples: {} properties: field: $ref: '#/components/schemas/TransactionsRuleField' type: $ref: '#/components/schemas/TransactionsRuleType' query: type: string description: | For `TRANSACTION_ID` field, provide `transaction_id`. For `MERCHANT_NAME` field, provide a string pattern. required: - field - type - query TransactionsRuleField: title: TransactionsRuleField type: string enum: - TRANSACTION_ID - MERCHANT_NAME description: Transaction field for which the rule is defined. TransactionsRuleType: title: TransactionsRuleType type: string enum: - EXACT_MATCH - SUBSTRING_MATCH description: | Transaction rule's match type. For `TRANSACTION_ID` field, `EXACT_MATCH` is available. Matches are case sensitive. TransactionsCategoryRule: title: TransactionsCategoryRule type: object description: A representation of a transactions category rule. x-examples: {} properties: id: type: string description: A unique identifier of the rule created user_id: type: string description: The Plaid-generated unique identifier for the end user this rule belongs to. created_at: type: string format: date-time description: | Date and time when a rule was created in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). updated_at: type: string format: date-time description: | Date and time when a rule was last updated in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). pfc_primary_category: $ref: '#/components/schemas/PfcPrimaryCategory' pfc_detailed_category: $ref: '#/components/schemas/PfcDetailedCategory' rule_details: $ref: '#/components/schemas/TransactionsRuleDetails' TransactionBase: title: TransactionBase type: object additionalProperties: true description: A representation of a transaction x-examples: {} properties: account_id: type: string description: The ID of the account in which this transaction occurred. amount: type: number format: double description: 'The settled value of the transaction, denominated in the transaction''s currency, as stated in `iso_currency_code` or `unofficial_currency_code`. 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. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true category: deprecated: true type: array description: |- A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). 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. nullable: true x-hidden-from-docs: true items: type: string category_id: deprecated: true description: |- The ID of the category to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). 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. type: string nullable: true x-hidden-from-docs: true check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true date: type: string format: date description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). To receive information about the date that a posted transaction was initiated, see the `authorized_date` field. location: $ref: '#/components/schemas/Location' name: type: string deprecated: true description: |- The merchant name or transaction description. 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. 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`. nullable: true original_description: type: string description: The string returned by the financial institution to describe the transaction. For transactions returned by `/transactions/sync` or `/transactions/get`, this field will only be included if the client has set `options.include_original_description` to `true`. nullable: true payment_meta: $ref: '#/components/schemas/PaymentMeta' pending: type: boolean description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. Not all institutions provide pending transactions. pending_transaction_id: type: string description: The ID of a posted transaction's associated pending transaction, where applicable. Not all institutions provide pending transactions. nullable: true account_owner: type: string description: This field is not typically populated and only relevant when dealing with sub-accounts. A sub-account most commonly exists in cases where a single account is linked to multiple cards, each with its own card number and card holder name; each card will be considered a sub-account. If the account does have sub-accounts, this field will typically be some combination of the sub-account owner's name and/or the sub-account mask. The format of this field is not standardized and will vary based on institution. nullable: true transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. transaction_type: type: string enum: - digital - place - special - unresolved description: | Please use the `payment_channel` field, `transaction_type` will be deprecated in the future. `digital:` transactions that took place online. `place:` transactions that were made at a physical location. `special:` transactions that relate to banks, e.g. fees or deposits. `unresolved:` transactions that do not fit into the other three types. deprecated: true logo_url: type: string 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 description: The website associated with this transaction, if available. nullable: true required: - transaction_id - pending - date - unofficial_currency_code - iso_currency_code - amount - account_id Transaction: title: Transaction description: A representation of a transaction x-examples: {} allOf: - $ref: '#/components/schemas/TransactionBase' - type: object additionalProperties: true properties: authorized_date: type: string format: date description: The date that the transaction was authorized. For posted transactions, the `date` field will indicate the posted date, but `authorized_date` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_date`, when available, is generally preferable to use over the `date` field for posted transactions, as it will generally represent the date the user actually made the transaction. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). nullable: true authorized_datetime: type: string format: date-time description: |- Date and time when a transaction was authorized in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For posted transactions, the `datetime` field will indicate the posted date, but `authorized_datetime` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_datetime`, when available, is generally preferable to use over the `datetime` field for posted transactions, as it will generally represent the date the user actually made the transaction. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later. nullable: true datetime: type: string format: date-time description: |- Date and time when a transaction was posted in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For the date that the transaction was initiated, rather than posted, see the `authorized_datetime` field. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later. nullable: true payment_channel: type: string enum: - online - in store - other description: | The channel used to make a payment. `online:` transactions that took place online. `in store:` transactions that were made at a physical location. `other:` transactions that relate to banks, e.g. fees or deposits. This field replaces the `transaction_type` field. personal_finance_category: $ref: '#/components/schemas/PersonalFinanceCategory' business_finance_category: $ref: '#/components/schemas/BusinessFinanceCategory' transaction_code: $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 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. items: $ref: '#/components/schemas/TransactionCounterparty' merchant_entity_id: type: string description: A unique, stable, Plaid-generated ID that maps to the merchant. In the case of a merchant with multiple retail locations, this field will map to the broader merchant, not a specific location or store. nullable: true client_customization: $ref: '#/components/schemas/ClientCustomization' required: - account_owner - pending_transaction_id - payment_channel - payment_meta - name - location - authorized_date - authorized_datetime - datetime - transaction_code ClientCustomization: title: ClientCustomization nullable: true type: object additionalProperties: true description: Custom client fields x-hidden-from-docs: true properties: custom_entity_id: type: string description: Custom entity ID that maps to a merchant or counterparty. This is different from the `merchant_entity_id` as well as the `entity_id` on the counterparties object to meet client specific needs. CashflowReportTransaction: title: CashflowReportTransaction type: object description: A representation of a transaction returned from Cashflow Report x-examples: {} additionalProperties: true properties: account_id: type: string description: The ID of the account in which this transaction occurred. amount: type: number format: double nullable: true 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. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true date: type: string format: date description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). To receive information about the date that a posted transaction was initiated, see the `authorized_date` field. location: $ref: '#/components/schemas/Location' name: type: string nullable: true description: |- The merchant name or transaction description. 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. 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`. nullable: true original_description: type: string description: The string returned by the financial institution to describe the transaction. For transactions returned by `/transactions/sync` or `/transactions/get`, this field will only be included if the client has set `options.include_original_description` to `true`. nullable: true payment_meta: $ref: '#/components/schemas/CashflowReportPaymentMeta' pending: type: boolean nullable: true description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. Not all institutions provide pending transactions. pending_transaction_id: type: string description: The ID of a posted transaction's associated pending transaction, where applicable. Not all institutions provide pending transactions. nullable: true account_owner: type: string description: This field is not typically populated and only relevant when dealing with sub-accounts. A sub-account most commonly exists in cases where a single account is linked to multiple cards, each with its own card number and card holder name; each card will be considered a sub-account. If the account does have sub-accounts, this field will typically be some combination of the sub-account owner's name and/or the sub-account mask. The format of this field is not standardized and will vary based on institution. nullable: true transaction_id: type: string 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 a 100×100 pixel PNG file. nullable: true website: type: string description: The website associated with this transaction, if available. nullable: true authorized_date: type: string format: date description: The date that the transaction was authorized. For posted transactions, the `date` field will indicate the posted date, but `authorized_date` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_date`, when available, is generally preferable to use over the `date` field for posted transactions, as it will generally represent the date the user actually made the transaction. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). nullable: true authorized_datetime: type: string format: date-time description: |- Date and time when a transaction was authorized in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For posted transactions, the `datetime` field will indicate the posted date, but `authorized_datetime` will indicate the day the transaction was authorized by the financial institution. If presenting transactions to the user in a UI, the `authorized_datetime`, when available, is generally preferable to use over the `datetime` field for posted transactions, as it will generally represent the date the user actually made the transaction. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later. nullable: true datetime: type: string format: date-time description: |- Date and time when a transaction was posted in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ). For the date that the transaction was initiated, rather than posted, see the `authorized_datetime` field. This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). This field is only populated in API version 2019-05-29 and later. nullable: true payment_channel: $ref: '#/components/schemas/PaymentChannel' personal_finance_category: $ref: '#/components/schemas/PersonalFinanceCategory' business_finance_category: $ref: '#/components/schemas/BusinessFinanceCategory' credit_category: $ref: '#/components/schemas/CreditCategory' transaction_code: $ref: '#/components/schemas/TransactionCode' 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 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. items: $ref: '#/components/schemas/TransactionCounterparty' merchant_entity_id: type: string description: A unique, stable, Plaid-generated ID that maps to the merchant. In the case of a merchant with multiple retail locations, this field will map to the broader merchant, not a specific location or store. nullable: true required: - transaction_id - pending - date - unofficial_currency_code - iso_currency_code - amount - account_id - account_owner - pending_transaction_id - payment_channel - payment_meta - name - location - authorized_date - authorized_datetime - datetime - transaction_code Location: title: Transaction Location type: object additionalProperties: true description: A representation of where a transaction took place. Location data is provided only for transactions at physical locations, not for online transactions. Location data availability depends primarily on the merchant and is most likely to be populated for transactions at large retail chains; small, local businesses are less likely to have location data available. properties: address: type: string description: The street address where the transaction occurred. nullable: true city: type: string description: The city where the transaction occurred. nullable: true region: type: string description: The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `state`. nullable: true postal_code: type: string description: The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `zip`. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code where the transaction occurred. nullable: true lat: type: number format: double description: The latitude where the transaction occurred. nullable: true lon: type: number format: double description: The longitude where the transaction occurred. nullable: true store_number: type: string description: The merchant defined store number where the transaction occurred. nullable: true required: - address - city - region - postal_code - country - lat - lon - store_number TransactionStream: title: TransactionStream type: object description: A grouping of related transactions x-examples: {} additionalProperties: true properties: account_id: type: string description: The ID of the account to which the stream belongs stream_id: type: string description: A unique id for the stream category: deprecated: true nullable: true type: array x-hidden-from-docs: true description: |- A hierarchical array of the categories to which this transaction belongs. See [Categories](https://plaid.com/docs/api/products/transactions/#categoriesget). All implementations are encouraged to use the new `personal_finance_category` instead of `category`. `personal_finance_category` provides more meaningful categorization and greater accuracy. items: type: string category_id: deprecated: true description: |- The ID of the category to which this transaction belongs. See [Categories](https://plaid.com/docs/api/products/transactions/#categoriesget). All implementations are encouraged to use the new `personal_finance_category` instead of `category`. `personal_finance_category` provides more meaningful categorization and greater accuracy. type: string x-hidden-from-docs: true nullable: true description: type: string description: A description of the transaction stream. merchant_name: type: string description: The merchant associated with the transaction stream. nullable: true first_date: type: string description: The posted date of the earliest transaction in the stream. format: date last_date: type: string description: The posted date of the latest transaction in the stream. format: date predicted_next_date: type: string description: The predicted date of the next payment. This will only be set if the next payment date can be predicted. format: date nullable: true frequency: $ref: '#/components/schemas/RecurringTransactionFrequency' transaction_ids: type: array description: An array of Plaid transaction IDs belonging to the stream, sorted by posted date. items: type: string average_amount: $ref: '#/components/schemas/TransactionStreamAmount' last_amount: $ref: '#/components/schemas/TransactionStreamAmount' is_active: type: boolean description: Indicates whether the transaction stream is still live. status: $ref: '#/components/schemas/TransactionStreamStatus' personal_finance_category: $ref: '#/components/schemas/PersonalFinanceCategory' is_user_modified: type: boolean description: As the ability to modify transactions streams has been discontinued, this field will always be `false`. deprecated: true last_user_modified_datetime: type: string description: The date and time of the most recent user modification. This will only be set if `is_user_modified` is `true`. format: date-time deprecated: true x-hidden-from-docs: true required: - account_id - stream_id - category - category_id - description - merchant_name - first_date - last_date - frequency - transaction_ids - average_amount - last_amount - is_active - status - is_user_modified TransactionStreamAmount: type: object title: TransactionStreamAmount description: Object with data pertaining to an amount on the transaction stream. additionalProperties: true properties: amount: type: number format: double description: Represents the numerical value of an amount. iso_currency_code: type: string description: |- The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s. nullable: true unofficial_currency_code: type: string description: The unofficial currency code of the amount. 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. nullable: true RecurringTransactionFrequency: type: string description: |- Describes the frequency of the transaction stream. `WEEKLY`: Assigned to a transaction stream that occurs approximately every week. `BIWEEKLY`: Assigned to a transaction stream that occurs approximately every 2 weeks. `SEMI_MONTHLY`: Assigned to a transaction stream that occurs approximately twice per month. This frequency is typically seen for inflow transaction streams. `MONTHLY`: Assigned to a transaction stream that occurs approximately every month. `ANNUALLY`: Assigned to a transaction stream that occurs approximately every year. `UNKNOWN`: Assigned to a transaction stream that does not fit any of the pre-defined frequencies. title: RecurringTransactionFrequency enum: - UNKNOWN - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY - ANNUALLY TransactionStreamStatus: type: string description: |- The current status of the transaction stream. `MATURE`: A `MATURE` recurring stream should have at least 3 transactions and happen on a regular cadence (For Annual recurring stream, we will mark it `MATURE` after 2 instances). `EARLY_DETECTION`: When a recurring transaction first appears in the transaction history and before it fulfills the requirement of a mature stream, the status will be `EARLY_DETECTION`. `TOMBSTONED`: A stream that was previously in the `EARLY_DETECTION` status will move to the `TOMBSTONED` status when no further transactions were found at the next expected date. `UNKNOWN`: A stream is assigned an `UNKNOWN` status when none of the other statuses are applicable. title: TransactionStreamStatus enum: - UNKNOWN - MATURE - EARLY_DETECTION - TOMBSTONED InvestmentsAuthOwner: title: InvestmentsAuthOwner type: object description: Information on the ownership of an investment account additionalProperties: true properties: account_id: type: string description: The ID of the account that this identity information pertains to names: description: |- A list of names associated with the account by the financial institution. In the case of a joint account, Plaid will make a best effort to report the names of all account holders. If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array. type: array items: type: string InvestmentsAuthAccountDetails401k: type: object additionalProperties: true description: Additional account fee and contribution information for 401k type accounts. properties: account_id: type: string description: The ID of the 401k account. fee_details: $ref: '#/components/schemas/InvestmentsAuth401kFeeDetails' contribution_details: $ref: '#/components/schemas/InvestmentsAuth401kContributionDetails' InvestmentsAuth401kFeeDetails: type: object additionalProperties: true description: Object containing information on account fee transactions for the 401k account. properties: account_fee_count_12m: type: integer description: Number of account fee transactions on this account, for the past 12 months. account_fee_amount_12m: type: number format: float description: Sum of account fee transactions on this account, for the past 12 months. required: - account_fee_count_12m - account_fee_amount_12m InvestmentsAuth401kContributionDetails: type: object additionalProperties: true description: Object containing information on contribution transactions for the 401k account. Note that the sum fields in this object represent the total of absolute contribution values. properties: last_contribution_transactions: type: array description: A list of the most recent contribution transactions for the 401k account. Includes all contributions made on the same day. items: $ref: '#/components/schemas/InvestmentTransaction' contribution_count_1m: type: integer description: Number of contribution transactions on this account, for the past month. contribution_amount_1m: type: number format: float description: Sum of the contribution transactions on this account, for the past month. contribution_count_6m: type: integer description: Number of contribution transactions on this account, for the past 6 months. contribution_amount_6m: type: number format: float description: Sum of the contribution transactions on this account, for the past 6 months. contribution_count_12m: type: integer description: Number of contribution transactions on this account, for the past 12 months. contribution_amount_12m: type: number format: float description: Sum of the contribution transactions on this account, for the past 12 months. required: - last_contribution_transactions - contribution_count_1m - contribution_amount_1m - contribution_count_6m - contribution_amount_6m - contribution_count_12m - contribution_amount_12m InvestmentsAuthDataSources: title: InvestmentsAuthDataSources type: object description: Object with metadata pertaining to the source of data for the account numbers, owners, and holdings that are returned. additionalProperties: true properties: numbers: $ref: '#/components/schemas/DataSources' owners: $ref: '#/components/schemas/DataSources' holdings: $ref: '#/components/schemas/DataSources' DataSources: type: string description: |- A description of the source of data for a given product/data type. `INSTITUTION`: The institution supports this product, and the data was provided by the institution. `INSTITUTION_MASK`: The user manually provided the full account number, which was matched to the account mask provided by the institution. Only applicable to the `numbers` data type. `USER`: The institution does not support this product, and the data was manually provided by the user. enum: - INSTITUTION - INSTITUTION_MASK - USER Institution: title: Institution type: object additionalProperties: true description: Details relating to a specific financial institution properties: institution_id: type: string description: Unique identifier for the institution. Note that the same institution may have multiple records, each with different institution IDs; for example, if the institution has migrated to OAuth, there may be separate `institution_id`s for the OAuth and non-OAuth versions of the institution. Institutions that operate in different countries or with multiple login portals may also have separate `institution_id`s for each country or portal. name: type: string description: The official name of the institution. products: type: array description: 'A list of the Plaid products supported by the institution. Note that only institutions that support Instant Auth will return `auth` in the product array; institutions that do not list `auth` may still support other Auth methods such as Instant Match or Automated Micro-deposit Verification. To identify institutions that support those methods, use the `auth_metadata` object. For more details, see [Full Auth coverage](https://plaid.com/docs/auth/coverage/). The `income_verification` product here indicates support for Bank Income. Note: For Signal Transaction Scores and Transfer, listed institutions may be incomplete or incorrect. Instead, use the following: `balance` support also indicates coverage of Signal Transaction Scores; `auth` support also indicates coverage of Transfer.' items: $ref: '#/components/schemas/Products' country_codes: type: array description: A list of the country codes supported by the institution. items: $ref: '#/components/schemas/CountryCode' url: type: string description: The URL for the institution's website nullable: true primary_color: type: string description: Hexadecimal representation of the primary color used by the institution. If Plaid does not have primary color data for the institution, this field will be a deterministically generated fallback color. nullable: true logo: type: string description: Base64 encoded representation of the institution's logo, returned as a base64 encoded 152x152 PNG. Not all institutions' logos are available. nullable: true routing_numbers: type: array description: A list of routing numbers known to be associated with the institution. This list is provided for the purpose of looking up institutions by routing number. It is generally comprehensive but is not guaranteed to be a complete list of routing numbers for an institution. items: type: string dtc_numbers: type: array description: A partial list of DTC numbers associated with the institution. items: type: string oauth: type: boolean description: Indicates that the institution has an OAuth login flow. This will be `true` if OAuth is supported for any Items associated with the institution, even if the institution also supports non-OAuth connections. status: $ref: '#/components/schemas/InstitutionStatus' payment_initiation_metadata: $ref: '#/components/schemas/PaymentInitiationMetadata' auth_metadata: $ref: '#/components/schemas/AuthMetadata' required: - institution_id - name - products - country_codes - routing_numbers - oauth InstitutionStatus: title: InstitutionStatus type: object additionalProperties: true nullable: true properties: item_logins: $ref: '#/components/schemas/ProductStatus' transactions_updates: $ref: '#/components/schemas/ProductStatus' auth: $ref: '#/components/schemas/ProductStatus' identity: $ref: '#/components/schemas/ProductStatus' investments_updates: $ref: '#/components/schemas/ProductStatus' liabilities_updates: $ref: '#/components/schemas/ProductStatus' liabilities: $ref: '#/components/schemas/ProductStatus' investments: $ref: '#/components/schemas/ProductStatus' health_incidents: nullable: true type: array description: Details of recent health incidents associated with the institution. items: $ref: '#/components/schemas/HealthIncident' 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 `options.include_status` option set to true. Note that institution status is not available in the Sandbox environment. x-examples: example-1: 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 CountryCode: type: string title: CountryCode enum: - US - GB - ES - NL - FR - IE - CA - DE - IT - PL - DK - "NO" - SE - EE - LT - LV - PT - BE - AT - FI description: ISO-3166-1 alpha-2 country code standard. ConsumerReportPermissiblePurpose: type: string title: ConsumerReportPermissiblePurpose enum: - ACCOUNT_REVIEW_CREDIT - ACCOUNT_REVIEW_NON_CREDIT - EXTENSION_OF_CREDIT - LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING - LEGITIMATE_BUSINESS_NEED_OTHER - WRITTEN_INSTRUCTION_PREQUALIFICATION - WRITTEN_INSTRUCTION_OTHER - ELIGIBILITY_FOR_GOVT_BENEFITS description: |- Describes the reason you are generating a Consumer Report for this user. When calling `/link/token/create`, this field is required when using Plaid Check (CRA) products; invalid if not using Plaid Check (CRA) products. `ACCOUNT_REVIEW_CREDIT`: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A). `ACCOUNT_REVIEW_NON_CREDIT`: For a legitimate business need of the information to review a non-credit account provided primarily for personal, family, or household purposes to determine whether the consumer continues to meet the terms of the account pursuant to FCRA Section 604(a)(3)(F)(2). `EXTENSION_OF_CREDIT`: In connection with a credit transaction initiated by and involving the consumer pursuant to FCRA Section 604(a)(3)(A). `LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING`: For a legitimate business need in connection with a business transaction initiated by the consumer primarily for personal, family, or household purposes in connection with a property rental assessment pursuant to FCRA Section 604(a)(3)(F)(i). `LEGITIMATE_BUSINESS_NEED_OTHER`: For a legitimate business need in connection with a business transaction made primarily for personal, family, or household initiated by the consumer pursuant to FCRA Section 604(a)(3)(F)(i). `WRITTEN_INSTRUCTION_PREQUALIFICATION`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application's profile to make an offer to the consumer. `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan. `ELIGIBILITY_FOR_GOVT_BENEFITS`: In connection with an eligibility determination for a government benefit where the entity is required to consider an applicant's financial status pursuant to FCRA Section 604(a)(3)(D). PaymentMeta: title: PaymentMeta type: object additionalProperties: true 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. properties: reference_number: type: string description: The transaction reference number supplied by the financial institution. nullable: true ppd_id: type: string description: The ACH PPD ID for the payer. nullable: true payee: type: string description: For transfers, the party that is receiving the transaction. nullable: true by_order_of: type: string description: The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer. nullable: true payer: type: string description: For transfers, the party that is paying the transaction. nullable: true payment_method: type: string description: The type of transfer, e.g. 'ACH' nullable: true payment_processor: type: string description: The name of the payment processor nullable: true reason: type: string description: The payer-supplied description of the transfer. nullable: true required: - reference_number - ppd_id - payee - by_order_of - payer - payment_method - payment_processor - reason CashflowReportPaymentMeta: title: CashflowReportPaymentMeta type: object additionalProperties: true description: Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`. properties: reference_number: type: string description: The transaction reference number supplied by the financial institution. nullable: true ppd_id: type: string description: The ACH PPD ID for the payer. nullable: true payee: type: string description: For transfers, the party that is receiving the transaction. nullable: true by_order_of: type: string description: The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer. nullable: true payer: type: string description: For transfers, the party that is paying the transaction. nullable: true payment_method: type: string description: The type of transfer, e.g. 'ACH' nullable: true payment_processor: type: string description: The name of the payment processor nullable: true reason: type: string description: The payer-supplied description of the transfer. nullable: true required: - reference_number - ppd_id - payee - by_order_of - payer - payment_method - payment_processor - reason TransactionCode: type: string title: transaction_code description: |- An identifier classifying the transaction type. This field is populated for European institutions, as well as certain institutions in the United States. For institutions where this classification is not available, this field is set to `null`. `adjustment:` Bank adjustment `atm:` Cash deposit or withdrawal via an automated teller machine `bank charge:` Charge or fee levied by the institution `bill payment`: Payment of a bill `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 `direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval `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 enum: - adjustment - atm - 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 nullable: true Category: title: Category type: object additionalProperties: true description: Information describing a transaction category properties: category_id: type: string description: An identifying number for the category. `category_id` is a Plaid-specific identifier and does not necessarily correspond to merchant category codes. group: type: string description: '`place` for physical transactions or `special` for other transactions such as bank charges.' hierarchy: type: array description: A hierarchical array of the categories to which this `category_id` belongs. items: type: string required: - category_id - group - hierarchy Counterparty: type: object title: Counterparty additionalProperties: true description: The counterparty, such as the merchant or financial institution, is extracted by Plaid from the raw description. properties: name: type: string description: The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description. entity_id: type: string description: A unique, stable, Plaid-generated ID that maps to the counterparty. nullable: true type: $ref: '#/components/schemas/CounterpartyType' website: type: string description: The website associated with the counterparty. nullable: true logo_url: type: string 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 description: |- A description of how confident we are that the provided counterparty is involved in the transaction. `VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction. `HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction. `MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records. `LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. `UNKNOWN`: We don't know the confidence level for this counterparty. nullable: true phone_number: type: string description: The phone number associated with the counterparty in E.164 format. If there is a location match (i.e. a street address is returned in the location object), the phone number will be location specific. nullable: true account_numbers: $ref: '#/components/schemas/CounterpartyNumbers' required: - name - type - logo_url - website - phone_number TransactionCounterparty: type: object title: Counterparty additionalProperties: true description: The counterparty, such as the merchant or financial institution, is extracted by Plaid from the raw description. properties: name: type: string description: The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description. entity_id: type: string description: A unique, stable, Plaid-generated ID that maps to the counterparty. nullable: true type: $ref: '#/components/schemas/CounterpartyType' website: type: string description: The website associated with the counterparty. nullable: true logo_url: type: string 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 description: |- A description of how confident we are that the provided counterparty is involved in the transaction. `VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction. `HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction. `MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records. `LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description. `UNKNOWN`: We don't know the confidence level for this counterparty. nullable: true account_numbers: $ref: '#/components/schemas/CounterpartyNumbers' required: - name - type - logo_url - website CounterpartyType: title: CounterpartyType description: |- The counterparty type. `merchant`: a provider of goods or services for purchase `financial_institution`: a financial entity (bank, credit union, BNPL, fintech) `payment_app`: a transfer or P2P app (e.g. Zelle) `marketplace`: a marketplace (e.g. DoorDash, Google Play Store) `payment_terminal`: a point-of-sale payment terminal (e.g. Square, Toast) `income_source`: the payer in an income transaction (e.g., an employer, client, or government agency) type: string enum: - merchant - financial_institution - payment_app - marketplace - payment_terminal - income_source CounterpartyNumbers: type: object title: CounterpartyNumbers additionalProperties: true description: |- Account numbers associated with the counterparty, when available. This field is currently only filled in for select financial institutions in Europe. nullable: true properties: bacs: $ref: '#/components/schemas/CounterpartyNumbersBACS' international: $ref: '#/components/schemas/CounterpartyNumbersInternational' CounterpartyNumbersBACS: type: object title: CounterpartyNumbersBACS description: Identifying information for a UK bank account via Bacs. nullable: true properties: account: type: string nullable: true description: The Bacs account number for the account. sort_code: type: string nullable: true description: The Bacs sort code for the account. CounterpartyNumbersInternational: type: object title: CounterpartyNumbersInternational description: Account numbers using the International Bank Account Number and BIC/SWIFT code format. nullable: true properties: iban: $ref: '#/components/schemas/NumbersIBANNullable' bic: type: string description: Business Identifier Code (BIC) for this counterparty. nullable: true minLength: 8 maxLength: 11 PfcPrimaryCategory: title: PfcPrimaryCategory type: string description: | A personal finance primary category. See the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv) for a full list of personal finance categories. PfcDetailedCategory: title: PfcDetailedCategory type: string description: | A personal finance detailed category. See the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv) for a full list of personal finance categories. PersonalFinanceCategory: title: PersonalFinanceCategory nullable: true type: object additionalProperties: true description: |- Information describing the intent of the transaction. Most relevant for personal finance use cases, but not limited to such use cases. See the [taxonomy CSV file](https://plaid.com/documents/pfc-taxonomy-all.csv) for a full list of personal finance categories. If you are migrating to personal finance categories from the legacy categories, also refer to the [migration guide](https://plaid.com/docs/transactions/pfc-migration/). properties: primary: type: string description: A high level category that communicates the broad category of the transaction. detailed: type: string description: A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category. confidence_level: type: string description: |- A description of how confident we are that the provided categories accurately describe the transaction intent. `VERY_HIGH`: We are more than 98% confident that this category reflects the intent of the transaction. `HIGH`: We are more than 90% confident that this category reflects the intent of the transaction. `MEDIUM`: We are moderately confident that this category reflects the intent of the transaction. `LOW`: This category may reflect the intent, but there may be other categories that are more accurate. `UNKNOWN`: We don't know the confidence level for this category. nullable: true version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' required: - primary - detailed BusinessFinanceCategory: title: BusinessFinanceCategory nullable: true type: object additionalProperties: true description: Information describing the intent of the transaction. Most relevant for business finance use cases, but not limited to such use cases. x-hidden-from-docs: true properties: primary: type: string description: A high level category that communicates the broad category of the transaction. detailed: type: string description: A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category. confidence_level: type: string description: |- A description of how confident we are that the provided categories accurately describe the transaction intent. `VERY_HIGH`: We are more than 98% confident that this category reflects the intent of the transaction. `HIGH`: We are more than 90% confident that this category reflects the intent of the transaction. `MEDIUM`: We are moderately confident that this category reflects the intent of the transaction. `LOW`: This category may reflect the intent, but there may be other categories that are more accurate. `UNKNOWN`: We don't know the confidence level for this category. nullable: true required: - primary - detailed UserToken: title: UserToken type: string description: The user token associated with the user for which data is being requested. This field is used only by customers with pre-existing integrations that already use the `user_token` field. All other customers should use the `user_id` instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). ThirdPartyUserToken: x-hidden-from-docs: true title: ThirdPartyUserToken type: string description: The third-party user token associated with the requested User data. AccessToken: title: AccessToken type: string description: The access token associated with the Item for which data is being requested. AccessTokenNullable: nullable: true type: string description: The access token associated with the Item for which data is being requested. TransferAccessToken: description: The Plaid `access_token` for the account that will be debited or credited. type: string TransferAccountID: type: string description: The Plaid `account_id` corresponding to the end-user account that will be debited or credited. 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 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. nullable: true x-hidden-from-docs: true TransferUnmigratedFundingAccountIDRequest: type: string description: Specify the account used to fund the transfer. 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, it will default to the default `funding_account_id` specified during onboarding. nullable: true TransferLedgerFundingAccountIDRequest: type: string description: Specify which funding account to use. Customers can find a list of `funding_account_id`s in the Accounts page of the Plaid Dashboard, under the "Account ID" column. If this field is left blank, the funding account associated with the specified Ledger will be used. If an `originator_client_id` is specified, the `funding_account_id` must belong to the specified originator. nullable: true TransferFundingAccountIDResponse: type: string description: The id of the funding account to use, available in the Plaid Dashboard. This determines which of your business checking accounts will be credited or debited. TransferFundingAccountIDResponseNullable: type: string description: The id of the associated funding account, available in the Plaid Dashboard. If present, this indicates which of your business checking accounts will be credited or debited. nullable: true TransferPaymentProfileToken: description: The payment profile token associated with the Payment Profile that will be debited or credited. Required if not using `access_token`. type: string x-hidden-from-docs: true BankTransferAccessToken: description: The Plaid `access_token` for the account that will be debited or credited. type: string APISecret: title: APISecret type: string description: Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body. APIClientID: title: ClientID type: string description: Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body. ScreeningStatusUpdatedWebhook: title: ScreeningStatusUpdatedWebhook description: Fired when an individual screening status has changed, which can occur manually via the dashboard or during ongoing monitoring. type: object additionalProperties: true properties: webhook_type: type: string description: '`SCREENING`' webhook_code: type: string description: '`STATUS_UPDATED`' screening_id: type: string description: The ID of the associated screening. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - screening_id - environment x-examples: example-1: webhook_type: SCREENING webhook_code: STATUS_UPDATED screening_id: scr_52xR9LKo77r1Np environment: production EntityScreeningStatusUpdatedWebhook: title: EntityScreeningStatusUpdatedWebhook description: Fired when an entity screening status has changed, which can occur manually via the dashboard or during ongoing monitoring. type: object additionalProperties: true properties: webhook_type: type: string description: '`ENTITY_SCREENING`' webhook_code: type: string description: '`STATUS_UPDATED`' entity_screening_id: type: string description: The ID of the associated entity screening. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - entity_screening_id - environment x-examples: example-1: webhook_type: ENTITY_SCREENING webhook_code: STATUS_UPDATED entity_screening_id: entscr_52xR9LKo77r1Np environment: production BeaconUserStatusUpdatedWebhook: title: BeaconUserStatusUpdatedWebhook deprecated: true description: Fired when a Beacon User status has changed, which can occur manually via the dashboard or when information is reported to the Beacon network. type: object additionalProperties: true properties: webhook_type: type: string description: '`BEACON`' webhook_code: type: string description: '`USER_STATUS_UPDATED`' beacon_user_id: type: string description: The ID of the associated Beacon user. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - beacon_user_id - environment x-examples: example-1: webhook_type: BEACON webhook_code: USER_STATUS_UPDATED beacon_user_id: becusr_4WciCrtbxF76T8 environment: production BeaconReportCreatedWebhook: title: BeaconReportCreatedWebhook deprecated: true description: Fired when one of your Beacon Users is first reported to the Beacon network. type: object additionalProperties: true properties: webhook_type: type: string description: '`BEACON`' webhook_code: type: string description: '`REPORT_CREATED`' beacon_report_id: type: string description: The ID of the associated Beacon Report. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - beacon_report_id - environment x-examples: example-1: webhook_type: BEACON webhook_code: REPORT_CREATED beacon_report_id: becrpt_2zugxV6hWQZG91 environment: production BeaconReportUpdatedWebhook: title: BeaconReportUpdatedWebhook deprecated: true description: Fired when one of your existing Beacon Reports has been modified or removed from the Beacon Network. type: object additionalProperties: true properties: webhook_type: type: string description: '`BEACON`' webhook_code: type: string description: '`REPORT_UPDATED`' beacon_report_id: type: string description: The ID of the associated Beacon Report. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - beacon_report_id - environment x-examples: example-1: webhook_type: BEACON webhook_code: REPORT_UPDATED beacon_report_id: becrpt_2zugxV6hWQZG91 environment: production BeaconReportSyndicationCreatedWebhook: title: BeaconReportSyndicationCreatedWebhook deprecated: true description: Fired when a report created on the Beacon Network matches with one of your Beacon Users. type: object additionalProperties: true properties: webhook_type: type: string description: '`BEACON`' webhook_code: type: string description: '`REPORT_SYNDICATION_CREATED`' beacon_report_syndication_id: type: string description: The ID of the associated Beacon Report Syndication. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - beacon_report_syndication_id - environment x-examples: example-1: webhook_type: BEACON webhook_code: REPORT_SYNDICATION_CREATED beacon_report_syndication_id: becrsn_eZPgiiv3JH8rfT environment: production BeaconDuplicateDetectedWebhook: title: BeaconDuplicateDetectedWebhook deprecated: true description: Fired when a Beacon User created within your organization matches one of your existing users. type: object additionalProperties: true properties: webhook_type: type: string description: '`BEACON`' webhook_code: type: string description: '`DUPLICATE_DETECTED`' beacon_duplicate_id: type: string description: The ID of the associated Beacon Duplicate. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - beacon_duplicate_id - environment x-examples: example-1: webhook_type: BEACON webhook_code: DUPLICATE_DETECTED beacon_duplicate_id: becdup_erJcFn97r9sugZ environment: production IdentityVerificationStepUpdatedWebhook: title: IdentityVerificationStepUpdatedWebhook description: Fired when an end user has completed a step of the Identity Verification process. type: object additionalProperties: true properties: webhook_type: type: string description: '`IDENTITY_VERIFICATION`' webhook_code: type: string description: '`STEP_UPDATED`' identity_verification_id: type: string description: The ID of the associated Identity Verification attempt. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - identity_verification_id - environment x-examples: example-1: webhook_type: IDENTITY_VERIFICATION webhook_code: STEP_UPDATED identity_verification_id: idv_52xR9LKo77r1Np environment: production IdentityVerificationRetriedWebhook: title: IdentityVerificationRetriedWebhook description: Fired when an identity verification has been retried, which can be triggered via the dashboard or the API. type: object additionalProperties: true properties: webhook_type: type: string description: '`IDENTITY_VERIFICATION`' webhook_code: type: string description: '`RETRIED`' identity_verification_id: type: string description: The ID of the associated Identity Verification attempt. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - identity_verification_id - environment x-examples: example-1: webhook_type: IDENTITY_VERIFICATION webhook_code: RETRIED identity_verification_id: idv_52xR9LKo77r1Np environment: production IdentityVerificationStatusUpdatedWebhook: title: IdentityVerificationStatusUpdatedWebhook description: Fired when the status of an identity verification has been updated, which can be triggered via the dashboard or the API. type: object additionalProperties: true properties: webhook_type: type: string description: '`IDENTITY_VERIFICATION`' webhook_code: type: string description: '`STATUS_UPDATED`' identity_verification_id: type: string description: The ID of the associated Identity Verification attempt. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - identity_verification_id - environment x-examples: example-1: webhook_type: IDENTITY_VERIFICATION webhook_code: STATUS_UPDATED identity_verification_id: idv_52xR9LKo77r1Np environment: production TransactionsRemovedWebhook: title: TransactionsRemovedWebhook description: |- Fired when transaction(s) for an Item are deleted. The deleted transaction IDs are included in the webhook payload. Plaid will typically check for deleted transaction data several times a day. This webhook is intended for use with `/transactions/get`; if you are using the newer `/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`TRANSACTIONS_REMOVED`' error: $ref: '#/components/schemas/PlaidError' removed_transactions: type: array description: An array of `transaction_ids` corresponding to the removed transactions items: type: string item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - removed_transactions - item_id - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: TRANSACTIONS_REMOVED item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb removed_transactions: - yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6 - kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no error: null environment: production ProcessorTransactionsRemovedWebhook: title: ProcessorTransactionsRemovedWebhook description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when transaction(s) for an Item are deleted. The deleted transaction IDs are included in the webhook payload. Plaid will typically check for deleted transaction data several times a day. This webhook is intended for use with `/processor/transactions/get`; if you are using the newer `/processor/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`TRANSACTIONS_REMOVED`' error: $ref: '#/components/schemas/PlaidError' removed_transactions: type: array description: An array of `transaction_ids` corresponding to the removed transactions items: type: string account_id: type: string description: The ID of the account. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - removed_transactions - account_id - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: TRANSACTIONS_REMOVED account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK removed_transactions: - yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6 - kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no error: null environment: production DefaultUpdateWebhook: title: DefaultUpdateWebhook type: object additionalProperties: true description: | Fired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day. This webhook is intended for use with `/transactions/get`; if you are using the newer `/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: null new_transactions: 3 environment: production properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`DEFAULT_UPDATE`' error: $ref: '#/components/schemas/PlaidError' new_transactions: type: number description: The number of new transactions detected since the last time this webhook was fired. title: DefaultUpdateWebhook item_id: type: string description: The `item_id` of the Item the webhook relates to. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - item_id - environment ProcessorDefaultUpdateWebhook: title: ProcessorDefaultUpdateWebhook type: object additionalProperties: true description: | This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day. This webhook is intended for use with `/processor/transactions/get`; if you are using the newer `/processor/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: DEFAULT_UPDATE account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK error: null new_transactions: 3 environment: production properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`DEFAULT_UPDATE`' error: $ref: '#/components/schemas/PlaidError' new_transactions: type: number description: The number of new transactions detected since the last time this webhook was fired. title: DefaultUpdateWebhook account_id: type: string description: The ID of the account. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - account_id - environment SyncUpdatesAvailableWebhook: title: SyncUpdatesAvailableWebhook description: |- Fired when an Item's transactions change. This can be due to any event resulting in new changes, such as an initial 30-day transactions fetch upon the initialization of an Item with transactions, the backfill of historical transactions that occurs shortly after, or when changes are populated from a regularly-scheduled transactions update job. It is recommended to listen for the `SYNC_UPDATES_AVAILABLE` webhook when using the `/transactions/sync` endpoint. Note that when using `/transactions/sync` the older webhooks `INITIAL_UPDATE`, `HISTORICAL_UPDATE`, `DEFAULT_UPDATE`, and `TRANSACTIONS_REMOVED`, which are intended for use with `/transactions/get`, will also continue to be sent in order to maintain backwards compatibility. It is not necessary to listen for and respond to those webhooks when using `/transactions/sync`. After receipt of this webhook, the new changes can be fetched for the Item from `/transactions/sync`. Note that to receive this webhook for an Item, `/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. This webhook will fire in the Sandbox environment as it would in Production. It can also be manually triggered in Sandbox by calling `/sandbox/item/fire_webhook`. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`SYNC_UPDATES_AVAILABLE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' initial_update_complete: type: boolean description: Indicates if initial pull information (most recent 30 days of transaction history) is available. historical_update_complete: type: boolean description: Indicates if historical pull information (maximum transaction history requested, up to 2 years) is available. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - initial_update_complete - historical_update_complete - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: SYNC_UPDATES_AVAILABLE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw initial_update_complete: true historical_update_complete: false environment: production ProcessorSyncUpdatesAvailableWebhook: title: ProcessorSyncUpdatesAvailableWebhook description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when an Item's transactions change. This can be due to any event resulting in new changes, such as an initial 30-day transactions fetch upon the initialization of an Item with transactions, the backfill of historical transactions that occurs shortly after, or when changes are populated from a regularly-scheduled transactions update job. It is recommended to listen for the `SYNC_UPDATES_AVAILABLE` webhook when using the `/processor/transactions/sync` endpoint. Note that when using `/processor/transactions/sync` the older webhooks `INITIAL_UPDATE`, `HISTORICAL_UPDATE`, `DEFAULT_UPDATE`, and `TRANSACTIONS_REMOVED`, which are intended for use with `/processor/transactions/get`, will also continue to be sent in order to maintain backwards compatibility. It is not necessary to listen for and respond to those webhooks when using `/processor/transactions/sync`. 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 `/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 additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`SYNC_UPDATES_AVAILABLE`' account_id: type: string description: The ID of the account. initial_update_complete: type: boolean description: Indicates if initial pull information is available. historical_update_complete: type: boolean description: Indicates if historical pull information is available. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - account_id - initial_update_complete - historical_update_complete - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: SYNC_UPDATES_AVAILABLE account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK initial_update_complete: true historical_update_complete: false environment: production RecurringTransactionsUpdateWebhook: title: RecurringTransactionsUpdateWebhook description: |- Fired when recurring transactions data is updated. This includes when a new recurring stream is detected or when a new transaction is added to an existing recurring stream. The `RECURRING_TRANSACTIONS_UPDATE` webhook will also fire when one or more attributes of the recurring stream changes, which is usually a result of the addition, update, or removal of transactions to the stream. After receipt of this webhook, the updated data can be fetched from `/transactions/recurring/get`. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`RECURRING_TRANSACTIONS_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' account_ids: type: array description: A list of `account_ids` for accounts that have new or updated recurring transactions data. items: type: string environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - account_ids - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: RECURRING_TRANSACTIONS_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb account_ids: - lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje - lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff environment: production ProcessorRecurringTransactionsUpdateWebhook: title: ProcessorRecurringTransactionsUpdateWebhook description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when recurring transactions data is updated. This includes when a new recurring stream is detected or when a new transaction is added to an existing recurring stream. The `RECURRING_TRANSACTIONS_UPDATE` webhook will also fire when one or more attributes of the recurring stream changes, which is usually a result of the addition, update, or removal of transactions to the stream. After receipt of this webhook, the updated data can be fetched from `/processor/transactions/recurring/get`. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`RECURRING_TRANSACTIONS_UPDATE`' account_id: type: string description: The ID of the account. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - account_id - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: RECURRING_TRANSACTIONS_UPDATE account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK environment: production IdentityDefaultUpdateWebhook: x-examples: example-1: webhook_type: IDENTITY webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb account_ids_with_updated_identity: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp: - ADDRESSES error: null environment: production title: IdentityDefaultUpdateWebhook type: object additionalProperties: true description: Fired when a change to identity data has been detected on an Item. Items are checked for identity updates every 30-90 days. We recommend that upon receiving this webhook you make another call to `/identity/get` to fetch the user's latest identity data. properties: webhook_type: type: string description: '`IDENTITY`' webhook_code: type: string description: '`DEFAULT_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' account_ids_with_updated_identity: $ref: '#/components/schemas/AccountIdsWithUpdatedIdentity' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - error - account_ids_with_updated_identity - environment AccountIdsWithUpdatedIdentity: title: AccountIdsWithUpdatedIdentity type: object additionalProperties: type: array items: $ref: '#/components/schemas/IdentityUpdateTypes' description: | An object with keys of `account_id`'s that are mapped to their respective identity attributes that changed. Example: `{ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": ["PHONES"] }` IdentityUpdateTypes: type: string description: The possible types of identity data that may have changed. enum: - PHONES - ADDRESSES - EMAILS - NAMES HistoricalUpdateWebhook: title: HistoricalUpdateWebhook description: |- Fired when an Item's historical transaction pull is completed and Plaid has prepared as much historical transaction data as possible for the Item. Once this webhook has been fired, transaction data beyond the most recent 30 days can be fetched for the Item. This webhook will also be fired if account selections for the Item are updated, with `new_transactions` set to the number of net new transactions pulled after the account selection update. This webhook is intended for use with `/transactions/get`; if you are using the newer `/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`HISTORICAL_UPDATE`' error: $ref: '#/components/schemas/PlaidError' new_transactions: type: number description: The number of new transactions available item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - item_id - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: HISTORICAL_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: null new_transactions: 231 environment: production ProcessorHistoricalUpdateWebhook: title: ProcessorHistoricalUpdateWebhook description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when an Item's historical transaction pull is completed and Plaid has prepared as much historical transaction data as possible for the Item. Once this webhook has been fired, transaction data beyond the most recent 30 days can be fetched for the Item. This webhook will also be fired if account selections for the Item are updated, with `new_transactions` set to the number of net new transactions pulled after the account selection update. This webhook is intended for use with `/processor/transactions/get`; if you are using the newer `/processor/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`HISTORICAL_UPDATE`' error: $ref: '#/components/schemas/PlaidError' new_transactions: type: number description: The number of new transactions available account_id: type: string description: The ID of the account. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - account_id - environment x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: HISTORICAL_UPDATE account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK error: null new_transactions: 231 environment: production InitialUpdateWebhook: title: InitialUpdateWebhook description: |- Fired when an Item's initial transaction pull is completed. Once this webhook has been fired, transaction data for the most recent 30 days can be fetched for the Item. This webhook will also be fired if account selections for the Item are updated, with `new_transactions` set to the number of net new transactions pulled after the account selection update. This webhook is intended for use with `/transactions/get`; if you are using the newer `/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: INITIAL_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: null new_transactions: 19 environment: production properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`INITIAL_UPDATE`' error: type: string nullable: true description: The error code associated with the webhook. new_transactions: type: number description: The number of new transactions available. item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - item_id - environment ProcessorInitialUpdateWebhook: title: ProcessorInitialUpdateWebhook description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when an Item's initial transaction pull is completed. Once this webhook has been fired, transaction data for the most recent 30 days can be fetched for the Item. This webhook will also be fired if account selections for the Item are updated, with `new_transactions` set to the number of net new transactions pulled after the account selection update. This webhook is intended for use with `/processor/transactions/get`; if you are using the newer `/processor/transactions/sync` endpoint, this webhook will still be fired to maintain backwards compatibility, but it is recommended to listen for and respond to the `SYNC_UPDATES_AVAILABLE` webhook instead. type: object additionalProperties: true x-examples: example-1: webhook_type: TRANSACTIONS webhook_code: INITIAL_UPDATE account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK error: null new_transactions: 19 environment: production properties: webhook_type: type: string description: '`TRANSACTIONS`' webhook_code: type: string description: '`INITIAL_UPDATE`' error: type: string nullable: true description: The error code associated with the webhook. new_transactions: type: number description: The number of new transactions available. account_id: type: string description: The ID of the account. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - new_transactions - account_id - environment ProcessorTokenWebhookUpdate: title: ProcessorTokenWebhookUpdate description: |- This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/). Fired when a processor updates the webhook URL for a processor token via `/processor/token/webhook/update`. type: object additionalProperties: true properties: webhook_type: type: string description: '`PROCESSOR_TOKEN`' webhook_code: type: string description: '`WEBHOOK_UPDATE_ACKNOWLEDGED`' error: $ref: '#/components/schemas/PlaidError' account_id: type: string description: The ID of the account. new_webhook_url: type: string description: The new webhook URL. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - account_id - new_webhook_url - environment x-examples: example-1: webhook_type: PROCESSOR_TOKEN webhook_code: WEBHOOK_UPDATE_ACKNOWLEDGED account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK new_webhook_url: https://www.example.com error: null environment: production IssueResolvedWebhook: title: IssueResolvedWebhook description: Webhook notifications are sent only when a subscribed issue is marked as resolved. The payload contains details about the issue at the time of its resolution, focusing on the most essential information. type: object additionalProperties: true properties: webhook_type: type: string description: '`ISSUES`' webhook_code: type: string description: '`ISSUE_RESOLVED`' issue_id: type: string description: The unique identifier of the connectivity issue. issue_description: type: string description: A simple description of the error for the end user. issue_resolved_at: type: string format: date-time description: The time when the issue was marked as resolved. institution_id: type: string description: The unique identifier of the financial institution involved. institution_name: type: string description: The name of the financial institution involved. required: - webhook_type - webhook_code - issue_id - issue_description - issue_resolved_at - institution_id - institution_name x-examples: example-1: webhook_type: ISSUES webhook_code: ISSUE_RESOLVED issue_id: KI123456 issue_description: Connection to Example Bank temporarily unavailable. issue_resolved_at: "2023-07-03T14:30:00Z" institution_id: ins_4 institution_name: Example Bank PhoneNumber: title: PhoneNumber type: object additionalProperties: true description: A phone number properties: data: type: string description: The phone number. primary: type: boolean description: When `true`, identifies the phone number as the primary number on an account. type: type: string enum: - home - work - office - mobile - mobile1 - other description: The type of phone number. required: - data - primary - type Email: title: Email type: object additionalProperties: true properties: data: type: string description: The email address. primary: type: boolean description: When `true`, identifies the email address as the primary email on an account. type: type: string enum: - primary - secondary - other description: The type of email account as described by the financial institution. required: - data - primary - type description: An object representing an email address Address: title: Address type: object additionalProperties: true description: A physical mailing address. properties: data: $ref: '#/components/schemas/AddressData' primary: type: boolean description: When `true`, identifies the address as the primary address on an account. required: - data AddressNullable: description: A physical mailing address. nullable: true allOf: - $ref: '#/components/schemas/Address' - type: object additionalProperties: true AddressDataNullable: description: Data about the components comprising an address. nullable: true allOf: - $ref: '#/components/schemas/AddressData' - type: object additionalProperties: true AddressDataNullableNoRequiredFields: description: Data about the components comprising an address. nullable: true allOf: - $ref: '#/components/schemas/AddressDataNotRequired' - type: object additionalProperties: true AddressData: title: AddressData type: object additionalProperties: true description: Data about the components comprising an address. properties: city: type: string description: The full city name nullable: true region: type: string description: |- The region or state. In API versions 2018-05-22 and earlier, this field is called `state`. Example: `"NC"` nullable: true street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` postal_code: type: string description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code nullable: true required: - city - region - street - postal_code - country AddressDataNotRequired: title: AddressData type: object additionalProperties: true description: Data about the components comprising an address. properties: city: type: string description: The full city name nullable: true region: type: string description: |- The region or state. In API versions 2018-05-22 and earlier, this field is called `state`. Example: `"NC"` nullable: true street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` postal_code: type: string description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code nullable: true ProcessorToken: title: ProcessorToken type: string description: 'The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor--`' Owner: title: Owner type: object additionalProperties: true description: Data returned from the financial institution about the owner or owners of an account. Only the `names` array must be non-empty. properties: names: description: |- A list of names associated with the account by the financial institution. In the case of a joint account, Plaid will make a best effort to report the names of all account holders. If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array. type: array items: type: string phone_numbers: type: array description: A list of phone numbers associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution. items: $ref: '#/components/schemas/PhoneNumber' emails: type: array description: A list of email addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution. items: $ref: '#/components/schemas/Email' addresses: type: array description: Data about the various addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution. items: $ref: '#/components/schemas/Address' required: - names - phone_numbers - emails - addresses OwnerOverride: title: OwnerOverride type: object additionalProperties: true description: Data about the owner or owners of an account. Any fields not specified will be filled in with default Sandbox information. properties: names: description: A list of names associated with the account by the financial institution. These should always be the names of individuals, even for business accounts. Note that the same name data will be used for all accounts associated with an Item. type: array items: type: string phone_numbers: type: array description: A list of phone numbers associated with the account. items: $ref: '#/components/schemas/PhoneNumber' emails: type: array description: A list of email addresses associated with the account. items: $ref: '#/components/schemas/Email' addresses: type: array description: Data about the various addresses associated with the account. items: $ref: '#/components/schemas/Address' required: - names - phone_numbers - emails - addresses LiabilitiesObject: title: LiabilitiesObject type: object additionalProperties: true description: An object containing liability accounts properties: credit: type: array description: The credit accounts returned. nullable: true items: $ref: '#/components/schemas/CreditCardLiability' mortgage: description: The mortgage accounts returned. type: array nullable: true items: $ref: '#/components/schemas/MortgageLiability' student: description: The student loan accounts returned. type: array nullable: true items: $ref: '#/components/schemas/StudentLoan' required: - credit - mortgage - student StudentLoan: title: StudentLoan type: object additionalProperties: true description: Contains details about a student loan account properties: account_id: type: string description: The ID of the account that this liability belongs to. Each account can only contain one liability. nullable: true account_number: type: string description: The account number of the loan. For some institutions, this may be a masked version of the number (e.g., the last 4 digits instead of the entire number). nullable: true disbursement_dates: description: The dates on which loaned funds were disbursed or will be disbursed. These are often in the past. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). type: array nullable: true items: type: string format: date expected_payoff_date: type: string format: date description: The date when the student loan is expected to be paid off. Availability for this field is limited. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true guarantor: type: string description: The guarantor of the student loan. nullable: true interest_rate_percentage: description: The interest rate on the loan as a percentage. type: number format: double is_overdue: description: '`true` if a payment is currently overdue. Availability for this field is limited.' type: boolean nullable: true last_payment_amount: description: The amount of the last payment. type: number format: double nullable: true last_payment_date: type: string format: date description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true last_statement_balance: description: The total amount owed as of the last statement issued type: number format: double nullable: true last_statement_issue_date: type: string format: date description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true loan_name: type: string description: The type of loan, e.g., "Consolidation Loans". nullable: true loan_status: $ref: '#/components/schemas/StudentLoanStatus' minimum_payment_amount: description: |- The minimum payment due for the next billing cycle. There are some exceptions: Some institutions require a minimum payment across all loans associated with an account number. Our API presents that same minimum payment amount on each loan. The institutions that do this are: Great Lakes ( `ins_116861`), Firstmark (`ins_116295`), Commonbond Firstmark Services (`ins_116950`), Granite State (`ins_116308`), and Oklahoma Student Loan Authority (`ins_116945`). Firstmark (`ins_116295` ) and Navient (`ins_116248`) will display as $0 if there is an autopay program in effect. type: number format: double nullable: true next_payment_due_date: type: string format: date description: The due date for the next payment. The due date is `null` if a payment is not expected. A payment is not expected if `loan_status.type` is `deferment`, `in school`, `consolidated`, `paid in full`, or `transferred`. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true origination_date: type: string format: date description: | The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true origination_principal_amount: description: The original principal balance of the loan. type: number format: double nullable: true outstanding_interest_amount: description: The total dollar amount of the accrued interest balance. For Sallie Mae ( `ins_116944`), this amount is included in the current balance of the loan, so this field will return as `null`. type: number format: double 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. nullable: true pslf_status: $ref: '#/components/schemas/PSLFStatus' repayment_plan: $ref: '#/components/schemas/StudentRepaymentPlan' sequence_number: type: string description: The sequence number of the student loan. Heartland ECSI (`ins_116948`) does not make this field available. nullable: true servicer_address: $ref: '#/components/schemas/ServicerAddressData' ytd_interest_paid: description: The year to date (YTD) interest paid. Availability for this field is limited. type: number format: double nullable: true ytd_principal_paid: description: The year to date (YTD) principal paid. Availability for this field is limited. type: number format: double nullable: true required: - account_id - account_number - disbursement_dates - expected_payoff_date - guarantor - interest_rate_percentage - is_overdue - last_payment_amount - last_payment_date - last_statement_issue_date - loan_name - loan_status - minimum_payment_amount - next_payment_due_date - origination_date - origination_principal_amount - outstanding_interest_amount - payment_reference_number - pslf_status - repayment_plan - sequence_number - servicer_address - ytd_interest_paid - ytd_principal_paid CreditCardLiability: title: CreditCardLiability type: object additionalProperties: true description: An object representing a credit card account. properties: account_id: type: string description: The ID of the account that this liability belongs to. nullable: true aprs: type: array description: The various interest rates that apply to the account. APR information is not provided by all card issuers; if APR data is not available, this array will be empty. items: $ref: '#/components/schemas/APR' is_overdue: description: true if a payment is currently overdue. Availability for this field is limited. type: boolean nullable: true last_payment_amount: description: The amount of the last payment. type: number format: double nullable: true last_payment_date: type: string format: date nullable: true description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Availability for this field is limited. last_statement_issue_date: type: string format: date description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true last_statement_balance: description: The total amount owed as of the last statement issued type: number format: double nullable: true minimum_payment_amount: description: The minimum payment due for the next billing cycle. type: number format: double nullable: true next_payment_due_date: type: string format: date description: The due date for the next payment. The due date is `null` if a payment is not expected. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true required: - account_id - aprs - is_overdue - last_payment_amount - last_payment_date - last_statement_issue_date - last_statement_balance - minimum_payment_amount - next_payment_due_date MortgageLiability: title: MortgageLiability type: object additionalProperties: true description: Contains details about a mortgage account. properties: account_id: type: string description: The ID of the account that this liability belongs to. account_number: type: string description: The account number of the loan. nullable: true current_late_fee: description: The current outstanding amount charged for late payment. type: number format: double nullable: true escrow_balance: type: number format: double description: Total amount held in escrow to pay taxes and insurance on behalf of the borrower. nullable: true has_pmi: type: boolean description: Indicates whether the borrower has private mortgage insurance in effect. nullable: true has_prepayment_penalty: description: Indicates whether the borrower will pay a penalty for early payoff of mortgage. type: boolean nullable: true interest_rate: $ref: '#/components/schemas/MortgageInterestRate' last_payment_amount: description: The amount of the last payment. type: number format: double nullable: true last_payment_date: type: string format: date description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true loan_type_description: description: Description of the type of loan, for example `conventional`, `fixed`, or `variable`. This field is provided directly from the loan servicer and does not have an enumerated set of possible values. type: string nullable: true loan_term: description: Full duration of mortgage as at origination (e.g. `10 year`). type: string nullable: true maturity_date: type: string format: date description: Original date on which mortgage is due in full. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true next_monthly_payment: type: number format: double description: The amount of the next payment. nullable: true next_payment_due_date: description: The due date for the next payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). type: string format: date nullable: true origination_date: description: The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). type: string format: date nullable: true origination_principal_amount: type: number format: double description: The original principal balance of the mortgage. nullable: true past_due_amount: type: number format: double description: Amount of loan (principal + interest) past due for payment. nullable: true property_address: $ref: '#/components/schemas/MortgagePropertyAddress' ytd_interest_paid: description: The year to date (YTD) interest paid. type: number format: double nullable: true ytd_principal_paid: type: number format: double description: The YTD principal paid. nullable: true required: - account_id - account_number - current_late_fee - escrow_balance - has_pmi - has_prepayment_penalty - interest_rate - last_payment_amount - last_payment_date - loan_type_description - loan_term - maturity_date - next_monthly_payment - next_payment_due_date - origination_date - origination_principal_amount - past_due_amount - property_address - ytd_interest_paid - ytd_principal_paid MortgageInterestRate: title: MortgageInterestRate type: object additionalProperties: true description: Object containing metadata about the interest rate for the mortgage. properties: percentage: type: number format: double description: Percentage value (interest rate of current mortgage, not APR) of interest payable on a loan. nullable: true type: type: string description: The type of interest charged (fixed or variable). nullable: true required: - percentage - type MortgagePropertyAddress: title: MortgagePropertyAddress type: object additionalProperties: true description: Object containing fields describing property address. properties: city: type: string description: The city name. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code. nullable: true postal_code: type: string description: The five or nine digit postal code. nullable: true region: type: string description: The region or state (example "NC"). nullable: true street: type: string description: The full street address (example "564 Main Street, Apt 15"). nullable: true required: - city - country - postal_code - region - street StudentLoanStatus: title: StudentLoanStatus type: object additionalProperties: true description: An object representing the status of the student loan properties: end_date: type: string format: date description: | The date until which the loan will be in its current status. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true type: type: string enum: - cancelled - charged off - claim - consolidated - deferment - delinquent - discharged - extension - forbearance - in grace - in military - in school - not fully disbursed - other - paid in full - refunded - repayment - transferred - pending idr description: The status type of the student loan nullable: true required: - end_date - type StudentRepaymentPlan: title: StudentRepaymentPlan type: object additionalProperties: true description: An object representing the repayment plan for the student loan properties: description: type: string nullable: true description: The description of the repayment plan as provided by the servicer. type: type: string nullable: true enum: - extended graduated - extended standard - graduated - income-contingent repayment - income-based repayment - income-sensitive repayment - interest only - other - pay as you earn - revised pay as you earn - standard - saving on a valuable education - null description: The type of the repayment plan. required: - description - type PSLFStatus: title: PSLFStatus type: object additionalProperties: true x-hidden-from-docs: true deprecated: true description: 'Information about the student''s eligibility in the Public Service Loan Forgiveness program. This is only returned if the institution is FedLoan (`ins_116527`). Since FedLoan no longer services student loans, this field is no longer returned. ' properties: estimated_eligibility_date: type: string format: date description: The estimated date borrower will have completed 120 qualifying monthly payments. Returned in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true payments_made: type: integer description: The number of qualifying payments that have been made. nullable: true payments_remaining: type: integer description: The number of qualifying payments remaining. nullable: true required: - estimated_eligibility_date - payments_made - payments_remaining ServicerAddressData: title: ServicerAddressData type: object additionalProperties: true description: The address of the student loan servicer. This is generally the remittance address to which payments should be sent. properties: city: type: string description: The full city name nullable: true region: type: string description: |- The region or state Example: `"NC"` nullable: true street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` nullable: true postal_code: type: string description: The postal code nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code nullable: true required: - city - region - street - postal_code - country APR: title: APR type: object additionalProperties: true description: Information about the APR on the account. properties: apr_percentage: type: number format: double description: | Annual Percentage Rate applied. apr_type: type: string enum: - balance_transfer_apr - cash_apr - purchase_apr - special description: The type of balance to which the APR applies. balance_subject_to_apr: type: number format: double description: Amount of money that is subjected to the APR if a balance was carried beyond payment due date. How it is calculated can vary by card issuer. It is often calculated as an average daily balance. nullable: true interest_charge_amount: type: number format: double description: Amount of money charged due to interest from last statement. nullable: true required: - apr_percentage - apr_type - balance_subject_to_apr - interest_charge_amount AuthMetadata: title: AuthMetadata type: object additionalProperties: true description: Metadata that captures information about the Auth features of an institution. nullable: true properties: supported_methods: $ref: '#/components/schemas/AuthSupportedMethods' required: - supported_methods AuthSupportedMethods: title: AuthSupportedMethods type: object additionalProperties: true description: Metadata specifically related to which auth methods an institution supports. nullable: true properties: instant_auth: type: boolean description: Indicates if instant auth is supported. instant_match: type: boolean description: Indicates if instant match is supported. automated_micro_deposits: type: boolean description: Indicates if automated micro-deposits are supported. instant_micro_deposits: type: boolean description: Indicates if instant micro-deposits are supported. required: - instant_auth - instant_match - automated_micro_deposits - instant_micro_deposits PaymentInitiationMetadata: title: PaymentInitiationMetadata type: object additionalProperties: true description: Metadata that captures what specific payment configurations an institution supports when making Payment Initiation requests. nullable: true properties: supports_international_payments: type: boolean description: Indicates whether the institution supports payments from a different country. supports_sepa_instant: type: boolean description: Indicates whether the institution supports SEPA Instant payments. maximum_payment_amount: $ref: '#/components/schemas/PaymentInitiationMaximumPaymentAmount' supports_refund_details: type: boolean description: Indicates whether the institution supports returning refund details when initiating a payment. standing_order_metadata: $ref: '#/components/schemas/PaymentInitiationStandingOrderMetadata' supports_payment_consents: type: boolean description: Indicates whether the institution supports payment consents. required: - supports_international_payments - supports_sepa_instant - maximum_payment_amount - supports_refund_details - standing_order_metadata - supports_payment_consents PaymentInitiationMaximumPaymentAmount: type: object description: | A mapping of currency to maximum payment amount (denominated in the smallest unit of currency) supported by the institution. Example: `{"GBP": "10000"}` additionalProperties: type: string PaymentInitiationStandingOrderMetadata: title: PaymentInitiationStandingOrderMetadata type: object additionalProperties: true description: Metadata specifically related to valid Payment Initiation standing order configurations for the institution. nullable: true properties: supports_standing_order_end_date: type: boolean description: Indicates whether the institution supports closed-ended standing orders by providing an end date. supports_standing_order_negative_execution_days: type: boolean description: This is only applicable to `MONTHLY` standing orders. Indicates whether the institution supports negative integers (-1 to -5) for setting up a `MONTHLY` standing order relative to the end of the month. valid_standing_order_intervals: type: array description: A list of the valid standing order intervals supported by the institution. items: $ref: '#/components/schemas/PaymentScheduleInterval' required: - supports_standing_order_end_date - supports_standing_order_negative_execution_days - valid_standing_order_intervals PaymentInitiationAddress: title: PaymentInitiationAddress type: object additionalProperties: true description: The optional address of the payment recipient's bank account. Required by most institutions outside of the UK. nullable: true properties: street: description: An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters. type: array minItems: 1 items: type: string minLength: 1 city: type: string description: The city where the recipient is located. Maximum of 35 characters. minLength: 1 maxLength: 35 postal_code: type: string description: The postal code where the recipient is located. Maximum of 16 characters. minLength: 1 maxLength: 16 country: type: string description: The ISO 3166-1 alpha-2 country code where the recipient is located. minLength: 2 maxLength: 2 required: - street - city - postal_code - country ExternalPaymentScheduleBase: title: ExternalPaymentScheduleBase type: object additionalProperties: true description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once. nullable: true properties: interval: $ref: '#/components/schemas/PaymentScheduleInterval' interval_execution_day: description: |- The day of the interval on which to schedule the payment. If the payment interval is weekly, `interval_execution_day` should be an integer from 1 (Monday) to 7 (Sunday). If the payment interval is monthly, `interval_execution_day` should be an integer indicating which day of the month to make the payment on. Integers from 1 to 28 can be used to make a payment on that day of the month. Negative integers from -1 to -5 can be used to make a payment relative to the end of the month. To make a payment on the last day of the month, use -1; to make the payment on the second-to-last day, use -2, and so on. type: integer start_date: format: date type: string description: |- A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will begin on the first `interval_execution_day` on or after the `start_date`. If the first `interval_execution_day` on or after the start date is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so. end_date: format: date type: string description: |- A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will end on the last `interval_execution_day` on or before the `end_date`. If the only `interval_execution_day` between the start date and the end date (inclusive) is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make a payment on that day, but it is not guaranteed to do so. nullable: true adjusted_start_date: format: date type: string description: The start date sent to the bank after adjusting for holidays or weekends. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, this field will be `null`. nullable: true ExternalPaymentScheduleRequest: title: ExternalPaymentScheduleRequest description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once. allOf: - $ref: '#/components/schemas/ExternalPaymentScheduleBase' - type: object required: - start_date - interval - interval_execution_day PaymentScheduleInterval: type: string title: PaymentScheduleInterval enum: - WEEKLY - MONTHLY description: The frequency interval of the payment. minLength: 1 PaymentScheme: type: string nullable: true enum: - null - LOCAL_DEFAULT - LOCAL_INSTANT - 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). 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. `LOCAL_INSTANT`: The instant payment scheme for the selected market and currency will be used (if applicable). Fees may be applied by the institution. `SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area. `SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks. WalletPaymentScheme: type: string nullable: true enum: - null - FASTER_PAYMENTS - SEPA_CREDIT_TRANSFER - SEPA_CREDIT_TRANSFER_INSTANT description: |- The payment scheme used to execute this transaction. This is present only for transaction types `PAYOUT` and `REFUND`. `FASTER_PAYMENTS`: The standard payment scheme within the UK. `SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area. `SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment to a beneficiary within the SEPA area. PaymentInitiationConsentScope: type: string title: PaymentInitiationConsentScope deprecated: true enum: - ME_TO_ME - EXTERNAL description: |- This field is deprecated in favor of the consent `type` field. Consents are required to have a single type. Payment consent scope. Defines possible directions for payments made with the given consent. `ME_TO_ME`: Allows moving money between accounts owned by the same user. `EXTERNAL`: Allows initiating payments from the user's account to third parties. PaymentInitiationConsentType: type: string title: PaymentInitiationConsentType enum: - SWEEPING - COMMERCIAL description: |- Payment consent type. Defines possible use case for payments made with the given consent. `SWEEPING`: Allows moving money between accounts owned by the same user. `COMMERCIAL`: Allows initiating payments from the user's account to third parties. PaymentInitiationConsentProcessingMode: type: string title: PaymentInitiationConsentProcessingMode enum: - ASYNC - IMMEDIATE description: |- Decides the mode under which the payment processing should be performed, using `IMMEDIATE` as default. `IMMEDIATE`: Will immediately execute the payment, waiting for a response from the ASPSP before returning the result of the payment initiation. This is ideal for user-present flows. `ASYNC`: Will accept a payment execution request and schedule it for processing, immediately returning the new `payment_id`. Listen for webhooks to obtain real-time updates on the payment status. This is ideal for non user-present flows. ExternalPaymentInitiationConsentOptions: type: object title: ExternalPaymentInitiationConsentOptions description: (Deprecated) Additional payment consent options. Please use `payer_details` to specify the account. nullable: true deprecated: true properties: request_refund_details: type: boolean nullable: true description: When `true`, Plaid will attempt to request refund details from the payee's financial institution. Support varies between financial institutions and will not always be available. If refund details could be retrieved, they will be available in the `/payment_initiation/payment/get` response. iban: type: string nullable: true minLength: 15 maxLength: 34 description: The International Bank Account Number (IBAN) for the payer's account. Where possible, the end user will be able to set up payment consent using only the specified bank account if provided. bacs: $ref: '#/components/schemas/PaymentInitiationOptionalRestrictionBacs' PaymentInitiationConsentConstraints: type: object title: PaymentInitiationConsentConstraints description: Limitations that will be applied to payments initiated using the payment consent. properties: valid_date_time: $ref: '#/components/schemas/PaymentConsentValidDateTime' max_payment_amount: $ref: '#/components/schemas/PaymentConsentMaxPaymentAmount' periodic_amounts: type: array description: A list of amount limitations per period of time. minItems: 1 items: $ref: '#/components/schemas/PaymentConsentPeriodicAmount' required: - max_payment_amount - periodic_amounts PaymentInitiationConsentPayerDetails: title: PaymentInitiationConsentPayerDetails type: object nullable: true additionalProperties: true description: |- An object representing the payment consent payer details. Payer `name` and account `numbers` are required to lock the account to which the consent can be created. properties: name: type: string description: The name of the payer as it appears in their bank account minLength: 1 numbers: $ref: '#/components/schemas/PaymentInitiationConsentPayerNumbers' address: $ref: '#/components/schemas/PaymentInitiationAddress' date_of_birth: type: string format: date nullable: true description: The payer's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. phone_numbers: description: 'The payer''s phone numbers in E.164 format: +{countrycode}{number}' type: array items: type: string emails: description: The payer's emails type: array items: type: string required: - name - numbers PaymentInitiationConsentPayerNumbers: title: PaymentInitiationConsentPayerNumbers type: object description: The payer's bank account numbers. Exactly one of IBAN or Bacs data is required. additionalProperties: true properties: bacs: $ref: '#/components/schemas/PaymentInitiationOptionalRestrictionBacs' iban: $ref: '#/components/schemas/NumbersIBANNullable' PaymentConsentMaxPaymentAmount: description: Maximum amount of a single payment initiated using the payment consent. allOf: - $ref: '#/components/schemas/PaymentAmount' ConsentPaymentIdempotencyKey: title: ConsentPaymentIdempotencyKey type: string maxLength: 128 minLength: 1 description: |- A random key provided by the client, per unique consent payment. Maximum of 128 characters. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. If a request to execute a consent payment fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single payment is created. If the request was successfully processed, it will prevent any payment that uses the same idempotency key, and was received within 48 hours of the first request, from being processed. ExternalPaymentOptions: title: PaymentOptions description: Additional payment options type: object nullable: true properties: request_refund_details: type: boolean nullable: true description: When `true`, Plaid will attempt to request refund details from the payee's financial institution. Support varies between financial institutions and will not always be available. If refund details could be retrieved, they will be available in the `/payment_initiation/payment/get` response. iban: type: string nullable: true minLength: 15 maxLength: 34 description: The International Bank Account Number (IBAN) for the payer's account. Where possible, the end user will be able to send payments only from the specified bank account if provided. bacs: $ref: '#/components/schemas/PaymentInitiationOptionalRestrictionBacs' scheme: $ref: '#/components/schemas/PaymentScheme' ExternalPaymentRefundDetails: title: ExternalPaymentRefundDetails description: Details about external payment refund type: object nullable: true properties: name: type: string description: The name of the account holder. iban: type: string description: The International Bank Account Number (IBAN) for the account. nullable: true bacs: $ref: '#/components/schemas/RecipientBACSNullable' required: - name - iban - bacs ExternalPaymentScheduleGet: title: ExternalPaymentScheduleGet nullable: true description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once. allOf: - $ref: '#/components/schemas/ExternalPaymentScheduleBase' - type: object required: - adjusted_start_date - end_date - interval - interval_execution_day - start_date Products: title: Products enum: - assets - auth - balance - balance_plus - beacon - identity - identity_match - investments - investments_auth - liabilities - payment_initiation - identity_verification - transactions - credit_details - income - income_verification - standing_orders - transfer - employment - recurring_transactions - transactions_refresh - signal - statements - processor_payments - processor_identity - profile - cra_base_report - cra_income_insights - cra_partner_insights - cra_network_insights - cra_cashflow_insights - cra_monitoring - cra_lend_score - cra_plaid_credit_score - cra_qualify - layer - pay_by_bank - protect_linked_bank - protect_transactions description: A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization. type: string UserBasedProducts: title: UserBasedProducts enum: - cra_base_report - cra_income_insights - cra_partner_insights - cra_network_insights - cra_cashflow_insights - cra_monitoring - cra_lend_score - cra_plaid_credit_score - investments - liabilities - protect_linked_bank - protect_transactions - transactions description: A list of user-based products. User-based products include Financial Management products, Protect products, CRA products, and subscription products. type: string ProductStatus: title: ProductStatus type: object additionalProperties: true nullable: true description: A representation of the status health of a request type. Auth requests, Balance requests, Identity requests, Investments requests, Liabilities requests, Transactions updates, Investments updates, Liabilities updates, and Item logins each have their own status object. properties: status: type: string deprecated: true enum: - HEALTHY - DEGRADED - DOWN description: |- This field is deprecated in favor of the `breakdown` object, which provides more granular institution health data. `HEALTHY`: the majority of requests are successful `DEGRADED`: only some requests are successful `DOWN`: all requests are failing last_status_change: type: string format: date-time description: | [ISO 8601](https://wikipedia.org/wiki/ISO_8601) formatted timestamp of the last status change for the institution. breakdown: $ref: '#/components/schemas/ProductStatusBreakdown' required: - status - last_status_change - breakdown ProductStatusBreakdown: 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/#troubleshooting-institution-insights). properties: success: description: The percentage of login attempts that are successful, expressed as a decimal. type: number format: double error_plaid: description: | The percentage of logins that are failing due to an internal Plaid issue, expressed as a decimal. type: number format: double error_institution: description: The percentage of logins that are failing due to an issue in the institution's system, expressed as a decimal. type: number format: double refresh_interval: type: string enum: - NORMAL - DELAYED - STOPPED description: How frequently data for subscription products like Investments, Transactions, and Liabilities, is being refreshed, relative to the institution's normal scheduling. The `refresh_interval` may be `DELAYED` or `STOPPED` even when the success rate is high. required: - success - error_plaid - error_institution UserCustomPassword: title: UserCustomPassword type: object additionalProperties: true description: Custom test accounts are configured with a JSON configuration object formulated according to the schema below. All top level fields are optional. Sending an empty object as a configuration will result in an account configured with random balances and transaction history. x-examples: {} properties: version: type: string description: The version of the password schema to use, possible values are 1 or 2. The default value is 2. You should only specify 1 if you know it is necessary for your test suite. nullable: true seed: type: string description: |- A seed, in the form of a string, that will be used to randomly generate account and transaction data, if this data is not specified using the `override_accounts` argument. If no seed is specified, the randomly generated data will be different each time. Note that transactions data is generated relative to the Item's creation date. Different Items created on different dates with the same seed for transactions data will have different dates for the transactions. The number of days between each transaction and the Item creation will remain constant. For example, an Item created on December 15 might show a transaction on December 14. An Item created on December 20, using the same seed, would show that same transaction occurring on December 19. override_accounts: type: array description: An array of account overrides to configure the accounts for the Item. By default, if no override is specified, transactions and account data will be randomly generated based on the account type and subtype, and other products will have fixed or empty data. items: $ref: '#/components/schemas/OverrideAccounts' mfa: $ref: '#/components/schemas/MFA' recaptcha: type: string description: You may trigger a reCAPTCHA in Plaid Link in the Sandbox environment by using the recaptcha field. Possible values are `good` or `bad`. A value of `good` will result in successful Item creation and `bad` will result in a `RECAPTCHA_BAD` error to simulate a failed reCAPTCHA. Both values require the reCAPTCHA to be manually solved within Plaid Link. force_error: type: string description: |- An error code to force on Item creation. Possible values are: `"INSTITUTION_NOT_RESPONDING"` `"INSTITUTION_NO_LONGER_SUPPORTED"` `"INVALID_CREDENTIALS"` `"INVALID_MFA"` `"ITEM_LOCKED"` `"ITEM_LOGIN_REQUIRED"` `"ITEM_NOT_SUPPORTED"` `"INVALID_LINK_TOKEN"` `"MFA_NOT_SUPPORTED"` `"NO_ACCOUNTS"` `"PLAID_ERROR"` `"USER_INPUT_TIMEOUT"` `"USER_SETUP_REQUIRED"` required: - seed - override_accounts - mfa - recaptcha - force_error MFA: title: MFA type: object additionalProperties: true properties: type: type: string description: |- Possible values are `device`, `selections`, or `questions`. If value is `device`, the MFA answer is `1234`. If value is `selections`, the MFA answer is always the first option. If value is `questions`, the MFA answer is `answer__` for the j-th question in the i-th round, starting from 0. For example, the answer to the first question in the second round is `answer_1_0`. question_rounds: type: number description: 'Number of rounds of questions. Required if value of `type` is `questions`. ' questions_per_round: type: number description: Number of questions per round. Required if value of `type` is `questions`. If value of type is `selections`, default value is 2. selection_rounds: description: Number of rounds of selections, used if `type` is `selections`. Defaults to 1. type: number selections_per_question: type: number description: | Number of available answers per question, used if `type` is `selections`. Defaults to 2. required: - type - question_rounds - questions_per_round - selection_rounds - selections_per_question description: Specifies the multi-factor authentication settings to use with this test account OverrideAccounts: 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 be calculated from other test data in order to achieve more consistent, realistic test data. properties: type: $ref: '#/components/schemas/OverrideAccountType' subtype: $ref: '#/components/schemas/AccountSubtype' starting_balance: type: number format: double description: | If provided, the account will start with this amount as the current balance. 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. Cannot be set together with `has_null_available_balance`. has_null_available_balance: type: boolean description: | If set to `true`, the account will always have null as its available balance, regardless of current balance or changes in transactions over time. Cannot be set together with `force_available_balance`. 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. meta: $ref: '#/components/schemas/Meta' numbers: $ref: '#/components/schemas/Numbers' transactions: description: Specify the list of transactions on the account. type: array items: $ref: '#/components/schemas/TransactionOverride' holdings: $ref: '#/components/schemas/HoldingsOverride' investment_transactions: $ref: '#/components/schemas/Investments_TransactionsOverride' identity: $ref: '#/components/schemas/OwnerOverride' liability: $ref: '#/components/schemas/LiabilityOverride' inflow_model: $ref: '#/components/schemas/InflowModel' income: $ref: '#/components/schemas/IncomeOverride' required: - type - subtype - starting_balance - force_available_balance - has_null_available_balance - currency - meta - numbers - transactions - identity - liability - inflow_model Meta: title: Meta type: object additionalProperties: true description: Allows specifying the metadata of the test account properties: name: type: string description: The account's name official_name: type: string description: The account's official name limit: type: number format: double description: The account's limit mask: type: string description: The account's mask. Should be an empty string or a string of 2-4 alphanumeric characters. This allows you to model a mask which does not match the account number (such as with a virtual account number). pattern: ^$|^[A-Za-z0-9]{2,4}$ required: - name - official_name - limit - mask Numbers: title: Numbers type: object additionalProperties: true description: Account and bank identifier number data used to configure the test account. All values are optional. properties: account: type: string description: Will be used for the account number. ach_routing: type: string description: Must be a valid ACH routing number. To test `/transfer/capabilities/get`, set this to 322271627 to force a `true` result. ach_wire_routing: type: string description: Must be a valid wire transfer routing number. eft_institution: type: string description: EFT institution number. Must be specified alongside `eft_branch`. eft_branch: type: string description: EFT branch number. Must be specified alongside `eft_institution`. international_bic: type: string description: Business Identifier Code (BIC). Must be specified alongside `international_iban`. international_iban: type: string description: International Bank Account Number (IBAN). If no account number is specified via `account`, will also be used as the account number by default. Must be specified alongside `international_bic`. bacs_sort_code: type: string description: Bacs sort code TransactionOverride: title: TransactionOverride type: object additionalProperties: true description: Data to populate as test transaction data. If not specified, random transactions will be generated instead. properties: date_transacted: type: string format: date description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Transactions in Sandbox will move from pending to posted once their transaction date has been reached. If a `date_transacted` is not provided by the institution, a transaction date may be available in the [`authorized_date`](https://plaid.com/docs/api/products/transactions/#transactions-get-response-transactions-authorized-date) field. date_posted: type: string format: date description: The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Posted dates in the past or present will result in posted transactions; posted dates in the future will result in pending transactions. amount: type: number format: double description: The transaction amount. Can be negative. description: type: string description: The transaction description. currency: type: string description: The ISO-4217 format currency code for the transaction. required: - date_transacted - date_posted - amount - description CustomSandboxTransaction: title: CustomSandboxTransaction type: object additionalProperties: true description: Data to populate as test transaction data. properties: date_transacted: type: string format: date description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Transaction date must be the present date or a date up to 14 days in the past. Future dates are not allowed. date_posted: type: string format: date description: The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Posted date must be the present date or a date up to 14 days in the past. Future dates are not allowed. amount: type: number format: double description: The transaction amount. Can be negative. description: type: string description: The transaction description. iso_currency_code: type: string description: The ISO-4217 format currency code for the transaction. Defaults to USD. required: - date_transacted - date_posted - amount - description SecurityOverride: type: object title: SecurityOverride description: Specify the security associated with the holding or investment transaction. When inputting custom security data to the Sandbox, Plaid will perform post-data-retrieval normalization and enrichment. These processes may cause the data returned by the Sandbox to be slightly different from the data you input. An ISO-4217 currency code and a security identifier (`ticker_symbol`, `cusip`, or `isin`) are required. properties: isin: description: 12-character ISIN, a globally unique securities identifier. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please [request ISIN/CUSIP access here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). type: string cusip: description: 9-character CUSIP, an identifier assigned to North American securities. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please [request ISIN/CUSIP access here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). type: string sedol: deprecated: true x-hidden-from-docs: true description: (Deprecated) 7-character SEDOL, an identifier assigned to securities in the UK. type: string name: description: A descriptive name for the security, suitable for display. type: string ticker_symbol: description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: string currency: description: Either a valid `iso_currency_code` or `unofficial_currency_code` type: string HoldingsOverride: type: object title: HoldingsOverride description: Specify the holdings on the account. properties: institution_price: description: The last price given by the institution for this security type: number format: double institution_price_as_of: description: The date at which `institution_price` was current. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date. type: string format: date cost_basis: description: The total cost basis of the holding (e.g., the total amount spent to acquire all assets currently in the holding). type: number format: double quantity: description: The total quantity of the asset held, as reported by the financial institution. type: number format: double currency: description: Either a valid `iso_currency_code` or `unofficial_currency_code` type: string security: $ref: '#/components/schemas/SecurityOverride' required: - institution_price - quantity - currency - security Investments_TransactionsOverride: type: object description: Specify the list of investments transactions on the account. title: Investments_TransactionsOverride properties: date: description: Posting date for the transaction. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date. type: string format: date name: description: The institution's description of the transaction. type: string quantity: description: The number of units of the security involved in this transaction. Must be positive if the type is a buy and negative if the type is a sell. type: number format: double price: description: The price of the security at which this transaction occurred. type: number format: double fees: description: The combined value of all fees applied to this transaction. type: number format: double type: description: |- The type of the investment transaction. Possible values are: `buy`: Buying an investment `sell`: Selling an investment `cash`: Activity that modifies a cash position `fee`: A fee on the account `transfer`: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer type: string currency: description: Either a valid `iso_currency_code` or `unofficial_currency_code` type: string security: $ref: '#/components/schemas/SecurityOverride' required: - date - name - quantity - price - type - currency LiabilityOverride: type: object additionalProperties: true title: LiabilityOverride properties: type: description: The type of the liability object, either `credit` or `student`. Mortgages are not currently supported in the custom Sandbox. type: string purchase_apr: description: The purchase APR percentage value. For simplicity, this is the only interest rate used to calculate interest charges. Can only be set if `type` is `credit`. type: number format: double cash_apr: type: number format: double description: The cash APR percentage value. Can only be set if `type` is `credit`. balance_transfer_apr: type: number format: double description: The balance transfer APR percentage value. Can only be set if `type` is `credit`. special_apr: type: number format: double description: The special APR percentage value. Can only be set if `type` is `credit`. last_payment_amount: type: number format: double description: Override the `last_payment_amount` field. Can only be set if `type` is `credit`. minimum_payment_amount: type: number format: double description: Override the `minimum_payment_amount` field. Can only be set if `type` is `credit` or `student`. is_overdue: type: boolean description: Override the `is_overdue` field origination_date: type: string format: date description: The date on which the loan was initially lent, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Can only be set if `type` is `student`. principal: description: The original loan principal. Can only be set if `type` is `student`. type: number format: double nominal_apr: description: The interest rate on the loan as a percentage. Can only be set if `type` is `student`. type: number format: double interest_capitalization_grace_period_months: type: number description: If set, interest capitalization begins at the given number of months after loan origination. By default interest is never capitalized. Can only be set if `type` is `student`. repayment_model: $ref: '#/components/schemas/StudentLoanRepaymentModel' expected_payoff_date: type: string format: date description: Override the `expected_payoff_date` field. Can only be set if `type` is `student`. guarantor: type: string description: Override the `guarantor` field. Can only be set if `type` is `student`. is_federal: description: Override the `is_federal` field. Can only be set if `type` is `student`. type: boolean loan_name: type: string description: Override the `loan_name` field. Can only be set if `type` is `student`. loan_status: $ref: '#/components/schemas/StudentLoanStatus' payment_reference_number: type: string description: Override the `payment_reference_number` field. Can only be set if `type` is `student`. pslf_status: $ref: '#/components/schemas/PSLFStatus' repayment_plan_description: type: string description: Override the `repayment_plan.description` field. Can only be set if `type` is `student`. repayment_plan_type: description: 'Override the `repayment_plan.type` field. Can only be set if `type` is `student`. Possible values are: `"extended graduated"`, `"extended standard"`, `"graduated"`, `"income-contingent repayment"`, `"income-based repayment"`, `"income-sensitive repayment"`, `"interest only"`, `"other"`, `"pay as you earn"`, `"revised pay as you earn"`, `"standard"`, or `"saving on a valuable education"`.' type: string sequence_number: type: string description: Override the `sequence_number` field. Can only be set if `type` is `student`. servicer_address: $ref: '#/components/schemas/Address' required: - type - purchase_apr - cash_apr - balance_transfer_apr - special_apr - last_payment_amount - minimum_payment_amount - is_overdue - origination_date - principal - nominal_apr - interest_capitalization_grace_period_months - repayment_model - expected_payoff_date - guarantor - is_federal - loan_name - loan_status - payment_reference_number - pslf_status - repayment_plan_description - repayment_plan_type - sequence_number - servicer_address description: Used to configure Sandbox test data for the Liabilities product StudentLoanRepaymentModel: title: StudentLoanRepaymentModel type: object additionalProperties: true properties: type: type: string description: The only currently supported value for this field is `standard`. non_repayment_months: description: Configures the number of months before repayment starts. type: number repayment_months: description: Configures the number of months of repayments before the loan is paid off. type: number required: - type - non_repayment_months - repayment_months description: Student loan repayment information used to configure Sandbox test data for the Liabilities product InflowModel: title: InflowModel type: object additionalProperties: true 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 description: |- Inflow model. One of the following: `none`: No income `monthly-income`: Income occurs once per month `monthly-balance-payment`: Pays off the balance on a liability account at the given statement day of month. `monthly-interest-only-payment`: Makes an interest-only payment on a liability account at the given statement day of month. Note that account types supported by Liabilities will accrue interest in the Sandbox. The types impacted are account type `credit` with subtype `credit` or `paypal`, and account type `loan` with subtype `student` or `mortgage`. income_amount: type: number 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. 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. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`. type: string required: - type - income_amount - payment_day_of_month - transaction_name - statement_day_of_month IncomeOverride: title: IncomeOverride type: object description: Specify payroll data on the account. properties: paystubs: type: array description: A list of paystubs associated with the account. items: $ref: '#/components/schemas/PaystubOverride' w2s: type: array description: A list of w2s associated with the account. items: $ref: '#/components/schemas/W2Override' W2Override: title: W2Override type: object additionalProperties: true description: W2 is an object that represents income data taken from a W2 tax document. properties: employer: $ref: '#/components/schemas/PaystubOverrideEmployer' employee: $ref: '#/components/schemas/PaystubOverrideEmployee' tax_year: type: string description: The tax year of the W2 document. nullable: true employer_id_number: type: string description: An employer identification number or EIN. nullable: true wages_tips_other_comp: type: string description: Wages from tips and other compensation. nullable: true federal_income_tax_withheld: type: string description: Federal income tax withheld for the tax year. nullable: true social_security_wages: type: string description: Wages from Social Security. nullable: true social_security_tax_withheld: type: string description: Social Security tax withheld for the tax year. nullable: true medicare_wages_and_tips: type: string description: Wages and tips from medicare. nullable: true medicare_tax_withheld: type: string description: Medicare tax withheld for the tax year. nullable: true social_security_tips: type: string description: Tips from Social Security. nullable: true allocated_tips: type: string description: Allocated tips. nullable: true box_9: type: string description: Contents from box 9 on the W2. nullable: true dependent_care_benefits: type: string description: Dependent care benefits. nullable: true nonqualified_plans: type: string description: Nonqualified plans. nullable: true box_12: type: array items: $ref: '#/components/schemas/W2Box12Override' statutory_employee: type: string description: Statutory employee. nullable: true retirement_plan: type: string description: Retirement plan. nullable: true third_party_sick_pay: type: string description: Third party sick pay. nullable: true other: type: string description: Other. nullable: true state_and_local_wages: type: array items: $ref: '#/components/schemas/W2StateAndLocalWagesOverride' W2Box12Override: title: W2Box12Override description: Data on the W2 Box 12 type: object additionalProperties: true properties: code: type: string description: W2 Box 12 code. nullable: true amount: type: string description: W2 Box 12 amount. nullable: true W2StateAndLocalWagesOverride: title: W2StateAndLocalWagesOverride description: W2 state and local wages type: object additionalProperties: true properties: state: type: string description: State associated with the wage. nullable: true employer_state_id_number: type: string description: State identification number of the employer. nullable: true state_wages_tips: type: string description: Wages and tips from the specified state. nullable: true state_income_tax: type: string description: Income tax from the specified state. nullable: true local_wages_tips: type: string description: Wages and tips from the locality. nullable: true local_income_tax: type: string description: Income tax from the locality. nullable: true locality_name: type: string description: Name of the locality. nullable: true PaystubOverride: title: PaystubOverride type: object description: An object representing data from a paystub. properties: employer: $ref: '#/components/schemas/PaystubOverrideEmployer' employee: $ref: '#/components/schemas/PaystubOverrideEmployee' income_breakdown: x-hidden-from-docs: true deprecated: true type: array items: $ref: '#/components/schemas/IncomeBreakdown' net_pay: $ref: '#/components/schemas/PaystubOverrideNetPay' deductions: $ref: '#/components/schemas/PaystubOverrideDeductions' earnings: $ref: '#/components/schemas/PaystubOverrideEarnings' pay_period_details: $ref: '#/components/schemas/PaystubOverridePayPeriodDetails' PaystubOverrideEarnings: title: PaystubOverrideEarnings type: object description: An object representing both a breakdown of earnings on a paystub and the total earnings. additionalProperties: true properties: breakdown: type: array items: $ref: '#/components/schemas/PaystubOverrideEarningsBreakdown' total: $ref: '#/components/schemas/PaystubOverrideEarningsTotal' PaystubOverrideEarningsBreakdown: title: PaystubOverrideEarningsBreakdown type: object additionalProperties: true description: An object representing the earnings line items for the pay period. properties: canonical_description: $ref: '#/components/schemas/EarningsBreakdownCanonicalDescription' current_amount: type: number format: double description: Raw amount of the earning line item. nullable: true description: type: string description: Description of the earning line item. nullable: true hours: type: number description: Number of hours applicable for this earning. nullable: true currency: type: string description: The ISO-4217 currency code of the line item. nullable: true rate: type: number format: double description: Hourly rate applicable for this earning. nullable: true ytd_amount: type: number format: double description: The year-to-date amount of the line item. nullable: true PaystubOverrideEarningsTotal: title: PaystubOverrideEarningsTotal type: object description: An object representing both the current pay period and year to date amount for an earning category. additionalProperties: true properties: hours: type: number description: Total number of hours worked for this pay period nullable: true currency: type: string description: The ISO-4217 currency code of the line item nullable: true ytd_amount: type: number format: double description: The year-to-date amount for the total earnings nullable: true PaystubOverrideDeductions: title: PaystubOverrideDeductions type: object description: An object with the deduction information found on a paystub. additionalProperties: true properties: breakdown: type: array items: $ref: '#/components/schemas/PaystubOverrideDeductionsBreakdown' total: $ref: '#/components/schemas/PaystubOverrideDeductionsTotal' PaystubOverrideDeductionsBreakdown: title: PaystubOverrideDeductionsBreakdown type: object additionalProperties: true description: An object representing the deduction line items for the pay period properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true description: type: string description: Description of the deduction line item nullable: true currency: type: string description: The ISO-4217 currency code of the line item. nullable: true ytd_amount: type: number format: double description: The year-to-date amount of the deduction nullable: true PaystubOverrideDeductionsTotal: title: PaystubOverrideDeductionsTotal type: object description: An object representing the total deductions for the pay period additionalProperties: true properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true currency: type: string description: The ISO-4217 currency code of the line item. nullable: true ytd_amount: type: number format: double description: The year-to-date total amount of the deductions nullable: true PaystubOverrideNetPay: title: PaystubOverrideNetPay type: object description: An object representing information about the net pay amount on the paystub. additionalProperties: true properties: description: type: string description: Description of the net pay nullable: true currency: type: string description: The ISO-4217 currency code of the net pay. nullable: true ytd_amount: type: number format: double description: The year-to-date amount of the net pay nullable: true PaystubOverrideEmployer: type: object description: The employer on the paystub. properties: name: type: string description: The name of the employer. nullable: true address: $ref: '#/components/schemas/PaystubOverrideEmployerAddress' PaystubOverrideEmployerAddress: type: object description: The address of the employer. properties: city: type: string description: The full city name. region: type: string description: |- The region or state Example: `"NC"` street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` postal_code: type: string description: 5 digit postal code. country: type: string description: The country of the address. PaystubOverrideEmployee: type: object description: The employee on the paystub. properties: name: type: string description: The name of the employee. address: $ref: '#/components/schemas/PaystubOverrideEmployeeAddress' marital_status: type: string description: Marital status of the employee - either `single` or `married`. nullable: true x-override-enum-values-shown: - single - married taxpayer_id: $ref: '#/components/schemas/PaystubOverrideTaxpayerID' PaystubOverrideTaxpayerID: title: PaystubOverrideTaxpayerID type: object additionalProperties: true description: Taxpayer ID of the individual receiving the paystub. properties: id_type: type: string description: Type of ID, e.g. 'SSN' nullable: true id_mask: type: string description: ID mask; i.e. last 4 digits of the taxpayer ID nullable: true PaystubOverrideEmployeeAddress: type: object description: The address of the employee. properties: city: type: string description: The full city name. region: type: string description: |- The region or state Example: `"NC"` street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` postal_code: type: string description: 5 digit postal code. country: type: string description: The country of the address. PaystubOverridePayPeriodDetails: title: PaystubOverridePayPeriodDetails type: object additionalProperties: true description: Details about the pay period. properties: check_amount: type: number format: double description: The amount of the paycheck. nullable: true distribution_breakdown: type: array items: $ref: '#/components/schemas/PaystubOverrideDistributionBreakdown' end_date: type: string format: date description: 'The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".' nullable: true gross_earnings: type: number format: double description: Total earnings before tax/deductions. nullable: true pay_date: type: string format: date description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true pay_frequency: $ref: '#/components/schemas/PayPeriodDetailsPayFrequency' pay_day: deprecated: true type: string format: date description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true start_date: type: string format: date description: 'The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".' nullable: true PaystubOverrideDistributionBreakdown: title: DistributionBreakdown type: object description: Information about the accounts that the payment was distributed to. additionalProperties: true properties: account_name: type: string description: Name of the account for the given distribution. nullable: true bank_name: type: string description: The name of the bank that the payment is being deposited to. nullable: true current_amount: type: number format: double description: The amount distributed to this account. nullable: true currency: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number. nullable: true type: type: string description: Type of the account that the paystub was sent to (e.g. 'checking'). nullable: true ItemId: title: ItemId type: string description: The `item_id` of the Item associated with this webhook, warning, or error UserId: title: UserId type: string description: The Plaid `user_id` of the User associated with this webhook, warning, or error. NewUserID: title: NewUserID type: string description: A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). AuthDefaultUpdateWebhook: x-examples: example-1: webhook_type: AUTH webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb account_ids_with_new_auth: [] account_ids_with_updated_auth: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp: - ACCOUNT_NUMBER error: null environment: production title: AuthDefaultUpdateWebhook type: object additionalProperties: true description: Plaid will trigger a `DEFAULT_UPDATE` webhook for Items that undergo a change in Auth data. This is generally caused by data partners notifying Plaid of a change in their account numbering system or to their routing numbers. To avoid returned transactions, customers that receive a `DEFAULT_UPDATE` webhook with the `account_ids_with_updated_auth` object populated should immediately discontinue all usages of existing Auth data for those accounts and call `/auth/get` or `/processor/auth/get` to obtain updated account and routing numbers. properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`DEFAULT_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' account_ids_with_new_auth: type: array description: An array of `account_id`'s for accounts that contain new auth. items: type: string account_ids_with_updated_auth: $ref: '#/components/schemas/AccountIdsWithUpdatedAuth' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - error - account_ids_with_new_auth - account_ids_with_updated_auth - environment AccountIdsWithUpdatedAuth: title: AccountIdsWithUpdatedAuth type: object additionalProperties: type: array items: $ref: '#/components/schemas/AuthUpdateTypes' description: | An object with keys of `account_id`'s that are mapped to their respective auth attributes that changed. `ACCOUNT_NUMBER` and `ROUTING_NUMBER` are the two potential values that can be flagged as updated. Example: `{ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": ["ACCOUNT_NUMBER"] }` AuthUpdateTypes: type: string description: The possible types of auth data that may have changed. enum: - ACCOUNT_NUMBER - ROUTING_NUMBER AutomaticallyVerifiedWebhook: title: AutomaticallyVerifiedWebhook type: object additionalProperties: true description: Fired when an Item is verified via automated micro-deposits. We recommend communicating to your users when this event is received to notify them that their account is verified and ready for use. properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`AUTOMATICALLY_VERIFIED`' account_id: type: string description: The `account_id` of the account associated with the webhook item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' error: $ref: '#/components/schemas/PlaidError' required: - webhook_type - webhook_code - account_id - item_id - environment x-examples: example-1: webhook_type: AUTH webhook_code: AUTOMATICALLY_VERIFIED item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK environment: production error: null JWTHeader: title: JWTHeader type: object additionalProperties: true properties: id: type: string kid: type: string alg: type: string required: - id - kid - alg description: A JWT Header, used for webhook validation VerificationExpiredWebhook: title: VerificationExpiredWebhook type: object additionalProperties: true description: Fired when an Item was not verified via automated micro-deposits after seven days since the automated micro-deposit was made. x-examples: example-1: webhook_type: AUTH webhook_code: VERIFICATION_EXPIRED item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp environment: production error: null properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`VERIFICATION_EXPIRED`' item_id: $ref: '#/components/schemas/ItemId' account_id: type: string description: The `account_id` of the account associated with the webhook environment: $ref: '#/components/schemas/WebhookEnvironmentValues' error: $ref: '#/components/schemas/PlaidError' required: - webhook_type - webhook_code - item_id - account_id - environment WebhookUpdateAcknowledgedWebhook: title: WebhookUpdateAcknowledgedWebhook type: object additionalProperties: true description: Fired when an Item's webhook is updated. This will be sent to the newly specified webhook. x-examples: example-1: webhook_type: ITEM webhook_code: WEBHOOK_UPDATE_ACKNOWLEDGED item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: null new_webhook_url: https://plaid.com/example/webhook environment: production properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`WEBHOOK_UPDATE_ACKNOWLEDGED`' item_id: $ref: '#/components/schemas/ItemId' new_webhook_url: type: string description: The new webhook URL error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - new_webhook_url - environment PendingExpirationWebhook: title: PendingExpirationWebhook type: object additionalProperties: true description: Fired when an Item's access consent is expiring in 7 days. This can be resolved by having the user go through Link's update mode. This webhook is fired only for Items associated with institutions in Europe (including the UK); for Items associated with institutions in the US or Canada, see [`PENDING_DISCONNECT`](https://plaid.com/docs/api/items/#pending_disconnect) instead. properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`PENDING_EXPIRATION`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' consent_expiration_time: type: string format: date-time description: The date and time at which the Item's access consent will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - consent_expiration_time - environment x-examples: example-1: webhook_type: ITEM webhook_code: PENDING_EXPIRATION item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw consent_expiration_time: "2020-01-15T13:25:17.766Z" environment: production ItemErrorWebhook: title: ItemErrorWebhook type: object additionalProperties: true description: Fired when an error is encountered with an Item. The error can be resolved by having the user go through Link's update mode. properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`ERROR`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - error - environment x-examples: example-1: webhook_type: ITEM webhook_code: ERROR item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: display_message: The user's OAuth connection to this institution has been invalidated. error_code: ITEM_LOGIN_REQUIRED error_code_reason: OAUTH_INVALID_TOKEN error_message: the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state error_type: ITEM_ERROR status: 400 environment: production ItemLoginRepairedWebhook: title: ItemLoginRepairedWebhook type: object additionalProperties: true description: Fired when an Item has exited the `ITEM_LOGIN_REQUIRED` state without the user having gone through the update mode flow in your app (this can happen if the user completed the update mode in a different app). If you have messaging that tells the user to complete the update mode flow, you should silence this messaging upon receiving the `LOGIN_REPAIRED` webhook. properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`LOGIN_REPAIRED`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - environment x-examples: example-1: webhook_type: ITEM webhook_code: LOGIN_REPAIRED item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw environment: production ItemProductReadyWebhook: title: ItemProductReadyWebhook type: object additionalProperties: true description: Fired once Plaid calculates income from an Item. properties: webhook_type: type: string description: '`INCOME`' webhook_code: type: string description: '`PRODUCT_READY`' item_id: $ref: '#/components/schemas/ItemId' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - environment x-examples: example-1: webhook_type: INCOME webhook_code: PRODUCT_READY item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: null environment: production ProductPermissionsRequiredAuthWebhook: title: ProductPermissionsRequiredAuthWebhook type: object additionalProperties: true description: Fired when an `ACCESS_NOT_GRANTED` error is hit for Auth. The error can be resolved by putting the user through update mode with `auth` in the `products` array, as well as through the limited beta for update mode Authentication product validations. properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`PRODUCT_PERMISSIONS_REQUIRED`' item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - environment x-examples: example-1: webhook_type: AUTH webhook_code: PRODUCT_PERMISSIONS_REQUIRED item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production ProductPermissionsRequiredIdentityWebhook: title: ProductPermissionsRequiredIdentityWebhook type: object additionalProperties: true description: Fired when an `ACCESS_NOT_GRANTED` error is hit for Identity. The error can be resolved by putting the user through update mode with `identity` in the `products` array, as well as through the limited beta for update mode Identity product validations. properties: webhook_type: type: string description: '`IDENTITY`' webhook_code: type: string description: '`PRODUCT_PERMISSIONS_REQUIRED`' item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - environment x-examples: example-1: webhook_type: IDENTITY webhook_code: PRODUCT_PERMISSIONS_REQUIRED item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production Recaptcha_RequiredError: title: Recaptcha_RequiredError type: object additionalProperties: true description: The request was flagged by Plaid's fraud system and requires additional verification to ensure the user is not a bot. x-examples: example-1: error_type: RECAPTCHA_ERROR error_code: RECAPTCHA_REQUIRED error_message: This request requires additional verification. Please resubmit the request after completing the challenge display_message: null http_code: 400 request_id: HNTDNrA8F1shFEW properties: error_type: type: string description: '`RECAPTCHA_ERROR`' error_code: type: string description: '`RECAPTCHA_REQUIRED`' display_message: type: string nullable: true http_code: type: integer description: "400" link_user_experience: type: string description: Your user will be prompted to solve a Google reCAPTCHA challenge in the Link Recaptcha pane. If they solve the challenge successfully, the user's request is resubmitted and they are directed to the next Item creation step. common_causes: type: string description: Plaid's fraud system detects abusive traffic and considers a variety of parameters throughout Item creation requests. When a request is considered risky or possibly fraudulent, Link presents a reCAPTCHA for the user to solve. troubleshooting_steps: type: string description: |- Link will automatically guide your user through reCAPTCHA verification. As a general rule, we recommend instrumenting basic fraud monitoring to detect and protect your website from spam and abuse. If your user cannot verify their session, please submit a support ticket with the following identifiers: `link_session_id` or `request_id` required: - error_type - error_code - display_message - http_code BankTransfersEventsUpdateWebhook: title: BankTransfersEventsUpdateWebhook deprecated: true type: object additionalProperties: true description: Fired when new bank transfer events are available. Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`. x-examples: example-1: webhook_type: BANK_TRANSFERS webhook_code: BANK_TRANSFERS_EVENTS_UPDATE environment: production properties: webhook_type: type: string description: '`BANK_TRANSFERS`' webhook_code: type: string description: '`BANK_TRANSFERS_EVENTS_UPDATE`' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - environment BankTransfersEventsUpdateWebhookForAuth: title: BankTransfersEventsUpdateWebhookForAuth type: object additionalProperties: true description: Fired when new ACH events are available. To begin receiving this webhook, you must first register your webhook listener endpoint via the [webhooks page in the Dashboard](https://dashboard.plaid.com/team/webhooks). The `BANK_TRANSFERS_EVENTS_UPDATE` webhook can be used to track the progress of ACH transfers used in [micro-deposit verification](https://plaid.com/docs/auth/coverage/microdeposit-events/). Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`. Note that [Transfer](https://plaid.com/docs/transfer) customers should use Transfer webhooks instead of using `BANK_TRANSFERS_EVENTS_UPDATE`; see [micro-deposit events documentation](https://plaid.com/docs/auth/coverage/microdeposit-events/) for more details. x-examples: example-1: webhook_type: BANK_TRANSFERS webhook_code: BANK_TRANSFERS_EVENTS_UPDATE environment: production properties: webhook_type: type: string description: '`BANK_TRANSFERS`' webhook_code: type: string description: '`BANK_TRANSFERS_EVENTS_UPDATE`' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - environment TransferEventsUpdateWebhook: title: TransferEventsUpdateWebhook type: object additionalProperties: true description: Fired when new transfer events are available. Receiving this webhook indicates you should fetch the new events from `/transfer/event/sync`. If multiple transfer events occur within a single minute, only one webhook will be fired, so a single webhook instance may correspond to multiple transfer events. x-examples: example-1: webhook_type: TRANSFER webhook_code: TRANSFER_EVENTS_UPDATE environment: production properties: webhook_type: type: string description: '`TRANSFER`' webhook_code: type: string description: '`TRANSFER_EVENTS_UPDATE`' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - environment LayerAuthenticationPassedWebhook: title: LayerAuthenticationPassedWebhook type: object additionalProperties: true description: Indicates that Plaid's authentication process has completed for a user and that Plaid has verified that the user owns their phone number. If you receive this webhook, you should skip your own OTP phone number verification flow for the user, even if the user does not complete the entire Link flow. If the user doesn't complete the full Link flow (as verified by your being able to successfully call `/user_account/session/get` using the `public_token` from the `onSuccess` callback) it is recommended that you implement [webhook verification](https://plaid.com/docs/api/webhooks/webhook-verification/) or another technique to avoid webhook spoofing attacks. x-examples: example-1: webhook_type: LAYER webhook_code: LAYER_AUTHENTICATION_PASSED environment: production link_session_id: 1daca4d5-9a0d-4e85-a2e9-1e905ecaa32e link_token: link-sandbox-79e723b0-0e04-4248-8a33-15ceb6828a45 properties: webhook_type: type: string description: '`LAYER`' webhook_code: type: string description: '`LAYER_AUTHENTICATION_PASSED`' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' link_session_id: type: string description: An identifier for the Link session these events occurred in link_token: type: string description: The Link token used to create the Link session these events are from required: - webhook_type - webhook_code - environment - link_session_id - link_token ProtectUserEventWebhook: title: ProtectUserEventWebhook type: object additionalProperties: true description: Fired when there has been a new user event. The webhook payload contains limited information about the event. For full event details, call [`/protect/event/get`](https://plaid.com/docs/api/products/protect/#protecteventget). x-examples: example-1: webhook_type: PROTECT webhook_code: PROTECT_USER_EVENT user_id: plaid-user-6009db6e client_user_id: your-client-user-id event_id: ptevt_cYNnF8xYE1v1om timestamp: "2020-07-24T03:26:02Z" event_type: LINK_COMPLETE environment: production properties: webhook_type: type: string description: '`"PROTECT"`' webhook_code: type: string description: '`PROTECT_USER_EVENT`' event_id: type: string description: The event ID of the user event that occurred. event_type: type: string description: The type of user event that occurred. Possible values include `LINK_COMPLETE` (the Link session has finished and a Trust Index score has been computed without waiting for transaction extraction) and `PROTECT_RUN_FINISH` (extraction-required scoring is complete, including transaction extraction; may arrive 30 seconds or more after Link completion). timestamp: type: string format: date-time description: The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` user_id: type: string description: The Plaid User ID. nullable: true client_user_id: type: string description: The `client_user_id` provided by the client when the user was created via `/user/create` or Link. nullable: true link_session_id: type: string description: An identifier for the Link session this event occurred in nullable: true environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - event_id - event_type - timestamp - user_id - environment RecurringNewTransferWebhook: title: RecurringNewTransferWebhook type: object additionalProperties: true description: Fired when a new transfer of a recurring transfer is originated. x-examples: example-1: webhook_type: TRANSFER webhook_code: RECURRING_NEW_TRANSFER recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 transfer_id: 271ef220-dbf8-caeb-a7dc-a2b3e8a80963 environment: production properties: webhook_type: type: string description: '`TRANSFER`' webhook_code: type: string description: '`RECURRING_NEW_TRANSFER`' recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' transfer_id: $ref: '#/components/schemas/TransferID' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - recurring_transfer_id - transfer_id - environment RecurringTransferSkippedWebhook: title: RecurringTransferSkippedWebhook type: object additionalProperties: true description: Fired when Plaid is unable to originate a new ACH transaction of the recurring transfer on the planned date. x-examples: example-1: webhook_type: TRANSFER webhook_code: RECURRING_TRANSFER_SKIPPED recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 authorization_decision: declined authorization_decision_rationale_code: NSF skipped_origination_date: "2022-11-30" environment: production properties: webhook_type: type: string description: '`TRANSFER`' webhook_code: type: string description: '`RECURRING_TRANSFER_SKIPPED`' recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' authorization_decision: $ref: '#/components/schemas/TransferAuthorizationDecision' authorization_decision_rationale_code: $ref: '#/components/schemas/TransferAuthorizationDecisionRationaleCode' skipped_origination_date: type: string description: The planned date on which Plaid is unable to originate a new ACH transaction of the recurring transfer. This will be of the form YYYY-MM-DD. format: date environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - recurring_transfer_id - authorization_decision - skipped_origination_date - environment RecurringCancelledWebhook: title: RecurringCancelledWebhook type: object additionalProperties: true description: Fired when a recurring transfer is cancelled by Plaid. x-examples: example-1: webhook_type: TRANSFER webhook_code: RECURRING_CANCELLED recurring_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9 environment: production properties: webhook_type: type: string description: '`TRANSFER`' webhook_code: type: string description: '`RECURRING_CANCELLED`' recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - recurring_transfer_id - environment InvestmentsDefaultUpdateWebhook: title: InvestmentsDefaultUpdateWebhook type: object additionalProperties: true description: Fired when new transactions have been detected on an investment account. x-examples: example-1: webhook_type: INVESTMENTS_TRANSACTIONS webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: null new_investments_transactions: 16 cancelled_investments_transactions: 0 environment: production properties: webhook_type: type: string description: '`INVESTMENTS_TRANSACTIONS`' webhook_code: type: string description: '`DEFAULT_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' new_investments_transactions: type: number description: The number of new transactions reported since the last time this webhook was fired. cancelled_investments_transactions: type: number description: The number of cancelled transactions reported since the last time this webhook was fired. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - new_investments_transactions - cancelled_investments_transactions - environment InvestmentsHistoricalUpdateWebhook: title: InvestmentsHistoricalUpdateWebhook type: object additionalProperties: true description: Fired after an asynchronous extraction on an investment account. x-examples: example-1: webhook_type: INVESTMENTS_TRANSACTIONS webhook_code: HISTORICAL_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: null new_investments_transactions: 16 cancelled_investments_transactions: 0 environment: production properties: webhook_type: type: string description: '`INVESTMENTS_TRANSACTIONS`' webhook_code: type: string description: '`HISTORICAL_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' new_investments_transactions: type: number description: The number of new transactions reported since the last time this webhook was fired. cancelled_investments_transactions: type: number description: The number of cancelled transactions reported since the last time this webhook was fired. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - new_investments_transactions - cancelled_investments_transactions - environment HoldingsDefaultUpdateWebhook: title: HoldingsDefaultUpdateWebhook type: object additionalProperties: true description: Fired when new or updated holdings have been detected on an investment account. The webhook typically fires in response to any newly added holdings or price changes to existing holdings, most commonly after market close. x-examples: example-1: webhook_type: HOLDINGS webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: null new_holdings: 19 updated_holdings: 0 environment: production properties: webhook_type: type: string description: '`HOLDINGS`' webhook_code: type: string description: '`DEFAULT_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' new_holdings: type: number description: The number of new holdings reported since the last time this webhook was fired. updated_holdings: type: number description: The number of updated holdings reported since the last time this webhook was fired. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - new_holdings - updated_holdings - environment PartnerEndCustomerOAuthStatusUpdatedWebhook: title: PartnerEndCustomerOAuthStatusUpdatedWebhook type: object description: The webhook of type `PARTNER` and code `END_CUSTOMER_OAUTH_STATUS_UPDATED` will be fired when a partner's end customer has an update on their OAuth registration status with an institution. x-examples: example-1: webhook_type: PARTNER webhook_code: END_CUSTOMER_OAUTH_STATUS_UPDATED end_customer_client_id: 634758733ebb4f00134b85ea environment: production institution_id: ins_127989 institution_name: Bank of America status: attention-required properties: webhook_type: type: string description: '`PARTNER`' webhook_code: type: string description: '`END_CUSTOMER_OAUTH_STATUS_UPDATED`' end_customer_client_id: type: string description: The client ID of the end customer environment: $ref: '#/components/schemas/WebhookEnvironmentValues' institution_id: type: string description: The institution ID institution_name: type: string description: The institution name status: $ref: '#/components/schemas/PartnerEndCustomerOAuthStatusUpdatedValues' required: - webhook_type - webhook_code - end_customer_client_id - environment - institution_id - institution_name - status LiabilitiesDefaultUpdateWebhook: title: LiabilitiesDefaultUpdateWebhook type: object description: The webhook of type `LIABILITIES` and code `DEFAULT_UPDATE` will be fired when new or updated liabilities have been detected on a liabilities item. x-examples: example-1: webhook_type: LIABILITIES webhook_code: DEFAULT_UPDATE item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw error: null account_ids_with_new_liabilities: - XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58 - BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp account_ids_with_updated_liabilities: XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58: - past_amount_due environment: production properties: webhook_type: type: string description: '`LIABILITIES`' webhook_code: type: string description: '`DEFAULT_UPDATE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' account_ids_with_new_liabilities: type: array description: An array of `account_id`'s for accounts that contain new liabilities.' items: type: string account_ids_with_updated_liabilities: $ref: '#/components/schemas/LiabilitiesAccountIdsWithUpdatedLiabilities' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - error - account_ids_with_new_liabilities - account_ids_with_updated_liabilities - environment PendingDisconnectWebhookReason: type: string description: |- Reason why the Item is about to be disconnected. `INSTITUTION_MIGRATION`: The institution is moving to API or to a different integration. For example, this can occur when an institution moves from a non-OAuth integration to an OAuth integration. `INSTITUTION_TOKEN_EXPIRATION`: The consent on an Item associated with a US or CA institution is about to expire. enum: - INSTITUTION_MIGRATION - INSTITUTION_TOKEN_EXPIRATION PendingDisconnectWebhook: title: PendingDisconnectWebhook type: object additionalProperties: true description: Fired when an Item is expected to be disconnected. The webhook will currently be fired 7 days before the existing Item is scheduled for disconnection. This can be resolved by having the user go through Link's [update mode](https://plaid.com/docs/link/update-mode). Currently, this webhook is fired only for US or Canadian institutions; in the UK or EU, you should continue to listen for the [`PENDING_EXPIRATION`](https://plaid.com/docs/api/items/#pending_expiration) webhook instead. properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`PENDING_DISCONNECT`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' reason: $ref: '#/components/schemas/PendingDisconnectWebhookReason' disconnect_time: type: string format: date-time description: The date and time at which the Item is scheduled to disconnect, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - reason - disconnect_time - environment x-examples: example-1: webhook_type: ITEM webhook_code: PENDING_DISCONNECT item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb user_id: usr_9nSp2KuZ2x4JDw reason: INSTITUTION_MIGRATION disconnect_time: "2020-01-15T13:25:17.766Z" environment: production LiabilitiesAccountIdsWithUpdatedLiabilities: type: object additionalProperties: type: array items: type: string description: | An object with keys of `account_id`'s that are mapped to their respective liabilities fields that changed. Example: `{ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": ["past_amount_due"] }` Cause: title: Cause type: object additionalProperties: true nullable: true allOf: - $ref: '#/components/schemas/PlaidError' - type: object properties: item_id: $ref: '#/components/schemas/ItemId' required: - item_id - error_type - error_code - error_message - display_message description: An error object and associated `item_id` used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items. PaymentAmountCurrency: type: string enum: - GBP - EUR - PLN - SEK - DKK - NOK description: The ISO-4217 currency code of the payment. For standing orders and payment consents, `"GBP"` must be used. For Poland, Denmark, Sweden and Norway, only the local currency is currently supported. minLength: 3 maxLength: 3 PaymentAmount: title: PaymentAmount type: object properties: currency: $ref: '#/components/schemas/PaymentAmountCurrency' value: type: number format: double description: The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`. required: - currency - value description: The amount and currency of a payment PaymentAmountNullable: title: PaymentAmount type: object nullable: true additionalProperties: true properties: currency: $ref: '#/components/schemas/PaymentAmountCurrency' value: type: number format: double minimum: 0.01 description: The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. required: - currency - value description: The amount and currency of a payment PaymentAmountToRefund: description: The amount and currency of a payment allOf: - $ref: '#/components/schemas/PaymentAmountNullable' - type: object description: An amount to refund the payment partially. If this amount is not specified, the payment is refunded fully for the remaining amount. PaymentAmountRefunded: description: The amount and currency of a payment allOf: - $ref: '#/components/schemas/PaymentAmountNullable' - type: object additionalProperties: true description: The amount that has been refunded already. Subtract this from the payment amount to calculate the amount still available to refund. PaymentConsentValidDateTime: type: object title: PaymentConsentValidDateTime description: Life span for the payment consent. After the `to` date the payment consent expires and can no longer be used for payment initiation. nullable: true properties: from: type: string format: date-time nullable: true description: The date and time from which the consent should be active, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. to: type: string format: date-time nullable: true description: The date and time at which the consent expires, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. PaymentConsentPeriodicAmount: type: object title: PaymentConsentPeriodicAmount description: Defines consent payments limitations per period. properties: amount: $ref: '#/components/schemas/PaymentConsentPeriodicAmountAmount' interval: $ref: '#/components/schemas/PaymentConsentPeriodicInterval' alignment: $ref: '#/components/schemas/PaymentConsentPeriodicAlignment' required: - amount - interval - alignment PaymentConsentPeriodicAmountAmount: description: Maximum cumulative amount for all payments in the specified interval. allOf: - $ref: '#/components/schemas/PaymentAmount' PaymentConsentPeriodicInterval: type: string description: Payment consent periodic interval. enum: - DAY - WEEK - MONTH - YEAR PaymentConsentPeriodicAlignment: type: string enum: - CALENDAR - CONSENT description: |- Where the payment consent period should start. If the institution is Monzo, only `CONSENT` alignments are supported. `CALENDAR`: line up with a calendar. `CONSENT`: on the date of consent creation. StandaloneCurrencyCodeList: title: StandaloneCurrencyCodeList type: object additionalProperties: true description: The following currency codes are supported by Plaid. properties: iso_currency_code: description: Plaid supports all ISO 4217 currency codes. type: string unofficial_currency_code: $ref: '#/components/schemas/UnofficialCurrencyCodeList' required: - iso_currency_code - unofficial_currency_code UnofficialCurrencyCodeList: title: UnofficialCurrencyCodeList type: string description: List of unofficial currency codes properties: ADA: type: string description: Cardano BAT: type: string description: Basic Attention Token BCH: type: string description: Bitcoin Cash BNB: type: string description: Binance Coin BTC: type: string description: Bitcoin BTG: type: string description: Bitcoin Gold BSV: type: string description: Bitcoin Satoshi Vision CNH: type: string description: Chinese Yuan (offshore) DASH: type: string description: Dash DOGE: type: string description: Dogecoin ETC: type: string description: Ethereum Classic ETH: type: string description: Ethereum GBX: type: string description: Pence sterling, i.e. British penny LSK: type: string description: Lisk NEO: type: string description: Neo OMG: type: string description: OmiseGO QTUM: type: string description: Qtum USDT: type: string description: Tether XLM: type: string description: Stellar Lumen XMR: type: string description: Monero XRP: type: string description: Ripple ZEC: type: string description: Zcash ZRX: type: string description: 0x required: - ADA - BAT - BCH - BNB - BTC - BTG - CNH - DASH - DOGE - ETC - ETH - GBX - LSK - NEO - OMG - QTUM - USDT - XLM - XMR - XRP - ZEC - ZRX StandaloneAccountType: title: StandaloneAccountType description: The schema below describes the various `types` and corresponding `subtypes` that Plaid recognizes and reports for financial institution accounts. For a mapping of supported types and subtypes to Plaid products, see the [Account type / product support matrix](https://plaid.com/docs/api/accounts/#account-type--product-support-matrix). type: object additionalProperties: true properties: depository: $ref: '#/components/schemas/DepositoryAccount' credit: $ref: '#/components/schemas/CreditAccount' loan: $ref: '#/components/schemas/LoanAccount' investment: $ref: '#/components/schemas/InvestmentAccountSubtypeStandalone' payroll: $ref: '#/components/schemas/PayrollAccount' other: type: string description: Other or unknown account type. required: - depository - credit - loan - investment - other DepositoryAccount: title: DepositoryAccount description: An account type holding cash, in which funds are deposited. type: string properties: cash management: type: string description: A cash management account, typically a cash account at a brokerage cd: type: string description: Certificate of deposit account checking: type: string description: Checking account ebt: type: string description: An Electronic Benefit Transfer (EBT) account, used by certain public assistance programs to distribute funds (US only) hsa: type: string description: Health Savings Account (US only) that can only hold cash limited purpose checking: type: string description: A checking account that is limited in its purpose or usage. Note that this account subtype is opt-in only, meaning it cannot be connected in Link unless it is present in the subtypes filter. money market: type: string description: Money market account paypal: type: string description: PayPal depository account prepaid: type: string description: Prepaid debit card savings: type: string description: Savings account required: - checking - savings - hsa - cd - money market - paypal - prepaid - cash management - ebt - limited purpose checking CreditAccount: title: CreditAccount type: string description: A credit card type account. properties: credit card: type: string description: Bank-issued credit card paypal: type: string description: PayPal-issued credit card required: - credit card - paypal LoanAccount: title: LoanAccount type: string description: A loan type account. properties: auto: type: string description: Auto loan business: type: string description: Business loan commercial: type: string description: Commercial loan construction: type: string description: Construction loan consumer: type: string description: Consumer loan home equity: type: string description: Home Equity Line of Credit (HELOC) line of credit: type: string description: Pre-approved line of credit loan: type: string description: General loan mortgage: type: string description: Mortgage loan other: type: string description: Other loan type or unknown loan type overdraft: type: string description: Pre-approved overdraft account, usually tied to a checking account student: type: string description: Student loan required: - auto - business - commercial - construction - consumer - home equity - loan - mortgage - overdraft - line of credit - student - other InvestmentAccountSubtypeStandalone: title: InvestmentAccountSubtype type: string description: An investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage`. properties: 401a: type: string description: Employer-sponsored money-purchase 401(a) retirement plan (US) 401k: type: string description: Standard 401(k) retirement account (US) 403B: type: string description: 403(b) retirement savings account for non-profits and schools (US) 457b: type: string description: Tax-advantaged deferred-compensation 457(b) retirement plan for governments and non-profits (US) "529": type: string description: | Tax-advantaged college savings and prepaid tuition 529 plans (US) brokerage: type: string description: Standard brokerage account cash isa: type: string description: Individual Savings Account (ISA) that pays interest tax-free (UK) crypto exchange: type: string description: Standard cryptocurrency exchange account education savings account: type: string description: Tax-advantaged Coverdell Education Savings Account (ESA) (US) fhsa: type: string description: First Home Savings Account (FHSA) (Canada) fixed annuity: type: string description: Fixed annuity gic: type: string description: Guaranteed Investment Certificate (Canada) health reimbursement arrangement: type: string description: Tax-advantaged Health Reimbursement Arrangement (HRA) benefit plan (US) hsa: type: string description: | Non-cash tax-advantaged medical Health Savings Account (HSA) (US) ira: type: string description: Traditional Individual Retirement Account (IRA) (US) isa: type: string description: Non-cash Individual Savings Account (ISA) (UK) keogh: type: string description: Keogh self-employed retirement plan (US) lif: type: string description: | Life Income Fund (LIF) retirement account (Canada) life insurance: type: string description: Life insurance account line of credit: type: string description: Pre-approved line of credit lira: type: string description: Locked-in Retirement Account (LIRA) (Canada) lrif: type: string description: Locked-in Retirement Income Fund (LRIF) (Canada) lrsp: type: string description: Locked-in Retirement Savings Plan (Canada) mutual fund: type: string description: Mutual fund account non-custodial wallet: type: string description: A cryptocurrency wallet where the user controls the private key non-taxable brokerage account: type: string description: A non-taxable brokerage account that is not covered by a more specific subtype other: type: string description: An account whose type could not be determined other annuity: type: string description: An annuity account not covered by other subtypes other insurance: type: string description: An insurance account not covered by other subtypes pension: type: string description: Standard pension account prif: type: string description: Prescribed Registered Retirement Income Fund (Canada) profit sharing plan: type: string description: Plan that gives employees share of company profits qshr: type: string description: Qualifying share account rdsp: type: string description: Registered Disability Savings Plan (RDSP) (Canada) resp: type: string description: Registered Education Savings Plan (Canada) retirement: type: string description: Retirement account not covered by other subtypes rlif: type: string description: Restricted Life Income Fund (RLIF) (Canada) roth: type: string description: Roth IRA (US) roth 401k: type: string description: Employer-sponsored Roth 401(k) plan (US) roth 403B: type: string description: Roth 403(b) retirement savings account for non-profits and schools (US) roth 457b: type: string description: Roth 457(b) deferred-compensation retirement plan for governments and non-profits (US) roth pension: type: string description: Roth version of a standard pension account roth profit sharing plan: type: string description: Roth version of a profit sharing plan roth thrift savings plan: type: string description: Roth version of the Thrift Savings Plan (US) rrif: type: string description: Registered Retirement Income Fund (RRIF) (Canada) rrsp: type: string description: Registered Retirement Savings Plan (Canadian, similar to US 401(k)) sarsep: type: string description: Salary Reduction Simplified Employee Pension Plan (SARSEP), discontinued retirement plan (US) sep ira: type: string description: Simplified Employee Pension IRA (SEP IRA), retirement plan for small businesses and self-employed (US) simple ira: type: string description: Savings Incentive Match Plan for Employees IRA, retirement plan for small businesses (US) sipp: type: string description: Self-Invested Personal Pension (SIPP) (UK) stock plan: type: string description: Standard stock plan account tfsa: type: string description: Tax-Free Savings Account (TFSA), a retirement plan similar to a Roth IRA (Canada) thrift savings plan: type: string description: Thrift Savings Plan, a retirement savings and investment plan for Federal employees and members of the uniformed services. trust: type: string description: Account representing funds or assets held by a trustee for the benefit of a beneficiary. Includes both revocable and irrevocable trusts. ugma: type: string description: '''Uniform Gift to Minors Act'' (brokerage account for minors, US)' utma: type: string description: | 'Uniform Transfers to Minors Act' (brokerage account for minors, US) variable annuity: type: string description: Tax-deferred capital accumulation annuity contract required: - "529" - 401a - 401k - 403B - 457b - brokerage - cash isa - crypto exchange - education savings account - fhsa - fixed annuity - gic - health reimbursement arrangement - hsa - ira - isa - keogh - lif - life insurance - line of credit - lira - lrif - lrsp - mutual fund - non-custodial wallet - non-taxable brokerage account - other - other annuity - other insurance - pension - prif - profit sharing plan - qshr - rdsp - resp - retirement - rlif - roth - roth 401k - roth 403B - roth 457b - roth pension - roth profit sharing plan - roth thrift savings plan - rrif - rrsp - sarsep - sep ira - simple ira - sipp - stock plan - thrift savings plan - tfsa - trust - ugma - utma - variable annuity PayrollAccount: title: PayrollAccount type: string description: A payroll account. properties: payroll: type: string description: Standard payroll account required: - payroll PaymentStatusUpdateWebhook: title: PaymentStatusUpdateWebhook type: object additionalProperties: true 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: 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 webhook_code: PAYMENT_STATUS_UPDATE payment_id: payment-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2 new_payment_status: PAYMENT_STATUS_INITIATED old_payment_status: PAYMENT_STATUS_PROCESSING original_reference: Account Funding 99744 adjusted_reference: Account Funding 99 original_start_date: "2017-09-14" adjusted_start_date: "2017-09-15" timestamp: "2017-09-14T14:42:19.350Z" environment: production properties: webhook_type: type: string description: '`PAYMENT_INITIATION`' webhook_code: type: string description: '`PAYMENT_STATUS_UPDATE`' payment_id: type: string description: The `payment_id` for the payment being updated transaction_id: type: string description: The transaction ID that this payment is associated with, if any. This is present only when a payment was initiated using virtual accounts. nullable: true new_payment_status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' old_payment_status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' original_reference: type: string description: The original value of the reference when creating the payment. nullable: true adjusted_reference: type: string description: The value of the reference sent to the bank after adjustment to pass bank validation rules. nullable: true original_start_date: format: date type: string description: The original value of the `start_date` provided during the creation of a standing order. If the payment is not a standing order, this field will be `null`. nullable: true adjusted_start_date: format: date type: string description: The start date sent to the bank after adjusting for holidays or weekends. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, or if the payment is not a standing order, this field will be `null`. nullable: true timestamp: type: string format: date-time description: The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - payment_id - new_payment_status - old_payment_status - original_reference - original_start_date - adjusted_start_date - timestamp - environment PaymentInitiationConsentStatusUpdateWebhook: title: PaymentInitiationConsentStatusUpdateWebhook type: object additionalProperties: true description: Fired when the status of a payment consent has changed. x-examples: example-1: webhook_type: PAYMENT_INITIATION webhook_code: CONSENT_STATUS_UPDATE consent_id: payment-consent-id-production-e7258765-69f9-46b1-9c67-d2800448e5ff old_status: UNAUTHORISED new_status: AUTHORISED timestamp: "2017-09-14T14:42:19.350Z" environment: production properties: webhook_type: type: string description: '`PAYMENT_INITIATION`' webhook_code: type: string description: '`CONSENT_STATUS_UPDATE`' consent_id: type: string description: The `id` for the consent being updated old_status: $ref: '#/components/schemas/PaymentInitiationConsentStatus' new_status: $ref: '#/components/schemas/PaymentInitiationConsentStatus' timestamp: type: string format: date-time description: The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - consent_id - old_status - new_status - timestamp - environment WalletTransactionStatusUpdateWebhook: title: WalletTransactionStatusUpdateWebhook type: object additionalProperties: true description: Fired when the status of a wallet transaction has changed. x-examples: example-1: webhook_type: WALLET webhook_code: WALLET_TRANSACTION_STATUS_UPDATE transaction_id: wallet-transaction-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2 payment_id: payment-id-production-feca8a7a-5591-4aef-9297-f3062bb735d3 wallet_id: wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88 new_status: SETTLED old_status: INITIATED timestamp: "2017-09-14T14:42:19.350Z" environment: production properties: webhook_type: type: string description: '`WALLET`' webhook_code: type: string description: '`WALLET_TRANSACTION_STATUS_UPDATE`' transaction_id: type: string description: The `transaction_id` for the wallet transaction being updated payment_id: type: string description: The `payment_id` associated with the transaction. This will be present in case of `REFUND` and `PIS_PAY_IN`. nullable: true wallet_id: type: string description: The EMI (E-Money Institution) wallet that this payment is associated with. This wallet is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests. new_status: $ref: '#/components/schemas/WalletTransactionStatus' old_status: $ref: '#/components/schemas/WalletTransactionStatus' failure_reason: $ref: '#/components/schemas/WalletTransactionFailureReason' timestamp: type: string format: date-time description: The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - transaction_id - new_status - old_status - timestamp - environment Holding: title: Holding type: object additionalProperties: true description: A securities holding at an institution. properties: account_id: type: string description: The Plaid `account_id` associated with the holding. security_id: type: string description: The Plaid `security_id` associated with the holding. Security data is not specific to a user's account; any user who held the same security at the same financial institution at the same time would have identical security data. The `security_id` for the same security will typically be the same across different institutions, but this is not guaranteed. The `security_id` does not typically change, but may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. institution_price: type: number format: double description: The last price given by the institution for this security. institution_price_as_of: type: string format: date description: The date at which `institution_price` was current. nullable: true institution_price_datetime: type: string format: date-time description: | Date and time at which `institution_price` was current, in ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). This field is returned for select financial institutions and comes as provided by the institution. It may contain default time values (such as 00:00:00). nullable: true institution_value: type: number format: double description: The value of the holding, as reported by the institution. cost_basis: type: number format: double description: The total cost basis of the holding (e.g., the total amount spent to acquire all assets currently in the holding). nullable: true quantity: description: The total quantity of the asset held, as reported by the financial institution. If the security is an option, `quantity` will reflect the total number of options (typically the number of contracts multiplied by 100), not the number of contracts. type: number format: double iso_currency_code: type: string description: The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true 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. 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 format: double description: The total quantity of vested assets held, as reported by the financial institution. Vested assets are only associated with [equities](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-securities-type). nullable: true vested_value: type: number format: double description: The value of the vested holdings as reported by the institution. nullable: true tax_lots: description: Per-lot acquisition data for this holding. An empty array indicates the institution does not provide lot-level data. type: array items: $ref: '#/components/schemas/HoldingTaxLot' required: - account_id - security_id - institution_price - institution_value - cost_basis - quantity - iso_currency_code - unofficial_currency_code HoldingTaxLot: title: HoldingTaxLot description: A single acquisition lot within a holding. type: object additionalProperties: true properties: institution_lot_id: nullable: true description: The financial institution's identifier for this lot. Null if the institution does not provide a lot identifier. type: string original_purchase_datetime: nullable: true description: The date and time this lot was acquired, in ISO 8601 format. Null if the institution does not provide acquisition datetime data. type: string format: date-time quantity: nullable: true description: The number of units of the security in this lot. type: number format: double purchase_price: nullable: true description: The price per unit of the security at the time this lot was acquired. type: number format: double cost_basis: nullable: true description: The total cost basis of this lot, inclusive of any fees. type: number format: double current_value: nullable: true description: The current market value of this lot. type: number format: double position_type: $ref: '#/components/schemas/HoldingTaxLotPositionType' required: - institution_lot_id - original_purchase_datetime - quantity - purchase_price - cost_basis - current_value - position_type HoldingTaxLotPositionType: title: HoldingTaxLotPositionType description: Indicates whether a holding lot position is long or short. Possible values are `LONG` and `SHORT`. type: string nullable: true enum: - LONG - SHORT Security: title: Security type: object additionalProperties: true description: Contains details about a security properties: security_id: type: string description: A unique, Plaid-specific identifier for the security, used to associate securities with holdings. Like all Plaid identifiers, the `security_id` is case sensitive. The `security_id` may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. isin: type: string nullable: true description: 12-character ISIN, a globally unique securities identifier. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). cusip: nullable: true type: string description: 9-character CUSIP, an identifier assigned to North American securities. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). sedol: nullable: true type: string deprecated: true description: (Deprecated) 7-character SEDOL, an identifier assigned to securities in the UK. institution_security_id: nullable: true type: string description: An identifier given to the security by the institution institution_id: nullable: true type: string description: If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs. proxy_security_id: nullable: true type: string description: In certain cases, Plaid will provide the ID of another security whose performance resembles this security, typically when the original security has low volume, or when a private security can be modeled with a publicly traded security. name: nullable: true type: string description: A descriptive name for the security, suitable for display. ticker_symbol: type: string nullable: true description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. is_cash_equivalent: nullable: true type: boolean description: Indicates that a security is a highly liquid asset and can be treated like cash. type: nullable: true type: string description: |- The security type of the holding. In rare instances, a null value is returned when institutional data is insufficient to determine the security type. Valid security types are: `cash`: Cash, currency, and money market funds `cryptocurrency`: Digital or virtual currencies `derivative`: Options, warrants, and other derivative instruments `equity`: Domestic and foreign equities `etf`: Multi-asset exchange-traded investment funds `fixed income`: Bonds and certificates of deposit (CDs) `loan`: Loans and loan receivables `mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors `other`: Unknown or other investment types subtype: nullable: true type: string description: |- The security subtype of the holding. In rare instances, a null value is returned when institutional data is insufficient to determine the security subtype. Possible values: `asset backed security`, `bill`, `bond`, `bond with warrants`, `cash`, `cash management bill`, `common stock`, `convertible bond`, `convertible equity`, `cryptocurrency`, `depositary receipt`, `depositary receipt on debt`, `etf`, `float rating note`, `fund of funds`, `hedge fund`, `limited partnership unit`, `medium term note`, `money market debt`, `mortgage backed security`, `municipal bond`, `mutual fund`, `note`, `option`, `other`, `preferred convertible`, `preferred equity`, `private equity fund`, `real estate investment trust`, `structured equity product`, `treasury inflation protected securities`, `unit`, `warrant`. close_price: type: number format: double nullable: true description: | Price of the security at the close of the previous trading session. Null for non-public securities. If the security is a foreign currency this field will be updated daily and will be priced in USD. If the security is a cryptocurrency, this field will be updated multiple times a day. As crypto prices can fluctuate quickly and data may become stale sooner than other asset classes, refer to `update_datetime` with the time when the price was last updated. close_price_as_of: type: string nullable: true format: date description: Date for which `close_price` is accurate. Always `null` if `close_price` is `null`. update_datetime: type: string nullable: true format: date-time description: Date and time at which `close_price` is accurate, in ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). Always `null` if `close_price` is `null`. iso_currency_code: type: string nullable: true description: The ISO-4217 currency code of the price given. Always `null` if `unofficial_currency_code` is non-`null`. unofficial_currency_code: 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. 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 description: The ISO-10383 Market Identifier Code of the exchange or market in which the security is being traded. sector: nullable: true type: string description: |- The sector classification of the security, such as Finance, Health Technology, etc. For a complete list of possible values, please refer to the ["Sectors and Industries" spreadsheet](https://docs.google.com/spreadsheets/d/1L7aXUdqLhxgM8qe7hK67qqKXiUdQqILpwZ0LpxvCVnc). industry: nullable: true type: string description: |- The industry classification of the security, such as Biotechnology, Airlines, etc. For a complete list of possible values, please refer to the ["Sectors and Industries" spreadsheet](https://docs.google.com/spreadsheets/d/1L7aXUdqLhxgM8qe7hK67qqKXiUdQqILpwZ0LpxvCVnc). cfi_code: 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: $ref: '#/components/schemas/FixedIncome' required: - cusip - sedol - isin - institution_security_id - institution_id - proxy_security_id - name - ticker_symbol - is_cash_equivalent - close_price - close_price_as_of - iso_currency_code - unofficial_currency_code - security_id - type - market_identifier_code - sector - industry - cfi_code - figi - option_contract - fixed_income InvestmentTransactionType: type: string enum: - buy - sell - cancel - cash - fee - transfer description: |- Value is one of the following: `buy`: Buying an investment `sell`: Selling an investment `cancel`: A cancellation of a pending transaction `cash`: Activity that modifies a cash position `fee`: A fee on the account `transfer`: Activity which modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema). InvestmentTransactionSubtype: type: string description: For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema). enum: - account fee - adjustment - assignment - buy - buy to cover - contribution - deposit - distribution - dividend - dividend reinvestment - exercise - expire - fund fee - interest - interest receivable - interest reinvestment - legal fee - loan payment - long-term capital gain - long-term capital gain reinvestment - management fee - margin expense - merger - miscellaneous fee - non-qualified dividend - non-resident tax - pending credit - pending debit - qualified dividend - rebalance - return of principal - request - sell - sell short - send - short-term capital gain - short-term capital gain reinvestment - spin off - split - stock distribution - tax - tax withheld - trade - transfer - transfer fee - trust fee - unqualified gain - withdrawal OptionContract: title: OptionContract type: object additionalProperties: true nullable: true description: |- Details about the option security. For the Sandbox environment, this data is currently only available if the Item is using a [custom Sandbox user](https://plaid.com/docs/sandbox/user-custom/) and the `ticker` field of the custom security follows the [OCC Option Symbol](https://en.wikipedia.org/wiki/Option_symbol#The_OCC_Option_Symbol) standard with no spaces. For an example of simulating this in Sandbox, see the [custom Sandbox GitHub](https://github.com/plaid/sandbox-custom-users). properties: contract_type: type: string description: |- The type of this option contract. It is one of: `put`: for Put option contracts `call`: for Call option contracts expiration_date: type: string format: date description: The expiration date for this option contract, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. strike_price: type: number format: double description: The strike price for this option contract, per share of security. underlying_security_ticker: type: string description: The ticker of the underlying security for this option contract. required: - contract_type - expiration_date - strike_price - underlying_security_ticker FixedIncome: title: FixedIncome type: object additionalProperties: true nullable: true description: Details about the fixed income security. properties: yield_rate: $ref: '#/components/schemas/YieldRate' maturity_date: nullable: true type: string format: date description: The maturity date for this fixed income security, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. issue_date: nullable: true type: string format: date description: The issue date for this fixed income security, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. face_value: nullable: true type: number format: double description: The face value that is paid upon maturity of the fixed income security, per unit of security. required: - yield_rate - maturity_date - issue_date - face_value YieldRate: title: YieldRate type: object additionalProperties: true nullable: true description: Details about a fixed income security's expected rate of return. properties: percentage: type: number format: double description: The fixed income security's expected rate of return. type: $ref: '#/components/schemas/YieldRateType' required: - percentage - type YieldRateType: title: YieldRateType type: string nullable: true enum: - coupon - coupon_equivalent - discount - yield - null description: |- The type of rate which indicates how the predicted yield was calculated. It is one of: `coupon`: the annualized interest rate for securities with a one-year term or longer, such as treasury notes and bonds. `coupon_equivalent`: the calculated equivalent for the annualized interest rate factoring in the discount rate and time to maturity, for shorter term, non-interest-bearing securities such as treasury bills. `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 their face value. InvestmentTransaction: title: InvestmentTransaction type: object additionalProperties: true description: A transaction within an investment account. properties: investment_transaction_id: type: string description: The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive. cancel_transaction_id: type: string deprecated: true description: A legacy field formerly used internally by Plaid to identify certain canceled transactions. nullable: true x-hidden-from-docs: true account_id: type: string description: The `account_id` of the account against which this transaction posted. security_id: type: string description: The `security_id` to which this transaction is related. nullable: true date: type: string format: date description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. This is typically the settlement date. transaction_datetime: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) representing when the order type was initiated. This field is returned for select financial institutions and reflects the value provided by the institution. nullable: true name: type: string description: The institution's description of the transaction. quantity: type: number format: double description: The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions. amount: description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: description: The price of the security at which this transaction occurred. type: number format: double fees: type: number format: double description: The combined value of all fees applied to this transaction nullable: true type: $ref: '#/components/schemas/InvestmentTransactionType' subtype: $ref: '#/components/schemas/InvestmentTransactionSubtype' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true required: - investment_transaction_id - account_id - security_id - date - name - quantity - amount - price - fees - type - subtype - iso_currency_code - unofficial_currency_code StandaloneInvestmentTransactionType: title: StandaloneInvestmentTransactionType type: object additionalProperties: true description: Valid values for investment transaction types and subtypes. Note that transactions representing inflow of cash will appear as negative amounts, outflow of cash will appear as positive amounts. properties: buy: $ref: '#/components/schemas/StandaloneInvestmentTransactionBuyType' sell: $ref: '#/components/schemas/StandaloneInvestmentTransactionSellType' cancel: type: string description: A cancellation of a pending transaction cash: $ref: '#/components/schemas/StandaloneInvestmentTransactionCashType' fee: $ref: '#/components/schemas/StandaloneInvestmentTransactionFeeType' transfer: $ref: '#/components/schemas/StandaloneInvestmentTransactionTransferType' required: - buy - sell - cancel - cash - fee - transfer StandaloneInvestmentTransactionBuyType: title: BuyType description: Buying an investment type: string properties: assignment: type: string description: Assignment of short option holding contribution: type: string description: Inflow of assets into a tax-advantaged account buy: type: string description: Purchase to open or increase a position buy to cover: type: string description: Purchase to close a short position dividend reinvestment: type: string description: Purchase using proceeds from a cash dividend interest reinvestment: type: string description: Purchase using proceeds from a cash interest payment long-term capital gain reinvestment: type: string description: Purchase using long-term capital gain cash proceeds short-term capital gain reinvestment: type: string description: Purchase using short-term capital gain cash proceeds StandaloneInvestmentTransactionCashType: title: CashType description: Activity that modifies a cash position type: string properties: account fee: type: string description: Fees paid for account maintenance contribution: type: string description: Inflow of assets into a tax-advantaged account deposit: type: string description: Inflow of cash into an account dividend: type: string description: Inflow of cash from a dividend stock distribution: type: string description: Inflow of stock from a distribution interest: type: string description: Inflow of cash from interest legal fee: type: string description: Fees paid for legal charges or services long-term capital gain: type: string description: Long-term capital gain received as cash management fee: type: string description: Fees paid for investment management of a mutual fund or other pooled investment vehicle margin expense: type: string description: Fees paid for maintaining margin debt non-qualified dividend: type: string description: Inflow of cash from a non-qualified dividend non-resident tax: type: string description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction pending credit: type: string description: Pending inflow of cash pending debit: type: string description: Pending outflow of cash qualified dividend: type: string description: Inflow of cash from a qualified dividend short-term capital gain: type: string description: Short-term capital gain received as cash tax: type: string description: Taxes paid on behalf of the investor tax withheld: type: string description: Taxes withheld on behalf of the customer transfer fee: type: string description: Fees incurred for transfer of a holding or account trust fee: type: string description: Fees related to administration of a trust account unqualified gain: type: string description: Unqualified capital gain received as cash withdrawal: type: string description: Outflow of cash from an account StandaloneInvestmentTransactionFeeType: title: FeeType description: Fees on the account, e.g. commission, bookkeeping, options-related. type: string properties: account fee: type: string description: Fees paid for account maintenance adjustment: type: string description: Increase or decrease in quantity of item dividend: type: string description: Inflow of cash from a dividend interest: type: string description: Inflow of cash from interest interest receivable: type: string description: Inflow of cash from interest receivable long-term capital gain: type: string description: Long-term capital gain received as cash legal fee: type: string description: Fees paid for legal charges or services management fee: type: string description: Fees paid for investment management of a mutual fund or other pooled investment vehicle margin expense: type: string description: Fees paid for maintaining margin debt non-qualified dividend: type: string description: Inflow of cash from a non-qualified dividend non-resident tax: type: string description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction qualified dividend: type: string description: Inflow of cash from a qualified dividend return of principal: type: string description: Repayment of loan principal short-term capital gain: type: string description: Short-term capital gain received as cash stock distribution: type: string description: Inflow of stock from a distribution tax: type: string description: Taxes paid on behalf of the investor tax withheld: type: string description: Taxes withheld on behalf of the customer transfer fee: type: string description: Fees incurred for transfer of a holding or account trust fee: type: string description: Fees related to administration of a trust account unqualified gain: type: string description: Unqualified capital gain received as cash StandaloneInvestmentTransactionSellType: title: SellType description: Selling an investment type: string properties: distribution: type: string description: Outflow of assets from a tax-advantaged account exercise: type: string description: Exercise of an option or warrant contract sell: type: string description: Sell to close or decrease an existing holding sell short: type: string description: Sell to open a short position StandaloneInvestmentTransactionTransferType: title: TransferType description: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer type: string properties: assignment: type: string description: Assignment of short option holding adjustment: type: string description: Increase or decrease in quantity of item exercise: type: string description: Exercise of an option or warrant contract expire: type: string description: Expiration of an option or warrant contract merger: type: string description: Stock exchanged at a pre-defined ratio as part of a merger between companies request: type: string description: Request fiat or cryptocurrency to an address or email send: type: string description: Inflow or outflow of fiat or cryptocurrency to an address or email spin off: type: string description: Inflow of stock from spin-off transaction of an existing holding split: type: string description: Inflow of stock from a forward split of an existing holding trade: type: string description: Trade of one cryptocurrency for another transfer: type: string description: Movement of assets into or out of an account AccountSubtypes: title: AccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/AccountSubtype' UserPermissionRevokedWebhook: title: UserPermissionRevokedWebhook type: object additionalProperties: true description: |- The `USER_PERMISSION_REVOKED` webhook may be fired when an end user has revoked the permission that they previously granted to access an Item. If the end user revoked their permissions through Plaid (such as via the Plaid Portal or by contacting Plaid support), the webhook will fire. If the end user revoked their permissions directly through the institution, this webhook may not always fire, since some institutions' consent portals do not trigger this webhook. To attempt to restore the Item, it can be sent through [update mode](https://plaid.com/docs/link/update-mode). Depending on the exact process the end user used to revoke permissions, it may not be possible to launch update mode for the Item. If you encounter an error when attempting to create a Link token for update mode on an Item with revoked permissions, create a fresh Link token for the user. Note that when working with tokenized account numbers with Auth or Transfer, the account number provided by Plaid will no longer work for creating transfers once user permission has been revoked, except for US Bank Items. x-examples: example-1: webhook_type: ITEM webhook_code: USER_PERMISSION_REVOKED error: error_code: USER_PERMISSION_REVOKED error_message: the holder of this account has revoked their permission for your application to access it display_message: null error_type: ITEM_ERROR status: 400 item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ user_id: usr_9nSp2KuZ2x4JDw environment: production properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`USER_PERMISSION_REVOKED`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - environment FallbackAuthMicrodepositAutoVerifiedWebhook: title: FallbackAuthMicrodepositAutoVerifiedWebhook type: object description: Fires when an account is automatically verified using micro-deposits additionalProperties: true properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`AUTOMATICALLY_VERIFIED`' error: type: string nullable: true description: The error code associated with the webhook. account_id: type: string description: The external account ID associated with the micro-deposit item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - account_id - item_id - environment FallbackAuthMicrodepositVerificationExpiredWebhook: title: FallbackAuthMicrodepositVerificationExpiredWebhook type: object description: Fires when an account has an expired verification when using micro-deposits additionalProperties: true properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`VERIFICATION_EXPIRED`' error: type: string nullable: true description: The error code associated with the webhook. account_id: type: string description: The external account ID associated with the micro-deposit item_id: $ref: '#/components/schemas/ItemId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - account_id - item_id - environment TransferGetRequest: title: TransferGetRequest type: object description: Defines the request schema for `/transfer/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_id: $ref: '#/components/schemas/TransferID' authorization_id: $ref: '#/components/schemas/TransferAuthorizationID' originator_client_id: deprecated: true x-hidden-from-docs: true type: string nullable: true description: The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS). TransferRecurringGetRequest: title: TransferRecurringGetRequest type: object description: Defines the request schema for `/transfer/recurring/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' required: - recurring_transfer_id BankTransferGetRequest: title: BankTransferGetRequest type: object description: Defines the request schema for `/bank_transfer/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' bank_transfer_id: $ref: '#/components/schemas/BankTransferID' required: - bank_transfer_id TransferGetResponse: title: TransferGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/get` properties: transfer: $ref: '#/components/schemas/Transfer' request_id: $ref: '#/components/schemas/RequestID' required: - transfer - request_id TransferRecurringGetResponse: title: TransferRecurringGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/recurring/get` properties: recurring_transfer: $ref: '#/components/schemas/RecurringTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - recurring_transfer - request_id BankTransferGetResponse: title: BankTransferGetResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/get` properties: bank_transfer: $ref: '#/components/schemas/BankTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfer - request_id TransferID: type: string title: TransferID description: Plaid's unique identifier for a transfer. RecurringTransferID: type: string title: RecurringTransferID description: Plaid's unique identifier for a recurring transfer. TransferTestClockID: type: string title: TransferTestClockID description: Plaid's unique identifier for a test clock. This field is only populated in the Sandbox environment, and only if a `test_clock_id` was included in the `/transfer/recurring/create` request. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). TransferSweepID: type: string title: TransferSweepID description: Plaid's unique identifier for a sweep. TransferSweepIDNullable: type: string title: TransferSweepID description: Plaid's unique identifier for a sweep. nullable: true TransferRefundID: type: string title: TransferRefundID description: Plaid's unique identifier for a refund. TransferIDForRefund: type: string title: TransferID description: The ID of the transfer to refund. TransferAuthorizationID: type: string title: TransferAuthorizationID description: Plaid's unique identifier for a transfer authorization. TransferLedgerID: type: string title: TransferLedgerID description: Plaid's unique identifier for a Plaid Ledger Balance. nullable: true BankTransferID: type: string title: BankTransferID description: Plaid's unique identifier for a bank transfer. TransferExpectedSweepSettlementScheduleItem: title: TransferExpectedSweepSettlementScheduleItem type: object additionalProperties: true description: Defines an expected sweep date and amount. properties: sweep_settlement_date: type: string description: The settlement date of a sweep for this transfer. format: date swept_settled_amount: type: string description: The accumulated amount that has been swept by `sweep_settlement_date`. required: - sweep_settlement_date - swept_settled_amount Transfer: title: Transfer type: object additionalProperties: true description: Represents a transfer within the Transfers API. properties: id: $ref: '#/components/schemas/TransferID' authorization_id: $ref: '#/components/schemas/TransferAuthorizationID' ach_class: $ref: '#/components/schemas/ACHClass' account_id: type: string description: The Plaid `account_id` corresponding to the end-user account that will be debited or credited. funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponseNullable' ledger_id: $ref: '#/components/schemas/TransferLedgerID' type: $ref: '#/components/schemas/TransferType' user: $ref: '#/components/schemas/TransferUserInResponse' amount: $ref: '#/components/schemas/TransferAmount' description: type: string description: The description of the transfer. created: type: string format: date-time description: The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z` status: $ref: '#/components/schemas/TransferStatus' sweep_status: $ref: '#/components/schemas/TransferSweepStatus' network: $ref: '#/components/schemas/TransferNetwork' wire_details: $ref: '#/components/schemas/TransferWireDetails' cancellable: type: boolean description: When `true`, you can still cancel this transfer. failure_reason: $ref: '#/components/schemas/TransferFailure' metadata: $ref: '#/components/schemas/TransferMetadata' origination_account_id: type: string description: Plaid's unique identifier for the origination account that was used for this transfer. deprecated: true x-hidden-from-docs: true guarantee_decision: deprecated: true allOf: - $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecision' guarantee_decision_rationale: $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale' guarantee_details: $ref: '#/components/schemas/TransferGuaranteeDetails' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" standard_return_window: type: string description: 'The date 3 business days from settlement date indicating the following ACH returns can no longer happen: R01, R02, R03, R29. This will be of the form YYYY-MM-DD.' format: date 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, R52, R53. This will be of the form YYYY-MM-DD.' format: date nullable: true expected_settlement_date: type: string description: Deprecated for Plaid Ledger clients, use `expected_funds_available_date` instead. format: date nullable: true deprecated: true expected_funds_available_date: type: string description: The expected date when funds from a transfer will be made available and can be withdrawn from the associated ledger balance, assuming the debit does not return before this date. If the transfer does return before this date, this field will be null. Only applies to debit transfers. This will be of the form YYYY-MM-DD. format: date nullable: true originator_client_id: type: string nullable: true description: The Plaid client ID that is the originator of this transfer. Only present if created on behalf of another client as a [Platform customer](https://plaid.com/docs/transfer/application/#originators-vs-platforms). refunds: type: array description: A list of refunds associated with this transfer. items: $ref: '#/components/schemas/TransferRefund' recurring_transfer_id: type: string description: The id of the recurring transfer if this transfer belongs to a recurring transfer. nullable: true expected_sweep_settlement_schedule: type: array description: The expected sweep settlement schedule of this transfer, assuming this transfer is not `returned`. Only applies to ACH debit transfers. items: $ref: '#/components/schemas/TransferExpectedSweepSettlementScheduleItem' credit_funds_source: deprecated: true allOf: - $ref: '#/components/schemas/TransferCreditFundsSource' facilitator_fee: $ref: '#/components/schemas/TransferFacilitatorFee' network_trace_id: $ref: '#/components/schemas/TransferNetworkTraceID' required: - id - authorization_id - type - user - amount - description - created - status - network - cancellable - failure_reason - metadata - origination_account_id - guarantee_decision - guarantee_decision_rationale - iso_currency_code - standard_return_window - unauthorized_return_window - expected_settlement_date - originator_client_id - refunds - recurring_transfer_id - funding_account_id - credit_funds_source RecurringTransfer: title: RecurringTransfer type: object additionalProperties: true description: Represents a recurring transfer within the Transfers API. properties: recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' created: type: string format: date-time description: The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z` next_origination_date: type: string format: date nullable: true description: |- A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). The next transfer origination date after bank holiday adjustment. test_clock_id: type: string description: Plaid's unique identifier for a test clock. nullable: true type: $ref: '#/components/schemas/TransferType' amount: $ref: '#/components/schemas/TransferAmount' status: $ref: '#/components/schemas/TransferRecurringStatus' ach_class: $ref: '#/components/schemas/ACHClass' network: $ref: '#/components/schemas/TransferRecurringNetwork' origination_account_id: type: string description: Plaid's unique identifier for the origination account that was used for this transfer. deprecated: true x-hidden-from-docs: true account_id: type: string description: The Plaid `account_id` corresponding to the end-user account that will be debited or credited. funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponse' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" description: type: string description: The description of the recurring transfer. transfer_ids: type: array description: The created transfer instances associated with this `recurring_transfer_id`. If the recurring transfer has been newly created, this array will be empty. items: $ref: '#/components/schemas/TransferID' user: $ref: '#/components/schemas/TransferUserInResponse' schedule: $ref: '#/components/schemas/TransferRecurringSchedule' required: - recurring_transfer_id - created - next_origination_date - type - amount - status - network - iso_currency_code - origination_account_id - funding_account_id - account_id - user - schedule - description - transfer_ids RecurringTransferNullable: title: RecurringTransferNullable type: object additionalProperties: true description: Represents a recurring transfer within the Transfers API. allOf: - $ref: '#/components/schemas/RecurringTransfer' - type: object nullable: true TransferTestClock: title: TransferTestClock type: object additionalProperties: true description: Defines the test clock for a transfer. properties: test_clock_id: $ref: '#/components/schemas/TransferTestClockID' virtual_time: $ref: '#/components/schemas/VirtualTime' required: - test_clock_id - virtual_time VirtualTime: type: string title: VirtualTime format: date-time description: The virtual timestamp on the test clock. This will be of the form `2006-01-02T15:04:05Z`. BankTransfer: title: BankTransfer type: object additionalProperties: true description: Represents a bank transfer within the Bank Transfers API. properties: id: $ref: '#/components/schemas/BankTransferID' ach_class: $ref: '#/components/schemas/ACHClass' account_id: type: string description: The account ID that should be credited/debited for this bank transfer. type: $ref: '#/components/schemas/BankTransferType' user: $ref: '#/components/schemas/BankTransferUser' amount: $ref: '#/components/schemas/BankTransferAmount' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" description: type: string description: The description of the transfer. created: type: string format: date-time description: The datetime when this bank transfer was created. This will be of the form `2006-01-02T15:04:05Z` status: $ref: '#/components/schemas/BankTransferStatus' network: $ref: '#/components/schemas/BankTransferNetwork' cancellable: type: boolean description: When `true`, you can still cancel this bank transfer. failure_reason: $ref: '#/components/schemas/BankTransferFailure' custom_tag: type: string description: A string containing the custom tag provided by the client in the create request. Will be null if not provided. nullable: true metadata: $ref: '#/components/schemas/BankTransferMetadata' origination_account_id: type: string description: Plaid's unique identifier for the origination account that was used for this transfer. direction: $ref: '#/components/schemas/BankTransferDirection' required: - id - ach_class - account_id - type - user - amount - iso_currency_code - description - created - status - network - cancellable - failure_reason - custom_tag - metadata - origination_account_id - direction DetailedOriginator: type: object title: Originator additionalProperties: true description: Originator and their status. properties: client_id: type: string description: Originator's client ID. transfer_diligence_status: $ref: '#/components/schemas/TransferDiligenceStatus' company_name: type: string description: The company name of the end customer. outstanding_requirements: type: array description: List of outstanding requirements that must be submitted before Plaid can approve the originator. Only populated when `transfer_diligence_status` is `more_information_required`. items: $ref: '#/components/schemas/TransferPlatformRequirement' required: - client_id - transfer_diligence_status - company_name Originator: type: object title: Originator additionalProperties: true description: Originator and their status. properties: client_id: type: string description: Originator's client ID. transfer_diligence_status: $ref: '#/components/schemas/TransferDiligenceStatus' required: - client_id - transfer_diligence_status ACHClass: type: string title: ACHClass enum: - ccd - ppd - tel - web description: |- Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC codes](https://plaid.com/docs/transfer/creating-transfers/#ach-sec-codes). Codes supported for credits: `ccd`, `ppd` Codes supported for debits: `ccd`, `ppd`, `tel`, `web` `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. `"tel"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call. TransferCreditFundsSource: type: string title: TransferCreditFundsSource deprecated: true nullable: true enum: - sweep - prefunded_rtp_credits - prefunded_ach_credits - null description: |- This field is now deprecated. You may ignore it for transfers created on and after 12/01/2023. Specifies the source of funds for the transfer. Only valid for `credit` transfers, and defaults to `sweep` if not specified. This field is not specified for `debit` transfers. `sweep` - Sweep funds from your funding account `prefunded_rtp_credits` - Use your prefunded RTP credit balance with Plaid `prefunded_ach_credits` - Use your prefunded ACH credit balance with Plaid TransferAmount: title: TransferAmount type: string description: The amount of the transfer (decimal string with two digits of precision e.g. "10.00"). When calling `/transfer/authorization/create`, specify the maximum amount to authorize. When calling `/transfer/create`, specify the exact amount of the transfer, up to a maximum of the amount authorized. If this field is left blank when calling `/transfer/create`, the maximum amount authorized in the `authorization_id` will be sent. TransferSweepAmount: title: TransferSweepAmount type: string description: A signed amount of how much was `swept` or `return_swept` for this transfer (decimal string with two digits of precision e.g. "-5.50"). nullable: true TransferRefundAmount: title: TransferRefundAmount type: string description: The amount of the refund (decimal string with two digits of precision e.g. "10.00"). TransferFacilitatorFee: title: TransferFacilitatorFee type: string description: The amount to deduct from `transfer.amount` and distribute to the platform's Ledger balance as a facilitator fee (decimal string with two digits of precision e.g. "10.00"). The remainder will go to the end-customer's Ledger balance. This must be value greater than 0 and less than or equal to the `transfer.amount`. TransferNetworkTraceID: title: TransferNetworkTraceID type: string description: |- The trace identifier for the transfer based on its network. This will only be set after the transfer has posted. For `ach` or `same-day-ach` transfers, this is the ACH trace number. For `rtp` transfers, this is the Transaction Identification number. For `wire` transfers, this is the IMAD (Input Message Accountability Data) number. nullable: true TransferIntentGetFailureReason: title: TransferIntentGetFailureReason type: object nullable: true additionalProperties: true description: The reason for a failed transfer intent. Returned only if the transfer intent status is `failed`. Null otherwise. properties: error_type: type: string description: A broad categorization of the error. error_code: type: string description: A code representing the reason for a failed transfer intent (i.e., an API error or the authorization being declined). error_message: type: string description: A human-readable description of the code associated with a failed transfer intent. TransferIntentCreateMode: title: TransferIntentCreateMode type: string enum: - PAYMENT - DISBURSEMENT description: |- The direction of the flow of transfer funds. `PAYMENT`: Transfers funds from an end user's account to your business account. `DISBURSEMENT`: Transfers funds from your business account to an end user's account. BankTransferAmount: title: BankTransferAmount type: string description: The amount of the bank transfer (decimal string with two digits of precision e.g. "10.00"). TransferCreateIdempotencyKey: title: TransferCreateIdempotencyKey type: string deprecated: true x-hidden-from-docs: true maxLength: 50 description: |- Deprecated. `authorization_id` is now used as idempotency instead. A random key provided by the client, per unique 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 transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single transfer is created. TransferAuthorizationIdempotencyKey: title: TransferAuthorizationIdempotencyKey type: string nullable: true maxLength: 50 description: |- A random key provided by the client, per unique authorization, which expires after 48 hours. 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 an authorization fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single authorization is created. Idempotency does not apply to authorizations whose decisions are `user_action_required`. Therefore you may re-attempt the authorization after completing the required user action without changing `idempotency_key`. This idempotency key expires after 48 hours, after which the same key can be reused. Failure to provide this key may result in duplicate charges. TransferRecurringIdempotencyKey: title: TransferRecurringIdempotencyKey type: string maxLength: 50 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 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 maxLength: 50 description: |- A random key provided by the client, per unique refund. 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 refund fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single refund is created. LedgerDepositIdempotencyKey: title: LedgerDepositIdempotencyKey type: string maxLength: 50 description: |- A unique key provided by the client, per unique ledger deposit. Maximum of 50 characters. The API supports idempotency for safely retrying the request without accidentally performing the same operation twice. For example, if a request to create a ledger deposit fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single deposit is created. LedgerDistributeIdempotencyKey: title: LedgerDistributeIdempotencyKey type: string maxLength: 50 description: |- A unique key provided by the client, per unique ledger distribute. Maximum of 50 characters. The API supports idempotency for safely retrying the request without accidentally performing the same operation twice. For example, if a request to create a ledger distribute fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single distribute is created. LedgerWithdrawIdempotencyKey: title: LedgerWithdrawIdempotencyKey type: string maxLength: 50 description: |- A unique key provided by the client, per unique ledger withdraw. Maximum of 50 characters. The API supports idempotency for safely retrying the request without accidentally performing the same operation twice. For example, if a request to create a ledger withdraw fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single withdraw is created. BankTransferIdempotencyKey: title: BankTransferIdempotencyKey type: string maxLength: 50 description: |- A random key provided by the client, per unique bank 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 bank transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single bank transfer is created. TransferAuthorizationUserInRequest: title: TransferAuthorizationUserInRequest type: object description: The legal name and other information for the account holder. If the account has multiple account holders, provide the information for the account holder on whose behalf the authorization is being requested. The `user.legal_name` field is required. Other fields are not currently used and are present to support planned future functionality. properties: legal_name: type: string description: The user's legal name. If the user is a business, provide the business name. phone_number: type: string description: The user's phone number. email_address: type: string description: The user's email address. address: $ref: '#/components/schemas/TransferUserAddressInRequest' required: - legal_name TransferWireDetails: title: TransferWireDetails type: object nullable: true description: Information specific to wire transfers. properties: message_to_beneficiary: type: string nullable: true description: Additional information from the wire originator to the beneficiary. Max 140 characters. wire_return_fee: type: string nullable: true description: The fee amount deducted from the original transfer during a wire return, if applicable. TransferUserInRequest: title: TransferUserInRequest type: object description: The legal name and other information for the account holder. properties: legal_name: type: string description: The user's legal name. phone_number: type: string description: The user's phone number. Phone number input may be validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment. email_address: type: string description: The user's email address. address: $ref: '#/components/schemas/TransferUserAddressInRequest' required: - legal_name TransferUserInRequestDeprecated: title: TransferUserInRequestDeprecated type: object description: The legal name and other information for the account holder. deprecated: true nullable: true x-hidden-from-docs: true properties: legal_name: type: string description: The user's legal name. phone_number: type: string description: The user's phone number. email_address: type: string description: The user's email address. address: $ref: '#/components/schemas/TransferUserAddressInRequest' TransferUserInResponse: title: TransferUserInResponse type: object additionalProperties: true description: The legal name and other information for the account holder. properties: legal_name: type: string description: The user's legal name. phone_number: type: string description: The user's phone number. nullable: true email_address: type: string description: The user's email address. nullable: true address: $ref: '#/components/schemas/TransferUserAddressInResponse' required: - legal_name - phone_number - email_address - address TransferUserAddressInRequest: title: TransferUserAddressInRequest type: object description: The address associated with the account holder. properties: street: type: string description: The street number and name (i.e., "100 Market St."). city: type: string description: Ex. "San Francisco" region: type: string description: The state or province (e.g., "CA"). postal_code: type: string description: The postal code (e.g., "94103"). country: type: string description: A two-letter country code (e.g., "US"). TransferUserAddressInResponse: title: TransferUserAddressInResponse type: object nullable: true additionalProperties: true description: The address associated with the account holder. properties: street: type: string description: The street number and name (i.e., "100 Market St."). nullable: true city: type: string description: Ex. "San Francisco" nullable: true region: type: string description: The state or province (e.g., "CA"). nullable: true postal_code: type: string description: The postal code (e.g., "94103"). nullable: true country: type: string description: A two-letter country code (e.g., "US"). nullable: true required: - street - city - region - postal_code - country BankTransferUser: title: BankTransferUser type: object additionalProperties: true description: The legal name and other information for the account holder. properties: legal_name: type: string description: The account holder's full legal name. If the transfer `ach_class` is `ccd`, this should be the business name of the account holder. email_address: type: string description: The account holder's email. nullable: true routing_number: type: string description: The account holder's routing number. This field is only used in response data. Do not provide this field when making requests. readOnly: true required: - legal_name TransferAuthorizationDecisionRationaleCode: type: string description: |- A code representing the rationale for approving or declining the proposed transfer. If the `rationale_code` is `null`, the transfer passed the authorization check. Any non-`null` value for an `approved` transfer indicates that the authorization check could not be run and that you should perform your own risk assessment on the transfer. The code will indicate why the check could not be run. Possible values for an `approved` transfer are: `MANUALLY_VERIFIED_ITEM` - Item created via a manual entry flow (i.e. Same-Day Micro-deposit, Instant Micro-deposit, or database-based verification), limited information available. `ITEM_LOGIN_REQUIRED` - Unable to collect the account information due to Item staleness. Can be resolved by using Link and setting [`transfer.authorization_id`](https://plaid.com/docs/api/link/#link-token-create-request-transfer-authorization-id) in the request to `/link/token/create`. `PAYMENT_PROFILE_LOGIN_REQUIRED` - The Payment Profile associated with the call to `/transfer/authorization/create` is in a state that requires the end user to re-authenticate. Can be resolved by using Link to refresh the Payment Profile. `MIGRATED_ACCOUNT_ITEM` - Item created via `/transfer/migrate_account` endpoint, limited information available. `ERROR` - Unable to collect the account information due to an unspecified error. The following codes indicate that the authorization decision was `declined`: `NSF` - Transaction has an elevated probability of resulting in a return due to insufficient funds. `RISK` - Transaction is high-risk. `TRANSFER_LIMIT_REACHED` - One or several transfer limits are reached, e.g. monthly transfer limit. Check the accompanying `description` field to understand which limit has been reached. `ADMIN` - Transaction has an elevated probability of resulting in an administrative return (for example a closed, invalid, or unauthorized account). `FRAUD` - Transaction has an elevated probability of being fraudulent. enum: - NSF - RISK - TRANSFER_LIMIT_REACHED - MANUALLY_VERIFIED_ITEM - ITEM_LOGIN_REQUIRED - PAYMENT_PROFILE_LOGIN_REQUIRED - ERROR - MIGRATED_ACCOUNT_ITEM - ADMIN - FRAUD - null TransferAuthorizationDecisionRationale: title: TransferAuthorizationDecisionRationale type: object nullable: true additionalProperties: true description: The rationale for Plaid's decision regarding a proposed transfer. It is always set for `declined` decisions, and may or may not be null for `approved` decisions. properties: code: $ref: '#/components/schemas/TransferAuthorizationDecisionRationaleCode' description: type: string description: A human-readable description of the code associated with a transfer approval or transfer decline. required: - code - description TransferGuaranteeOutcome: type: string description: |- The adaptive guarantee outcome for a transfer. `FULL_INSTANT`: The full transfer amount is guaranteed and funds are available instantly. `PARTIAL_INSTANT_ONLY`: A partial amount is guaranteed and available instantly; the remainder is not guaranteed. `PARTIAL_INSTANT_WITH_OBSERVATION_WINDOW`: A partial amount is guaranteed instantly; an additional amount is conditionally guaranteed subject to an observation window. `NOT_GUARANTEED`: Plaid did not provide a guarantee for this transfer. enum: - FULL_INSTANT - PARTIAL_INSTANT_ONLY - PARTIAL_INSTANT_WITH_OBSERVATION_WINDOW - NOT_GUARANTEED TransferGuaranteeScheduleItem: title: TransferGuaranteeScheduleItem description: A single entry in the adaptive guarantee settlement schedule, describing one tranche of guaranteed funds. Adds `observation_window_expiration_time`, which is only known once a transfer is created. allOf: - $ref: '#/components/schemas/AuthorizationGuaranteeScheduleItem' - type: object additionalProperties: true properties: observation_window_expiration_time: type: string format: date-time description: The datetime when the observation window for this tranche expires. Present only when the tranche is subject to an observation window. This will be of the form `2006-01-02T15:04:05Z`. nullable: true AuthorizationGuaranteeScheduleItem: title: AuthorizationGuaranteeScheduleItem type: object additionalProperties: true description: A single entry in an authorization's adaptive guarantee settlement schedule, describing one tranche of guaranteed funds. properties: amount: type: string description: The guaranteed amount for this schedule entry (decimal string with two digits of precision e.g. "10.00"). observation_window_business_days: type: integer description: The number of business days in the observation window for this tranche. `0` when the tranche is not subject to an observation window. required: - amount - observation_window_business_days AuthorizationGuaranteeDetails: title: AuthorizationGuaranteeDetails type: object additionalProperties: true nullable: true description: Adaptive guarantee details for a transfer authorization, including the guarantee outcome and settlement schedule. Omitted when no guarantee was attempted. properties: outcome: $ref: '#/components/schemas/TransferGuaranteeOutcome' schedule: type: array description: The adaptive guarantee settlement schedule for this authorization. items: $ref: '#/components/schemas/AuthorizationGuaranteeScheduleItem' required: - outcome - schedule TransferGuaranteeDetails: title: TransferGuaranteeDetails type: object additionalProperties: true nullable: true description: Adaptive guarantee details for a transfer, including the guaranteed amount and settlement schedule. Omitted when no guarantee was attempted. properties: guaranteed_amount: type: string description: The amount currently covered by Plaid's guarantee (decimal string with two digits of precision e.g. "10.00"). This may change over time as scheduled tranches reach their observation window expiration and become guaranteed. schedule: type: array description: The adaptive guarantee settlement schedule for this transfer. items: $ref: '#/components/schemas/TransferGuaranteeScheduleItem' required: - guaranteed_amount - schedule TransferAuthorizationGuaranteeDecision: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Indicates whether the transfer is guaranteed by Plaid (Guarantee customers only). This field will contain either `GUARANTEED` or `NOT_GUARANTEED` indicating whether Plaid will guarantee the transfer. enum: - GUARANTEED - NOT_GUARANTEED - null TransferAuthorizationGuaranteeDecisionRationaleCode: type: string x-hidden-from-docs: true description: |- A code representing the reason Plaid declined to guarantee this transfer: `RETURN_BANK`: The risk of a bank-initiated return (for example, an R01/NSF) is too high to guarantee this transfer. `RETURN_CUSTOMER`: The risk of a customer-initiated return (for example, a R10/Unauthorized) is too high to guarantee this transfer. `GUARANTEE_LIMIT_REACHED`: This transfer is low-risk, but Guarantee has exhausted an internal limit on the number or rate of guarantees that applies to this transfer. `RISK_ESTIMATE_UNAVAILABLE`: A risk estimate is unavailable for this Item. `REQUIRED_PARAM_MISSING`: Required fields are missing. enum: - RETURN_BANK - RETURN_CUSTOMER - GUARANTEE_LIMIT_REACHED - RISK_ESTIMATE_UNAVAILABLE - REQUIRED_PARAM_MISSING TransferAuthorizationGuaranteeDecisionRationale: title: TransferAuthorizationGuaranteeDecisionRationale type: object nullable: true deprecated: true additionalProperties: true x-hidden-from-docs: true description: The rationale for Plaid's decision to not guarantee a transfer. Will be `null` unless `guarantee_decision` is `NOT_GUARANTEED`. properties: code: $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecisionRationaleCode' description: type: string description: A human-readable description of why the transfer cannot be guaranteed. required: - code - description TransferAuthorizationProposedTransfer: title: TransferAuthorizationProposedTransfer type: object additionalProperties: true description: Details regarding the proposed transfer. properties: ach_class: $ref: '#/components/schemas/ACHClass' account_id: type: string description: The Plaid `account_id` for the account that will be debited or credited. funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponseNullable' ledger_id: $ref: '#/components/schemas/TransferLedgerID' type: $ref: '#/components/schemas/TransferType' user: $ref: '#/components/schemas/TransferUserInResponse' amount: $ref: '#/components/schemas/TransferAmount' requested_amount: type: string description: The amount originally requested by the client when creating the authorization (decimal string with two digits of precision e.g. "800.00"). This may differ from `amount`, the amount Plaid proposes to transfer, when only a partial amount is offered as part of an Adaptive Guarantee. network: type: string description: The network or rails used for the transfer. wire_details: $ref: '#/components/schemas/TransferWireDetails' origination_account_id: type: string description: Plaid's unique identifier for the origination account that was used for this transfer. deprecated: true x-hidden-from-docs: true iso_currency_code: type: string description: The currency of the transfer amount. The default value is "USD". originator_client_id: type: string nullable: true description: The Plaid client ID that is the originator of this transfer. Only present if created on behalf of another client as a [Platform customer](https://plaid.com/docs/transfer/application/#originators-vs-platforms). credit_funds_source: deprecated: true allOf: - $ref: '#/components/schemas/TransferCreditFundsSource' required: - type - user - amount - requested_amount - network - origination_account_id - iso_currency_code - originator_client_id - funding_account_id - credit_funds_source TransferAuthorizationDevice: title: TransferAuthorizationDevice type: object additionalProperties: true description: Information about the device being used to initiate the authorization. These fields are not currently incorporated into the risk check. properties: ip_address: type: string description: The IP address of the device being used to initiate the authorization. user_agent: type: string description: The user agent of the device being used to initiate the authorization. TransferDevice: title: TransferDevice type: object additionalProperties: true description: Information about the device being used to initiate the authorization. properties: ip_address: type: string description: The IP address of the device being used to initiate the authorization. user_agent: type: string description: The user agent of the device being used to initiate the authorization. required: - ip_address - user_agent TransferRecurringSchedule: title: TransferRecurringSchedule type: object description: The schedule that the recurring transfer will be executed on. properties: interval_unit: $ref: '#/components/schemas/TransferScheduleIntervalUnit' interval_count: $ref: '#/components/schemas/TransferScheduleIntervalCount' interval_execution_day: description: |- The day of the interval on which to schedule the transfer. If the `interval_unit` is `week`, `interval_execution_day` should be an integer from 1 (Monday) to 5 (Friday). If the `interval_unit` is `month`, `interval_execution_day` should be an integer indicating which day of the month to make the transfer on. Integers from 1 to 28 can be used to make a transfer on that day of the month. Negative integers from -1 to -5 can be used to make a transfer relative to the end of the month. To make a transfer on the last day of the month, use -1; to make the transfer on the second-to-last day, use -2, and so on. The transfer will be originated on the next available banking day if the designated day is a non banking day. type: integer start_date: format: date type: string description: |- A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). The recurring transfer will begin on the first `interval_execution_day` on or after the `start_date`. For `rtp` recurring transfers, `start_date` must be in the future. Otherwise, if the first `interval_execution_day` on or after the start date is also the same day that `/transfer/recurring/create` was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so. end_date: format: date type: string description: |- A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). The recurring transfer will end on the last `interval_execution_day` on or before the `end_date`. If the `interval_execution_day` between the start date and the end date (inclusive) is also the same day that `/transfer/recurring/create` was called, the bank *may* make a payment on that day, but it is not guaranteed to do so. nullable: true required: - interval_unit - interval_count - interval_execution_day - start_date TransferScheduleIntervalUnit: type: string title: TransferScheduleIntervalUnit enum: - week - month description: The unit of the recurring interval. minLength: 1 TransferScheduleIntervalCount: type: integer title: TransferScheduleIntervalCount description: |- The number of recurring `interval_units` between originations. The recurring interval (before holiday adjustment) is calculated by multiplying `interval_unit` and `interval_count`. For example, to schedule a recurring transfer which originates once every two weeks, set `interval_unit` = `week` and `interval_count` = 2. TransferMetadata: type: object additionalProperties: type: string title: TransferMetadata nullable: true maxProperties: 50 description: | The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply: The JSON values must be Strings (no nested JSON objects allowed) Only ASCII characters may be used Maximum of 50 key/value pairs Maximum key length of 40 characters Maximum value length of 500 characters BankTransferMetadata: type: object additionalProperties: type: string title: BankTransferMetadata nullable: true maxProperties: 50 description: | The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply: The JSON values must be Strings (no nested JSON objects allowed) Only ASCII characters may be used Maximum of 50 key/value pairs Maximum key length of 40 characters Maximum value length of 500 characters TransferAuthorizationCustomAttributes: type: object title: TransferAuthorizationCustomAttributes nullable: true maxProperties: 50 additionalProperties: type: string maxLength: 500 description: | A free-form map of client-supplied risk-relevant context for this authorization. Plaid may use these attributes to inform future versions of our risk models. The following limitations apply: Keys must match the regular expression `^[A-Za-z0-9_.-]{1,40}$` Values must be strings (no nested objects, arrays, numbers, or booleans allowed; stringify non-string values client-side) Maximum of 50 key/value pairs Maximum value length of 500 characters Do not include personally identifiable information or other sensitive data. TransferType: type: string title: TransferType description: The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account. enum: - debit - credit OmittableTransferType: type: string title: OmittableTransferType description: The type of transfer. Valid values are `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account. This field is omitted for Plaid Ledger Sweep events. enum: - debit - credit BankTransferType: type: string title: BankTransferType description: The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account. enum: - debit - credit TransferPlatformRequirement: title: TransferPlatformRequirement type: object description: A piece of information that is required for originator onboarding. additionalProperties: true properties: requirement_type: type: string description: The type of requirement. person_id: type: string description: UUID of the person associated with the requirement. Only present for individual-scoped requirements. nullable: true TransferDiligenceStatus: type: string title: TransferDiligenceStatus description: Originator's diligence status. enum: - not_submitted - submitted - under_review - approved - denied - more_information_required TransferStatus: type: string title: TransferStatus description: |- The status of the transfer. `pending`: A new transfer was created; it is in the pending state. `posted`: The transfer has been successfully submitted to the payment network. `settled`: The transfer was successfully completed by the payment network. Note that funds from received debits are not available to be moved out of the Ledger until the transfer reaches `funds_available` status. For credit transactions, `settled` means the funds have been delivered to the receiving bank account. This is the terminal state of a successful credit transfer. `funds_available`: Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.) This is the terminal state of a successful debit transfer. `cancelled`: The transfer was cancelled by the client. This is the terminal state of a cancelled transfer. `failed`: The transfer failed, no funds were moved. This is the terminal state of a failed transfer. `returned`: A posted transfer was returned. This is the terminal state of a returned transfer. enum: - pending - posted - settled - funds_available - cancelled - failed - returned TransferRecurringStatus: type: string title: TransferRecurringStatus description: |- The status of the recurring transfer. `active`: The recurring transfer is currently active. `cancelled`: The recurring transfer was cancelled by the client or Plaid. `expired`: The recurring transfer has completed all originations according to its recurring schedule. enum: - active - cancelled - expired TransferSweepStatus: type: string nullable: true title: TransferSweepStatus description: |- The status of the sweep for the transfer. `unswept`: The transfer hasn't been swept yet. `swept`: The transfer was swept to the sweep account. `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account. `return_swept`: The transfer was returned, funds were pulled back or pushed back to the sweep account. `null`: The transfer will never be swept (e.g. if the transfer is cancelled or returned before being swept) enum: - null - unswept - swept - swept_settled - return_swept TransferRefundStatus: type: string title: TransferRefundStatus description: |- The status of the refund. `pending`: A new refund was created; it is in the pending state. `posted`: The refund has been successfully submitted to the payment network. `settled`: Credits have been refunded to the Plaid linked account. `cancelled`: The refund was cancelled by the client. `failed`: The refund has failed. `returned`: The refund was returned. enum: - pending - posted - cancelled - failed - settled - returned BankTransferStatus: type: string title: BankTransferStatus description: The status of the transfer. enum: - pending - posted - cancelled - failed - reversed TransferIntentCreateNetwork: type: string title: TransferIntentCreateNetwork description: |- The network or rails used for the transfer. Defaults to `same-day-ach`. 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: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: - ach - same-day-ach - rtp default: same-day-ach TransferNetwork: type: string title: TransferNetwork description: |- The network or rails used for the transfer. 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: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`. 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 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: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 TransferRecurringNetwork: type: string title: TransferRecurringNetwork description: Networks eligible for recurring transfers. enum: - ach - same-day-ach - rtp BankTransferNetwork: type: string title: BankTransferNetwork description: The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`. enum: - ach - same-day-ach - wire TransferFailure: title: TransferFailure type: object additionalProperties: true nullable: true description: The failure reason if the event type for a transfer is `"failed"` or `"returned"`. Null value otherwise. properties: failure_code: type: string nullable: true description: The failure code, e.g. `R01`. A failure code will be provided if and only if the transfer status is `returned`. See [ACH return codes](https://plaid.com/docs/errors/transfer/#ach-return-codes) for a full listing of ACH return codes and [RTP/RfP error codes](https://plaid.com/docs/errors/transfer/#rtprfp-error-codes) for RTP error codes. ach_return_code: deprecated: true type: string nullable: true description: The ACH return code, e.g. `R01`. A return code will be provided if and only if the transfer status is `returned`. For a full listing of ACH return codes, see [Transfer errors](https://plaid.com/docs/errors/transfer/#ach-return-codes). description: type: string description: A human-readable description of the reason for the failure or reversal. BankTransferFailure: title: BankTransferFailure type: object additionalProperties: true nullable: true description: The failure reason if the type of this transfer is `"failed"` or `"reversed"`. Null value otherwise. properties: ach_return_code: type: string nullable: true description: The ACH return code, e.g. `R01`. A return code will be provided if and only if the transfer status is `reversed`. For a full listing of ACH return codes, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/#ach-return-codes). description: type: string description: A human-readable description of the reason for the failure or reversal. TransferAuthorizationCreateRequest: title: TransferAuthorizationCreateRequest type: object description: Defines the request schema for `/transfer/authorization/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/TransferAccessToken' account_id: $ref: '#/components/schemas/TransferAccountID' funding_account_id: $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 the id of the default ledger balance. nullable: true payment_profile_token: $ref: '#/components/schemas/TransferPaymentProfileToken' type: $ref: '#/components/schemas/TransferType' network: $ref: '#/components/schemas/TransferNetwork' amount: $ref: '#/components/schemas/TransferAmount' ach_class: $ref: '#/components/schemas/ACHClass' wire_details: $ref: '#/components/schemas/TransferWireDetails' user: $ref: '#/components/schemas/TransferAuthorizationUserInRequest' device: $ref: '#/components/schemas/TransferAuthorizationDevice' origination_account_id: type: string description: Plaid's unique identifier for the origination account for this authorization. If not specified, the default account will be used. deprecated: true x-hidden-from-docs: true iso_currency_code: type: string description: The currency of the transfer amount. The default value is "USD". idempotency_key: $ref: '#/components/schemas/TransferAuthorizationIdempotencyKey' user_present: type: boolean nullable: true description: If the end user is initiating the specific transfer themselves via an interactive UI, this should be `true`; for automatic recurring payments where the end user is not actually initiating each individual transfer, it should be `false`. This field is not currently used and is present to support planned future functionality. with_guarantee: type: boolean nullable: true 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 of `guarantee`. request_guarantee: type: boolean nullable: true x-hidden-from-docs: true description: Indicates whether the transfer should be evaluated for guarantee coverage. When set to `true`, Plaid assesses the transfer for guarantee coverage and returns a decision in the authorization response. When omitted or set to `false`, the authorization is evaluated without guarantee coverage. beacon_session_id: x-hidden-from-docs: true deprecated: true type: string nullable: true description: The unique identifier returned by Plaid's [beacon](https://plaid.com/docs/transfer/guarantee/#using-a-beacon) when it is run on your webpage. originator_client_id: type: string nullable: true description: The Plaid client ID that is the originator of this transfer. Only needed if creating transfers on behalf of another client as a [Platform customer](https://plaid.com/docs/transfer/application/#originators-vs-platforms). credit_funds_source: x-hidden-from-docs: true deprecated: true allOf: - $ref: '#/components/schemas/TransferCreditFundsSource' test_clock_id: type: string description: Plaid's unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `authorization` is created at the `virtual_time` on the provided test clock. nullable: true ruleset_key: type: string description: The key of the Ruleset for the transaction. If not provided, Signal will use the `default` ruleset. nullable: true custom_attributes: $ref: '#/components/schemas/TransferAuthorizationCustomAttributes' required: - type - network - amount - user - access_token - account_id TransferAuthorizationCancelRequest: title: TransferAuthorizationCancelRequest type: object description: Defines the request schema for `/transfer/authorization/cancel` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' authorization_id: $ref: '#/components/schemas/TransferAuthorizationID' required: - authorization_id TransferCapabilitiesGetRequest: title: TransferCapabilitiesGetRequest type: object description: Defines the request schema for `/transfer/capabilities/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/TransferAccessToken' account_id: $ref: '#/components/schemas/TransferAccountID' payment_profile_token: $ref: '#/components/schemas/PaymentProfileToken' required: - access_token - account_id TransferConfigurationGetRequest: title: TransferConfigurationGetRequest type: object description: Defines the request schema for `/transfer/configuration/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string nullable: true description: The Plaid client ID of the transfer originator. Should only be present if `client_id` is a [Platform customer](https://plaid.com/docs/transfer/application/#originators-vs-platforms). TransferMetricsGetRequest: title: TransferMetricsGetRequest type: object description: Defines the request schema for `/transfer/metrics/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string nullable: true description: The Plaid client ID of the transfer originator. Should only be present if `client_id` is a [Platform customer](https://plaid.com/docs/transfer/application/#originators-vs-platforms). TransferCreateRequest: title: TransferCreateRequest type: object description: Defines the request schema for `/transfer/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' idempotency_key: $ref: '#/components/schemas/TransferCreateIdempotencyKey' access_token: $ref: '#/components/schemas/TransferAccessToken' account_id: $ref: '#/components/schemas/TransferAccountID' authorization_id: type: string description: Plaid's unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an idempotency identifier. type: x-hidden-from-docs: true deprecated: true allOf: - $ref: '#/components/schemas/TransferType' network: x-hidden-from-docs: true deprecated: true allOf: - $ref: '#/components/schemas/TransferNetwork' amount: $ref: '#/components/schemas/TransferAmount' description: type: string description: |- The transfer description, maximum of 15 characters (RTP transactions) or 10 characters (ACH transactions). Should represent why the money is moving, not your company name. For recommendations on setting the `description` field to avoid ACH returns, see [Description field recommendations](https://www.plaid.com/docs/transfer/creating-transfers/#description-field-recommendations). If reprocessing a returned transfer, the `description` field must be `"Retry 1"` or `"Retry 2"`. You may retry a transfer up to 2 times, within 180 days of creating the original transfer. Only transfers that were returned with code `R01` or `R09` may be retried. maxLength: 15 ach_class: x-hidden-from-docs: true deprecated: true allOf: - $ref: '#/components/schemas/ACHClass' user: $ref: '#/components/schemas/TransferUserInRequestDeprecated' metadata: $ref: '#/components/schemas/TransferMetadata' origination_account_id: type: string x-hidden-from-docs: true deprecated: true nullable: true description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. iso_currency_code: type: string x-hidden-from-docs: true deprecated: true description: The currency of the transfer amount. The default value is "USD". test_clock_id: type: string description: Plaid's unique identifier for a test clock. This field may only be used when using `sandbox` environment. If provided, the `transfer` is created at the `virtual_time` on the provided `test_clock`. nullable: true facilitator_fee: $ref: '#/components/schemas/TransferFacilitatorFee' required: - access_token - account_id - authorization_id - description TransferRecurringCreateRequest: title: TransferRecurringCreateRequest type: object description: Defines the request schema for `/transfer/recurring/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/TransferAccessToken' idempotency_key: $ref: '#/components/schemas/TransferRecurringIdempotencyKey' account_id: $ref: '#/components/schemas/TransferAccountID' funding_account_id: type: string description: Specify the account used to fund the transfer. 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, it will default to the default `funding_account_id` specified during onboarding. nullable: true deprecated: true x-hidden-from-docs: true type: $ref: '#/components/schemas/TransferType' network: $ref: '#/components/schemas/TransferRecurringNetwork' ach_class: $ref: '#/components/schemas/ACHClass' amount: $ref: '#/components/schemas/TransferAmount' user_present: type: boolean nullable: true description: If the end user is initiating the specific transfer themselves via an interactive UI, this should be `true`; for automatic recurring payments where the end user is not actually initiating each individual transfer, it should be `false`. iso_currency_code: type: string x-hidden-from-docs: true deprecated: true description: The currency of the transfer amount. The default value is "USD". description: type: string description: The description of the recurring transfer. test_clock_id: type: string description: Plaid's unique identifier for a test clock. This field may only be used when using the `sandbox` environment. If provided, the created `recurring_transfer` is associated with the `test_clock`. New originations are automatically generated when the associated `test_clock` advances. For more details, see [Simulating recurring transfers](https://plaid.com/docs/transfer/sandbox/#simulating-recurring-transfers). nullable: true schedule: $ref: '#/components/schemas/TransferRecurringSchedule' user: $ref: '#/components/schemas/TransferUserInRequest' device: $ref: '#/components/schemas/TransferDevice' required: - access_token - idempotency_key - account_id - type - network - amount - user - schedule - description BankTransferCreateRequest: title: BankTransferCreateRequest type: object description: Defines the request schema for `/bank_transfer/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' idempotency_key: $ref: '#/components/schemas/BankTransferIdempotencyKey' access_token: $ref: '#/components/schemas/BankTransferAccessToken' account_id: type: string description: The Plaid `account_id` for the account that will be debited or credited. type: $ref: '#/components/schemas/BankTransferType' network: $ref: '#/components/schemas/BankTransferNetwork' amount: $ref: '#/components/schemas/BankTransferAmount' iso_currency_code: type: string description: The currency of the transfer amount - should be set to "USD". description: type: string description: The transfer description. Maximum of 10 characters. maxLength: 10 ach_class: $ref: '#/components/schemas/ACHClass' user: $ref: '#/components/schemas/BankTransferUser' custom_tag: type: string maxLength: 100 nullable: true description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters. metadata: $ref: '#/components/schemas/BankTransferMetadata' origination_account_id: type: string nullable: true description: Plaid's unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank. required: - idempotency_key - access_token - account_id - type - network - amount - iso_currency_code - description - user TransferAuthorizationCreateResponse: title: TransferAuthorizationCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/authorization/create` properties: authorization: $ref: '#/components/schemas/TransferAuthorization' request_id: $ref: '#/components/schemas/RequestID' required: - authorization - request_id TransferAuthorizationCancelResponse: title: TransferAuthorizationCancelResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/authorization/cancel` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferCapabilitiesGetResponse: title: TransferCapabilitiesGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/capabilities/get` properties: institution_supported_networks: $ref: '#/components/schemas/InstitutionSupportedNetworks' request_id: $ref: '#/components/schemas/RequestID' required: - institution_supported_networks - request_id TransferConfigurationGetResponse: title: TransferConfigurationGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/configuration/get` properties: request_id: $ref: '#/components/schemas/RequestID' max_single_transfer_amount: type: string description: The max limit of dollar amount of a single transfer (decimal string with two digits of precision e.g. "10.00"). deprecated: true x-hidden-from-docs: true max_single_transfer_credit_amount: type: string description: The max limit of dollar amount of a single credit transfer (decimal string with two digits of precision e.g. "10.00"). max_single_transfer_debit_amount: type: string description: The max limit of dollar amount of a single debit transfer (decimal string with two digits of precision e.g. "10.00"). max_daily_credit_amount: type: string description: The max limit of sum of dollar amount of credit transfers in last 24 hours (decimal string with two digits of precision e.g. "10.00"). max_daily_debit_amount: type: string description: The max limit of sum of dollar amount of debit transfers in last 24 hours (decimal string with two digits of precision e.g. "10.00"). max_monthly_amount: type: string description: The max limit of sum of dollar amount of credit and debit transfers in one calendar month (decimal string with two digits of precision e.g. "10.00"). deprecated: true x-hidden-from-docs: true max_monthly_credit_amount: type: string description: The max limit of sum of dollar amount of credit transfers in one calendar month (decimal string with two digits of precision e.g. "10.00"). max_monthly_debit_amount: type: string description: The max limit of sum of dollar amount of debit transfers in one calendar month (decimal string with two digits of precision e.g. "10.00"). iso_currency_code: type: string description: The currency of the dollar amount, e.g. "USD". required: - request_id - max_single_transfer_amount - max_single_transfer_credit_amount - max_single_transfer_debit_amount - max_daily_credit_amount - max_daily_debit_amount - max_monthly_amount - max_monthly_credit_amount - max_monthly_debit_amount - iso_currency_code TransferMetricsGetResponse: title: TransferMetricsGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/metrics/get` properties: request_id: $ref: '#/components/schemas/RequestID' daily_debit_transfer_volume: type: string description: Sum of dollar amount of debit transfers in last 24 hours (decimal string with two digits of precision e.g. "10.00"). daily_credit_transfer_volume: type: string description: Sum of dollar amount of credit transfers in last 24 hours (decimal string with two digits of precision e.g. "10.00"). monthly_transfer_volume: type: string description: Sum of dollar amount of credit and debit transfers in current calendar month (decimal string with two digits of precision e.g. "10.00"). deprecated: true x-hidden-from-docs: true monthly_debit_transfer_volume: type: string description: Sum of dollar amount of debit transfers in current calendar month (decimal string with two digits of precision e.g. "10.00"). monthly_credit_transfer_volume: type: string description: Sum of dollar amount of credit transfers in current calendar month (decimal string with two digits of precision e.g. "10.00"). iso_currency_code: type: string description: The currency of the dollar amount, e.g. "USD". return_rates: $ref: '#/components/schemas/TransferMetricsGetReturnRates' authorization_usage: $ref: '#/components/schemas/TransferMetricsGetAuthorizationUsage' required: - request_id - daily_debit_transfer_volume - daily_credit_transfer_volume - monthly_transfer_volume - monthly_debit_transfer_volume - monthly_credit_transfer_volume - iso_currency_code TransferMetricsGetReturnRates: title: TransferMetricsGetReturnRates type: object additionalProperties: true nullable: true description: Details regarding return rates. properties: last_60d: $ref: '#/components/schemas/TransferMetricsGetReturnRatesOverInterval' TransferMetricsGetReturnRatesOverInterval: title: TransferMetricsGetReturnRatesOverInterval type: object additionalProperties: true nullable: true description: Details regarding return rates. properties: overall_return_rate: type: string description: The overall return rate. unauthorized_return_rate: type: string description: The unauthorized return rate. administrative_return_rate: type: string description: The administrative return rate. TransferMetricsGetAuthorizationUsage: title: TransferMetricsGetAuthorizationUsage type: object additionalProperties: true nullable: true description: Details regarding authorization usage. properties: daily_credit_utilization: type: string description: The daily credit utilization formatted as a decimal. daily_debit_utilization: type: string description: The daily debit utilization formatted as a decimal. monthly_credit_utilization: type: string description: The monthly credit utilization formatted as a decimal. monthly_debit_utilization: type: string description: The monthly debit utilization formatted as a decimal. TransferAuthorizationDecision: type: string description: |2- A decision regarding the proposed transfer. `approved` - The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended. Refer to the `code` field in the `decision_rationale` object for details. `declined` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. `user_action_required` - An action is required before Plaid can assess the transfer risk and make a decision. The most common scenario is to update authentication for an Item. To complete the required action, initialize Link by setting `transfer.authorization_id` in the request of `/link/token/create`. After Link flow is completed, you may re-attempt the authorization request. For `guarantee` requests, `approved` indicates the transfer is eligible for Plaid's guarantee, and `declined` indicates Plaid will not provide guarantee coverage for the transfer. `user_action_required` indicates you should follow the above guidance before re-attempting. enum: - approved - declined - user_action_required TransferAuthorization: title: TransferAuthorization type: object additionalProperties: true description: Contains the authorization decision for a proposed transfer. properties: id: $ref: '#/components/schemas/TransferAuthorizationID' created: type: string format: date-time description: The datetime representing when the authorization was created, in the format `2006-01-02T15:04:05Z`. decision: $ref: '#/components/schemas/TransferAuthorizationDecision' decision_rationale: $ref: '#/components/schemas/TransferAuthorizationDecisionRationale' guarantee_decision: deprecated: true allOf: - $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecision' guarantee_decision_rationale: $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale' guarantee_details: $ref: '#/components/schemas/AuthorizationGuaranteeDetails' payment_risk: $ref: '#/components/schemas/TransferAuthorizationPaymentRisk' proposed_transfer: $ref: '#/components/schemas/TransferAuthorizationProposedTransfer' required: - id - created - decision - decision_rationale - guarantee_decision - guarantee_decision_rationale - proposed_transfer - payment_risk InstitutionSupportedNetworks: title: InstitutionSupportedNetworks type: object additionalProperties: true description: Contains the RTP and RfP network and types supported by the linked Item's institution. properties: rtp: $ref: '#/components/schemas/TransferCapabilitiesGetRTP' rfp: $ref: '#/components/schemas/TransferCapabilitiesGetRfP' required: - rtp - rfp TransferCapabilitiesGetRTP: title: TransferCapabilitiesGetRTP type: object additionalProperties: true description: Contains the supported service types in RTP properties: credit: type: boolean default: false nullable: false description: When `true`, the linked Item's institution supports RTP credit transfer. TransferCapabilitiesGetRfP: title: TransferCapabilitiesGetRfP type: object additionalProperties: true description: Contains the supported service types in RfP properties: debit: type: boolean default: false nullable: false description: When `true`, the linked Item's institution supports RfP debit transfer. max_amount: type: string nullable: true description: The maximum amount (decimal string with two digits of precision e.g. "10.00") for originating RfP transfers with the given institution. iso_currency_code: type: string nullable: true description: The currency of the `max_amount`, e.g. "USD". TransferCreateResponse: title: TransferCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/create` properties: transfer: $ref: '#/components/schemas/Transfer' request_id: $ref: '#/components/schemas/RequestID' required: - transfer - request_id TransferRecurringCreateResponse: title: TransferRecurringCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/recurring/create` properties: recurring_transfer: $ref: '#/components/schemas/RecurringTransferNullable' decision: $ref: '#/components/schemas/TransferAuthorizationDecision' decision_rationale: $ref: '#/components/schemas/TransferAuthorizationDecisionRationale' request_id: $ref: '#/components/schemas/RequestID' required: - decision - request_id BankTransferCreateResponse: title: BankTransferCreateResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/create` properties: bank_transfer: $ref: '#/components/schemas/BankTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfer - request_id TransferListRequest: title: TransferListRequest type: object description: Defines the request schema for `/transfer/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time nullable: true description: The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) end_date: type: string format: date-time nullable: true description: The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of transfers to return. offset: type: integer default: 0 minimum: 0 description: The number of transfers to skip before returning results. origination_account_id: type: string nullable: true description: Filter transfers to only those originated through the specified origination account. deprecated: true x-hidden-from-docs: true originator_client_id: type: string nullable: true description: Filter transfers to only those with the specified originator client. funding_account_id: type: string nullable: true description: Filter transfers to only those with the specified `funding_account_id`. TransferRecurringListRequest: title: TransferRecurringListRequest type: object description: Defines the request schema for `/transfer/recurring/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_time: type: string format: date-time nullable: true description: The start `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) end_time: type: string format: date-time nullable: true description: The end `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of recurring transfers to return. offset: type: integer default: 0 minimum: 0 description: The number of recurring transfers to skip before returning results. funding_account_id: type: string nullable: true description: Filter recurring transfers to only those with the specified `funding_account_id`. BankTransferListRequest: title: BankTransferListRequest type: object description: Defines the request schema for `/bank_transfer/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time nullable: true description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) end_date: type: string format: date-time nullable: true description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of bank transfers to return. offset: type: integer default: 0 minimum: 0 description: The number of bank transfers to skip before returning results. origination_account_id: type: string nullable: true description: Filter bank transfers to only those originated through the specified origination account. direction: $ref: '#/components/schemas/BankTransferDirection' TransferListResponse: title: TransferListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/list` properties: transfers: type: array items: $ref: '#/components/schemas/Transfer' request_id: $ref: '#/components/schemas/RequestID' required: - transfers - request_id TransferRecurringListResponse: title: TransferRecurringListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/recurring/list` properties: recurring_transfers: type: array items: $ref: '#/components/schemas/RecurringTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - recurring_transfers - request_id BankTransferListResponse: title: BankTransferListResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/list` properties: bank_transfers: type: array items: $ref: '#/components/schemas/BankTransfer' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfers - request_id BankTransferDirection: type: string nullable: true title: BankTransferDirection description: 'Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received by the FBO account.' enum: - outbound - inbound - null TransferCancelRequest: title: TransferCancelRequest type: object description: Defines the request schema for `/transfer/cancel` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_id: $ref: '#/components/schemas/TransferID' originator_client_id: deprecated: true x-hidden-from-docs: true type: string nullable: true description: The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS). reason_code: $ref: '#/components/schemas/ReasonCode' required: - transfer_id ReasonCode: type: string title: ReasonCode enum: - AC03 - AM09 - CUST - DUPL - FRAD - TECH - UPAY - AC14 - AM06 - BE05 - FOCR - MS02 - MS03 - RR04 - RUTA description: |- Specifies the reason for cancelling transfer. This is required for RfP transfers, and will be ignored for other networks. `"AC03"` - Invalid Creditor Account Number `"AM09"` - Incorrect Amount `"CUST"` - Requested By Customer - Cancellation requested `"DUPL"` - Duplicate Payment `"FRAD"` - Fraudulent Payment - Unauthorized or fraudulently induced `"TECH"` - Technical Problem - Cancellation due to system issues `"UPAY"` - Undue Payment - Payment was made through another channel `"AC14"` - Invalid or Missing Creditor Account Type `"AM06"` - Amount Too Low `"BE05"` - Unrecognized Initiating Party `"FOCR"` - Following Refund Request `"MS02"` - No Specified Reason - Customer `"MS03"` - No Specified Reason - Agent `"RR04"` - Regulatory Reason `"RUTA"` - Return Upon Unable To Apply TransferRecurringCancelRequest: title: TransferRecurringCancelRequest type: object description: Defines the request schema for `/transfer/recurring/cancel` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' recurring_transfer_id: $ref: '#/components/schemas/RecurringTransferID' required: - recurring_transfer_id BankTransferCancelRequest: title: BankTransferCancelRequest type: object description: Defines the request schema for `/bank_transfer/cancel` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' bank_transfer_id: $ref: '#/components/schemas/BankTransferID' required: - bank_transfer_id TransferCancelResponse: title: TransferCancelResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/cancel` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferRecurringCancelResponse: title: TransferRecurringCancelResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/recurring/cancel` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id BankTransferCancelResponse: title: BankTransferCancelResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/cancel` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferEventListTransferType: type: string nullable: true title: TransferType description: The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account. enum: - debit - credit - null TransferEventListRequest: title: TransferEventListRequest type: object description: Defines the request schema for `/transfer/event/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time description: The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true end_date: type: string format: date-time description: The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true transfer_id: type: string title: TransferID description: Plaid's unique identifier for a transfer. nullable: true account_id: type: string description: The account ID to get events for all transactions to/from an account. nullable: true transfer_type: $ref: '#/components/schemas/TransferEventListTransferType' event_types: type: array description: Filter events by event type. items: $ref: '#/components/schemas/TransferEventType' sweep_id: type: string description: Plaid's unique identifier for a sweep. count: type: integer description: The maximum number of transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned. default: 25 maximum: 25 minimum: 1 nullable: true offset: type: integer default: 0 minimum: 0 description: The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 events will be returned. nullable: true origination_account_id: type: string description: The origination account ID to get events for transfers from a specific origination account. deprecated: true x-hidden-from-docs: true nullable: true originator_client_id: type: string nullable: true description: Filter transfer events to only those with the specified originator client. funding_account_id: type: string nullable: true description: Filter transfer events to only those with the specified `funding_account_id`. TransferLedgerEventListRequest: title: TransferLedgerEventListRequest type: object description: Defines the request schema for `/transfer/ledger/event/list` properties: client_id: $ref: '#/components/schemas/APIClientID' originator_client_id: type: string description: Filter transfer events to only those with the specified originator client. (This field is specifically for resellers. Caller's client ID will be used if this field is not specified.) nullable: true secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time description: The start created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z) nullable: true end_date: type: string format: date-time description: The end created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z) nullable: true ledger_id: type: string description: Plaid's unique identifier for a Plaid Ledger Balance. nullable: true ledger_event_id: type: string description: Plaid's unique identifier for the ledger event. nullable: true source_type: $ref: '#/components/schemas/LedgerEventSourceType' source_id: type: string description: Plaid's unique identifier for a transfer, sweep, or refund. nullable: true count: type: integer description: The maximum number of transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned. default: 25 maximum: 25 minimum: 1 nullable: true offset: type: integer default: 0 minimum: 0 description: The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 events will be returned. nullable: true TransferLedgerEventListResponse: title: TransferLedgerEventListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/ledger/event/list` properties: ledger_events: type: array items: $ref: '#/components/schemas/TransferLedgerEvent' has_more: type: boolean description: Whether there are more events to be pulled from the endpoint that have not already been returned request_id: $ref: '#/components/schemas/RequestID' required: - ledger_events - has_more - request_id BankTransferEventListBankTransferType: type: string nullable: true title: BankTransferType description: The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account. enum: - debit - credit - null BankTransferEventListDirection: type: string title: BankTransferDirection description: |- Indicates the direction of the transfer: `outbound`: for API-initiated transfers `inbound`: for payments received by the FBO account. enum: - inbound - outbound - null nullable: true BankTransferEventListRequest: title: BankTransferEventListRequest type: object description: Defines the request schema for `/bank_transfer/event/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true end_date: type: string format: date-time description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true bank_transfer_id: type: string title: BankTransferID description: Plaid's unique identifier for a bank transfer. nullable: true account_id: type: string description: The account ID to get events for all transactions to/from an account. nullable: true bank_transfer_type: $ref: '#/components/schemas/BankTransferEventListBankTransferType' event_types: type: array description: Filter events by event type. items: $ref: '#/components/schemas/BankTransferEventType' count: type: integer description: The maximum number of bank transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned. default: 25 maximum: 25 minimum: 1 nullable: true offset: type: integer default: 0 minimum: 0 description: The offset into the list of bank transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 bank transfer events will be returned. nullable: true origination_account_id: type: string description: The origination account ID to get events for transfers from a specific origination account. nullable: true direction: $ref: '#/components/schemas/BankTransferEventListDirection' TransferEventType: type: string title: TransferEventType description: |- 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. `cancelled`: The transfer was cancelled by the client. `failed`: The transfer failed, no funds were moved. `posted`: The transfer has been successfully submitted to the payment network. `settled`: The transfer has been successfully completed by the payment network. `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. `guarantee_reimbursed`: Plaid reimbursed the client for the loss on a returned guaranteed transfer. The `event_amount` is the reimbursed amount. `client_return_recovered`: The client reported recovering the loss on a returned transfer via `/transfer/return/recover`, and Plaid debited the recovered amount from the client's ledger. The `event_amount` is the recovered amount. `plaid_return_recovered`: Plaid recovered the loss on a returned transfer by successfully reinitiating it. The `event_amount` is the recovered amount. Client should stop their return recovery effort. `swept`: The transfer was swept to / from the sweep account. `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account. `return_swept`: Due to the transfer being returned, funds were pulled from or pushed back to the sweep account. `sweep.pending`: A new ledger sweep was created; it is in the pending state. `sweep.posted`: The ledger sweep has been successfully submitted to the payment network. `sweep.settled`: The transaction has settled in the funding account. This means that funds withdrawn from Plaid Ledger balance have reached the funding account, or funds to be deposited into the Plaid Ledger Balance have been pulled, and the hold period has begun. `sweep.returned`: A posted ledger sweep was returned. `sweep.failed`: The ledger sweep failed, no funds were moved. `sweep.funds_available`: Funds from the ledger sweep have been released from hold and applied to the ledger's available balance. This is only applicable to debits. `refund.pending`: A new refund was created; it is in the pending state. `refund.cancelled`: The refund was cancelled. `refund.failed`: The refund failed, no funds were moved. `refund.posted`: The refund has been successfully submitted to the payment network. `refund.settled`: The refund transaction has settled in the Plaid linked account. `refund.returned`: A posted refund was returned. `refund.swept`: The refund was swept from the sweep account. `refund.return_swept`: Due to the refund being returned, funds were pushed back to the sweep account. enum: - pending - cancelled - failed - posted - settled - funds_available - guaranteed - returned - guarantee_reimbursed - client_return_recovered - plaid_return_recovered - swept - swept_settled - return_swept - sweep.pending - sweep.posted - sweep.settled - sweep.returned - sweep.failed - sweep.funds_available - refund.pending - refund.cancelled - refund.failed - refund.posted - refund.settled - refund.returned - refund.swept - refund.return_swept TransferLedgerSweepSimulateEventType: type: string title: TransferLedgerSweepSimulateEventType description: | The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, or `returned`. An error will be returned if the event type is incompatible with the current ledger sweep status. Compatible status --> event type transitions include: `sweep.pending` --> `sweep.posted` `sweep.pending` --> `sweep.failed` `sweep.posted` --> `sweep.settled` `sweep.posted` --> `sweep.returned` `sweep.settled` --> `sweep.returned` enum: - sweep.posted - sweep.settled - sweep.returned - sweep.failed BankTransferEventType: type: string title: BankTransferEventType description: |- The type of event that this bank transfer represents. `pending`: A new transfer was created; it is in the pending state. `cancelled`: The transfer was cancelled by the client. `failed`: The transfer failed, no funds were moved. `posted`: The transfer has been successfully submitted to the payment network. `reversed`: A posted transfer was reversed. enum: - pending - cancelled - failed - posted - reversed TransferEvent: title: TransferEvent type: object additionalProperties: true description: Represents an event in the Transfers API. properties: event_id: type: integer description: Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers. minimum: 0 timestamp: type: string format: date-time description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`. event_type: $ref: '#/components/schemas/TransferEventType' account_id: type: string description: The account ID associated with the transfer. This field is omitted for Plaid Ledger Sweep events. funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponseNullable' ledger_id: $ref: '#/components/schemas/TransferLedgerID' transfer_id: type: string description: Plaid's unique identifier for a transfer. This field is an empty string for Plaid Ledger Sweep events. origination_account_id: type: string description: The ID of the origination account that this balance belongs to. nullable: true deprecated: true x-hidden-from-docs: true transfer_type: $ref: '#/components/schemas/OmittableTransferType' transfer_amount: title: TransferAmount type: string description: The amount of the transfer (decimal string with two digits of precision e.g. "10.00"). This field is omitted for Plaid Ledger Sweep events. failure_reason: $ref: '#/components/schemas/TransferFailure' sweep_id: $ref: '#/components/schemas/TransferSweepIDNullable' sweep_amount: $ref: '#/components/schemas/TransferSweepAmount' event_amount: type: string nullable: true description: A signed amount associated with this event (decimal string with two digits of precision e.g. "10.00" or "-10.00"). refund_id: type: string nullable: true description: Plaid's unique identifier for a refund. A non-null value indicates the event is for the associated refund of the transfer. originator_client_id: type: string nullable: true description: The Plaid client ID that is the originator of the transfer that this event applies to. Only present if the transfer was created on behalf of another client as a third-party sender (TPS). intent_id: type: string nullable: true description: The `id` returned by the `/transfer/intent/create` endpoint, for transfers created via Transfer UI. For transfers not created by Transfer UI, the value is `null`. This will currently only be populated for RfP transfers. wire_return_fee: type: string nullable: true description: The fee amount deducted from the original transfer during a wire return, if applicable. required: - event_id - timestamp - event_type - transfer_id - origination_account_id - failure_reason - sweep_id - sweep_amount - refund_id - originator_client_id - funding_account_id TransferLedgerEvent: title: TransferLedgerEvent type: object additionalProperties: true description: Represents a ledger event in the Transfers API. properties: ledger_event_id: type: string description: Plaid's unique identifier for this ledger event. ledger_id: type: string description: The ID of the ledger this event belongs to. amount: type: string description: The amount of the ledger event as a decimal string. transfer_id: type: string description: The ID of the transfer source that triggered this ledger event. nullable: true refund_id: type: string description: The ID of the refund source that triggered this ledger event. nullable: true sweep_id: type: string description: The ID of the sweep source that triggered this ledger event. nullable: true description: type: string description: A description of the ledger event. pending_balance: type: string description: The new pending balance after this event. available_balance: type: string description: The new available balance after this event. type: type: string description: The type of balance that was impacted by this event. timestamp: type: string format: date-time description: The datetime when this ledger event occurred. required: - ledger_event_id - ledger_id - amount - type - description - pending_balance - available_balance - timestamp LedgerEventSourceType: title: LedgerEventSourceType type: string enum: - TRANSFER - SWEEP - REFUND nullable: true description: |- Source of the ledger event. `"TRANSFER"` - The source of the ledger event is a transfer `"SWEEP"` - The source of the ledger event is a sweep `"REFUND"` - The source of the ledger event is a refund BankTransferEvent: title: BankTransferEvent type: object additionalProperties: true description: Represents an event in the Bank Transfers API. properties: event_id: type: integer description: Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers. minimum: 0 timestamp: type: string format: date-time description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`. event_type: $ref: '#/components/schemas/BankTransferEventType' account_id: type: string description: The account ID associated with the bank transfer. bank_transfer_id: $ref: '#/components/schemas/BankTransferID' origination_account_id: type: string description: The ID of the origination account that this balance belongs to. nullable: true bank_transfer_type: $ref: '#/components/schemas/BankTransferType' bank_transfer_amount: type: string description: The bank transfer amount. bank_transfer_iso_currency_code: type: string description: The currency of the bank transfer amount. failure_reason: $ref: '#/components/schemas/BankTransferFailure' direction: $ref: '#/components/schemas/BankTransferDirection' receiver_details: $ref: '#/components/schemas/ReceiverDetails' required: - event_id - timestamp - event_type - account_id - bank_transfer_id - origination_account_id - bank_transfer_type - bank_transfer_amount - 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 additionalProperties: true description: Defines the response schema for `/transfer/event/list` properties: transfer_events: type: array items: $ref: '#/components/schemas/TransferEvent' has_more: type: boolean description: Whether there are more events to be pulled from the endpoint that have not already been returned request_id: $ref: '#/components/schemas/RequestID' required: - transfer_events - has_more - request_id BankTransferEventListResponse: title: BankTransferEventListResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/event/list` properties: bank_transfer_events: type: array items: $ref: '#/components/schemas/BankTransferEvent' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfer_events - request_id BankTransferEventSyncRequest: title: BankTransferEventSyncRequest type: object description: Defines the request schema for `/bank_transfer/event/sync` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' after_id: type: integer description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially. minimum: 0 count: type: integer default: 25 minimum: 1 maximum: 25 description: The maximum number of bank transfer events to return. nullable: true required: - after_id TransferEventSyncRequest: title: TransferEventSyncRequest type: object description: Defines the request schema for `/transfer/event/sync` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' after_id: type: integer description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially. minimum: 0 count: type: integer default: 100 minimum: 1 maximum: 500 description: The maximum number of transfer events to return. nullable: true required: - after_id BankTransferEventSyncResponse: title: BankTransferEventSyncResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/event/sync` properties: bank_transfer_events: type: array items: $ref: '#/components/schemas/BankTransferEvent' request_id: $ref: '#/components/schemas/RequestID' required: - bank_transfer_events - request_id TransferEventSyncResponse: title: TransferEventSyncResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/event/sync` properties: transfer_events: type: array items: $ref: '#/components/schemas/TransferEvent' has_more: type: boolean description: Whether there are more events to be pulled from the endpoint that have not already been returned request_id: $ref: '#/components/schemas/RequestID' required: - transfer_events - has_more - request_id BankTransferSweepGetRequest: title: BankTransferSweepGetRequest type: object description: Defines the request schema for `/bank_transfer/sweep/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' sweep_id: type: string description: Identifier of the sweep. required: - sweep_id TransferSweepGetRequest: title: TransferSweepGetRequest type: object description: Defines the request schema for `/transfer/sweep/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' sweep_id: type: string description: Plaid's unique identifier for the sweep (UUID) or a shortened form consisting of the first 8 characters of the identifier (8-digit hexadecimal string). required: - sweep_id BankTransferSweepGetResponse: title: BankTransferSweepGetResponse type: object additionalProperties: true description: BankTransferSweepGetResponse defines the response schema for `/bank_transfer/sweep/get` properties: sweep: $ref: '#/components/schemas/BankTransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweep - request_id TransferSweepGetResponse: title: TransferSweepGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/sweep/get` properties: sweep: $ref: '#/components/schemas/TransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweep - request_id BankTransferSweepListRequest: title: BankTransferSweepListRequest type: object description: BankTransferSweepListRequest defines the request schema for `/bank_transfer/sweep/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' origination_account_id: type: string description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account that the sweeps belong to. nullable: true start_time: type: string format: date-time description: The start `created` datetime of sweeps to return (RFC 3339 format). nullable: true end_time: type: string format: date-time description: The end `created` datetime of sweeps to return (RFC 3339 format). nullable: true count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of sweeps to return. nullable: true SweepStatus: title: SweepStatus type: string enum: - pending - posted - settled - funds_available - returned - failed - null nullable: true description: |- The status of a sweep transfer `"pending"` - The sweep is currently pending `"posted"` - The sweep has been posted `"settled"` - The sweep has settled. This is the terminal state of a successful credit sweep. `"returned"` - The sweep has been returned. This is the terminal state of a returned sweep. Returns of a sweep are extremely rare, since sweeps are money movement between your own bank account and your own Ledger. `"funds_available"` - Funds from the sweep have been released from hold and applied to the ledger's available balance. (Only applicable to deposits.) This is the terminal state of a successful deposit sweep. `"failed"` - The sweep has failed. This is the terminal state of a failed sweep. SweepTrigger: title: SweepTrigger type: string enum: - manual - incoming - balance_threshold - automatic_aggregate nullable: true description: |- The trigger of the sweep `"manual"` - The sweep is created manually by the customer `"incoming"` - The sweep is created by incoming funds flow (e.g. Incoming Wire) `"balance_threshold"` - The sweep is created by balance threshold setting `"automatic_aggregate"` - The sweep is created by the Plaid automatic aggregation process. These funds did not pass through the Plaid Ledger balance. SweepDescription: title: SweepDescription type: string maxLength: 10 nullable: true description: The description of the deposit that will be passed to the receiving bank (up to 10 characters). Note that banks utilize this field differently, and may or may not show it on the bank statement. TransferSweepListRequest: title: TransferSweepListRequest type: object description: Defines the request schema for `/transfer/sweep/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time description: The start `created` datetime of sweeps to return (RFC 3339 format). nullable: true end_date: type: string format: date-time description: The end `created` datetime of sweeps to return (RFC 3339 format). nullable: true count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of sweeps to return. nullable: true offset: type: integer default: 0 minimum: 0 description: The number of sweeps to skip before returning results. amount: type: string nullable: true description: Filter sweeps to only those with the specified amount. status: $ref: '#/components/schemas/SweepStatus' originator_client_id: type: string nullable: true description: Filter sweeps to only those with the specified originator client. funding_account_id: type: string nullable: true description: Filter sweeps to only those with the specified `funding_account_id`. transfer_id: type: string nullable: true description: Filter sweeps to only those with the included `transfer_id`. trigger: $ref: '#/components/schemas/SweepTrigger' TransferSweepListResponse: title: TransferSweepListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/sweep/list` properties: sweeps: type: array items: $ref: '#/components/schemas/TransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweeps - request_id BankTransferSweepListResponse: title: BankTransferSweepListResponse type: object additionalProperties: true description: BankTransferSweepListResponse defines the response schema for `/bank_transfer/sweep/list` properties: sweeps: type: array items: $ref: '#/components/schemas/BankTransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweeps - request_id BankTransferSweep: title: BankTransferSweep type: object additionalProperties: true description: BankTransferSweep describes a sweep transfer. properties: id: type: string description: Identifier of the sweep. created_at: type: string description: The datetime when the sweep occurred, in RFC 3339 format. format: date-time amount: type: string description: The amount of the sweep. iso_currency_code: type: string description: The currency of the sweep, e.g. "USD". required: - id - created_at - amount - iso_currency_code TransferSweep: title: TransferSweep type: object additionalProperties: true description: |- Describes a sweep of funds to / from the sweep account. A sweep is associated with many sweep events (events of type `swept` or `return_swept`) which can be retrieved by invoking the `/transfer/event/list` endpoint with the corresponding `sweep_id`. `swept` events occur when the transfer amount is credited or debited from your sweep account, depending on the `type` of the transfer. `return_swept` events occur when a transfer is returned and Plaid undoes the credit or debit. The total sum of the `swept` and `return_swept` events is equal to the `amount` of the sweep Plaid creates and matches the amount of the entry on your sweep account ledger. properties: id: type: string description: Identifier of the sweep. funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponse' ledger_id: $ref: '#/components/schemas/TransferLedgerID' created: type: string description: The datetime when the sweep occurred, in RFC 3339 format. format: date-time amount: type: string description: |- Signed decimal amount of the sweep as it appears on your sweep account ledger (e.g. "-10.00") If amount is not present, the sweep was net-settled to zero and outstanding debits and credits between the sweep account and Plaid are balanced. iso_currency_code: type: string description: The currency of the sweep, e.g. "USD". settled: type: string description: The date when the sweep settled, in the YYYY-MM-DD format. format: date nullable: true expected_funds_available_date: type: string description: The expected date when funds from a ledger deposit will be made available and can be withdrawn from the associated ledger balance. Only applies to deposits. This will be of the form YYYY-MM-DD. format: date nullable: true status: $ref: '#/components/schemas/SweepStatus' trigger: $ref: '#/components/schemas/SweepTrigger' description: type: string description: The description of the deposit that will be passed to the receiving bank (up to 10 characters). Note that banks utilize this field differently, and may or may not show it on the bank statement. network_trace_id: $ref: '#/components/schemas/TransferNetworkTraceID' failure_reason: $ref: '#/components/schemas/SweepFailure' required: - id - created - amount - iso_currency_code - settled - funding_account_id SweepFailure: title: SweepFailure type: object additionalProperties: true nullable: true description: The failure reason if the status for a sweep is `"failed"` or `"returned"`. Null value otherwise. properties: failure_code: type: string nullable: true description: The failure code, e.g. `R01`. A failure code will be provided if and only if the sweep status is `returned`. See [ACH return codes](https://plaid.com/docs/errors/transfer/#ach-return-codes) for a full listing of ACH return codes and [RTP/RfP error codes](https://plaid.com/docs/errors/transfer/#rtprfp-error-codes) for RTP error codes. description: type: string nullable: true description: A human-readable description of the reason for the failure or reversal. SimulatedTransferSweep: title: SimulatedTransferSweep type: object additionalProperties: true description: |- A sweep returned from the `/sandbox/transfer/sweep/simulate` endpoint. Can be null if there are no transfers to include in a sweep. allOf: - $ref: '#/components/schemas/TransferSweep' - type: object nullable: true BankTransferBalanceGetRequest: title: BankTransferBalanceGetRequest type: object description: Defines the request schema for `/bank_transfer/balance/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' origination_account_id: type: string description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account for which balance will be returned. nullable: true BankTransferBalanceGetResponse: title: BankTransferBalanceGetResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/balance/get` properties: balance: $ref: '#/components/schemas/BankTransferBalance' origination_account_id: type: string description: The ID of the origination account that this balance belongs to. nullable: true request_id: $ref: '#/components/schemas/RequestID' required: - balance - origination_account_id - request_id BankTransferBalance: title: BankTransferBalance description: Information about the balance of a bank transfer type: object additionalProperties: true properties: available: type: string description: The total available balance - the sum of all successful debit transfer amounts minus all credit transfer amounts. transactable: type: string description: The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance. required: - available - transactable TransferBalanceGetRequest: title: TransferBalanceGetRequest type: object description: Defines the request schema for `/transfer/balance/get` properties: client_id: $ref: '#/components/schemas/APIClientID' originator_client_id: deprecated: true x-hidden-from-docs: true type: string nullable: true description: Client ID of the end customer. secret: $ref: '#/components/schemas/APISecret' type: $ref: '#/components/schemas/TransferBalanceType' TransferBalanceGetResponse: title: TransferBalanceGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/balance/get` properties: balance: $ref: '#/components/schemas/TransferBalance' request_id: $ref: '#/components/schemas/RequestID' required: - balance - request_id TransferBalance: title: TransferBalance description: Information about the balance held with Plaid. type: object additionalProperties: true properties: available: type: string 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 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: - available - type TransferLedgerGetRequest: title: TransferLedgerGetRequest type: object description: Defines the request schema for `/transfer/ledger/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $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 the id of the default ledger balance. nullable: true originator_client_id: type: string nullable: true description: Client ID of the end customer. TransferLedgerGetResponse: title: TransferLedgerGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/ledger/get` properties: ledger_id: type: string description: The unique identifier of the Ledger that was returned. balance: $ref: '#/components/schemas/TransferLedgerBalance' name: type: string description: The name of the Ledger is_default: type: boolean description: Whether this Ledger is the client's default ledger. request_id: $ref: '#/components/schemas/RequestID' required: - ledger_id - balance - name - is_default - request_id TransferLedgerDistributeRequest: title: TransferLedgerDistributeRequest type: object description: Defines the request schema for `/transfer/ledger/distribute` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' from_ledger_id: type: string description: The Ledger to pull money from. to_ledger_id: type: string description: The Ledger to credit money to. amount: type: string description: The amount to move (decimal string with two digits of precision e.g. "10.00"). Amount must be positive. idempotency_key: $ref: '#/components/schemas/LedgerDistributeIdempotencyKey' description: type: string description: An optional description for the ledger distribute operation. required: - from_ledger_id - to_ledger_id - amount - idempotency_key TransferLedgerDistributeResponse: title: TransferLedgerDistributeResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/ledger/distribute` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferLedgerBalance: title: TransferLedgerBalance description: Information about the balance of the ledger held with Plaid. type: object additionalProperties: true properties: available: type: string description: The amount of this balance available for use (decimal string with two digits of precision e.g. "10.00"). pending: type: string description: The amount of pending funds that are in processing (decimal string with two digits of precision e.g. "10.00"). required: - available - pending TransferLedgerDepositRequest: title: TransferLedgerDepositRequest type: object description: Defines the request schema for `/transfer/ledger/deposit` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: $ref: '#/components/schemas/TransferOriginatorClientID' funding_account_id: $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 the id of the default ledger balance. nullable: true amount: type: string description: A positive amount of how much will be deposited into ledger (decimal string with two digits of precision e.g. "5.50"). description: $ref: '#/components/schemas/SweepDescription' idempotency_key: $ref: '#/components/schemas/LedgerDepositIdempotencyKey' network: $ref: '#/components/schemas/TransferACHNetwork' required: - amount - idempotency_key - network TransferLedgerWithdrawRequest: title: TransferLedgerWithdrawRequest type: object description: Defines the request schema for `/transfer/ledger/withdraw` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: $ref: '#/components/schemas/TransferOriginatorClientID' funding_account_id: $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 the id of the default ledger balance. nullable: true amount: type: string description: A positive amount of how much will be withdrawn from the ledger balance (decimal string with two digits of precision e.g. "5.50"). description: $ref: '#/components/schemas/SweepDescription' idempotency_key: $ref: '#/components/schemas/LedgerWithdrawIdempotencyKey' network: $ref: '#/components/schemas/TransferNetwork' required: - amount - idempotency_key - network TransferLedgerDepositResponse: title: TransferLedgerDepositResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/ledger/deposit` properties: sweep: $ref: '#/components/schemas/TransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweep - request_id TransferLedgerWithdrawResponse: title: TransferLedgerWithdrawResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/ledger/withdraw` properties: sweep: $ref: '#/components/schemas/TransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - sweep - request_id TransferBalanceType: type: string title: TransferBalanceType enum: - prefunded_rtp_credits - prefunded_ach_credits description: |- The type of balance. `prefunded_rtp_credits` - Your prefunded RTP credit balance with Plaid `prefunded_ach_credits` - Your prefunded ACH credit balance with Plaid TransferOriginatorFundingAccountUpdateRequest: title: TransferOriginatorFundingAccountUpdateRequest type: object description: Defines the request schema for `/transfer/originator/funding_account/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: The Plaid client ID of the transfer originator. funding_account: $ref: '#/components/schemas/TransferFundingAccount' required: - funding_account - originator_client_id TransferOriginatorFundingAccountUpdateResponse: title: TransferOriginatorFundingAccountUpdateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/originator/funding_account/update` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferOriginatorFundingAccountCreateRequest: title: TransferOriginatorFundingAccountCreateRequest type: object description: Defines the request schema for `/transfer/originator/funding_account/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: The Plaid client ID of the transfer originator. funding_account: $ref: '#/components/schemas/TransferFundingAccountWithDisplayName' required: - funding_account - originator_client_id TransferOriginatorFundingAccountCreateResponse: title: TransferOriginatorFundingAccountCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/originator/funding_account/create` properties: funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponse' request_id: $ref: '#/components/schemas/RequestID' required: - request_id BankTransferMigrateAccountRequest: title: BankTransferMigrateAccountRequest type: object description: Defines the request schema for `/bank_transfer/migrate_account` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' account_number: type: string description: The user's account number. routing_number: type: string description: The user's routing number. wire_routing_number: type: string description: The user's wire transfer routing number. This is the ABA number; for some institutions, this may differ from the ACH number used in `routing_number`. account_type: type: string description: The type of the bank account (`checking` or `savings`). required: - account_number - routing_number - account_type BankTransferMigrateAccountResponse: title: BankTransferMigrateAccountResponse type: object additionalProperties: true description: Defines the response schema for `/bank_transfer/migrate_account` properties: access_token: type: string description: The Plaid `access_token` for the newly created Item. account_id: type: string description: The Plaid `account_id` for the newly created Item. request_id: $ref: '#/components/schemas/RequestID' required: - access_token - account_id - request_id TransferMigrateAccountRequest: title: TransferMigrateAccountRequest type: object description: Defines the request schema for `/transfer/migrate_account` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' account_number: type: string description: The user's account number. routing_number: type: string description: The user's routing number. wire_routing_number: type: string description: The user's wire transfer routing number. This is the ABA number; for some institutions, this may differ from the ACH number used in `routing_number`. This field must be set for the created item to be eligible for wire transfers. account_type: type: string description: The type of the bank account (`checking` or `savings`). required: - account_number - routing_number - account_type TransferMigrateAccountResponse: title: TransferMigrateAccountResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/migrate_account` properties: access_token: type: string description: The Plaid `access_token` for the newly created Item. account_id: type: string description: The Plaid `account_id` for the newly created Item. request_id: $ref: '#/components/schemas/RequestID' required: - access_token - account_id - request_id TransferOriginatorCreateRequest: title: TransferOriginatorCreateRequest type: object description: Defines the request schema for `/transfer/originator/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' company_name: type: string description: The company name of the end customer being created. This will be displayed in public-facing surfaces, e.g. Plaid Dashboard. minLength: 1 required: - company_name TransferOriginatorCreateResponse: title: TransferOriginatorCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/originator/create` properties: originator_client_id: type: string description: Client ID of the originator. This identifier will be used when creating transfers and should be stored associated with end user information. company_name: type: string description: The company name of the end customer. request_id: $ref: '#/components/schemas/RequestID' required: - originator_client_id - company_name - request_id TransferQuestionnaireCreateRequest: title: TransferQuestionnaireCreateRequest type: object description: Defines the request schema for `/transfer/questionnaire/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: Client ID of the end customer. redirect_uri: type: string description: URL the end customer will be redirected to after completing questions in Plaid-hosted onboarding flow. format: url required: - originator_client_id - redirect_uri TransferQuestionnaireCreateResponse: title: TransferQuestionnaireCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/questionnaire/create` properties: onboarding_url: type: string description: Plaid-hosted onboarding URL that you will redirect the end customer to. request_id: $ref: '#/components/schemas/RequestID' required: - onboarding_url - request_id TransferDiligenceSubmitRequest: title: TransferDiligenceSubmitRequest type: object description: Defines the request schema for `/transfer/diligence/submit` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: Client ID of the originator whose diligence that you want to submit. originator_diligence: $ref: '#/components/schemas/TransferOriginatorDiligence' required: - originator_client_id - originator_diligence TransferDiligenceSubmitResponse: title: TransferDiligenceSubmitResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/diligence/submit` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferDiligenceDocumentUploadRequest: title: TransferDiligenceDocumentUploadRequest type: object description: Defines the request schema for `/transfer/diligence/document/upload` properties: originator_client_id: type: string description: The Client ID of the originator whose document that you want to upload. file: type: string format: binary description: 'A file to upload. The file size must be less than 20MB. Supported file extensions: .pdf.' purpose: $ref: '#/components/schemas/TransferDocumentPurpose' required: - originator_client_id - file - purpose TransferDiligenceDocumentUploadResponse: title: TransferDiligenceDocumentUploadResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/diligence/document/upload` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferDocumentPurpose: type: string title: purpose enum: - DUE_DILIGENCE description: |- Specifies the purpose of the uploaded file. `"DUE_DILIGENCE"` - The transfer due diligence document of the originator. TransferOriginatorDiligence: description: The diligence information for the originator. type: object properties: dba: description: The business name of the originator. type: string tax_id: description: The tax ID of the originator. type: string minLength: 1 credit_usage_configuration: $ref: '#/components/schemas/TransferCreditUsageConfiguration' debit_usage_configuration: $ref: '#/components/schemas/TransferDebitUsageConfiguration' address: $ref: '#/components/schemas/TransferOriginatorAddress' website: description: The website of the originator. type: string format: url naics_code: description: The NAICS code of the originator. type: string minLength: 6 maxLength: 6 funding_account: $ref: '#/components/schemas/TransferFundingAccount' required: - dba - tax_id - address - website - naics_code - funding_account TransferOriginatorAddress: description: The originator's address. type: object properties: city: type: string description: The full city name. street: type: string description: The full street address. region: type: string description: The two-letter code for the state or province (e.g., "CA"). postal_code: description: The postal code (e.g., "94103"). type: string country_code: description: ISO-3166-1 alpha-2 country code standard. type: string required: - city - street - region - postal_code - country_code TransferCreditUsageConfiguration: description: Specifies the originator's expected usage of credits. For all dollar amounts, use a decimal string with two digits of precision e.g. "10.00". This field is required if the originator is expected to process credit transfers. type: object nullable: true properties: expected_frequency: $ref: '#/components/schemas/OriginatorExpectedTransferFrequency' expected_highest_amount: description: The originator's expected highest amount for a single credit transfer. type: string expected_average_amount: description: The originator's expected average amount per credit. type: string expected_monthly_amount: description: The originator's monthly expected ACH credit processing amount for the next 6-12 months. type: string sec_codes: description: |- Specifies the expected use cases for the originator's credit transfers. This should be a list that contains one or more of the following codes: `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts `"ppd"` - Prearranged Payment or Deposit. The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained from the consumer in person via writing, or through online authorization, or via an electronic document signing, e.g. Docusign. For example language for online authorization, see the 2025 Nacha Operating Rules -- Section 2.3.2, Authorization of Entries via Electronic Means. Can be used for credits or debits. `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. type: array items: $ref: '#/components/schemas/CreditACHClass' required: - expected_frequency - expected_highest_amount - expected_average_amount - expected_monthly_amount - sec_codes CreditACHClass: type: string title: CreditACHClass enum: - ccd - ppd - web description: |- Specifies the use case of the transfer. Required for transfers on an ACH network. `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. TransferDebitUsageConfiguration: description: Specifies the originator's expected usage of debits. For all dollar amounts, use a decimal string with two digits of precision e.g. "10.00". This field is required if the originator is expected to process debit transfers. type: object nullable: true properties: expected_frequency: $ref: '#/components/schemas/OriginatorExpectedTransferFrequency' expected_highest_amount: description: The originator's expected highest amount for a single debit transfer. type: string expected_average_amount: description: The originator's expected average amount per debit. type: string expected_monthly_amount: description: The originator's monthly expected ACH debit processing amount for the next 6-12 months. type: string sec_codes: description: |- Specifies the expected use cases for the originator's debit transfers. This should be a list that contains one or more of the following codes: `"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts `"ppd"` - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits. `"web"` - Internet-Initiated Entry. The transfer debits a consumer's bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits. `"tel"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call. type: array items: $ref: '#/components/schemas/ACHClass' required: - expected_frequency - expected_highest_amount - expected_average_amount - expected_monthly_amount - sec_codes OriginatorExpectedTransferFrequency: type: string title: OriginatorExpectedTransferFrequency description: The originator's expected transfer frequency. enum: - once_per_month - twice_per_month - once_per_week - daily TransferFundingAccount: type: object title: TransferFundingAccount description: The originator's funding account, linked with Plaid Link or `/transfer/migrate_account`. properties: access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: The Plaid `account_id` for the newly created Item. required: - access_token - account_id TransferFundingAccountWithDisplayName: type: object title: TransferFundingAccount description: The originator's funding account, linked with Plaid Link or `/transfer/migrate_account`. allOf: - $ref: '#/components/schemas/TransferFundingAccount' - type: object properties: display_name: type: string description: The name for the funding account that is displayed in the Plaid dashboard. TransferOriginatorGetRequest: title: TransferOriginatorGetRequest type: object description: Defines the request schema for `/transfer/originator/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: Client ID of the end customer (i.e. the originator). required: - originator_client_id TransferOriginatorGetResponse: title: TransferOriginatorGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/originator/get` properties: originator: $ref: '#/components/schemas/DetailedOriginator' request_id: $ref: '#/components/schemas/RequestID' required: - originator - request_id TransferOriginatorListRequest: title: TransferOriginatorListRequest type: object description: Defines the request schema for `/transfer/originator/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' count: type: integer description: The maximum number of originators to return. maximum: 25 minimum: 1 default: 25 nullable: true offset: type: integer description: The number of originators to skip before returning results. minimum: 0 default: 0 nullable: true TransferOriginatorListResponse: title: TransferOriginatorListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/originator/list` properties: originators: type: array items: $ref: '#/components/schemas/Originator' request_id: $ref: '#/components/schemas/RequestID' required: - originators - request_id TransferRepaymentListRequest: title: TransferRepaymentListRequest type: object description: Defines the request schema for `/transfer/repayment/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: type: string format: date-time description: The start `created` datetime of repayments to return (RFC 3339 format). nullable: true end_date: type: string format: date-time description: The end `created` datetime of repayments to return (RFC 3339 format). nullable: true count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of repayments to return. nullable: true offset: type: integer default: 0 minimum: 0 description: The number of repayments to skip before returning results. TransferRepaymentListResponse: title: TransferRepaymentListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/repayment/list` properties: repayments: type: array items: $ref: '#/components/schemas/TransferRepayment' request_id: $ref: '#/components/schemas/RequestID' required: - repayments - request_id TransferRepayment: title: TransferRepayment type: object additionalProperties: true description: |- A repayment is created automatically after one or more guaranteed transactions receive a return. If there are multiple eligible returns in a day, they are batched together into a single repayment. Repayments are sent over ACH, with funds typically available on the next banking day. properties: repayment_id: type: string description: Identifier of the repayment. created: type: string description: The datetime when the repayment occurred, in RFC 3339 format. format: date-time amount: type: string description: Decimal amount of the repayment as it appears on your account ledger. iso_currency_code: type: string description: The currency of the repayment, e.g. "USD". required: - repayment_id - created - amount - iso_currency_code TransferRepaymentReturnListRequest: title: TransferRepaymentReturnListRequest type: object description: Defines the request schema for `/transfer/repayment/return/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' repayment_id: type: string description: Identifier of the repayment to query. count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of repayments to return. nullable: true offset: type: integer default: 0 minimum: 0 description: The number of repayments to skip before returning results. required: - repayment_id TransferRepaymentReturnListResponse: title: TransferRepaymentReturnListResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/repayment/return/list` properties: repayment_returns: type: array items: $ref: '#/components/schemas/TransferRepaymentReturn' request_id: $ref: '#/components/schemas/RequestID' required: - repayment_returns - request_id TransferRepaymentReturn: title: TransferRepaymentReturn type: object additionalProperties: true description: Represents a return on a Guaranteed ACH transfer that is included in the specified repayment. properties: transfer_id: type: string description: The unique identifier of the guaranteed transfer that was returned. event_id: type: integer description: The unique identifier of the corresponding `returned` transfer event. minimum: 0 amount: type: string description: The value of the returned transfer. iso_currency_code: type: string description: The currency of the repayment, e.g. "USD". required: - transfer_id - event_id - amount - iso_currency_code TransferPlatformRequirementSubmitRequest: title: TransferPlatformRequirementSubmitRequest type: object description: Defines the request schema for `/transfer/platform/requirement/submit` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: type: string description: The client ID of the originator requirement_submissions: type: array description: Use the `/transfer/platform/requirement/submit` endpoint to submit a list of requirement submissions that all relate to the originator. Must contain between 1 and 50 requirement submissions. See [Requirement type schema documentation](https://docs.google.com/document/d/1NEQkTD0sVK50iAQi6xHigrexDUxZ4QxXqSEfV_FFTiU/) for a list of requirements and possible values. items: $ref: '#/components/schemas/TransferPlatformRequirementSubmission' maxItems: 50 minItems: 1 required: - originator_client_id - requirement_submissions TransferPlatformRequirementSubmission: title: RequirementSubmission type: object description: A single requirement submission properties: requirement_type: type: string description: The type of requirement being submitted. See [Requirement type schema documentation](https://docs.google.com/document/d/1NEQkTD0sVK50iAQi6xHigrexDUxZ4QxXqSEfV_FFTiU/) for a list of requirement types and possible values. value: type: string description: The value of the requirement, which can be a string or an object depending on the `requirement_type`. If it is an object, the object should be JSON marshaled into a string. See [Requirement type schema documentation](https://docs.google.com/document/d/1NEQkTD0sVK50iAQi6xHigrexDUxZ4QxXqSEfV_FFTiU/) for a list of requirement types and possible values. person_id: type: string format: uuid description: The `person_id` of the person the requirement submission is related to. A `person_id` is returned by `/transfer/platform/person/create`. This field should not be included for requirements that are not related to a person. required: - requirement_type - value TransferPlatformRequirementSubmitResponse: title: TransferPlatformRequirementSubmitResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/platform/requirement/submit` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferIntentCreateRequest: title: TransferIntentCreateRequest type: object description: Defines the request schema for `/transfer/intent/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' account_id: type: string description: The Plaid `account_id` corresponding to the end-user account that will be debited or credited. nullable: true funding_account_id: $ref: '#/components/schemas/TransferMigratedFundingAccountIDRequest' mode: $ref: '#/components/schemas/TransferIntentCreateMode' network: $ref: '#/components/schemas/TransferIntentCreateNetwork' amount: $ref: '#/components/schemas/TransferAmount' description: type: string description: A description for the underlying transfer. Maximum of 15 characters. minLength: 1 maxLength: 15 ach_class: $ref: '#/components/schemas/ACHClass' origination_account_id: type: string deprecated: true x-hidden-from-docs: true nullable: true description: Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used. user: $ref: '#/components/schemas/TransferUserInRequest' metadata: $ref: '#/components/schemas/TransferMetadata' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" require_guarantee: type: boolean default: false nullable: true x-hidden-from-docs: true description: When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only). required: - mode - amount - description - user TransferIntentStatus: type: string enum: - PENDING - SUCCEEDED - FAILED description: |- The status of the transfer intent. `PENDING`: The transfer intent is pending. `SUCCEEDED`: The transfer intent was successfully created. `FAILED`: The transfer intent was unable to be created. TransferIntentCreate: title: TransferIntentCreate type: object additionalProperties: true description: Represents a transfer intent within Transfer UI. properties: id: type: string description: Plaid's unique identifier for the transfer intent object. created: type: string format: date-time description: The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`. status: $ref: '#/components/schemas/TransferIntentStatus' account_id: type: string description: The Plaid `account_id` corresponding to the end-user account that will be debited or credited. Returned only if `account_id` was set on intent creation. nullable: true origination_account_id: type: string description: Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used. deprecated: true x-hidden-from-docs: true funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponse' amount: $ref: '#/components/schemas/TransferAmount' mode: $ref: '#/components/schemas/TransferIntentCreateMode' network: $ref: '#/components/schemas/TransferIntentCreateNetwork' ach_class: $ref: '#/components/schemas/ACHClass' user: $ref: '#/components/schemas/TransferUserInResponse' description: type: string description: A description for the underlying transfer. Maximum of 15 characters. metadata: $ref: '#/components/schemas/TransferMetadata' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" require_guarantee: type: boolean x-hidden-from-docs: true description: When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only). nullable: true required: - id - created - status - origination_account_id - funding_account_id - amount - mode - user - description - iso_currency_code TransferIntentCreateResponse: title: TransferIntentCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/intent/create` properties: transfer_intent: $ref: '#/components/schemas/TransferIntentCreate' request_id: $ref: '#/components/schemas/RequestID' required: - transfer_intent - request_id TransferIntentGetRequest: title: TransferIntentGetRequest type: object description: Defines the request schema for `/transfer/intent/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_intent_id: type: string description: Plaid's unique identifier for a transfer intent object. required: - transfer_intent_id TransferIntentAuthorizationDecision: type: string enum: - APPROVED - DECLINED description: |2- A decision regarding the proposed transfer. `APPROVED` - The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The `decision_rationale` field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when `decision_rationale.code` is `ITEM_LOGIN_REQUIRED`). Refer to the `code` field in the `decision_rationale` object for details. `DECLINED` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. nullable: true TransferIntentGet: title: TransferIntentGet type: object additionalProperties: true description: Represents a transfer intent within Transfer UI. properties: id: type: string description: Plaid's unique identifier for a transfer intent object. created: type: string format: date-time description: The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`. status: $ref: '#/components/schemas/TransferIntentStatus' transfer_id: type: string description: Plaid's unique identifier for the transfer created through the UI. Returned only if the transfer was successfully created. Null value otherwise. nullable: true failure_reason: $ref: '#/components/schemas/TransferIntentGetFailureReason' authorization_decision: $ref: '#/components/schemas/TransferIntentAuthorizationDecision' authorization_decision_rationale: $ref: '#/components/schemas/TransferAuthorizationDecisionRationale' account_id: type: string description: The Plaid `account_id` for the account that will be debited or credited. Returned only if `account_id` was set on intent creation. nullable: true origination_account_id: type: string description: Plaid's unique identifier for the origination account used for the transfer. deprecated: true x-hidden-from-docs: true funding_account_id: $ref: '#/components/schemas/TransferFundingAccountIDResponse' amount: $ref: '#/components/schemas/TransferAmount' mode: $ref: '#/components/schemas/TransferIntentCreateMode' network: $ref: '#/components/schemas/TransferIntentCreateNetwork' ach_class: $ref: '#/components/schemas/ACHClass' user: $ref: '#/components/schemas/TransferUserInResponse' description: type: string description: A description for the underlying transfer. Maximum of 15 characters. metadata: $ref: '#/components/schemas/TransferMetadata' iso_currency_code: type: string description: The currency of the transfer amount, e.g. "USD" require_guarantee: type: boolean x-hidden-from-docs: true description: When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only). nullable: true guarantee_decision: $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecision' guarantee_decision_rationale: $ref: '#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale' required: - id - created - status - transfer_id - failure_reason - authorization_decision - authorization_decision_rationale - origination_account_id - funding_account_id - amount - mode - user - description - iso_currency_code - guarantee_decision - guarantee_decision_rationale TransferIntentGetResponse: title: TransferIntentGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/intent/get` properties: transfer_intent: $ref: '#/components/schemas/TransferIntentGet' request_id: $ref: '#/components/schemas/RequestID' required: - transfer_intent - request_id TransferRefundCreateRequest: title: TransferRefundCreateRequest type: object description: Defines the request schema for `/transfer/refund/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_id: $ref: '#/components/schemas/TransferIDForRefund' amount: $ref: '#/components/schemas/TransferRefundAmount' idempotency_key: $ref: '#/components/schemas/TransferRefundIdempotencyKey' required: - transfer_id - idempotency_key - amount TransferRefundCreateResponse: title: TransferRefundCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/refund/create` properties: refund: $ref: '#/components/schemas/TransferRefund' request_id: $ref: '#/components/schemas/RequestID' required: - refund - request_id TransferReturnRecoverTransferID: title: TransferReturnRecoverTransferID type: string description: The ID of the returned transfer that was recovered. TransferReturnRecoverAmount: title: TransferReturnRecoverAmount type: string description: The amount being recovered (decimal string with two digits of precision e.g. "10.00"). The sum of recovered amounts across calls cannot exceed the original transfer's amount. TransferReturnRecoverIdempotencyKey: title: TransferReturnRecoverIdempotencyKey type: string maxLength: 50 description: |- A random key provided by the client, per unique recovery. 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 report a recovery fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single recovery is recorded. TransferReturnRecoverRequest: title: TransferReturnRecoverRequest type: object description: Defines the request schema for `/transfer/return/recover` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_id: $ref: '#/components/schemas/TransferReturnRecoverTransferID' amount: $ref: '#/components/schemas/TransferReturnRecoverAmount' idempotency_key: $ref: '#/components/schemas/TransferReturnRecoverIdempotencyKey' required: - transfer_id - amount - idempotency_key TransferReturnRecoverResponse: title: TransferReturnRecoverResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/return/recover` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferRefundFailure: title: TransferRefundFailure type: object additionalProperties: true nullable: true description: The failure reason if the status for a refund is `"failed"` or `"returned"`. Null value otherwise. properties: failure_code: type: string nullable: true description: The failure code, e.g. `R01`. A failure code will be provided if and only if the refund status is `returned`. See [ACH return codes](https://plaid.com/docs/errors/transfer/#ach-return-codes) for a full listing of ACH return codes and [RTP/RfP error codes](https://plaid.com/docs/errors/transfer/#rtprfp-error-codes) for RTP error codes. ach_return_code: deprecated: true type: string nullable: true description: The ACH return code, e.g. `R01`. A return code will be provided if and only if the refund status is `returned`. For a full listing of ACH return codes, see [Transfer errors](https://plaid.com/docs/errors/transfer/#ach-return-codes). This field is deprecated in favor of the more versatile `failure_code`, which encompasses non-ACH failure codes as well. description: type: string description: A human-readable description of the reason for the failure or reversal. TransferRefund: title: TransferRefund type: object additionalProperties: true description: Represents a refund within the Transfers API. properties: id: $ref: '#/components/schemas/TransferRefundID' transfer_id: $ref: '#/components/schemas/TransferIDForRefund' amount: $ref: '#/components/schemas/TransferRefundAmount' status: $ref: '#/components/schemas/TransferRefundStatus' failure_reason: $ref: '#/components/schemas/TransferRefundFailure' ledger_id: $ref: '#/components/schemas/TransferLedgerID' created: type: string format: date-time description: The datetime when this refund was created. This will be of the form `2006-01-02T15:04:05Z` network_trace_id: $ref: '#/components/schemas/TransferNetworkTraceID' required: - id - transfer_id - amount - status - created - failure_reason TransferRefundGetRequest: title: TransferRefundGetRequest type: object description: Defines the request schema for `/transfer/refund/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' refund_id: $ref: '#/components/schemas/TransferRefundID' required: - refund_id TransferRefundGetResponse: title: TransferRefundGetResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/refund/get` properties: refund: $ref: '#/components/schemas/TransferRefund' request_id: $ref: '#/components/schemas/RequestID' required: - refund - request_id TransferRefundCancelRequest: title: TransferRefundCancelRequest type: object description: Defines the request schema for `/transfer/refund/cancel` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' refund_id: $ref: '#/components/schemas/TransferRefundID' required: - refund_id TransferRefundCancelResponse: title: TransferRefundCancelResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/refund/cancel` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferPlatformOriginatorCreateRequest: title: TransferPlatformOriginatorCreateRequest type: object description: Defines the request schema for `/transfer/platform/originator/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: $ref: '#/components/schemas/TransferPlatformOriginatorClientID' tos_acceptance_metadata: $ref: '#/components/schemas/TransferPlatformTOSAcceptanceMetadata' originator_reviewed_at: type: string format: date-time description: ISO8601 timestamp indicating the most recent time the platform collected onboarding data from the originator webhook: type: string description: The webhook URL to which a `PLATFORM_ONBOARDING_UPDATE` webhook should be sent. format: url required: - originator_client_id - tos_acceptance_metadata - originator_reviewed_at TransferPlatformOriginatorCreateResponse: title: TransferPlatformOriginatorCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/platform/originator/create` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id TransferPlatformTOSAcceptanceMetadata: title: TOSAcceptanceMetadata type: object description: Metadata related to the acceptance of Terms of Service properties: agreement_accepted: type: boolean description: Indicates whether the TOS agreement was accepted originator_ip_address: type: string description: The IP address of the originator when they accepted the TOS. Formatted as an IPv4 or IPv6 IP address agreement_accepted_at: type: string format: date-time description: ISO8601 timestamp indicating when the originator accepted the TOS required: - agreement_accepted - originator_ip_address - agreement_accepted_at TransferPlatformOriginatorClientID: type: string description: The client ID of the originator TransferPlatformOnboardingUpdateWebhook: title: TransferPlatformOnboardingUpdateWebhook type: object additionalProperties: true description: Fired when the status of an onboarding originator has been updated. Call `/transfer/originator/get` to check the latest status x-examples: example-1: webhook_type: TRANSFER webhook_code: PLATFORM_ONBOARDING_UPDATE originator_client_id: 5fd92e38107d160013b02a37 environment: production properties: webhook_type: type: string description: '`"TRANSFER"`' webhook_code: type: string description: '`"PLATFORM_ONBOARDING_UPDATE"`' originator_client_id: $ref: '#/components/schemas/TransferPlatformOriginatorClientID' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - originator_client_id - environment TransferPlatformPersonCreateRequest: type: object description: Defines the request schema for `/transfer/platform/person/create` required: - originator_client_id properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' originator_client_id: $ref: '#/components/schemas/TransferPlatformOriginatorClientID' name: $ref: '#/components/schemas/TransferPlatformPersonName' email_address: type: string example: user@example.com description: A valid email address. Must not have leading or trailing spaces. phone_number: type: string example: "+12345678909" description: A valid phone number in E.164 format. Phone number input may be validated against valid number ranges; number strings that do not match a real-world phone numbering scheme may cause the request to fail, even in the Sandbox test environment. address: $ref: '#/components/schemas/TransferPlatformPersonAddress' id_number: $ref: '#/components/schemas/TransferPlatformPersonIDNumber' date_of_birth: type: string description: The date of birth of the person. Formatted as YYYY-MM-DD. format: date relationship_to_originator: type: string description: The relationship between this person and the originator they are related to. ownership_percentage: type: integer minimum: 25 maximum: 100 description: The percentage of ownership this person has in the onboarding business. Only applicable to beneficial owners with 25% or more ownership. title: type: string description: The title of the person at the business. Only applicable to control persons - for example, "CEO", "President", "Owner", etc. TransferPlatformPersonIDNumber: description: ID number of the person type: object properties: value: type: string example: "123456789" title: IDNumberValue description: Value of the person's ID Number. Alpha-numeric, with all formatting characters stripped. type: $ref: '#/components/schemas/IDNumberType' required: - value - type TransferPlatformPersonCreateResponse: title: TransferPlatformPersonCreateResponse type: object additionalProperties: true description: Defines the response schema for `/transfer/platform/person/create` properties: request_id: $ref: '#/components/schemas/RequestID' person_id: type: string description: An ID that should be used when submitting additional requirements that are associated with this person. required: - request_id - person_id TransferPlatformPersonAddress: title: TransferPlatformPersonAddress description: Home address of a person type: object properties: city: type: string description: The full city name. country: type: string description: Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form. postal_code: type: string description: The postal code of the address. region: type: string description: |- An ISO 3166-2 subdivision code. Related terms would be "state", "province", "prefecture", "zone", "subdivision", etc. street: type: string description: The primary street portion of an address. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. street2: type: string description: Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 50 characters. required: - city - country - postal_code - region - street TransferPlatformPersonName: type: object properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name description: The person's legal name SandboxBankTransferSimulateRequest: title: SandboxBankTransferSimulateRequest type: object description: Defines the request schema for `/sandbox/bank_transfer/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' bank_transfer_id: $ref: '#/components/schemas/BankTransferID' event_type: type: string description: | The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`. An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include: `pending` --> `failed` `pending` --> `posted` `posted` --> `reversed` failure_reason: $ref: '#/components/schemas/BankTransferFailure' required: - bank_transfer_id - event_type SandboxTransferSimulateRequest: title: SandboxTransferSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transfer_id: $ref: '#/components/schemas/TransferID' test_clock_id: type: string description: Plaid's unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. nullable: true event_type: type: string description: | The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, `funds_available`, or `returned`. An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include: `pending` --> `failed` `pending` --> `posted` `posted` --> `returned` `posted` --> `settled` `settled` --> `funds_available` (only applicable to ACH debits.) failure_reason: $ref: '#/components/schemas/TransferFailure' webhook: type: string description: The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent. format: url required: - transfer_id - event_type SandboxTransferRefundSimulateRequest: title: SandboxTransferRefundSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/refund/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' refund_id: $ref: '#/components/schemas/TransferRefundID' test_clock_id: type: string description: Plaid's unique identifier for a test clock. If provided, the event to be simulated is created at the `virtual_time` on the provided `test_clock`. nullable: true event_type: type: string description: | The asynchronous event to be simulated. May be: `refund.posted`, `refund.settled`, `refund.failed`, or `refund.returned`. An error will be returned if the event type is incompatible with the current refund status. Compatible status --> event type transitions include: `refund.pending` --> `refund.failed` `refund.pending` --> `refund.posted` `refund.posted` --> `refund.returned` `refund.posted` --> `refund.settled` `refund.posted` events can only be simulated if the refunded transfer has been transitioned to settled. This mimics the ordering of events in Production. failure_reason: $ref: '#/components/schemas/TransferFailure' webhook: type: string description: The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent. format: url required: - refund_id - event_type SandboxTransferLedgerDepositSimulateRequest: title: SandboxTransferLedgerDepositSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/ledger/deposit/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' sweep_id: $ref: '#/components/schemas/TransferSweepID' event_type: $ref: '#/components/schemas/TransferLedgerSweepSimulateEventType' failure_reason: $ref: '#/components/schemas/TransferFailure' required: - sweep_id - event_type SandboxTransferLedgerWithdrawSimulateRequest: title: SandboxTransferLedgerWithdrawSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/ledger/withdraw/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' sweep_id: $ref: '#/components/schemas/TransferSweepID' event_type: $ref: '#/components/schemas/TransferLedgerSweepSimulateEventType' failure_reason: $ref: '#/components/schemas/TransferFailure' required: - sweep_id - event_type SandboxTransferSweepSimulateRequest: title: SandboxTransferSweepSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/sweep/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' test_clock_id: type: string description: Plaid's unique identifier for a test clock. If provided, the sweep to be simulated is created on the day of the `virtual_time` on the `test_clock`. If the date of `virtual_time` is on weekend or a federal holiday, the next available banking day is used. nullable: true webhook: type: string description: The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent. format: url SandboxTransferLedgerSimulateAvailableRequest: title: SandboxTransferLedgerSimulateAvailableRequest type: object description: Defines the request schema for `/sandbox/transfer/ledger/simulate_available` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' 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 the id of the default ledger balance. originator_client_id: nullable: true type: string description: Client ID of the end customer (i.e. the originator). Only applicable to Transfer for Platforms customers. test_clock_id: type: string description: Plaid's unique identifier for a test clock. If provided, only the pending balance that is due before the `virtual_time` on the test clock will be converted. nullable: true webhook: type: string description: The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent. format: url SandboxTransferTestClockCreateRequest: title: SandboxTransferTestClockCreateRequest type: object description: Defines the request schema for `/sandbox/transfer/test_clock/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' virtual_time: type: string title: VirtualTime format: date-time description: The virtual timestamp on the test clock. If not provided, the current timestamp will be used. This will be of the form `2006-01-02T15:04:05Z`. nullable: true SandboxTransferTestClockAdvanceRequest: title: SandboxTransferTestClockAdvanceRequest type: object description: Defines the request schema for `/sandbox/transfer/test_clock/advance` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' test_clock_id: $ref: '#/components/schemas/TransferTestClockID' new_virtual_time: $ref: '#/components/schemas/VirtualTime' required: - test_clock_id - new_virtual_time SandboxTransferTestClockGetRequest: title: SandboxTransferTestClockGetRequest type: object description: Defines the request schema for `/sandbox/transfer/test_clock/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' test_clock_id: $ref: '#/components/schemas/TransferTestClockID' required: - test_clock_id SandboxTransferTestClockListRequest: title: SandboxTransferTestClockListRequest type: object description: Defines the request schema for `/sandbox/transfer/test_clock/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_virtual_time: type: string format: date-time description: The start virtual timestamp of test clocks to return. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true end_virtual_time: type: string format: date-time description: The end virtual timestamp of test clocks to return. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`) nullable: true count: type: integer minimum: 1 maximum: 25 default: 25 description: The maximum number of test clocks to return. nullable: true offset: type: integer default: 0 minimum: 0 description: The number of test clocks to skip before returning results. SandboxBankTransferSimulateResponse: title: SandboxBankTransferSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/bank_transfer/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferSimulateResponse: title: SandboxTransferSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferRefundSimulateResponse: title: SandboxTransferRefundSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/refund/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferLedgerSimulateAvailableResponse: title: SandboxTransferLedgerSimulateAvailableResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/ledger/simulate_available` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferLedgerDepositSimulateResponse: title: SandboxTransferLedgerDepositSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/ledger/deposit/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferLedgerWithdrawSimulateResponse: title: SandboxTransferLedgerWithdrawSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/ledger/withdraw/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferSweepSimulateResponse: title: SandboxTransferSweepSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/sweep/simulate` properties: sweep: $ref: '#/components/schemas/SimulatedTransferSweep' request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferTestClockCreateResponse: title: SandboxTransferTestClockCreateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/test_clock/create` properties: test_clock: $ref: '#/components/schemas/TransferTestClock' request_id: $ref: '#/components/schemas/RequestID' required: - test_clock - request_id SandboxTransferTestClockAdvanceResponse: title: SandboxTransferTestClockAdvanceResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/test_clock/advance` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferTestClockGetResponse: title: SandboxTransferTestClockGetResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/test_clock/get` properties: test_clock: $ref: '#/components/schemas/TransferTestClock' request_id: $ref: '#/components/schemas/RequestID' required: - test_clock - request_id SandboxTransferTestClockListResponse: title: SandboxTransferTestClockListResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/test_clock/list` properties: test_clocks: type: array items: $ref: '#/components/schemas/TransferTestClock' request_id: $ref: '#/components/schemas/RequestID' required: - test_clocks - request_id SandboxTransferRfpSimulateRequest: title: SandboxTransferRfpSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/rfp/simulate` properties: transfer_id: $ref: '#/components/schemas/TransferID' action: $ref: '#/components/schemas/SandboxTransferRfpSimulateAction' amount: type: string description: | The transfer amount provided by the caller for validation purposes, must match the amount on the transfer associated with the provided `transfer_id`. client_name: type: string description: | The client name provided by the caller for validation purposes, must match the sender client name on the transfer associated with the provided `transfer_id`. required: - transfer_id - action - amount - client_name SandboxTransferRfpSimulateAction: title: SandboxTransferRfpSimulateAction description: | The action to simulate. Must be either `approve` or `reject`. - `approve`: Simulates bank approval, transitioning the transfer to `settled` status - `reject`: Simulates bank rejection, transitioning the transfer to `failed` status type: string enum: - approve - reject SandboxTransferRfpSimulateResponse: title: SandboxTransferRfpSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/rfp/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferRepaymentSimulateRequest: title: SandboxTransferRepaymentSimulateRequest type: object description: Defines the request schema for `/sandbox/transfer/repayment/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' SandboxTransferRepaymentSimulateResponse: title: SandboxTransferRepaymentSimulateResponse type: object additionalProperties: true description: Defines the response schema for `/sandbox/transfer/repayment/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id AccountFiltersResponse: title: AccountFiltersResponse description: | The `account_filters` specified in the original call to `/link/token/create`. type: object additionalProperties: true properties: depository: $ref: '#/components/schemas/DepositoryFilter' credit: $ref: '#/components/schemas/CreditFilter' loan: $ref: '#/components/schemas/LoanFilter' investment: $ref: '#/components/schemas/InvestmentFilter' InstitutionsSearchAccountFilter: title: InstitutionsSearchAccountFilter description: An account filter to apply to institutions search requests type: object additionalProperties: true properties: loan: type: array items: $ref: '#/components/schemas/AccountSubtype' depository: type: array items: $ref: '#/components/schemas/AccountSubtype' credit: type: array items: $ref: '#/components/schemas/AccountSubtype' investment: type: array items: $ref: '#/components/schemas/AccountSubtype' AccountIdentity: description: Identity information about an account title: AccountIdentity allOf: - $ref: '#/components/schemas/AccountBase' - type: object additionalProperties: true properties: name: type: string official_name: type: string nullable: true mask: type: string nullable: true verification_name: type: string owners: type: array description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution; detecting whether the linked account is a business account is not currently supported. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29) items: $ref: '#/components/schemas/Owner' required: - owners AccountIdentityMatchScore: description: Identity match scores for an account title: AccountIdentityMatchScore allOf: - $ref: '#/components/schemas/AccountBase' - type: object additionalProperties: true properties: name: type: string official_name: type: string nullable: true mask: type: string nullable: true verification_name: type: string legal_name: $ref: '#/components/schemas/NameMatchScore' phone_number: $ref: '#/components/schemas/PhoneNumberMatchScore' email_address: $ref: '#/components/schemas/EmailAddressMatchScore' address: $ref: '#/components/schemas/AddressMatchScore' NameMatchScore: title: NameMatchScore type: object nullable: true additionalProperties: true description: Score found by matching name provided by the API with the name on the account at the financial institution. If the account contains multiple owners, the maximum match score is filled. properties: score: type: integer nullable: true description: Match score for name. 100 is a perfect score, 99-85 means a strong match, 84-70 is a partial match, any score less than 70 is a mismatch. Typically, the match threshold should be set to a score of 70 or higher. If the name is missing from either the API or financial institution, this is null. is_first_name_or_last_name_match: type: boolean nullable: true description: first or last name completely matched, likely a family member is_nickname_match: type: boolean nullable: true description: nickname matched, example Jennifer and Jenn. is_business_name_detected: type: boolean nullable: true description: Is `true` if the name on either of the names that was matched for the score contained strings indicative of a business name, such as "CORP", "LLC", "INC", or "LTD". A `true` result generally indicates that an account's name is a business name. However, a `false` result does not mean the account name is not a business name, as some businesses do not use these strings in the names used for their financial institution accounts. PhoneNumberMatchScore: title: PhoneNumberMatchScore type: object nullable: true additionalProperties: true description: Score found by matching phone number provided by the API with the phone number on the account at the financial institution. 100 is a perfect match and 0 is a no match. If the account contains multiple owners, the maximum match score is filled. properties: score: type: integer nullable: true description: Match score for normalized phone number. 100 is a perfect match, 99-70 is a partial match (matching the same phone number with extension against one without extension, etc.), anything below 70 is considered a mismatch. Typically, the match threshold should be set to a score of 70 or higher. If the phone number is missing from either the API or financial institution, this is null. EmailAddressMatchScore: title: EmailAddressMatchScore type: object nullable: true additionalProperties: true description: Score found by matching email provided by the API with the email on the account at the financial institution. 100 is a perfect match and 0 is a no match. If the account contains multiple owners, the maximum match score is filled. properties: score: type: integer nullable: true description: Match score for normalized email. 100 is a perfect match, 99-70 is a partial match (matching the same email with different '+' extensions), anything below 70 is considered a mismatch. Typically, the match threshold should be set to a score of 70 or higher. If the email is missing from either the API or financial institution, this is null. AddressMatchScore: title: AddressMatchScore type: object nullable: true additionalProperties: true description: Score found by matching address provided by the API with the address on the account at the financial institution. The score can range from 0 to 100 where 100 is a perfect match and 0 is a no match. If the account contains multiple owners, the maximum match score is filled. properties: score: type: integer nullable: true description: Match score for address. 100 is a perfect match, 99-90 is a strong match, 89-70 is a partial match, anything below 70 is considered a weak match. Typically, the match threshold should be set to a score of 70 or higher. If the address is missing from either the API or financial institution, this is null. is_postal_code_match: type: boolean nullable: true description: postal code was provided for both and was a match DepositoryFilter: title: DepositoryFilter description: A filter to apply to `depository`-type accounts type: object additionalProperties: true properties: account_subtypes: $ref: '#/components/schemas/DepositoryAccountSubtypes' limited_purpose_types: $ref: '#/components/schemas/LimitedPurposeTypes' required: - account_subtypes CreditFilter: title: CreditFilter description: A filter to apply to `credit`-type accounts type: object additionalProperties: true properties: account_subtypes: $ref: '#/components/schemas/CreditAccountSubtypes' required: - account_subtypes LoanFilter: title: LoanFilter description: A filter to apply to `loan`-type accounts type: object additionalProperties: true properties: account_subtypes: $ref: '#/components/schemas/LoanAccountSubtypes' required: - account_subtypes InvestmentFilter: title: InvestmentFilter description: A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier). type: object additionalProperties: true properties: account_subtypes: $ref: '#/components/schemas/InvestmentAccountSubtypes' required: - account_subtypes OtherFilter: title: OtherFilter description: A filter to apply to `other`-type accounts type: object additionalProperties: true properties: account_subtypes: $ref: '#/components/schemas/OtherAccountSubtypes' required: - account_subtypes DepositoryAccountSubtypes: title: DepositoryAccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/DepositoryAccountSubtype' CreditAccountSubtypes: title: CreditAccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/CreditAccountSubtype' LoanAccountSubtypes: title: LoanAccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/LoanAccountSubtype' InvestmentAccountSubtypes: title: InvestmentAccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/InvestmentAccountSubtype' OtherAccountSubtypes: title: OtherAccountSubtypes type: array description: 'An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). ' items: $ref: '#/components/schemas/OtherAccountSubtype' DepositoryAccountSubtype: type: string description: Valid account subtypes for depository accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-depository). enum: - checking - savings - hsa - cd - money market - paypal - prepaid - cash management - ebt - limited purpose checking - all LimitedPurposeTypes: title: LimitedPurposeTypes type: array description: An array of limited purpose types. Restricts which kinds of limited purpose checking accounts may be connected in Link to prevent users from connecting them for unsupported use cases. Required when 'limited purpose checking' is in the subtypes filter. items: $ref: '#/components/schemas/LimitedPurposeType' LimitedPurposeType: type: string description: A specific use case for a limited purpose checking account. Limited purpose checking accounts will reject or return ACH transactions that aren't for eligible use cases. For example, a `RENT_MORTGAGE` limited purpose checking account will reject ACH transactions that are not specifically rent or mortgage payments. enum: - RENT_MORTGAGE CreditAccountSubtype: type: string description: Valid account subtypes for credit accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-credit). enum: - credit card - paypal - all LoanAccountSubtype: type: string description: Valid account subtypes for loan accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-loan). enum: - auto - business - commercial - construction - consumer - home equity - loan - mortgage - overdraft - line of credit - student - other - all InvestmentAccountSubtype: type: string description: Valid account subtypes for investment accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-investment). enum: - "529" - 401a - 401k - 403B - 457b - brokerage - cash isa - crypto exchange - education savings account - fhsa - fixed annuity - gic - health reimbursement arrangement - hsa - ira - isa - keogh - lif - life insurance - line of credit - lira - lrif - lrsp - mutual fund - non-custodial wallet - non-taxable brokerage account - other - other annuity - other insurance - pension - prif - profit sharing plan - qshr - rdsp - resp - retirement - rlif - roth - roth 401k - roth 403B - roth 457b - roth pension - roth profit sharing plan - roth thrift savings plan - rrif - rrsp - sarsep - sep ira - simple ira - sipp - stock plan - thrift savings plan - tfsa - trust - ugma - utma - variable annuity - all OtherAccountSubtype: type: string description: Valid account subtypes for other accounts. For a list containing descriptions of each subtype, see [Account schemas](https://plaid.com/docs/api/accounts/#StandaloneAccountType-other). enum: - other - all EmployersSearchRequest: title: EmployersSearchRequest type: object description: EmployersSearchRequest defines the request schema for `/employers/search`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' query: type: string description: The employer name to be searched for. products: type: array description: The Plaid products the returned employers should support. Currently, this field must be set to `"deposit_switch"`. items: type: string required: - query - products EmployersSearchResponse: title: EmployersSearchResponse type: object additionalProperties: true description: EmployersSearchResponse defines the response schema for `/employers/search`. properties: employers: type: array description: A list of employers matching the search criteria. items: $ref: '#/components/schemas/Employer' request_id: $ref: '#/components/schemas/RequestID' required: - employers - request_id Employer: title: Employer type: object additionalProperties: true description: Data about the employer. properties: employer_id: type: string description: Plaid's unique identifier for the employer. name: type: string description: The name of the employer address: $ref: '#/components/schemas/AddressDataNullable' confidence_score: type: number format: double description: A number from 0 to 1 indicating Plaid's level of confidence in the pairing between the employer and the institution (not yet implemented). required: - employer_id - name - address - confidence_score IncomeVerificationCreateRequest: title: IncomeVerificationCreateRequest type: object description: IncomeVerificationCreateRequest defines the request schema for `/income/verification/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' webhook: type: string description: The URL endpoint to which Plaid should send webhooks related to the progress of the income verification process. precheck_id: type: string description: The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow. options: $ref: '#/components/schemas/IncomeVerificationCreateRequestOptions' required: - webhook IncomeVerificationCreateRequestOptions: title: IncomeVerificationCreateRequestOptions type: object description: Optional arguments for `/income/verification/create` properties: access_tokens: type: array description: An array of access tokens corresponding to the Items that will be cross-referenced with the product data. Plaid will attempt to correlate transaction history from these Items with data from the user's paystub, such as date and amount. If the `transactions` product was not initialized for the Items during Link, it will be initialized after this Link session. items: $ref: '#/components/schemas/AccessToken' IncomeVerificationCreateResponse: title: IncomeVerificationCreateResponse type: object additionalProperties: true description: IncomeVerificationCreateResponse defines the response schema for `/income/verification/create`. properties: income_verification_id: type: string description: ID of the verification. This ID is persisted throughout the lifetime of the verification. request_id: $ref: '#/components/schemas/RequestID' required: - income_verification_id - request_id IncomeVerificationPrecheckRequest: title: IncomeVerificationPrecheckRequest type: object description: IncomeVerificationPrecheckRequest defines the request schema for `/income/verification/precheck` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user: $ref: '#/components/schemas/IncomeVerificationPrecheckUser' employer: $ref: '#/components/schemas/IncomeVerificationPrecheckEmployer' payroll_institution: $ref: '#/components/schemas/IncomeVerificationPrecheckPayrollInstitution' transactions_access_token: deprecated: true allOf: - $ref: '#/components/schemas/AccessTokenNullable' transactions_access_tokens: type: array description: An array of access tokens corresponding to Items belonging to the user whose eligibility is being checked. Note that if the Items specified here are not already initialized with `transactions`, providing them in this field will cause these Items to be initialized with (and billed for) the Transactions product. items: $ref: '#/components/schemas/AccessToken' us_military_info: $ref: '#/components/schemas/IncomeVerificationPrecheckMilitaryInfo' IncomeVerificationPrecheckEmployer: title: IncomeVerificationPrecheckEmployer type: object nullable: true description: Information about the end user's employer properties: name: type: string nullable: true description: The employer's name address: $ref: '#/components/schemas/IncomeVerificationPrecheckEmployerAddress' tax_id: type: string nullable: true description: The employer's tax id url: type: string nullable: true format: url description: The URL for the employer's public website IncomeVerificationPrecheckEmployerAddress: title: IncomeVerificationPrecheckEmployerAddress description: The address of the employer type: object nullable: true allOf: - $ref: '#/components/schemas/IncomeVerificationPrecheckEmployerAddressData' - type: object additionalProperties: true IncomeVerificationPrecheckPayrollInstitution: title: IncomeVerificationPrecheckPayrollInstitution type: object nullable: true description: Information about the end user's payroll institution properties: name: type: string nullable: true description: The name of payroll institution IncomeVerificationPrecheckEmployerAddressData: title: AddressData type: object additionalProperties: true description: Data about the components comprising an address. properties: city: type: string description: The full city name country: type: string description: The ISO 3166-1 alpha-2 country code postal_code: type: string description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`. region: type: string description: |- The region or state. In API versions 2018-05-22 and earlier, this field is called `state`. Example: `"NC"` street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` IncomeVerificationPrecheckMilitaryInfo: title: IncomeVerificationPrecheckMilitaryInfo description: Data about military info in the income verification precheck. type: object nullable: true properties: is_active_duty: type: boolean nullable: true description: Is the user currently active duty in the US military branch: type: string nullable: true description: |- If the user is currently serving in the US military, the branch of the military in which they are serving Valid values: 'AIR FORCE', 'ARMY', 'COAST GUARD', 'MARINES', 'NAVY', 'UNKNOWN' IncomeVerificationPrecheckUser: title: IncomeVerificationPrecheckUser type: object nullable: true description: Information about the user whose eligibility is being evaluated. properties: first_name: type: string nullable: true description: The user's first name last_name: type: string nullable: true description: The user's last name email_address: type: string nullable: true description: The user's email address home_address: $ref: '#/components/schemas/SignalAddressData' IncomeVerificationPrecheckResponse: title: IncomeVerificationPrecheckResponse additionalProperties: true type: object description: IncomeVerificationPrecheckResponse defines the response schema for `/income/verification/precheck`. properties: precheck_id: type: string description: ID of the precheck. Provide this value when calling `/link/token/create` in order to optimize Link conversion. request_id: $ref: '#/components/schemas/RequestID' confidence: $ref: '#/components/schemas/IncomeVerificationPrecheckConfidence' required: - precheck_id - confidence - request_id IncomeVerificationPrecheckConfidence: description: |- The confidence that Plaid can support the user in the digital income verification flow instead of requiring a manual paystub upload. One of the following: `"HIGH"`: It is very likely that this user can use the digital income verification flow. "`LOW`": It is unlikely that this user can use the digital income verification flow. `"UNKNOWN"`: It was not possible to determine if the user is supportable with the information passed. type: string enum: - HIGH - LOW - UNKNOWN LinkTokenCreateRequestIncomeVerification: title: LinkTokenCreateRequestIncomeVerification type: object description: Specifies options for initializing Link for use with the Income product. This field is required if `income_verification` is included in the `products` array. properties: income_verification_id: type: string deprecated: true x-hidden-from-docs: true description: The `income_verification_id` of the verification instance, as provided by `/income/verification/create`. Replaced by the user token. asset_report_id: type: string description: The `asset_report_id` of an asset report associated with the user, as provided by `/asset_report/create`. Providing an `asset_report_id` is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped. access_tokens: type: array 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. This field should only be used with the `payroll` income source type. nullable: true income_source_types: type: array description: The types of source income data that users will be permitted to share. Options include `bank` and `payroll`. Currently you can only specify one of these options. items: $ref: '#/components/schemas/IncomeVerificationSourceType' bank_income: $ref: '#/components/schemas/LinkTokenCreateRequestIncomeVerificationBankIncome' payroll_income: $ref: '#/components/schemas/LinkTokenCreateRequestIncomeVerificationPayrollIncome' stated_income_sources: type: array description: A list of user stated income sources items: $ref: '#/components/schemas/LinkTokenCreateRequestUserStatedIncomeSource' IncomeVerificationSourceType: title: IncomeVerificationSourceType enum: - bank - payroll description: The types of source income data that users should be able to share type: string LinkTokenCreateRequestIncomeVerificationBankIncome: title: LinkTokenCreateRequestIncomeVerificationBankIncome type: object description: Specifies options for initializing Link for use with Bank Income. This field is required if `income_verification` is included in the `products` array and `bank` is specified in `income_source_types`. properties: days_requested: type: integer description: The number of days of data to request for the Bank Income product minimum: 1 maximum: 731 enable_multiple_items: type: boolean nullable: true default: false deprecated: true description: Whether to enable multiple Items to be added in the Link session. This setting is deprecated and has been replaced by the more general `enable_multi_item_link` setting, which supports all products. required: - days_requested LinkTokenCreateRequestIncomeVerificationPayrollIncome: title: LinkTokenCreateRequestIncomeVerificationPayrollIncome type: object description: Specifies options for initializing Link for use with Payroll Income (including Document Income). Further customization options for Document Income, such as customizing which document types may be uploaded, are also available via the [Link Customization pane](https://dashboard.plaid.com/link) in the Dashboard. (Requires Production enablement.) properties: flow_types: type: array nullable: true description: The types of payroll income verification to enable for the Link session. If none are specified, then users will see both document and digital payroll income. items: $ref: '#/components/schemas/IncomeVerificationPayrollFlowType' is_update_mode: type: boolean description: An identifier to indicate whether the income verification Link token will be used for update mode. This field is only relevant for participants in the Payroll Income Refresh beta. default: false item_id_to_update: type: string description: Uniquely identify a payroll income Item to update with. This field is only relevant for participants in the Payroll Income Refresh beta. nullable: true parsing_config: type: array nullable: true description: The types of analysis to enable for document uploads. If this field is not provided, then docs will undergo OCR parsing only. items: $ref: '#/components/schemas/IncomeVerificationDocParsingConfig' IncomeVerificationPayrollFlowType: title: IncomeVerificationPayrollFlowType enum: - payroll_digital_income - payroll_document_income description: Flow types to retrieve payroll income data type: string IncomeVerificationDocParsingConfig: title: IncomeVerificationDocParsingConfig enum: - ocr - risk_signals description: Analysis options to enable for document parsing type: string IncomeVerificationStatusWebhook: title: IncomeVerificationStatusWebhook type: object additionalProperties: true description: Fired when the status of an income verification instance has changed. This webhook is fired for both the Document and Payroll Income flows, but not the Bank Income flow. It will typically take several minutes for this webhook to fire after the end user has uploaded their documents in the Document Income flow. x-examples: example-1: webhook_type: INCOME webhook_code: INCOME_VERIFICATION item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 verification_status: VERIFICATION_STATUS_PROCESSING_COMPLETE environment: production properties: webhook_type: type: string description: '`"INCOME"`' webhook_code: type: string description: '`INCOME_VERIFICATION`' item_id: type: string description: The Item ID associated with the verification. user_id: $ref: '#/components/schemas/UserId' verification_status: type: string description: |- `VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification processing has completed. This indicates that the documents have been parsed successfully or that the documents were not parsable. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the `/credit/payroll_income/get` endpoint and check the document metadata to see which documents were successfully parsed. `VERIFICATION_STATUS_PROCESSING_FAILED`: An unexpected internal error occurred when attempting to process the verification documentation. `VERIFICATION_STATUS_PENDING_APPROVAL`: (deprecated) The income verification has been sent to the user for review. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - verification_status - environment IncomeVerificationRiskSignalsStatusWebhook: title: IncomeVerificationRiskSignalsStatusWebhook type: object additionalProperties: true description: Fired when risk signals have been processed for documents uploaded via Document Income. It will typically take a minute or two for this webhook to fire after the end user has uploaded their documents in the Document Income flow. Once this webhook has fired, `/credit/payroll_income/risk_signals/get` may then be called to determine whether the documents were successfully processed and to retrieve risk data. x-examples: example-1: webhook_type: INCOME webhook_code: INCOME_VERIFICATION_RISK_SIGNALS item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 risk_signals_status: RISK_SIGNALS_PROCESSING_COMPLETE environment: production properties: webhook_type: type: string description: '`"INCOME"`' webhook_code: type: string description: '`INCOME_VERIFICATION_RISK_SIGNALS`' item_id: type: string description: The Item ID associated with the verification. user_id: $ref: '#/components/schemas/UserId' risk_signals_status: type: string description: '`RISK_SIGNALS_PROCESSING_COMPLETE`: The income verification fraud detection processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the `/credit/payroll_income/risk_signals/get` endpoint to get all risk signal data.' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - risk_signals_status - environment LinkTokenCreateRequestBaseReport: title: LinkTokenCreateRequestBaseReport type: object x-hidden-from-docs: true deprecated: true description: Specifies options for initializing Link for use with the Base Report product. This field is required if `assets` is included in the `products` array and the client is CRA-enabled. properties: days_requested: type: integer description: The maximum integer number of days of history to include in the Base Report. minimum: 1 maximum: 730 client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. required: - days_requested LinkTokenCreateRequestCraOptions: title: LinkTokenCreateRequestCraOptions type: object description: Specifies options for initializing Link for use with Plaid Check products properties: days_requested: type: integer description: The number of days of history to include in Plaid Check products. Maximum is 731; minimum is 180. If a value lower than 180 is provided, a minimum of 180 days of history will be requested. maximum: 731 days_required: type: integer description: The minimum number of days of data required for the report to be successfully generated. maximum: 184 client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. partner_insights: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsPartnerInsights' base_report: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsBaseReport' cashflow_insights: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsCashflowInsights' lend_score: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsLendScore' network_insights: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsNetworkInsights' include_investments: type: boolean nullable: true description: Indicates that investment data should be extracted from the linked account(s). income_insights: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsIncomeInsights' required: - days_requested LinkTokenCreateRequestCraOptionsPartnerInsights: title: LinkTokenCreateRequestCraOptionsPartnerInsights type: object description: Specifies options for initializing Link for use with the Credit Partner Insights product. properties: prism_versions: $ref: '#/components/schemas/PrismVersions' fico: $ref: '#/components/schemas/CraPartnerInsightsFicoInput' LinkTokenCreateRequestCraOptionsBaseReport: title: LinkTokenCreateRequestCraOptionsBaseReport type: object description: Specifies options for initializing Link for use with the Base Report product, specifically the `client_report_id`. properties: client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. gse_options: $ref: '#/components/schemas/LinkTokenCreateRequestCraOptionsBaseReportGSEOptions' require_identity: type: boolean nullable: true description: Indicates that the report must include identity information. If identity information is not available, the report will fail. home_lending_report_options: $ref: '#/components/schemas/CraCheckReportHomeLendingReportOptions' LinkTokenCreateRequestCraOptionsBaseReportGSEOptions: title: LinkTokenCreateRequestCraOptionsBaseReportGSEOptions type: object description: Specifies options for initializing Link to create reports that can be shared with GSEs for mortgage verification. nullable: true properties: report_types: type: array items: $ref: '#/components/schemas/GSEReportType' description: Specifies which types of reports should be made available to GSEs. required: - report_types LinkTokenCreateRequestCraOptionsCashflowInsights: title: LinkTokenCreateRequestCraOptionsCashflowInsights type: object description: Specifies options for initializing Link for use with the Cashflow Insights product. properties: attributes_version: $ref: '#/components/schemas/CashflowAttributesVersion' LinkTokenCreateRequestCraOptionsIncomeInsights: title: LinkTokenCreateRequestCraOptionsIncomeInsights type: object description: Specifies options for initializing Link for use with the CRA Income Insights product. properties: income_insights_filter: $ref: '#/components/schemas/IncomeInsightsFilter' income_insights_version: $ref: '#/components/schemas/IncomeInsightsVersion' required: - income_insights_version LinkTokenCreateRequestCraOptionsLendScore: title: LinkTokenCreateRequestCraOptionsLendScore type: object description: Specifies options for initializing Link for use with the CRA LendScore product. properties: lend_score_version: $ref: '#/components/schemas/PlaidLendScoreVersion' LinkTokenCreateRequestCraOptionsNetworkInsights: title: LinkTokenCreateRequestCraOptionsNetworkInsights type: object description: Specifies options for initializing Link for use with the CRA Network Insights product. properties: network_insights_version: $ref: '#/components/schemas/NetworkInsightsVersion' LinkTokenCreateRequestCreditPartnerInsights: title: LinkTokenCreateRequestCreditPartnerInsights type: object x-hidden-from-docs: true description: Specifies options for initializing Link for use with the Credit Partner Insights product. properties: days_requested: type: integer description: The maximum integer number of days of history to compute Credit Partner Insights. Defaults to 180 if not specified minimum: 1 maximum: 730 LinkTokenCreateRequestEmployment: title: LinkTokenCreateRequestEmployment type: object x-hidden-from-docs: true description: Specifies options for initializing Link for use with the Employment product. This field is required if `employment` is included in the `products` array. properties: employment_source_types: type: array description: The types of source employment data that users will be permitted to share. Options include `bank` and `payroll`. Currently you can only specify one of these options. items: $ref: '#/components/schemas/EmploymentSourceType' bank_employment: $ref: '#/components/schemas/LinkTokenCreateRequestEmploymentBankIncome' EmploymentSourceType: title: EmploymentSourceType enum: - bank - payroll description: The types of source employment data that users should be able to share type: string LinkTokenCreateRequestEmploymentBankIncome: title: LinkTokenCreateRequestEmploymentBankIncome type: object description: Specifies options for initializing Link for use with Bank Employment. This field is required if `employment` is included in the `products` array and `bank` is specified in `employment_source_types`. properties: days_requested: type: integer description: The number of days of data to request for the Bank Employment product. required: - days_requested IncomeSummary: title: IncomeSummary type: object additionalProperties: true description: The verified fields from a paystub verification. All fields are provided as reported on the paystub. properties: employer_name: $ref: '#/components/schemas/EmployerIncomeSummaryFieldString' employee_name: $ref: '#/components/schemas/EmployeeIncomeSummaryFieldString' ytd_gross_income: $ref: '#/components/schemas/YTDGrossIncomeSummaryFieldNumber' ytd_net_income: $ref: '#/components/schemas/YTDNetIncomeSummaryFieldNumber' pay_frequency: $ref: '#/components/schemas/PayFrequency' projected_wage: $ref: '#/components/schemas/ProjectedIncomeSummaryFieldNumber' verified_transaction: $ref: '#/components/schemas/TransactionData' required: - employer_name - employee_name - ytd_gross_income - ytd_net_income - pay_frequency - projected_wage - verified_transaction TransactionData: title: TransactionData type: object additionalProperties: true nullable: true description: Information about the matched direct deposit transaction used to verify a user's payroll information. properties: description: type: string description: The description of the transaction. amount: type: number format: double description: The amount of the transaction. date: type: string format: date description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). account_id: type: string description: A unique identifier for the end user's account. transaction_id: type: string description: A unique identifier for the transaction. required: - description - amount - date - account_id - transaction_id IncomeSummaryFieldString: title: IncomeSummaryFieldString description: Data about the income summary type: object additionalProperties: true nullable: true properties: value: type: string description: The value of the field. verification_status: $ref: '#/components/schemas/VerificationStatus' required: - value - verification_status EmployerIncomeSummaryFieldString: description: The name of the employer, as reported on the paystub. allOf: - $ref: '#/components/schemas/IncomeSummaryFieldString' - type: object additionalProperties: true EmployeeIncomeSummaryFieldString: description: The name of the employee, as reported on the paystub. allOf: - $ref: '#/components/schemas/IncomeSummaryFieldString' - type: object additionalProperties: true IncomeSummaryFieldNumber: title: IncomeSummaryFieldNumber description: Field number for income summary type: object additionalProperties: true nullable: true properties: value: type: number format: double description: The value of the field. verification_status: $ref: '#/components/schemas/VerificationStatus' required: - value - verification_status YTDGrossIncomeSummaryFieldNumber: description: Year-to-date pre-tax earnings, as reported on the paystub. allOf: - $ref: '#/components/schemas/IncomeSummaryFieldNumber' - type: object additionalProperties: true description: Year-to-date pre-tax earnings, as reported on the paystub. YTDNetIncomeSummaryFieldNumber: description: Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub. allOf: - $ref: '#/components/schemas/IncomeSummaryFieldNumber' - type: object additionalProperties: true description: Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub. ProjectedIncomeSummaryFieldNumber: description: The employee's estimated annual salary, as derived from information reported on the paystub. allOf: - $ref: '#/components/schemas/IncomeSummaryFieldNumber' - type: object additionalProperties: true description: The employee's estimated annual salary, as derived from information reported on the paystub. PayFrequency: title: PayFrequency description: The frequency of the pay period. type: object additionalProperties: true nullable: true properties: value: $ref: '#/components/schemas/PayFrequencyValue' verification_status: $ref: '#/components/schemas/VerificationStatus' required: - value - verification_status PayFrequencyValue: type: string title: PayFrequencyValue enum: - monthly - semimonthly - weekly - biweekly - unknown - null description: The frequency of the pay period. VerificationStatus: type: string title: VerificationStatus description: |- The verification status. One of the following: `"VERIFIED"`: The information was successfully verified. `"UNVERIFIED"`: The verification has not yet been performed. `"NEEDS_INFO"`: The verification was attempted but could not be completed due to missing information. "`UNABLE_TO_VERIFY`": The verification was performed and the information could not be verified. `"UNKNOWN"`: The verification status is unknown. enum: - VERIFIED - UNVERIFIED - NEEDS_INFO - UNABLE_TO_VERIFY - UNKNOWN VerificationRefreshStatus: type: string title: VerificationRefreshStatus description: |- The verification refresh status. One of the following: `"VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED"` User presence is required to refresh an income verification. `"VERIFICATION_REFRESH_SUCCESSFUL"` The income verification refresh was successful. `"VERIFICATION_REFRESH_NOT_FOUND"` No new data was found after the income verification refresh. enum: - VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED - VERIFICATION_REFRESH_SUCCESSFUL - VERIFICATION_REFRESH_NOT_FOUND CreditPayrollIncomeRefreshStatus: type: string title: CreditPayrollIncomeRefreshStatus description: |- The verification refresh status. One of the following: `"USER_PRESENCE_REQUIRED"` User presence is required to refresh an income verification. `"SUCCESSFUL"` The income verification refresh was successful. `"NOT_FOUND"` No new data was found after the income verification refresh. x-override-enum-values-shown: - USER_PRESENCE_REQUIRED - SUCCESSFUL - NOT_FOUND IncomeVerificationPaystubsGetRequest: title: IncomeVerificationPaystubsGetRequest type: object description: IncomeVerificationPaystubsGetRequest defines the request schema for `/income/verification/paystubs/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' income_verification_id: type: string nullable: true deprecated: true description: The ID of the verification for which to get paystub information. x-hidden-from-docs: true access_token: $ref: '#/components/schemas/AccessTokenNullable' IncomeVerificationPaystubsGetResponse: title: IncomeVerificationPaystubsGetResponse type: object additionalProperties: true description: IncomeVerificationPaystubsGetResponse defines the response schema for `/income/verification/paystubs/get`. properties: document_metadata: description: Metadata for an income document. type: array items: $ref: '#/components/schemas/DocumentMetadata' paystubs: type: array items: $ref: '#/components/schemas/Paystub' error: $ref: '#/components/schemas/PlaidError' request_id: $ref: '#/components/schemas/RequestID' required: - paystubs - request_id DocumentMetadata: title: DocumentMetadata type: object additionalProperties: true description: An object representing metadata from the end user's uploaded document. properties: name: type: string description: The name of the document. status: type: string description: |- The processing status of the document. `PROCESSING_COMPLETE`: The document was successfully processed. `DOCUMENT_ERROR`: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted. `UNKNOWN` or `null`: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager. nullable: true x-override-enum-values-shown: - UNKNOWN - PROCESSING_COMPLETE - DOCUMENT_ERROR - null doc_id: type: string description: An identifier of the document that is also present in the paystub response. doc_type: $ref: '#/components/schemas/DocType' DocType: title: DocType type: string description: |- The type of document. `DOCUMENT_TYPE_PAYSTUB`: A paystub. `DOCUMENT_TYPE_BANK_STATEMENT`: A bank statement. `DOCUMENT_TYPE_US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee. `DOCUMENT_TYPE_US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military. `DOCUMENT_TYPE_US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military. `DOCUMENT_TYPE_US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military. `DOCUMENT_TYPE_GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type. `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 - DOCUMENT_TYPE_PAYSTUB - DOCUMENT_TYPE_BANK_STATEMENT - DOCUMENT_TYPE_US_TAX_W2 - DOCUMENT_TYPE_US_MILITARY_ERAS - DOCUMENT_TYPE_US_MILITARY_LES - DOCUMENT_TYPE_US_MILITARY_CLES - DOCUMENT_TYPE_GIG - DOCUMENT_TYPE_NONE - 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 additionalProperties: true description: An object representing data extracted from the end user's paystub. properties: deductions: $ref: '#/components/schemas/Deductions' doc_id: type: string description: An identifier of the document referenced by the document metadata. earnings: $ref: '#/components/schemas/Earnings' employee: $ref: '#/components/schemas/Employee' employer: $ref: '#/components/schemas/PaystubEmployer' employment_details: $ref: '#/components/schemas/EmploymentDetails' net_pay: $ref: '#/components/schemas/NetPay' pay_period_details: $ref: '#/components/schemas/PayPeriodDetails' paystub_details: $ref: '#/components/schemas/PaystubDetails' income_breakdown: type: array deprecated: true items: $ref: '#/components/schemas/IncomeBreakdown' ytd_earnings: $ref: '#/components/schemas/PaystubYTDDetails' required: - deductions - doc_id - earnings - employee - employer - net_pay - pay_period_details Deductions: title: Deductions type: object description: An object with the deduction information found on a paystub. additionalProperties: true properties: subtotals: deprecated: true type: array items: $ref: '#/components/schemas/Total' breakdown: type: array items: $ref: '#/components/schemas/DeductionsBreakdown' totals: deprecated: true type: array items: $ref: '#/components/schemas/Total' total: $ref: '#/components/schemas/DeductionsTotal' required: - breakdown - total DeductionsBreakdown: title: DeductionsBreakdown type: object additionalProperties: true description: An object representing the deduction line items for the pay period properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true description: type: string description: Description of the deduction line item nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the deduction nullable: true DeductionsTotal: title: DeductionsTotal type: object description: An object representing the total deductions for the pay period additionalProperties: true properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date total amount of the deductions nullable: true Total: title: Total type: object deprecated: true description: An object representing both the current pay period and year to date amount for a category. additionalProperties: true properties: canonical_description: $ref: '#/components/schemas/TotalCanonicalDescription' description: type: string description: Text of the line item as printed on the paystub. nullable: true current_pay: $ref: '#/components/schemas/Pay' ytd_pay: $ref: '#/components/schemas/Pay' TotalCanonicalDescription: type: string nullable: true description: Commonly used term to describe the line item. enum: - BONUS - COMMISSION - OVERTIME - PAID TIME OFF - REGULAR PAY - VACATION - EMPLOYEE MEDICARE - FICA - SOCIAL SECURITY EMPLOYEE TAX - MEDICAL - VISION - DENTAL - NET PAY - TAXES - NOT_FOUND - OTHER - null Pay: title: Pay type: object deprecated: true description: An object representing a monetary amount. additionalProperties: true properties: amount: type: number format: double description: A numerical amount of a specific currency. nullable: true currency: type: string description: Currency code, e.g. USD nullable: true Earnings: title: Earnings type: object description: An object representing both a breakdown of earnings on a paystub and the total earnings. additionalProperties: true properties: subtotals: deprecated: true type: array items: $ref: '#/components/schemas/EarningsTotal' totals: deprecated: true type: array items: $ref: '#/components/schemas/EarningsTotal' breakdown: type: array items: $ref: '#/components/schemas/EarningsBreakdown' total: $ref: '#/components/schemas/EarningsTotal' EarningsBreakdown: title: EarningsBreakdown type: object additionalProperties: true description: An object representing the earnings line items for the pay period. properties: canonical_description: $ref: '#/components/schemas/EarningsBreakdownCanonicalDescription' current_amount: type: number format: double description: Raw amount of the earning line item. nullable: true description: type: string description: Description of the earning line item. nullable: true hours: type: number description: Number of hours applicable for this earning. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true rate: type: number format: double description: Hourly rate applicable for this earning. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the line item. nullable: true EarningsBreakdownCanonicalDescription: type: string description: Commonly used term to describe the earning line item. enum: - BONUS - COMMISSION - OVERTIME - PAID TIME OFF - REGULAR PAY - VACATION - BASIC ALLOWANCE HOUSING - BASIC ALLOWANCE SUBSISTENCE - OTHER - null nullable: true EarningsTotal: title: EarningsTotal type: object description: An object representing both the current pay period and year to date amount for an earning category. additionalProperties: true properties: current_amount: type: number format: double description: Total amount of the earnings for this pay period nullable: true current_pay: $ref: '#/components/schemas/Pay' ytd_pay: $ref: '#/components/schemas/Pay' hours: type: number description: Total number of hours worked for this pay period nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The total year-to-date amount of the earnings nullable: true EmploymentDetails: title: EmploymentDetails type: object deprecated: true description: An object representing employment details found on a paystub. additionalProperties: true properties: annual_salary: $ref: '#/components/schemas/Pay' hire_date: type: string format: date description: Date on which the employee was hired, in the YYYY-MM-DD format. nullable: true NetPay: title: NetPay type: object description: An object representing information about the net pay amount on the paystub. additionalProperties: true properties: current_amount: type: number format: double description: Raw amount of the net pay for the pay period nullable: true description: type: string description: Description of the net pay nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the net pay nullable: true total: $ref: '#/components/schemas/Total' PaystubDetails: title: PaystubDetails type: object deprecated: true description: An object representing details that can be found on the paystub. additionalProperties: true properties: pay_period_start_date: type: string format: date description: Beginning date of the pay period on the paystub in the 'YYYY-MM-DD' format. nullable: true pay_period_end_date: type: string format: date description: Ending date of the pay period on the paystub in the 'YYYY-MM-DD' format. nullable: true pay_date: type: string format: date description: Pay date on the paystub in the 'YYYY-MM-DD' format. nullable: true paystub_provider: type: string description: The name of the payroll provider that generated the paystub, e.g. ADP nullable: true pay_frequency: $ref: '#/components/schemas/PaystubPayFrequency' PaystubPayFrequency: type: string description: 'The frequency at which the employee is paid. Possible values: `MONTHLY`, `BI-WEEKLY`, `WEEKLY`, `SEMI-MONTHLY`.' enum: - MONTHLY - BI-WEEKLY - WEEKLY - SEMI-MONTHLY - null nullable: true IncomeBreakdown: title: IncomeBreakdown type: object description: An object representing a breakdown of the different income types on the paystub. additionalProperties: true deprecated: true properties: type: $ref: '#/components/schemas/IncomeBreakdownType' rate: type: number format: double description: The hourly rate at which the income is paid. nullable: true hours: type: number description: The number of hours logged for this income for this pay period. nullable: true total: type: number format: double description: The total pay for this pay period. nullable: true required: - type - rate - hours - total IncomeBreakdownType: type: string description: |- The type of income. Possible values include: `"regular"`: regular income `"overtime"`: overtime income `"bonus"`: bonus income enum: - bonus - overtime - regular - null nullable: true Employee: title: Employee type: object additionalProperties: true description: Data about the employee. properties: address: $ref: '#/components/schemas/PaystubAddress' name: type: string description: The name of the employee. nullable: true marital_status: type: string description: Marital status of the employee - either `single` or `married`. nullable: true x-override-enum-values-shown: - single - married taxpayer_id: $ref: '#/components/schemas/TaxpayerID' required: - name - address TaxpayerID: title: TaxpayerID type: object additionalProperties: true description: Taxpayer ID of the individual receiving the paystub. properties: id_type: type: string description: Type of ID, e.g. 'SSN' nullable: true id_mask: type: string description: ID mask; i.e. last 4 digits of the taxpayer ID nullable: true last_4_digits: deprecated: true type: string description: Last 4 digits of unique number of ID. minLength: 4 maxLength: 4 nullable: true PaystubEmployer: title: Employer description: Information about the employer on the paystub type: object additionalProperties: true properties: address: $ref: '#/components/schemas/PaystubAddress' name: type: string description: The name of the employer on the paystub. nullable: true required: - name PaystubAddress: title: Address description: Address on the paystub type: object additionalProperties: true properties: city: type: string description: The full city name. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code. nullable: true postal_code: type: string description: The postal code of the address. nullable: true region: type: string description: |- The region or state Example: `"NC"` nullable: true street: type: string description: The full street address. nullable: true line1: deprecated: true type: string description: Street address line 1. nullable: true line2: deprecated: true type: string description: Street address line 2. nullable: true state_code: deprecated: true type: string description: |- The region or state Example: `"NC"` nullable: true PayPeriodDetails: title: PayPeriodDetails type: object additionalProperties: true description: Details about the pay period. properties: check_amount: type: number format: double description: The amount of the paycheck. nullable: true distribution_breakdown: type: array items: $ref: '#/components/schemas/DistributionBreakdown' end_date: type: string format: date description: 'The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".' nullable: true gross_earnings: type: number format: double description: Total earnings before tax/deductions. nullable: true pay_date: type: string format: date description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true pay_frequency: $ref: '#/components/schemas/PayPeriodDetailsPayFrequency' pay_day: deprecated: true type: string format: date description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true start_date: type: string format: date description: 'The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".' nullable: true PayPeriodDetailsPayFrequency: title: PayPeriodDetailsPayFrequency type: string description: The frequency at which an individual is paid. enum: - PAY_FREQUENCY_UNKNOWN - PAY_FREQUENCY_WEEKLY - PAY_FREQUENCY_BIWEEKLY - PAY_FREQUENCY_SEMIMONTHLY - PAY_FREQUENCY_MONTHLY - null nullable: true DistributionBreakdown: title: DistributionBreakdown type: object description: Information about the accounts that the payment was distributed to. additionalProperties: true properties: account_name: type: string description: Name of the account for the given distribution. nullable: true bank_name: type: string description: The name of the bank that the payment is being deposited to. nullable: true current_amount: type: number format: double description: The amount distributed to this account. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number. nullable: true type: type: string description: Type of the account that the paystub was sent to (e.g. 'checking'). nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. current_pay: $ref: '#/components/schemas/Pay' PaystubDeduction: title: PaystubDeduction description: Deduction on the paystub type: object additionalProperties: true properties: type: type: string description: 'The type of the deduction, as provided on the paystub. For example: `"401(k)"`, `"FICA MED TAX"`.' nullable: true is_pretax: type: boolean description: '`true` if the deduction is pre-tax; `false` otherwise.' nullable: true total: type: number format: double description: The amount of the deduction. nullable: true required: - type - is_pretax - total PaystubYTDDetails: title: PaystubYTDDetails type: object deprecated: true additionalProperties: true properties: gross_earnings: type: number format: double description: Year-to-date gross earnings. nullable: true net_earnings: type: number format: double description: Year-to-date net (take home) earnings. nullable: true description: The amount of income earned year to date, as based on paystub data. IncomeVerificationDocumentsDownloadRequest: title: IncomeVerificationDocumentsDownloadRequest type: object description: IncomeVerificationDocumentsDownloadRequest defines the request schema for `/income/verification/documents/download`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' income_verification_id: type: string nullable: true deprecated: true description: The ID of the verification. access_token: $ref: '#/components/schemas/AccessTokenNullable' document_id: type: string nullable: true description: The document ID to download. If passed, a single document will be returned in the resulting zip file, rather than all document IncomeVerificationTaxformsGetRequest: title: IncomeVerificationTaxformsGetRequest type: object description: IncomeVerificationTaxformsGetRequest defines the request schema for `/income/verification/taxforms/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' income_verification_id: type: string description: The ID of the verification. nullable: true deprecated: true access_token: $ref: '#/components/schemas/AccessTokenNullable' IncomeVerificationTaxformsGetResponse: title: IncomeVerificationTaxformsGetResponse type: object additionalProperties: true description: IncomeVerificationTaxformsGetResponse defines the response schema for `/income/verification/taxforms/get` properties: request_id: $ref: '#/components/schemas/RequestID' document_metadata: type: array items: $ref: '#/components/schemas/DocumentMetadata' taxforms: type: array description: A list of forms. items: $ref: '#/components/schemas/Taxform' error: $ref: '#/components/schemas/PlaidError' required: - taxforms - document_metadata Taxform: title: Taxform type: object description: Data about an official document used to report the user's income to the IRS. additionalProperties: true properties: doc_id: type: string description: An identifier of the document referenced by the document metadata. document_type: type: string description: The type of tax document. Currently, the only supported value is `w2`. w2: $ref: '#/components/schemas/W2' required: - document_type W2: title: W2 type: object additionalProperties: true description: W2 is an object that represents income data taken from a W2 tax document. properties: employer: $ref: '#/components/schemas/PaystubEmployer' employee: $ref: '#/components/schemas/Employee' tax_year: type: string description: The tax year of the W2 document. nullable: true employer_id_number: type: string description: An employer identification number or EIN. nullable: true wages_tips_other_comp: type: string description: Wages from tips and other compensation. nullable: true federal_income_tax_withheld: type: string description: Federal income tax withheld for the tax year. nullable: true social_security_wages: type: string description: Wages from Social Security. nullable: true social_security_tax_withheld: type: string description: Social Security tax withheld for the tax year. nullable: true medicare_wages_and_tips: type: string description: Wages and tips from medicare. nullable: true medicare_tax_withheld: type: string description: Medicare tax withheld for the tax year. nullable: true social_security_tips: type: string description: Tips from Social Security. nullable: true allocated_tips: type: string description: Allocated tips. nullable: true box_9: type: string description: Contents from box 9 on the W2. nullable: true dependent_care_benefits: type: string description: Dependent care benefits. nullable: true nonqualified_plans: type: string description: Nonqualified plans. nullable: true box_12: type: array items: $ref: '#/components/schemas/W2Box12' statutory_employee: type: string description: Statutory employee. nullable: true retirement_plan: type: string description: Retirement plan. nullable: true third_party_sick_pay: type: string description: Third party sick pay. nullable: true other: type: string description: Other. nullable: true state_and_local_wages: type: array items: $ref: '#/components/schemas/W2StateAndLocalWages' W2Box12: title: W2Box12 description: Data on the W2 Box 12 type: object additionalProperties: true properties: code: type: string description: W2 Box 12 code. nullable: true amount: type: string description: W2 Box 12 amount. nullable: true W2StateAndLocalWages: title: W2StateAndLocalWages description: W2 state and local wages type: object additionalProperties: true properties: state: type: string description: State associated with the wage. nullable: true employer_state_id_number: type: string description: State identification number of the employer. nullable: true state_wages_tips: type: string description: Wages and tips from the specified state. nullable: true state_income_tax: type: string description: Income tax from the specified state. nullable: true local_wages_tips: type: string description: Wages and tips from the locality. nullable: true local_income_tax: type: string description: Income tax from the locality. nullable: true locality_name: type: string description: Name of the locality. nullable: true IncomeVerificationWebhookStatus: title: IncomeVerificationWebhookStatus description: Status of the income verification webhook type: object additionalProperties: true properties: id: type: string required: - id EmploymentVerificationGetRequest: title: EmploymentVerificationGetRequest type: object description: EmploymentVerificationGetRequest defines the request schema for `/employment/verification/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token EmploymentVerificationGetResponse: title: EmploymentVerificationGetResponse type: object additionalProperties: true description: EmploymentVerificationGetResponse defines the response schema for `/employment/verification/get`. properties: employments: type: array description: A list of employment verification summaries. items: $ref: '#/components/schemas/EmploymentVerification' request_id: $ref: '#/components/schemas/RequestID' required: - employments - request_id EmploymentVerification: title: EmploymentVerification type: object additionalProperties: true description: An object containing proof of employment data for an individual properties: status: $ref: '#/components/schemas/EmploymentVerificationStatus' start_date: format: date type: string description: Start of employment in ISO 8601 format (YYYY-MM-DD). nullable: true end_date: format: date type: string description: End of employment, if applicable. Provided in ISO 8601 format (YYY-MM-DD). nullable: true employer: $ref: '#/components/schemas/EmployerVerification' title: type: string description: Current title of employee. nullable: true platform_ids: $ref: '#/components/schemas/PlatformIds' EmploymentVerificationStatus: type: string description: Current employment status. nullable: true enum: - EMPLOYMENT_STATUS_ACTIVE - EMPLOYMENT_STATUS_INACTIVE - null EmployerVerification: title: EmployerVerification type: object additionalProperties: true description: An object containing employer data. properties: name: type: string description: Name of employer. nullable: true PlatformIds: title: PlatformIds type: object additionalProperties: true description: An object containing a set of ids related to an employee properties: employee_id: type: string description: The ID of an employee as given by their employer nullable: true payroll_id: type: string description: The ID of an employee as given by their payroll nullable: true position_id: type: string description: The ID of the position of the employee nullable: true HealthIncident: title: HealthIncident description: A status health incident type: object additionalProperties: true properties: start_date: type: string format: date-time description: The start date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`. end_date: type: string nullable: true format: date-time description: The end date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`. title: type: string description: The title of the incident incident_updates: type: array description: Updates on the health incident. items: $ref: '#/components/schemas/IncidentUpdate' required: - start_date - title - incident_updates IncidentUpdate: title: IncidentUpdate description: An update on the health incident type: object additionalProperties: true properties: description: type: string description: The content of the update. status: type: string description: The status of the incident. enum: - INVESTIGATING - IDENTIFIED - SCHEDULED - RESOLVED - UNKNOWN updated_date: type: string format: date-time description: The date when the update was published, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`. CreditBankEmploymentGetRequest: title: CreditBankEmploymentGetRequest type: object description: CreditBankEmploymentGetRequest defines the request schema for `/beta/credit/v1/bank_employment/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' required: - user_token CreditBankEmploymentGetResponse: title: CreditBankEmploymentGetResponse additionalProperties: true type: object description: CreditBankEmploymentGetResponse defines the response schema for `/beta/credit/v1/bank_employment/get`. properties: bank_employment_reports: type: array description: Bank Employment data. Each entry in the array will be a distinct bank employment report. items: $ref: '#/components/schemas/CreditBankEmploymentReport' request_id: $ref: '#/components/schemas/RequestID' required: - request_id - bank_employment_reports CreditBankEmploymentReport: type: object description: The report of the Bank Employment data for an end user. properties: bank_employment_report_id: type: string description: The unique identifier associated with the Bank Employment Report. generated_time: type: string description: The time when the Bank Employment Report was generated, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). format: date-time days_requested: type: integer description: The number of days requested by the customer for the Bank Employment Report. items: type: array description: The list of Items in the report along with the associated metadata about the Item. items: $ref: '#/components/schemas/CreditBankEmploymentItem' warnings: type: array description: If data from the Bank Employment report was unable to be retrieved, the warnings will contain information about the error that caused the data to be incomplete. items: $ref: '#/components/schemas/CreditBankEmploymentWarning' required: - bank_employment_report_id - generated_time - days_requested - items - warnings CreditBankEmploymentItem: type: object description: The details and metadata for an end user's Item. properties: item_id: type: string description: The unique identifier for the Item. last_updated_time: type: string description: The time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). format: date-time institution_id: type: string description: The unique identifier of the institution associated with the Item. institution_name: type: string description: The name of the institution associated with the Item. bank_employments: type: array description: The bank employment information for this Item. Each entry in the array is a different employer found. items: $ref: '#/components/schemas/CreditBankEmployment' bank_employment_accounts: type: array description: The Item's accounts that have Bank Employment data. items: $ref: '#/components/schemas/CreditBankIncomeAccount' required: - item_id - last_updated_time - institution_id - institution_name - bank_employments - bank_employment_accounts CreditBankEmployment: type: object description: Detailed information for the bank employment. properties: bank_employment_id: type: string description: A unique identifier for the bank employment. account_id: type: string description: Plaid's unique identifier for the account. employer: $ref: '#/components/schemas/CreditBankEmployer' latest_deposit_date: type: string description: The date of the most recent deposit from this employer. format: date earliest_deposit_date: type: string description: The date of the earliest deposit from this employer from within the period of the days requested. format: date required: - bank_employment_id - account_id - employer - latest_deposit_date - earliest_deposit_date CreditBankEmployer: type: object description: Object containing employer data. properties: name: type: string description: Name of the employer. required: - name CreditBankEmploymentWarning: type: object description: The warning associated with the data that was unavailable for the Bank Employment Report. properties: warning_type: $ref: '#/components/schemas/CreditBankEmploymentWarningType' warning_code: $ref: '#/components/schemas/CreditBankIncomeWarningCode' cause: $ref: '#/components/schemas/CreditBankIncomeCause' required: - warning_type - warning_code - cause CreditBankEmploymentWarningType: type: string description: The warning type which will always be `BANK_EMPLOYMENT_WARNING`. enum: - BANK_EMPLOYMENT_WARNING CreditBankIncomeGetRequest: title: CreditBankIncomeGetRequest type: object description: CreditBankIncomeGetRequest defines the request schema for `/credit/bank_income/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CreditBankIncomeGetRequestOptions' CreditBankIncomeGetRequestOptions: description: An optional object for `/credit/bank_income/get` request options. type: object properties: count: type: integer default: 1 description: How many Bank Income Reports should be fetched. Multiple reports may be available if the report has been re-created or refreshed. If more than one report is available, the most recent reports will be returned first. CreditBankIncomeGetResponse: title: CreditBankIncomeGetResponse additionalProperties: true type: object description: CreditBankIncomeGetResponse defines the response schema for `/credit/bank_income/get` properties: bank_income: type: array items: $ref: '#/components/schemas/CreditBankIncome' request_id: $ref: '#/components/schemas/RequestID' required: - request_id CreditBankIncomePDFGetRequest: title: CreditBankIncomePDFGetRequest type: object description: CreditBankIncomePDFGetRequest defines the request schema for `/credit/bank_income/pdf/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' required: - user_token CreditBankIncomePDFGetResponse: title: CreditBankIncomePDFGetResponse format: binary type: string description: CreditBankIncomePDFGetResponse defines the response schema for `/credit/bank_income/pdf/get` CreditBankIncome: type: object description: The report of the Bank Income data for an end user. properties: bank_income_id: type: string description: The unique identifier associated with the Bank Income Report. generated_time: type: string description: The time when the report was generated. format: date-time days_requested: type: integer description: The number of days requested by the customer for the report. items: type: array description: The list of Items in the report along with the associated metadata about the Item. items: $ref: '#/components/schemas/CreditBankIncomeItem' bank_income_summary: $ref: '#/components/schemas/CreditBankIncomeSummary' warnings: type: array description: If data from the report was unable to be retrieved, the warnings will contain information about the error that caused the data to be incomplete. items: $ref: '#/components/schemas/CreditBankIncomeWarning' CreditBankIncomeItem: type: object description: The details and metadata for an end user's Item. properties: bank_income_accounts: type: array description: The Item's accounts that have Bank Income data. items: $ref: '#/components/schemas/CreditBankIncomeAccount' bank_income_sources: type: array description: The income sources for this Item. Each entry in the array is a single income source. items: $ref: '#/components/schemas/CreditBankIncomeSource' last_updated_time: type: string description: The time when this Item's data was last retrieved from the financial institution. format: date-time institution_id: type: string description: The unique identifier of the institution associated with the Item. institution_name: type: string description: The name of the institution associated with the Item. item_id: type: string description: The unique identifier for the Item. CreditBankIncomeAccount: type: object description: The Item's bank accounts that have the selected data. properties: account_id: type: string description: Plaid's unique identifier for the account. mask: type: string description: |- The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. nullable: true name: type: string description: The name of the bank account. official_name: type: string description: The official name of the bank account. nullable: true subtype: $ref: '#/components/schemas/DepositoryAccountSubtype' type: $ref: '#/components/schemas/CreditBankIncomeAccountType' owners: type: array description: Data returned by the financial institution about the account owner or owners. Identity information is optional, so field may return an empty array. items: $ref: '#/components/schemas/Owner' required: - account_id - mask - name - official_name - subtype - type - owners CreditBankIncomeAccountType: type: string description: The account type. This will always be `depository`. enum: - depository CreditBankIncomeSource: type: object description: Detailed information for the income source. properties: income_source_id: type: string description: A unique identifier for an income source. income_description: type: string description: The most common name or original description for the underlying income transactions. income_category: $ref: '#/components/schemas/CreditBankIncomeCategory' account_id: type: string description: Plaid's unique identifier for the account. start_date: type: string format: date description: |- Minimum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- Maximum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). pay_frequency: $ref: '#/components/schemas/CreditBankIncomePayFrequency' total_amount: type: number description: Total amount of earnings in the user's bank account for the specific income source for days requested by the client. transaction_count: type: integer description: Number of transactions for the income source within the start and end date. historical_summary: type: array items: $ref: '#/components/schemas/CreditBankIncomeHistoricalSummary' CreditBankIncomeCategory: type: string description: |- The income category. `BANK_INTEREST`: Interest earned from a bank account. `BENEFIT_OTHER`: Government benefits other than retirement, unemployment, child support, or disability. Currently used only in the UK, to represent benefits such as Cost of Living Payments. `CASH`: Deprecated and used only for existing legacy implementations. Has been replaced by `CASH_DEPOSIT` and `TRANSFER_FROM_APPLICATION`. `CASH_DEPOSIT`: A cash or check deposit. `CHILD_SUPPORT`: Child support payments received. `GIG_ECONOMY`: Income earned as a gig economy worker, e.g. driving for Uber, Lyft, Postmates, DoorDash, etc. `LONG_TERM_DISABILITY`: Disability payments, including Social Security disability benefits. `OTHER`: Income that could not be categorized as any other income category. `MILITARY`: Veterans benefits. Income earned as salary for serving in the military (e.g. through DFAS) will be classified as `SALARY` rather than `MILITARY`. `RENTAL`: Income earned from a rental property. Income may be identified as rental when the payment is received through a rental platform, e.g. Airbnb; rent paid directly by the tenant to the property owner (e.g. via cash, check, or ACH) will typically not be classified as rental income. `RETIREMENT`: Payments from private retirement systems, pensions, and government retirement programs, including Social Security retirement benefits. `SALARY`: Payment from an employer to an earner or other form of permanent employment. `TAX_REFUND`: A tax refund. `TRANSFER_FROM_APPLICATION`: Deposits from a money transfer app, such as Venmo, Cash App, or Zelle. `UNEMPLOYMENT`: Unemployment benefits. In the UK, includes certain low-income benefits such as the Universal Credit. enum: - SALARY - UNEMPLOYMENT - CASH - GIG_ECONOMY - RENTAL - CHILD_SUPPORT - MILITARY - RETIREMENT - LONG_TERM_DISABILITY - BANK_INTEREST - CASH_DEPOSIT - TRANSFER_FROM_APPLICATION - TAX_REFUND - BENEFIT_OTHER - OTHER CreditBankIncomePayFrequency: type: string description: The income pay frequency. enum: - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY - DAILY - UNKNOWN CreditIsoCurrencyCode: type: string description: The ISO 4217 currency code of the amount or balance. nullable: true CreditUnofficialCurrencyCode: type: string description: |- The unofficial currency code associated with the amount or balance. 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. nullable: true CreditAmountWithCurrency: type: object description: This contains an amount, denominated in the currency specified by either `iso_currency_code` or `unofficial_currency_code` additionalProperties: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code CreditBankIncomeSummary: type: object description: Summary for bank income across all income sources and items (max history of 730 days). additionalProperties: true properties: total_amount: type: number description: |- Total amount of earnings across all the income sources in the end user's Items for the days requested by the client. This may return an incorrect value if the summary includes income sources in multiple currencies. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-bank-income-summary-total-amounts) instead. deprecated: true iso_currency_code: type: string description: |- The ISO 4217 currency code of the amount or balance. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-bank-income-summary-total-amounts) instead. nullable: true deprecated: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount or balance. 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. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-bank-income-summary-total-amounts) instead. nullable: true deprecated: true total_amounts: type: array description: |- Total amount of earnings across all the income sources in the end user's Items for the days requested by the client. This can contain multiple amounts, with each amount denominated in one unique currency. items: $ref: '#/components/schemas/CreditAmountWithCurrency' start_date: type: string format: date description: |- The earliest date within the days requested in which all income sources identified by Plaid appear in a user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The latest date in which all income sources identified by Plaid appear in the user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD). income_sources_count: type: integer description: Number of income sources per end user. income_categories_count: type: integer description: Number of income categories per end user. income_transactions_count: type: integer description: Number of income transactions per end user. historical_summary: type: array items: $ref: '#/components/schemas/CreditBankIncomeHistoricalSummary' CreditBankIncomeHistoricalSummary: type: object description: The end user's monthly summary for the income source(s). additionalProperties: true properties: total_amount: type: number description: |- Total amount of earnings for the income source(s) of the user for the month in the summary. This may return an incorrect value if the summary includes income sources in multiple currencies. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-items-bank-income-sources-historical-summary-total-amounts) instead. deprecated: true iso_currency_code: type: string description: |- The ISO 4217 currency code of the amount or balance. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-items-bank-income-sources-historical-summary-total-amounts) instead. nullable: true deprecated: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount or balance. 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. Please use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-items-bank-income-sources-historical-summary-total-amounts) instead. nullable: true deprecated: true total_amounts: type: array description: |- Total amount of earnings for the income source(s) of the user for the month in the summary. This can contain multiple amounts, with each amount denominated in one unique currency. items: $ref: '#/components/schemas/CreditAmountWithCurrency' start_date: type: string format: date description: |- The start date of the period covered in this monthly summary. This date will be the first day of the month, unless the month being covered is a partial month because it is the first month included in the summary and the date range being requested does not begin with the first day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of the period included in this monthly summary. This date will be the last day of the month, unless the month being covered is a partial month because it is the last month included in the summary and the date range being requested does not end with the last day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). transactions: type: array items: $ref: '#/components/schemas/CreditBankIncomeTransaction' CreditBankIncomeTransaction: type: object description: The transactions data for the end user's income source(s). additionalProperties: true properties: amount: type: number description: |- The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative. date: type: string format: date description: |- For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD). name: type: string description: The merchant name or transaction description. original_description: type: string description: The string returned by the financial institution to describe the transaction. nullable: true pending: type: boolean description: |- When true, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' CreditBankIncomeRefreshRequest: title: CreditBankIncomeRefreshRequest type: object description: CreditBankIncomeRefreshRequest defines the request schema for `/credit/bank_income/refresh`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CreditBankIncomeRefreshRequestOptions' required: - user_token CreditBankIncomeRefreshRequestOptions: description: An optional object for `/credit/bank_income/refresh` request options. type: object properties: days_requested: type: integer description: How many days of data to include in the refresh. If not specified, this will default to the days requested in the most recently generated bank income report for the user. CreditBankIncomeRefreshResponse: title: CreditBankIncomeRefreshResponse type: object additionalProperties: true description: CreditBankIncomeRefreshResponse defines the response schema for `/credit/bank_income/refresh`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CreditBankIncomeWebhookUpdateRequest: title: CreditBankIncomeWebhookUpdateRequest type: object description: CreditBankIncomeWebhookUpdateRequest defines the request schema for `/credit/bank_income/webhook/update`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' enable_webhooks: description: Whether the user should be enabled for proactive webhook notifications when their income changes type: boolean required: - user_token - enable_webhooks CreditBankIncomeWebhookUpdateResponse: title: CreditBankIncomeWebhookUpdateResponse type: object additionalProperties: true description: CreditBankIncomeWebhookUpdateResponse defines the response schema for `/credit/bank_income/webhook/update`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CreditBankStatementsUploadsGetRequest: title: CreditBankStatementsUploadsGetRequest type: object description: CreditBankStatementsUploadsGetRequest defines the request schema for `/credit/bank_statements/uploads/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CreditBankStatementsUploadsGetRequestOptions' required: - user_token CreditBankStatementsUploadsGetRequestOptions: description: An optional object for `/credit/bank_statements/uploads/get` request options. type: object 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 be returned in the response. items: type: string CreditPayrollIncomeParsingConfigUpdateRequest: title: CreditPayrollIncomeParsingConfigUpdateRequest type: object additionalProperties: true description: CreditPayrollIncomeParsingConfigUpdateRequest defines the request schema for `/credit/payroll_income/parsing_config/update`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' item_id: $ref: '#/components/schemas/ItemId' parsing_config: type: array description: The types of analysis to enable for the document income verification session items: $ref: '#/components/schemas/IncomeVerificationDocParsingConfig' required: - user_token - parsing_config CreditPayrollIncomeParsingConfigUpdateResponse: title: CreditPayrollIncomeParsingConfigUpdateResponse type: object additionalProperties: true description: CreditPayrollIncomeParsingConfigUpdateResponse defines the response schema for `/credit/payroll_income/parsing_config/update`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CreditBankStatementsUploadsGetResponse: title: CreditBankStatementsUploadsGetResponse type: object additionalProperties: true description: CreditBankStatementsUploadsGetResponse defines the response schema for `/credit/bank_statements/uploads/get` properties: items: description: Array of bank statement upload items. type: array items: $ref: '#/components/schemas/CreditBankStatementUploadItem' request_id: $ref: '#/components/schemas/RequestID' required: - items - request_id CreditPayrollIncomeRiskSignalsGetRequest: title: CreditPayrollIncomeRiskSignalsGetRequest type: object description: CreditPayrollIncomeRiskSignalsGetRequest defines the request schema for `/credit/payroll_income/risk_signals/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' CreditPayrollIncomeRiskSignalsGetResponse: title: CreditPayrollIncomeRiskSignalsGetResponse type: object additionalProperties: true description: CreditPayrollIncomeRiskSignalsGetResponse defines the response schema for `/credit/payroll_income/risk_signals/get` properties: items: description: Array of payroll items. type: array items: $ref: '#/components/schemas/PayrollRiskSignalsItem' error: $ref: '#/components/schemas/PlaidError' request_id: $ref: '#/components/schemas/RequestID' required: - items - request_id PayrollRiskSignalsItem: title: PayrollRiskSignalsItem type: object additionalProperties: true description: Object containing fraud risk data pertaining to the Item linked as part of the verification. properties: item_id: $ref: '#/components/schemas/ItemId' verification_risk_signals: description: Array of payroll income document authenticity data retrieved for each of the user's accounts. type: array items: $ref: '#/components/schemas/DocumentRiskSignalsObject' required: - item_id - verification_risk_signals DocumentRiskSignalsObject: title: DocumentRiskSignalsObject type: object additionalProperties: true description: Object containing fraud risk data for a set of income documents. properties: account_id: type: string description: ID of the payroll provider account. nullable: true single_document_risk_signals: type: array description: Array of document metadata and associated risk signals per document items: $ref: '#/components/schemas/SingleDocumentRiskSignal' multi_document_risk_signals: type: array description: Array of risk signals computed from a set of uploaded documents and the associated documents' metadata items: $ref: '#/components/schemas/MultiDocumentRiskSignal' required: - account_id - single_document_risk_signals - multi_document_risk_signals RiskSignalDocumentReference: title: RiskSignalDocumentReference type: object additionalProperties: true description: Object containing metadata for the document properties: document_id: type: string description: An identifier of the document referenced by the document metadata. nullable: true document_name: type: string description: The name of the document status: $ref: '#/components/schemas/RiskSignalDocumentStatus' document_type: $ref: '#/components/schemas/RiskSignalDocumentType' file_type: $ref: '#/components/schemas/RiskSignalFileType' RiskSignalDocumentType: title: RiskSignalDocumentType type: string description: Type of a document for risk signal analysis nullable: true enum: - UNKNOWN - BANK_STATEMENT - BENEFITS_STATEMENT - BUSINESS_FILING - CHECK - DRIVING_LICENSE - FINANCIAL_STATEMENT - INVOICE - PAYSLIP - SOCIAL_SECURITY_CARD - TAX_FORM - UTILITY_BILL RiskSignalFileType: title: RiskSignalFileType type: string description: The file type for risk signal analysis nullable: true enum: - UNKNOWN - IMAGE_PDF - SCAN_OCR - TRUE_PDF - IMAGE - MIXED_PAGE_PDF - EMPTY_PDF - FLATTENED_PDF RiskSignalDocumentStatus: title: RiskSignalDocumentStatus type: string description: Status of a document for risk signal analysis enum: - PROCESSING - PROCESSING_COMPLETE - PROCESSING_ERROR - PASSWORD_PROTECTED - VIRUS_DETECTED DocumentRiskSummary: title: DocumentRiskSummary type: object additionalProperties: true description: A summary across all risk signals associated with a document properties: risk_score: type: number description: A number between 0 and 100, inclusive, where a score closer to 0 indicates a document is likely to be trustworthy and a score closer to 100 indicates a document is likely to be fraudulent. You can automatically reject documents with a high risk score, automatically accept documents with a low risk score, and manually review documents in between. We suggest starting with a threshold of 80 for auto-rejection and 20 for auto-acceptance. As you gather more data points on typical risk scores for your use case, you can tune these parameters to reduce the number of documents undergoing manual review. nullable: true required: - risk_score SingleDocumentRiskSignal: title: SingleDocumentRiskSignal type: object additionalProperties: true description: Object containing all risk signals and relevant metadata for a single document properties: document_reference: $ref: '#/components/schemas/RiskSignalDocumentReference' risk_signals: type: array description: Array of attributes that indicate whether or not there is fraud risk with a document items: $ref: '#/components/schemas/DocumentRiskSignal' risk_summary: $ref: '#/components/schemas/DocumentRiskSummary' required: - document_reference - risk_signals - risk_summary MultiDocumentRiskSignal: title: MultiDocumentRiskSignal type: object additionalProperties: true description: Object containing risk signals and relevant metadata for a set of uploaded documents properties: document_references: type: array description: Array of objects containing attributes that could indicate if a document is fraudulent items: $ref: '#/components/schemas/RiskSignalDocumentReference' risk_signals: type: array description: Array of attributes that indicate whether or not there is fraud risk with a set of documents items: $ref: '#/components/schemas/DocumentRiskSignal' required: - document_references - risk_signals CreditAuditCopyTokenCreateRequest: type: object description: CreditAuditCopyTokenCreateRequest defines the request schema for `/credit/audit_copy_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' report_tokens: type: array description: List of report tokens; can include at most one VOA/standard Asset Report tokens and one VOE Asset Report Token. items: type: string description: The report token. It can be an VOA Asset Report token or a VOE Asset Report token. nullable: false required: - report_tokens CreditAuditCopyTokenCreateResponse: type: object additionalProperties: true description: CreditAuditCopyTokenCreateResponse defines the response schema for `/credit/audit_copy_token/create` properties: audit_copy_token: type: string description: A token that can be shared with a third party auditor, which allows them to fetch the Asset Reports attached to the token. This token should be stored securely. request_id: $ref: '#/components/schemas/RequestID' required: - audit_copy_token - request_id CreditAuditCopyTokenRemoveRequest: type: object description: CreditAuditCopyTokenRemoveRequest defines the request schema for `/credit/audit_copy_token/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' audit_copy_token: type: string description: The `audit_copy_token` granting access to the Audit Copy you would like to revoke. required: - audit_copy_token CreditAuditCopyTokenRemoveResponse: type: object additionalProperties: true description: CreditAuditCopyTokenRemoveResponse defines the response schema for `/credit/audit_copy_token/remove` properties: removed: type: boolean description: '`true` if the Audit Copy was successfully removed.' request_id: $ref: '#/components/schemas/RequestID' required: - removed - request_id CreditPayrollIncomeGetRequest: title: CreditPayrollIncomeGetRequest type: object description: CreditPayrollIncomeGetRequest defines the request schema for `/credit/payroll_income/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CreditPayrollIncomeGetRequestOptions' CreditPayrollIncomeGetRequestOptions: description: An optional object for `/credit/payroll_income/get` request options. type: object 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 be returned in the response. items: type: string CreditPayrollIncomeGetResponse: title: CreditPayrollIncomeGetResponse type: object additionalProperties: true description: Defines the response body for `/credit/payroll_income/get`. properties: items: description: Array of payroll items. type: array items: $ref: '#/components/schemas/PayrollItem' error: $ref: '#/components/schemas/PlaidError' request_id: $ref: '#/components/schemas/RequestID' required: - items - request_id CreditDocumentMetadata: title: CreditDocumentMetadata type: object additionalProperties: true description: Object representing metadata pertaining to the document. properties: name: type: string description: The name of the document. document_type: $ref: '#/components/schemas/CreditDocumentType' download_url: type: string description: |- Signed URL to retrieve the document(s). The payload will be a .zip file containing the document(s). For Payroll Income, the file type of the documents will always be PDF, and the documents may not be available, in which case the field will be `null`. If you would like Plaid to generate a PDF if the original is not available, contact your account manager. [Example generated pay stub](https://plaid.com/documents/plaid-generated-mock-paystub.pdf). For 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 status: type: string description: |- The processing status of the document. `PROCESSING_COMPLETE`: The document was successfully processed. `DOCUMENT_ERROR`: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted. `UNKNOWN` or `null`: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager. nullable: true x-override-enum-values-shown: - UNKNOWN - PROCESSING_COMPLETE - DOCUMENT_ERROR - null page_count: type: integer description: The number of pages of the uploaded document (if available). nullable: true error_message: type: string description: The reason why a failure occurred during document processing (if available). nullable: true required: - name - document_type - download_url - status IdentityDocumentMetadata: title: IdentityDocumentMetadata type: object additionalProperties: true description: In closed beta. Object representing metadata pertaining to the document. properties: is_account_number_match: type: boolean description: Boolean field indicating if the uploaded document's account number matches the account number we have on file last_updated: type: string format: date-time uploaded_at: type: string format: date-time CreditDocumentType: title: CreditDocumentType type: string nullable: true description: |- The type of document. `PAYSTUB`: A paystub. `BANK_STATEMENT`: A bank statement. `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. `US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military. `GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type. `PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid. `NONE`: Used to indicate that there is no underlying document for the data. `UNKNOWN`: Document type could not be determined. x-override-enum-values-shown: - UNKNOWN - 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 - GIG - PLAID_GENERATED_PAYSTUB_PDF - NONE CreditBankStatementUploadItem: title: CreditBankStatementUploadItem type: object description: An object containing information about the bank statement upload Item. properties: item_id: $ref: '#/components/schemas/ItemId' bank_statements: type: array items: $ref: '#/components/schemas/CreditBankStatementUploadObject' status: $ref: '#/components/schemas/PayrollItemStatus' updated_at: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the Item was updated. nullable: true required: - item_id - bank_statements - status - updated_at CreditBankStatementUploadObject: title: CreditBankStatementUploadObject type: object additionalProperties: true description: An object containing data that has been parsed from a user-uploaded bank statement. properties: transactions: type: array description: An array of transactions appearing on the bank statement. items: $ref: '#/components/schemas/CreditBankStatementUploadTransaction' document_metadata: $ref: '#/components/schemas/CreditDocumentMetadata' document_id: type: string description: An identifier of the document referenced by the document metadata. nullable: true bank_accounts: type: array description: An array of bank accounts associated with the uploaded bank statement. items: $ref: '#/components/schemas/CreditBankStatementUploadBankAccount' required: - transactions - document_metadata - document_id - bank_accounts CreditBankStatementUploadTransaction: title: CreditBankStatementUploadTransaction type: object description: An object containing data about a transaction appearing on a user-uploaded bank statement. properties: amount: type: number description: The value of the transaction. A negative amount indicates that money moved into the account (such as a paycheck being deposited). nullable: true date: type: string format: date description: The date of when the transaction was made, in ISO 8601 format (YYYY-MM-DD). nullable: true original_description: type: string description: The raw description of the transaction as it appears on the bank statement. nullable: true account_id: type: string description: The unique id of the bank account that this transaction occurs in nullable: true required: - amount - date - original_description - account_id CreditBankStatementUploadBankAccount: title: CreditBankStatementUploadBankAccount type: object additionalProperties: true description: An object containing data about a user's bank account related to an uploaded bank statement. properties: name: type: string description: The name of the bank account nullable: true bank_name: type: string description: The name of the bank institution. nullable: true account_type: type: string description: The type of the bank account. nullable: true account_number: type: string description: The bank account number. nullable: true owner: $ref: '#/components/schemas/CreditBankStatementUploadAccountOwner' periods: type: array description: An array of period objects, containing more data on the overall period of the statement. items: $ref: '#/components/schemas/CreditBankStatementUploadBankAccountPeriod' account_id: type: string description: The unique id of the bank account nullable: true required: - name - bank_name - account_type - account_number - owner - periods - account_id CreditBankStatementUploadAccountOwner: title: CreditBankStatementUploadAccountOwner type: object description: An object containing data about the owner of the bank account for the uploaded bank statement. additionalProperties: true properties: name: type: string description: The name of the account owner nullable: true address: $ref: '#/components/schemas/CreditBankStatementUploadAccountOwnerAddress' required: - name - address CreditBankStatementUploadAccountOwnerAddress: title: CreditBankStatementUploadAccountOwnerAddress description: Address on the uploaded bank statement type: object additionalProperties: true properties: city: type: string description: The full city name. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code. nullable: true postal_code: type: string description: The postal code of the address. nullable: true region: type: string description: |- The region or state. Example: `"NC"` nullable: true street: type: string description: The full street address. nullable: true required: - city - country - postal_code - region - street CreditBankStatementUploadBankAccountPeriod: title: CreditBankStatementUploadBankAccountPeriod type: object description: An object containing data on the overall period of the statement. properties: start_date: type: string format: date description: The start date of the statement period in ISO 8601 format (YYYY-MM-DD). nullable: true end_date: type: string format: date description: The end date of the statement period in ISO 8601 format (YYYY-MM-DD). nullable: true starting_balance: type: number description: The starting balance of the bank account for the period. nullable: true ending_balance: type: number description: The ending balance of the bank account for the period. nullable: true required: - start_date - end_date - starting_balance - ending_balance PayrollItem: title: PayrollItem type: object description: An object containing information about the payroll item. properties: item_id: $ref: '#/components/schemas/ItemId' institution_id: type: string description: The unique identifier of the institution associated with the Item. institution_name: type: string description: The name of the institution associated with the Item. accounts: type: array items: $ref: '#/components/schemas/PayrollIncomeAccountData' payroll_income: type: array items: $ref: '#/components/schemas/PayrollIncomeObject' status: $ref: '#/components/schemas/PayrollItemStatus' updated_at: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the Item was updated. nullable: true required: - item_id - institution_id - institution_name - payroll_income - status - accounts - updated_at PayrollIncomeAccountData: title: PayrollIncomeAccountData type: object nullable: true additionalProperties: true description: An object containing account level data. properties: account_id: type: string description: ID of the payroll provider account. nullable: true rate_of_pay: $ref: '#/components/schemas/PayrollIncomeRateOfPay' pay_frequency: type: string description: The frequency at which an individual is paid. nullable: true x-override-enum-values-shown: - DAILY - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY - CONTRACT - QUARTERLY - SEMI_ANNUALLY - ANNUALLY - OTHER - null required: - account_id - rate_of_pay - pay_frequency PayrollIncomeObject: title: PayrollIncomeObject type: object additionalProperties: true description: An object representing payroll data. properties: account_id: type: string description: ID of the payroll provider account. nullable: true pay_stubs: description: Array of pay stubs for the user. type: array items: $ref: '#/components/schemas/CreditPayStub' w2s: description: Array of tax form W-2s. type: array items: $ref: '#/components/schemas/CreditW2' form1099s: description: Array of tax form 1099s. 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 additionalProperties: true description: An object representing an end user's 1099 tax form properties: document_id: type: string description: An identifier of the document referenced by the document metadata. nullable: true document_metadata: $ref: '#/components/schemas/CreditDocumentMetadata' form_1099_type: $ref: '#/components/schemas/Form1099Type' recipient: $ref: '#/components/schemas/Credit1099Recipient' payer: $ref: '#/components/schemas/Credit1099Payer' filer: $ref: '#/components/schemas/Credit1099Filer' tax_year: type: string description: Tax year of the tax form. nullable: true rents: type: number format: double description: Amount in rent by payer. nullable: true royalties: type: number format: double description: Amount in royalties by payer. nullable: true other_income: type: number format: double description: Amount in other income by payer. nullable: true federal_income_tax_withheld: type: number format: double description: Amount of federal income tax withheld from payer. nullable: true fishing_boat_proceeds: type: number format: double description: Amount of fishing boat proceeds from payer. nullable: true medical_and_healthcare_payments: type: number format: double description: Amount of medical and healthcare payments from payer. nullable: true nonemployee_compensation: type: number format: double description: Amount of nonemployee compensation from payer. nullable: true substitute_payments_in_lieu_of_dividends_or_interest: type: number format: double description: Amount of substitute payments made by payer. nullable: true payer_made_direct_sales_of_5000_or_more_of_consumer_products_to_buyer: type: string description: Whether or not payer made direct sales over $5000 of consumer products. nullable: true crop_insurance_proceeds: type: number format: double description: Amount of crop insurance proceeds. nullable: true excess_golden_parachute_payments: type: number format: double description: Amount of golden parachute payments made by payer. nullable: true gross_proceeds_paid_to_an_attorney: type: number format: double description: Amount of gross proceeds paid to an attorney by payer. nullable: true section_409a_deferrals: type: number format: double description: Amount of 409A deferrals earned by payer. nullable: true section_409a_income: type: number format: double description: Amount of 409A income earned by payer. nullable: true state_tax_withheld: type: number format: double description: Amount of state tax withheld of payer for primary state. nullable: true state_tax_withheld_lower: type: number format: double description: Amount of state tax withheld of payer for secondary state. nullable: true payer_state_number: type: string description: Primary state ID. nullable: true payer_state_number_lower: type: string description: Secondary state ID. nullable: true state_income: type: number format: double description: State income reported for primary state. nullable: true state_income_lower: type: number format: double description: State income reported for secondary state. nullable: true transactions_reported: type: string description: One of the values will be provided Payment card Third party network nullable: true x-override-enum-values-shown: - Payment card - Third party network pse_name: type: string description: Name of the PSE (Payment Settlement Entity). nullable: true pse_telephone_number: type: string description: Formatted (XXX) XXX-XXXX. Phone number of the PSE (Payment Settlement Entity). nullable: true gross_amount: type: number format: double description: Gross amount reported. nullable: true card_not_present_transaction: type: number format: double description: Amount in card not present transactions. nullable: true merchant_category_code: type: string description: Merchant category of filer. nullable: true number_of_payment_transactions: type: string description: Number of payment transactions made. nullable: true january_amount: type: number format: double description: Amount reported for January. nullable: true february_amount: type: number format: double description: Amount reported for February. nullable: true march_amount: type: number format: double description: Amount reported for March. nullable: true april_amount: type: number format: double description: Amount reported for April. nullable: true may_amount: type: number format: double description: Amount reported for May. nullable: true june_amount: type: number format: double description: Amount reported for June. nullable: true july_amount: type: number format: double description: Amount reported for July. nullable: true august_amount: type: number format: double description: Amount reported for August. nullable: true september_amount: type: number format: double description: Amount reported for September. nullable: true october_amount: type: number format: double description: Amount reported for October. nullable: true november_amount: type: number format: double description: Amount reported for November. nullable: true december_amount: type: number format: double description: Amount reported for December. nullable: true primary_state: type: string description: Primary state of business. nullable: true secondary_state: type: string description: Secondary state of business. nullable: true primary_state_id: type: string description: Primary state ID. nullable: true secondary_state_id: type: string description: Secondary state ID. nullable: true primary_state_income_tax: type: number format: double description: State income tax reported for primary state. nullable: true secondary_state_income_tax: type: number format: double description: State income tax reported for secondary state. nullable: true required: - document_id Form1099Type: title: Form1099Type type: string description: Form 1099 Type enum: - FORM_1099_TYPE_UNKNOWN - FORM_1099_TYPE_MISC - FORM_1099_TYPE_K Credit1099Payer: title: Credit1099Payer type: object additionalProperties: true description: An object representing a payer used by 1099-MISC tax documents. properties: address: $ref: '#/components/schemas/CreditPayStubAddress' name: type: string description: Name of payer. nullable: true tin: type: string description: Tax identification number of payer. nullable: true telephone_number: type: string description: Telephone number of payer. nullable: true Credit1099Recipient: title: Credit1099Recipient type: object additionalProperties: true description: An object representing a recipient used in both 1099-K and 1099-MISC tax documents. properties: address: $ref: '#/components/schemas/CreditPayStubAddress' name: type: string description: Name of recipient. nullable: true tin: type: string description: Tax identification number of recipient. nullable: true account_number: type: string description: Account number of recipient. nullable: true facta_filing_requirement: type: string description: Checked if FATCA is a filing requirement. nullable: true x-override-enum-values-shown: - CHECKED - NOT CHECKED second_tin_exists: type: string description: Checked if 2nd TIN exists. nullable: true x-override-enum-values-shown: - CHECKED - NOT CHECKED Credit1099Filer: title: Credit1099Filer type: object additionalProperties: true description: An object representing a filer used by 1099-K tax documents. properties: address: $ref: '#/components/schemas/CreditPayStubAddress' name: type: string description: Name of filer. nullable: true tin: type: string description: Tax identification number of filer. nullable: true type: type: string description: 'One of the following values will be provided: Payment Settlement Entity (PSE), Electronic Payment Facilitator (EPF), Other Third Party' nullable: true x-override-enum-values-shown: - 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 additionalProperties: true description: An object representing an end user's pay stub. properties: deductions: $ref: '#/components/schemas/CreditPayStubDeductions' document_id: type: string description: An identifier of the document referenced by the document metadata. nullable: true document_metadata: $ref: '#/components/schemas/CreditDocumentMetadata' earnings: $ref: '#/components/schemas/CreditPayStubEarnings' employee: $ref: '#/components/schemas/CreditPayStubEmployee' employer: $ref: '#/components/schemas/CreditPayStubEmployer' net_pay: $ref: '#/components/schemas/CreditPayStubNetPay' pay_period_details: $ref: '#/components/schemas/PayStubPayPeriodDetails' required: - deductions - document_id - document_metadata - earnings - employee - employer - net_pay - pay_period_details CreditPayStubDeductions: title: CreditPayStubDeductions type: object description: An object with the deduction information found on a pay stub. additionalProperties: true properties: breakdown: type: array items: $ref: '#/components/schemas/PayStubDeductionsBreakdown' total: $ref: '#/components/schemas/PayStubDeductionsTotal' required: - breakdown - total PayStubDeductionsBreakdown: title: PayStubDeductionsBreakdown type: object additionalProperties: true description: An object representing the deduction line items for the pay period properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true description: type: string description: Description of the deduction line item nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the deduction nullable: true required: - current_amount - description - iso_currency_code - unofficial_currency_code - ytd_amount PayStubDeductionsTotal: title: PayStubDeductionsTotal type: object description: An object representing the total deductions for the pay period additionalProperties: true properties: current_amount: type: number format: double description: Raw amount of the deduction nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date total amount of the deductions nullable: true required: - current_amount - iso_currency_code - unofficial_currency_code - ytd_amount CreditPayStubEarnings: title: CreditPayStubEarnings type: object description: An object representing both a breakdown of earnings on a pay stub and the total earnings. additionalProperties: true properties: breakdown: type: array items: $ref: '#/components/schemas/PayStubEarningsBreakdown' total: $ref: '#/components/schemas/PayStubEarningsTotal' required: - breakdown - total PayStubEarningsBreakdown: title: PayStubEarningsBreakdown type: object additionalProperties: true description: An object representing the earnings line items for the pay period. properties: canonical_description: $ref: '#/components/schemas/PayStubEarningsBreakdownCanonicalDescription' current_amount: type: number format: double description: Raw amount of the earning line item. nullable: true description: type: string description: Description of the earning line item. nullable: true hours: type: number description: Number of hours applicable for this earning. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true rate: type: number format: double description: Hourly rate applicable for this earning. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the line item. nullable: true required: - canonical_description - current_amount - description - hours - iso_currency_code - rate - unofficial_currency_code - ytd_amount PayStubEarningsBreakdownCanonicalDescription: type: string description: Commonly used term to describe the earning line item. x-override-enum-values-shown: - BONUS - COMMISSION - OVERTIME - PAID_TIME_OFF - REGULAR_PAY - VACATION - BASIC_ALLOWANCE_HOUSING - BASIC_ALLOWANCE_SUBSISTENCE - OTHER - ALLOWANCE - BEREAVEMENT - HOLIDAY_PAY - JURY_DUTY - LEAVE - LONG_TERM_DISABILITY_PAY - MILITARY_PAY - PER_DIEM - REFERRAL_BONUS - REIMBURSEMENTS - RETENTION_BONUS - RETROACTIVE_PAY - SEVERANCE_PAY - SHIFT_DIFFERENTIAL - SHORT_TERM_DISABILITY_PAY - SICK_PAY - SIGNING_BONUS - TIPS_INCOME - RETIREMENT - GIG_ECONOMY - STOCK_COMPENSATION - null nullable: true PayStubEarningsTotal: title: PayStubEarningsTotal type: object description: An object representing both the current pay period and year to date amount for an earning category. additionalProperties: true properties: current_amount: type: number format: double description: Total amount of the earnings for this pay period. nullable: true hours: type: number description: Total number of hours worked for this pay period. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The total year-to-date amount of the earnings. nullable: true required: - current_amount - hours - iso_currency_code - unofficial_currency_code - ytd_amount CreditPayStubEmployee: title: CreditPayStubEmployee type: object additionalProperties: true description: Data about the employee. properties: address: $ref: '#/components/schemas/CreditPayStubAddress' name: type: string description: The name of the employee. nullable: true marital_status: type: string description: Marital status of the employee - one of `SINGLE`, `MARRIED`, or `NOT LISTED`. nullable: true x-override-enum-values-shown: - SINGLE - MARRIED - NOT LISTED - null taxpayer_id: $ref: '#/components/schemas/PayStubTaxpayerID' required: - name - address - marital_status - taxpayer_id CreditPayStubAddress: title: CreditPayStubAddress description: Address on the pay stub. type: object additionalProperties: true properties: city: type: string description: The full city name. nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code. nullable: true postal_code: type: string description: The postal code of the address. nullable: true region: type: string description: |- The region or state. Example: `"NC"` nullable: true street: type: string description: The full street address. nullable: true required: - city - country - postal_code - region - street PayStubTaxpayerID: title: PayStubTaxpayerID type: object additionalProperties: true description: Taxpayer ID of the individual receiving the paystub. properties: id_type: type: string description: Type of ID, e.g. 'SSN'. nullable: true id_mask: type: string description: ID mask; i.e. last 4 digits of the taxpayer ID. nullable: true required: - id_type - id_mask CreditPayStubEmployer: title: CreditPayStubEmployer description: Information about the employer on the pay stub. type: object additionalProperties: true properties: address: $ref: '#/components/schemas/CreditPayStubAddress' name: type: string description: The name of the employer on the pay stub. nullable: true required: - address - name CreditPayStubNetPay: title: CreditPayStubNetPay type: object description: An object representing information about the net pay amount on the pay stub. additionalProperties: true properties: current_amount: type: number format: double description: Raw amount of the net pay for the pay period. nullable: true description: type: string description: Description of the net pay. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. ytd_amount: type: number format: double description: The year-to-date amount of the net pay. nullable: true required: - current_amount - description - iso_currency_code - unofficial_currency_code - ytd_amount PayStubPayPeriodDetails: title: PayStubPayPeriodDetails type: object additionalProperties: true description: Details about the pay period. properties: pay_amount: type: number format: double description: The amount of the paycheck. nullable: true distribution_breakdown: type: array items: $ref: '#/components/schemas/PayStubDistributionBreakdown' end_date: type: string format: date description: The date on which the pay period ended, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true gross_earnings: type: number format: double description: Total earnings before tax/deductions. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true pay_date: type: string format: date description: The date on which the pay stub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true pay_frequency: type: string description: The frequency at which an individual is paid. x-override-enum-values-shown: - UNKNOWN - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY - null nullable: true pay_basis: $ref: '#/components/schemas/CreditPayStubPayBasisType' start_date: type: string format: date description: The date on which the pay period started, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. required: - pay_amount - distribution_breakdown - end_date - gross_earnings - iso_currency_code - pay_date - pay_frequency - start_date - unofficial_currency_code PayStubDistributionBreakdown: title: PayStubDistributionBreakdown type: object description: Information about the accounts that the payment was distributed to. additionalProperties: true properties: account_name: type: string description: Name of the account for the given distribution. nullable: true bank_name: type: string description: The name of the bank that the payment is being deposited to. nullable: true current_amount: type: number format: double description: The amount distributed to this account. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null. nullable: true mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number. nullable: true type: type: string description: Type of the account that the paystub was sent to (e.g. 'checking'). nullable: true unofficial_currency_code: nullable: true type: string 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 `unofficial_currency_code`s. required: - account_name - bank_name - current_amount - iso_currency_code - mask - type - unofficial_currency_code ReportType: title: ReportType type: string description: The report type. It can be `asset`. Income report types are not yet supported. enum: - asset nullable: false DocumentRiskSignal: title: DocumentRiskSignal description: Details about a certain reason as to why a document could potentially be fraudulent. type: object additionalProperties: true nullable: true properties: type: title: DocumentRiskSignalResultType type: string description: The type of risk found in the risk signal check. nullable: true x-override-enum-values-shown: - FONT - MASKING - OVERLAID_TEXT - EDITED_TEXT - TEXT_COMPRESSION - ADDRESS_FORMAT_ANOMALY - DATE_FORMAT_ANOMALY - FONT_ANOMALY - NAME_FORMAT_ANOMALY - PDF_ALIGNMENT - BRUSH_DETECTION - METADATA_DATES_OUTSIDE_WINDOW - METADATA_DATES_INSIDE_WINDOW - METADATA_DATES_MISSING - METADATA_DATES_MATCH - ADOBE_FONTS - ANNOTATION_DATES - ANNOTATIONS - EDITED_WHILE_SCANNED - EXIF_DATA_MODIFIED - HIGH_USER_ACCESS - MALFORMED_DATE - QPDF - TEXT_LAYER_TEXT - TOUCHUP_TEXT - FLATTENED_PDF - BLACKLISTS - COPYCAT_IMAGE - COPYCAT_TEXT - REJECTED_CUSTOMER - TEMPLATES - SOFTWARE_BLACKLIST field: title: DocumentRiskSignalField type: string description: The field which the risk signal was computed for nullable: true has_fraud_risk: title: DocumentRiskSignalHasFraudRisk type: boolean description: A flag used to quickly identify if the signal indicates that this field is authentic or fraudulent nullable: true institution_metadata: $ref: '#/components/schemas/DocumentRiskSignalInstitutionMetadata' expected_value: title: DocumentRiskSignalExpectedValue type: string description: The expected value of the field, as seen on the document nullable: true actual_value: title: DocumentRiskSignalActualValue type: string description: The derived value obtained in the risk signal calculation process for this field nullable: true signal_description: title: DocumentRiskSignalDescription type: string description: A human-readable explanation providing more detail into the particular risk signal nullable: true page_number: title: DocumentRiskPageNumber type: integer description: The relevant page associated with the risk signal. If the risk signal is not associated with a specific page, the value will be 0. nullable: true required: - type - field - has_fraud_risk - institution_metadata - expected_value - actual_value - signal_description - page_number DocumentRiskSignalInstitutionMetadata: title: DocumentRiskSignalInstitutionMetadata type: object additionalProperties: true nullable: true description: An object which contains additional metadata about the institution used to compute the verification attribute properties: item_id: $ref: '#/components/schemas/ItemId' required: - item_id PayrollItemStatus: title: PayrollItemStatus description: Details about the status of the payroll item. type: object additionalProperties: true nullable: true properties: processing_status: title: PayrollItemStatusProcessingStatus type: string description: |- Denotes the processing status for the verification. `UNKNOWN`: The processing status could not be determined. `PROCESSING_COMPLETE`: The processing has completed and the user has approved for sharing. The data is available to be retrieved. `PROCESSING`: The verification is still processing. The data is not available yet. `FAILED`: The processing failed to complete successfully. `APPROVAL_STATUS_PENDING`: The processing has completed but the user has not yet approved the sharing of the data. nullable: true x-override-enum-values-shown: - UNKNOWN - PROCESSING_COMPLETE - PROCESSING - FAILED - APPROVAL_STATUS_PENDING CreditW2: title: CreditW2 type: object additionalProperties: true description: W2 is an object that represents income data taken from a W2 tax document. properties: document_metadata: $ref: '#/components/schemas/CreditDocumentMetadata' document_id: type: string description: An identifier of the document referenced by the document metadata. employer: $ref: '#/components/schemas/CreditPayStubEmployer' employee: $ref: '#/components/schemas/CreditPayStubEmployee' tax_year: type: string description: The tax year of the W2 document. nullable: true employer_id_number: type: string description: An employer identification number or EIN. nullable: true wages_tips_other_comp: type: string description: Wages from tips and other compensation. nullable: true federal_income_tax_withheld: type: string description: Federal income tax withheld for the tax year. nullable: true social_security_wages: type: string description: Wages from Social Security. nullable: true social_security_tax_withheld: type: string description: Social Security tax withheld for the tax year. nullable: true medicare_wages_and_tips: type: string description: Wages and tips from medicare. nullable: true medicare_tax_withheld: type: string description: Medicare tax withheld for the tax year. nullable: true social_security_tips: type: string description: Tips from Social Security. nullable: true allocated_tips: type: string description: Allocated tips. nullable: true box_9: type: string description: Contents from box 9 on the W2. nullable: true dependent_care_benefits: type: string description: Dependent care benefits. nullable: true nonqualified_plans: type: string description: Nonqualified plans. nullable: true box_12: type: array items: $ref: '#/components/schemas/W2Box12' statutory_employee: type: string description: Statutory employee. nullable: true retirement_plan: type: string description: Retirement plan. nullable: true third_party_sick_pay: type: string description: Third party sick pay. nullable: true other: type: string description: Other. nullable: true state_and_local_wages: type: array items: $ref: '#/components/schemas/W2StateAndLocalWages' required: - document_metadata - document_id - employer - employee - tax_year - employer_id_number - wages_tips_other_comp - federal_income_tax_withheld - social_security_wages - social_security_tax_withheld - medicare_wages_and_tips - medicare_tax_withheld - social_security_tips - allocated_tips - box_9 - dependent_care_benefits - nonqualified_plans - box_12 - statutory_employee - retirement_plan - third_party_sick_pay - other - state_and_local_wages PayrollIncomeRateOfPay: title: PayrollIncomeRateOfPay type: object additionalProperties: true description: An object representing the rate at which an individual is paid. properties: pay_rate: type: string description: The rate at which an employee is paid. nullable: true x-override-enum-values-shown: - ANNUAL - HOURLY - CONTRACT - WEEKLY - BIWEEKLY - MONTHLY - SEMI_MONTHLY - DAILY - COMMISSION - OTHER - null pay_amount: type: number format: double description: The amount at which an employee is paid. nullable: true CreditPayrollIncomePrecheckRequest: title: CreditPayrollIncomePrecheckRequest type: object description: Defines the request schema for `/credit/payroll_income/precheck`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' access_tokens: type: array description: An array of access tokens corresponding to Items belonging to the user whose eligibility is being checked. Note that if the Items specified here are not already initialized with `transactions`, providing them in this field will cause these Items to be initialized with (and billed for) the Transactions product. items: $ref: '#/components/schemas/AccessToken' employer: $ref: '#/components/schemas/IncomeVerificationPrecheckEmployer' us_military_info: $ref: '#/components/schemas/IncomeVerificationPrecheckMilitaryInfo' payroll_institution: $ref: '#/components/schemas/IncomeVerificationPrecheckPayrollInstitution' CreditPayrollIncomePrecheckResponse: title: CreditPayrollIncomePrecheckResponse additionalProperties: true type: object description: Defines the response schema for `/credit/payroll_income/precheck`. properties: request_id: $ref: '#/components/schemas/RequestID' confidence: $ref: '#/components/schemas/IncomeVerificationPrecheckConfidence' required: - confidence - request_id CreditPayrollIncomeRefreshRequest: title: CreditPayrollIncomeRefreshRequest type: object description: CreditPayrollIncomeRefreshRequest defines the request schema for `/credit/payroll_income/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_id: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CreditPayrollIncomeRefreshRequestOptions' required: - user_token CreditPayrollIncomeRefreshRequestOptions: description: An optional object for `/credit/payroll_income/refresh` request options. type: object properties: item_ids: type: array items: type: string description: An array of `item_id`s to be refreshed. 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 refreshed. webhook: type: string description: The URL where Plaid will send the payroll income refresh webhook. CreditPayrollIncomeRefreshResponse: title: CreditPayrollIncomeRefreshResponse type: object additionalProperties: true description: CreditPayrollIncomeRefreshResponse defines the response schema for `/credit/payroll_income/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' verification_refresh_status: $ref: '#/components/schemas/CreditPayrollIncomeRefreshStatus' required: - request_id - verification_refresh_status CreditEmploymentGetRequest: title: CreditEmploymentGetRequest type: object description: CreditEmploymentGetRequest defines the request schema for `/credit/employment/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' required: - user_token CreditEmploymentGetResponse: title: CreditEmploymentGetResponse type: object additionalProperties: true description: CreditEmploymentGetResponse defines the response schema for `/credit/employment/get`. properties: items: description: Array of employment items. type: array items: $ref: '#/components/schemas/CreditEmploymentItem' request_id: $ref: '#/components/schemas/RequestID' required: - items - request_id CreditEmploymentItem: title: CreditEmploymentItem type: object additionalProperties: true description: The object containing employment items. properties: item_id: $ref: '#/components/schemas/ItemId' employments: type: array items: $ref: '#/components/schemas/CreditEmploymentVerification' employment_report_token: title: EmploymentReportToken type: string description: Token to represent the underlying Employment data x-hidden-from-docs: true required: - item_id - employments CreditEmploymentVerification: title: CreditEmploymentVerification type: object additionalProperties: true description: The object containing proof of employment data for an individual. properties: account_id: type: string description: ID of the payroll provider account. nullable: true status: $ref: '#/components/schemas/CreditEmploymentVerificationStatus' start_date: format: date type: string description: Start of employment in ISO 8601 format (YYYY-MM-DD). nullable: true end_date: format: date type: string description: End of employment, if applicable. Provided in ISO 8601 format (YYY-MM-DD). nullable: true employer: $ref: '#/components/schemas/CreditEmployerVerification' title: type: string description: Current title of employee. nullable: true platform_ids: $ref: '#/components/schemas/CreditPlatformIds' employee_type: $ref: '#/components/schemas/CreditEmploymentEmployeeType' last_paystub_date: format: date type: string description: The date of the employee's most recent paystub in ISO 8601 format (YYYY-MM-DD). nullable: true required: - account_id - status - start_date - end_date - employer - title - platform_ids - employee_type - last_paystub_date CreditEmploymentEmployeeType: type: string title: CreditEmploymentEmployeeType description: |- The type of employment for the individual. `"FULL_TIME"`: A full-time employee. `"PART_TIME"`: A part-time employee. `"CONTRACTOR"`: An employee typically hired externally through a contracting group. `"TEMPORARY"`: A temporary employee. `"OTHER"`: The employee type is not one of the above defined types. nullable: true x-override-enum-values-shown: - FULL_TIME - PART_TIME - CONTRACTOR - TEMPORARY - OTHER - null CreditEmploymentVerificationStatus: type: string title: CreditEmploymentVerificationStatus description: Current employment status. nullable: true x-override-enum-values-shown: - ACTIVE - INACTIVE - null CreditEmployerVerification: title: CreditEmployerVerification type: object additionalProperties: true description: An object containing employer data. properties: name: type: string description: Name of employer. nullable: true required: - name CreditPlatformIds: title: CreditPlatformIds type: object additionalProperties: true description: The object containing a set of ids related to an employee. properties: employee_id: type: string description: The ID of an employee as given by their employer. nullable: true payroll_id: type: string description: The ID of an employee as given by their payroll. nullable: true position_id: type: string description: The ID of the position of the employee. nullable: true required: - employee_id - payroll_id - position_id CreditBankIncomeWarning: type: object description: The warning associated with the data that was unavailable for the Bank Income Report. properties: warning_type: $ref: '#/components/schemas/CreditBankIncomeWarningType' warning_code: $ref: '#/components/schemas/CreditBankIncomeWarningCode' cause: $ref: '#/components/schemas/CreditBankIncomeCause' CreditBankIncomeWarningType: type: string description: The warning type which will always be `BANK_INCOME_WARNING`. enum: - BANK_INCOME_WARNING CreditBankIncomeWarningCode: type: string description: |- The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item `TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item `ITEM_UNAPPROVED`: User exited flow before giving permission to share data for the Item `REPORT_DELETED`: Report deleted due to customer or consumer request `DATA_UNAVAILABLE`: No relevant data was found for the Item enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE - ITEM_UNAPPROVED - REPORT_DELETED - DATA_UNAVAILABLE CreditBankIncomeCause: type: object description: An error object and associated `item_id` used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items. properties: error_type: $ref: '#/components/schemas/CreditBankIncomeErrorType' error_code: type: string description: We use standard HTTP response codes for success and failure notifications, and our errors are further classified by `error_type`. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be `null` if no error has occurred. 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 description: |- A user-friendly representation of the error code. null if the error is not related to user action. This may change over time and is not safe for programmatic use. item_id: type: string description: The `item_id` of the Item associated with this warning. required: - error_type - error_code - error_message - display_message - item_id CreditBankIncomeErrorType: type: string description: A broad categorization of the error. Safe for programmatic use. enum: - INTERNAL_SERVER_ERROR - INSUFFICIENT_CREDENTIALS - ITEM_LOCKED - USER_SETUP_REQUIRED - COUNTRY_NOT_SUPPORTED - INSTITUTION_DOWN - INSTITUTION_NO_LONGER_SUPPORTED - INSTITUTION_NOT_RESPONDING - INVALID_CREDENTIALS - INVALID_MFA - INVALID_SEND_METHOD - ITEM_LOGIN_REQUIRED - MFA_NOT_SUPPORTED - NO_ACCOUNTS - ITEM_NOT_SUPPORTED - ACCESS_NOT_GRANTED CreditRelayCreateRequest: type: object description: CreditRelayCreateRequest defines the request schema for `/credit/relay/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' report_tokens: type: array description: List of report token strings, with at most one token of each report type. Currently only Asset Report token is supported. items: type: string description: The report token. It can only be an asset report token. nullable: false secondary_client_id: type: string description: The `secondary_client_id` is the client id of the third party with whom you would like to share the relay token. webhook: type: string description: URL to which Plaid will send webhooks when the Secondary Client successfully retrieves an Asset Report by calling `/credit/relay/get`. nullable: true format: url required: - report_tokens - secondary_client_id CreditRelayCreateResponse: type: object additionalProperties: true description: CreditRelayCreateResponse defines the response schema for `/credit/relay/create` properties: relay_token: type: string description: A token that can be shared with a third party to allow them to access the Asset Report. This token should be stored securely. request_id: $ref: '#/components/schemas/RequestID' required: - relay_token - request_id CreditRelayGetRequest: title: CreditRelayGetRequest type: object description: CreditRelayGetRequest defines the request schema for `/credit/relay/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' relay_token: type: string description: The `relay_token` granting access to the report you would like to get. report_type: $ref: '#/components/schemas/ReportType' include_insights: type: boolean default: false description: '`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.' required: - relay_token - report_type CreditRelayPDFGetRequest: title: CreditRelayPDFGetRequest type: object description: CreditRelayPDFGetRequest defines the request schema for `/credit/relay/pdf/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' relay_token: type: string description: The `relay_token` granting access to the report you would like to get. report_type: $ref: '#/components/schemas/ReportType' required: - relay_token - report_type CreditRelayPDFGetResponse: title: CreditRelayPDFGetResponse format: binary type: string description: CreditRelayPDFGetResponse defines the response schema for `/credit/relay/pdf/get` CreditRelayRefreshRequest: type: object description: CreditRelayRefreshRequest defines the request schema for `/credit/relay/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' relay_token: type: string description: The `relay_token` granting access to the report you would like to refresh. report_type: $ref: '#/components/schemas/ReportType' webhook: type: string description: The URL registered to receive webhooks when the report of a relay token has been refreshed. format: url nullable: true required: - relay_token - report_type CreditRelayRefreshResponse: type: object additionalProperties: true description: CreditRelayRefreshResponse defines the response schema for `/credit/relay/refresh` properties: relay_token: type: string asset_report_id: $ref: '#/components/schemas/AssetReportId' request_id: $ref: '#/components/schemas/RequestID' required: - relay_token - request_id CreditRelayRemoveRequest: type: object description: CreditRelayRemoveRequest defines the request schema for `/credit/relay/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' relay_token: type: string description: The `relay_token` you would like to revoke. required: - relay_token CreditRelayRemoveResponse: type: object additionalProperties: true description: CreditRelayRemoveResponse defines the response schema for `/credit/relay/remove` properties: removed: type: boolean description: '`true` if the relay token was successfully removed.' request_id: $ref: '#/components/schemas/RequestID' required: - removed - request_id SandboxBankTransferFireWebhookRequest: title: SandboxBankTransferFireWebhookRequest type: object description: Defines the request schema for `/sandbox/bank_transfer/fire_webhook` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' webhook: type: string description: The URL to which the webhook should be sent. format: url required: - webhook SandboxBankTransferFireWebhookResponse: title: SandboxBankTransferFireWebhookResponse additionalProperties: true type: object description: Defines the response schema for `/sandbox/bank_transfer/fire_webhook` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxTransferFireWebhookRequest: title: SandboxTransferFireWebhookRequest type: object description: Defines the request schema for `/sandbox/transfer/fire_webhook` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' webhook: type: string description: The URL to which the webhook should be sent. format: url required: - webhook SandboxTransferFireWebhookResponse: title: SandboxTransferFireWebhookResponse additionalProperties: true type: object description: Defines the response schema for `/sandbox/transfer/fire_webhook` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ApplicationID: title: ApplicationID type: string description: This field will map to the application ID that is returned from `/item/application/list`, or provided to the institution in an oauth redirect. Application: type: object description: Metadata about the application properties: application_id: $ref: '#/components/schemas/ApplicationID' name: type: string description: The name of the application display_name: type: string nullable: true description: A human-readable name of the application for display purposes join_date: type: string format: date description: The date this application was granted production access at Plaid in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC. logo_url: nullable: true type: string description: A URL that links to the application logo image. application_url: nullable: true type: string description: The URL for the application's website reason_for_access: nullable: true type: string description: A string provided by the connected app stating why they use their respective enabled products. use_case: nullable: true type: string description: A string representing client's broad use case as assessed by Plaid. company_legal_name: nullable: true type: string description: A string representing the name of client's legal entity. city: nullable: true type: string description: A string representing the city of the client's headquarters. region: nullable: true type: string description: A string representing the region of the client's headquarters. postal_code: nullable: true type: string description: A string representing the postal code of the client's headquarters. country_code: nullable: true type: string description: A string representing the country code of the client's headquarters. required: - application_id - join_date - name - display_name - logo_url - application_url - reason_for_access - use_case - company_legal_name - city - region - postal_code - country_code ApplicationGetRequest: description: ApplicationGetRequest defines the schema for `/application/get` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' application_id: $ref: '#/components/schemas/ApplicationID' required: - client_id - secret - application_id ApplicationGetResponse: description: ApplicationGetResponse defines the response schema for `/application/get` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' application: $ref: '#/components/schemas/Application' required: - request_id - application ProductAccess: 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: statements: description: Allow access to statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true identity: description: Allow access to the Identity product (name, email, phone, address). Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true auth: description: Allow access to account number details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true transactions: description: Allow access to transaction details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true accounts_details_transactions: description: Allow access to `accounts_details_transactions`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true accounts_routing_number: description: Allow access to `accounts_routing_number`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true accounts_statements: description: Allow access to `accounts_statements`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true accounts_tax_statements: description: Allow access to `accounts_tax_statements`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true customers_profiles: description: Allow access to `customers_profiles`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true AccountAccess: description: Allow or disallow product access by account. Unlisted (e.g. missing) accounts will be considered `new_accounts`. type: object properties: unique_id: description: The unique account identifier for this account. This value must match that returned by the data access API for this account. type: string authorized: description: Allow the application to see this account (and associated details, including balance) in the list of accounts. If unset, defaults to `true`. type: boolean nullable: true default: true account_product_access: $ref: '#/components/schemas/AccountProductAccessNullable' required: - unique_id AccountProductAccessNullable: nullable: true description: Allow the application to access specific products on this account allOf: - $ref: '#/components/schemas/AccountProductAccess' - type: object additionalProperties: true AccountProductAccess: description: Allow the application to access specific products on this account type: object properties: account_data: description: Allow the application to access account data. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true statements: description: Allow the application to access bank statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true tax_documents: description: Allow the application to access tax documents. Only used by certain partners. If relevant to the partner and unset, defaults to `true`. type: boolean nullable: true default: true ScopesNullable: nullable: true description: The scopes object allOf: - $ref: '#/components/schemas/Scopes' - type: object additionalProperties: true Scopes: description: The scopes object type: object properties: product_access: $ref: '#/components/schemas/ProductAccess' accounts: type: array items: $ref: '#/components/schemas/AccountAccess' new_accounts: description: Allow access to newly opened accounts as they are opened. If unset, defaults to `true`. type: boolean nullable: true default: true ScopesState: description: When scopes are updated during enrollment, this field must be populated with the state sent to the partner in the OAuth Login URI. This field is required when the context is `ENROLLMENT`. type: string ScopesContext: description: An indicator for when scopes are being updated. When scopes are updated via enrollment (i.e. OAuth), the partner must send `ENROLLMENT`. When scopes are updated in a post-enrollment view, the partner must send `PORTAL`. type: string enum: - ENROLLMENT - PORTAL ItemApplicationUnlinkRequest: description: ItemApplicationUnlinkRequest defines the request schema for `/item/application/unlink` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' application_id: $ref: '#/components/schemas/ApplicationID' required: - application_id - access_token ItemApplicationUnlinkResponse: description: ItemApplicationUnlinkResponse defines the response schema for `/item/application/unlink` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ItemApplicationScopesUpdateRequest: description: ItemApplicationScopesUpdateRequest defines the request schema for `/item/application/scopes/update` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' application_id: $ref: '#/components/schemas/ApplicationID' scopes: $ref: '#/components/schemas/Scopes' state: $ref: '#/components/schemas/ScopesState' context: $ref: '#/components/schemas/ScopesContext' required: - application_id - access_token - scopes - context ItemApplicationScopesUpdateResponse: description: ItemApplicationScopesUpdateResponse defines the response schema for `/item/application/scopes/update` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ItemApplicationListRequest: description: Request to list connected applications for a user. type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessTokenNullable' ItemApplicationListResponse: description: Describes the connected application for a particular end user. additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' applications: type: array description: A list of connected applications. items: $ref: '#/components/schemas/ConnectedApplication' required: - applications ConnectedApplication: description: Describes the connected application for a particular end user. type: object properties: application_id: $ref: '#/components/schemas/ApplicationID' name: type: string description: The name of the application display_name: type: string nullable: true description: A human-readable name of the application for display purposes logo_url: nullable: true type: string description: A URL that links to the application logo image. application_url: nullable: true type: string description: The URL for the application's website reason_for_access: nullable: true type: string description: A string provided by the connected app stating why they use their respective enabled products. created_at: type: string format: date-time 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: - application_id - name - created_at AccountSelectionCardinality: type: string description: |- The application requires that accounts be limited to a specific cardinality. `MULTI_SELECT`: indicates that the user should be allowed to pick multiple accounts. `SINGLE_SELECT`: indicates that the user should be allowed to pick only a single account. `ALL`: indicates that the user must share all of their accounts and should not be given the opportunity to de-select enum: - SINGLE_SELECT - MULTI_SELECT - ALL AccountFilter: type: object description: Enumerates the account subtypes that the application wishes for the user to be able to select from. For more details refer to Plaid documentation on account filters. properties: depository: $ref: '#/components/schemas/AccountFilterSubtypes' credit: $ref: '#/components/schemas/AccountFilterSubtypes' loan: $ref: '#/components/schemas/AccountFilterSubtypes' investment: $ref: '#/components/schemas/AccountFilterSubtypes' AccountFilterSubtypes: type: array description: A list of account subtypes to be filtered. items: type: string description: List of account subtypes. ConsentEventsGetRequest: description: Request to list a historical log of item consent events. type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token ConsentEventsGetResponse: description: Describes a historical log of item consent events. additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' consent_events: type: array description: A list of consent events. items: $ref: '#/components/schemas/ConsentEvent' required: - consent_events - request_id ItemActivityListRequest: description: Request to list a historical log of user consent events. type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' cursor: type: string description: Cursor used for pagination. count: type: integer minimum: 1 maximum: 50 default: 50 ItemActivityListResponse: description: Describes a historical log of user consent events. additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' activities: type: array description: A list of activities. items: $ref: '#/components/schemas/Activity' last_data_access_times: type: array description: An array of objects containing timestamps for the last time each data type was accessed per application. items: $ref: '#/components/schemas/LastDataAccessTimes' cursor: type: string description: Cursor used for pagination. required: - activities - last_data_access_times - request_id LastDataAccessTimes: description: Describes the last time each datatype was accessed by an application. type: object additionalProperties: true properties: application_id: type: string description: ID of the application accessing data. account_balance_info: type: string nullable: true format: date-time description: The last time `account_balance_info` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" account_routing_number: type: string nullable: true format: date-time description: The last time `account_routing_number` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" contact_details: type: string nullable: true format: date-time description: The last time `contact_details` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" transactions: type: string nullable: true format: date-time description: The last time `transactions` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" credit_and_loans: type: string nullable: true format: date-time description: The last time `credit_and_loans` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" investments: type: string nullable: true format: date-time description: The last time `investments` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" payroll_info: type: string nullable: true format: date-time description: The last time `payroll_info` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" transaction_risk_info: type: string nullable: true format: date-time description: The last time `transaction_risk_info` was accessed by this application in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format in UTC. null if never accessed. example: "2023-02-08T10:00:00Z" required: - application_id - account_balance_info - account_routing_number - contact_details - transactions - credit_and_loans - investments - payroll_info - transaction_risk_info ConsentEvent: description: Describes a consent event. additionalProperties: true type: object properties: item_id: type: string description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. created_at: type: string format: date-time description: The date and time when the consent event occurred, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. event_type: $ref: '#/components/schemas/ConsentEventType' event_code: $ref: '#/components/schemas/ConsentEventCode' institution_id: description: Unique identifier for the institution associated with the Item. Field is `null` for Items created via Same-Day Micro-deposits. nullable: true type: string institution_name: description: The full name of the institution associated with the Item. Field is `null` for Items created via Same-Day Micro-deposits. nullable: true type: string initiator: $ref: '#/components/schemas/ConsentEventInitiator' consented_use_cases: description: |- A list of strings containing the full list of use cases the end user has consented to for the Item. See the [full list](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/#updating-link-customizations) of use cases. type: array items: type: string consented_data_scopes: description: A list of strings containing the full list of data scopes the end user has consented to for the Item. These correspond to consented products; see the [full mapping](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/#data-scopes-by-product) of data scopes and products. type: array items: type: string consented_accounts: description: An array containing the accounts associated with the Item for which authorizations are granted. type: array items: $ref: '#/components/schemas/ConsentedAccount' ConsentEventInitiator: type: string description: The entity that initiated collection of consent. enum: - PLAID - DATA_PROVIDER - CUSTOMER - END_USER ConsentEventType: type: string description: A broad categorization of the consent event. enum: - CONSENT_GRANTED - CONSENT_REVOKED - CONSENT_UPDATED ConsentEventCode: type: string description: Codes describing the object of a consent event. enum: - USER_AGREEMENT - USE_CASES - DATA_SCOPES - ACCOUNT_SCOPES - REVOCATION ConsentedAccount: type: object additionalProperties: true description: A financial institution account. properties: account_id: type: string description: Plaid's unique identifier for the account. Like all Plaid identifiers, the `account_id` is case sensitive. mask: type: string description: The last 2-4 alphanumeric characters of an account's official account number name: type: string description: The name of the account, either assigned by the user or by the financial institution itself official_name: type: string description: The official name of the account as given by the financial institution type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' Activity: description: Describes a consent activity. type: object properties: activity: $ref: '#/components/schemas/ActivityType' initiated_date: type: string format: date description: The date this activity was initiated [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC. example: "2020-01-01" id: type: string description: A unique identifier for the activity initiator: type: string description: Application ID of the client who initiated the activity. state: $ref: '#/components/schemas/ActionState' target_application_id: $ref: '#/components/schemas/ApplicationID' scopes: $ref: '#/components/schemas/ScopesNullable' authentication: $ref: '#/components/schemas/ItemCreateAuthentication' required: - activity - initiated_date - id - initiator - state ActivityType: type: string description: Types of consent activities enum: - UNKNOWN - ITEM_CREATE - ITEM_IMPORT - ITEM_UPDATE - ITEM_UNLINK - PORTAL_UNLINK - PORTAL_ITEMS_DELETE - ITEM_REMOVE - INVARIANT_CHECKER_DELETION - SCOPES_UPDATE ActionState: type: string description: Enum representing the state of the action/activity. enum: - UNKNOWN - ATTEMPT - SUCCESS - FAILURE - SKIPPED ItemCreateAuthentication: type: string description: Enum representing the entity authenticating the user. enum: - UNKNOWN - DATA_PARTNER - PLAID SandboxIncomeFireWebhookRequest: title: SandboxIncomeFireWebhookRequest type: object description: SandboxIncomeFireWebhookRequest defines the request schema for `/sandbox/income/fire_webhook` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' item_id: type: string description: The Item ID associated with the verification. user_id: $ref: '#/components/schemas/UserId' webhook: type: string description: The URL to which the webhook should be sent. format: url verification_status: type: string enum: - VERIFICATION_STATUS_PROCESSING_COMPLETE - VERIFICATION_STATUS_PROCESSING_FAILED - VERIFICATION_STATUS_PENDING_APPROVAL description: |- `VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the `/income/verification/paystubs/get` endpoint and check the document metadata to see which documents were successfully parsed. `VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation. `VERIFICATION_STATUS_PENDING_APPROVAL`: (deprecated) The income verification has been sent to the user for review. webhook_code: $ref: '#/components/schemas/SandboxIncomeWebhookFireRequestWebhookCode' required: - item_id - webhook - webhook_code SandboxIncomeWebhookFireRequestWebhookCode: type: string enum: - INCOME_VERIFICATION - INCOME_VERIFICATION_RISK_SIGNALS description: The webhook codes that can be fired by this test endpoint. SandboxIncomeFireWebhookResponse: title: SandboxIncomeFireWebhookResponse additionalProperties: true type: object description: SandboxIncomeFireWebhookResponse defines the response schema for `/sandbox/income/fire_webhook` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxBankIncomeFireWebhookRequest: title: SandboxBankIncomeFireWebhookRequest type: object description: SandboxBankIncomeFireWebhookRequest defines the request schema for `/sandbox/bank_income/fire_webhook` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' webhook_override: type: string description: The URL to which the webhook should be sent. If provided, this will override the URL set in the dashboard. format: url webhook_code: $ref: '#/components/schemas/SandboxBankIncomeWebhookFireRequestWebhookCode' webhook_fields: $ref: '#/components/schemas/SandboxBankIncomeWebhookFireRequestWebhookFields' required: - webhook_code - webhook_fields SandboxBankIncomeWebhookFireRequestWebhookCode: type: string enum: - BANK_INCOME_REFRESH_UPDATE - BANK_INCOME_REFRESH_COMPLETE description: The webhook codes this endpoint can be used to test SandboxBankIncomeWebhookFireRequestWebhookFields: type: object properties: user_id: type: string description: The user id to be returned in INCOME webhooks bank_income_refresh_complete_result: $ref: '#/components/schemas/BankIncomeRefreshCompleteResult' description: Optional fields which will be populated in the simulated webhook required: - user_id SandboxBankIncomeFireWebhookResponse: title: SandboxBankIncomeFireWebhookResponse additionalProperties: true type: object description: SandboxBankIncomeFireWebhookResponse defines the response schema for `/sandbox/bank_income/fire_webhook` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SandboxCraCashflowUpdatesUpdateRequest: title: SandboxCraCashflowUpdatesUpdateRequest type: object description: SandboxCraCashflowUpdatesUpdateRequest defines the request schema for `/sandbox/cra/cashflow_updates/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' webhook_codes: type: array description: Webhook codes corresponding to the Cash Flow Updates events to be simulated. items: $ref: '#/components/schemas/CashFlowUpdatesEventWebhookCodes' nullable: true user_id: $ref: '#/components/schemas/NewUserID' SandboxCraCashflowUpdatesUpdateResponse: title: SandboxCraCashflowUpdatesUpdateResponse additionalProperties: true type: object description: SandboxCraCashflowUpdatesUpdateResponse defines the response schema for `/sandbox/cra/cashflow_updates/update` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ItemApplicationListUserAuth: type: object nullable: true description: User authentication parameters, for clients making a request without an `access_token`. This is only allowed for select clients and will not be supported in the future. Most clients should call `/item/import` to obtain an access token before making a request. properties: user_id: nullable: true type: string description: Account username. fi_username_hash: nullable: true type: string description: Account username hashed by FI. RiskReason: title: RiskReason deprecated: true type: object description: This object includes a code and description to describe medium risk transactions and above on `/accounts/balance/get`. additionalProperties: true properties: code: description: |- A code that represents the type of risk associated with the proposed transaction. The codes are from PL01 to PL08 and from BK01 to BK07. For a full listing of risk reason codes, see [Risk codes](https://plaid.com/docs/balance/balance-plus/#risk-codes). type: string description: description: A human-readable description explaining the risk code associated with the proposed transaction and some recommended actions. This field is subject to change; any programmatic logic should be based on the `code` field instead. type: string required: - code - description TransferAuthorizationPaymentRisk: title: TransferAuthorizationPaymentRisk description: This object includes the scores and risk level. This response is offered as an add-on to `/transfer/authorization/create`. To request access to these fields, please contact your Plaid account manager. type: object additionalProperties: true nullable: true x-hidden-from-docs: true deprecated: true properties: bank_initiated_return_score: nullable: true description: |- 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 because an account is overdrawn or because an ineligible account is used and covers return codes: "R01", "R02", "R03", "R04", "R06", "R08", "R09", "R13", "R16", "R17", "R20", "R23". These returns have a turnaround time of 2 banking days. type: integer minimum: 1 maximum: 99 customer_initiated_return_score: nullable: true description: |- 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, customers of financial institutions can dispute a transaction as unauthorized. type: integer minimum: 1 maximum: 99 risk_level: $ref: '#/components/schemas/TransferAuthorizationRiskLevel' warnings: type: array description: If bank information was not available to be used, this array contains warnings describing why bank data is missing. If you want to receive an API error instead of scores in the case of missing bank data, file a support ticket or contact your Plaid account manager. items: $ref: '#/components/schemas/SignalWarning' required: - bank_initiated_return_score - customer_initiated_return_score - risk_level - warnings TransferAuthorizationRiskLevel: type: string nullable: true description: Comprises five risk categories (high risk, medium-high risk, medium risk, medium-low risk, low risk) based on the probability of return enum: - HIGH_RISK - MEDIUM_HIGH_RISK - MEDIUM_RISK - MEDIUM_LOW_RISK - LOW_RISK SandboxOauthSelectAccountsRequest: title: SandboxOauthSelectAccountsRequest type: object description: Defines the request schema for `/sandbox/oauth/select_accounts` properties: oauth_state_id: type: string accounts: type: array items: type: string required: - oauth_state_id - accounts SandboxOauthSelectAccountsResponse: title: SandboxOauthSelectAccountsResponse additionalProperties: true type: object description: Defines the response schema for `/sandbox/oauth/select_accounts` NewAccountsAvailableWebhook: title: NewAccountsAvailableWebhook type: object description: Fired when Plaid detects a new account. Upon receiving this webhook, you can prompt your users to share new accounts with you through [update mode](https://plaid.com/docs/link/update-mode/#using-update-mode-to-request-new-accounts) (US/CA only). If the end user has opted not to share new accounts with Plaid via their institution's OAuth settings, Plaid will not detect new accounts and this webhook will not fire. For end user accounts in the EU and UK, upon receiving this webhook, you can prompt your user to re-link their account and then delete the old Item via `/item/remove`. x-examples: example-1: webhook_type: ITEM webhook_code: NEW_ACCOUNTS_AVAILABLE item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ user_id: usr_9nSp2KuZ2x4JDw error: null environment: production properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`NEW_ACCOUNTS_AVAILABLE`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' error: $ref: '#/components/schemas/PlaidError' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' WalletCreateRequest: type: object description: WalletCreateRequest defines the request schema for `/wallet/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' iso_currency_code: $ref: '#/components/schemas/WalletISOCurrencyCode' required: - iso_currency_code WalletCreateResponse: type: object additionalProperties: true description: WalletCreateResponse defines the response schema for `/wallet/create` allOf: - $ref: '#/components/schemas/Wallet' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - wallet_id - balance - request_id WalletGetRequest: type: object description: WalletGetRequest defines the request schema for `/wallet/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' wallet_id: type: string description: The ID of the e-wallet minLength: 1 required: - wallet_id WalletGetResponse: type: object additionalProperties: true description: WalletGetResponse defines the response schema for `/wallet/get` allOf: - $ref: '#/components/schemas/Wallet' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - wallet_id - balance - request_id WalletListRequest: type: object description: WalletListRequest defines the request schema for `/wallet/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' iso_currency_code: $ref: '#/components/schemas/WalletISOCurrencyCode' cursor: type: string maxLength: 1024 description: A base64 value representing the latest e-wallet that has already been requested. Set this to `next_cursor` received from the previous `/wallet/list` request. If provided, the response will only contain e-wallets created before that e-wallet. If omitted, the response will contain e-wallets starting from the most recent, and in descending order. count: type: integer description: The number of e-wallets to fetch minimum: 1 maximum: 20 default: 10 WalletListResponse: type: object additionalProperties: true description: WalletListResponse defines the response schema for `/wallet/list` properties: wallets: type: array description: An array of e-wallets items: $ref: '#/components/schemas/Wallet' next_cursor: type: string description: Cursor used for fetching e-wallets created before the latest e-wallet provided in this response request_id: $ref: '#/components/schemas/RequestID' required: - wallets - request_id Wallet: title: Wallet type: object additionalProperties: true description: An object representing the e-wallet properties: wallet_id: type: string description: A unique ID identifying the e-wallet balance: $ref: '#/components/schemas/WalletBalance' numbers: $ref: '#/components/schemas/WalletNumbers' recipient_id: type: string description: The ID of the recipient that corresponds to the e-wallet account numbers status: $ref: '#/components/schemas/WalletStatus' required: - wallet_id - balance - numbers - status WalletNumbers: title: WalletNumbers type: object additionalProperties: true description: An object representing the e-wallet account numbers properties: bacs: $ref: '#/components/schemas/RecipientBACS' international: $ref: '#/components/schemas/NumbersInternationalIBAN' WalletBalance: title: WalletBalance type: object additionalProperties: true description: An object representing the e-wallet balance properties: iso_currency_code: type: string description: The ISO-4217 currency code of the balance current: type: number format: double description: The total amount of funds in the account available: type: number format: double description: The total amount of funds in the account after subtracting pending debit transaction amounts required: - iso_currency_code - current - available WalletISOCurrencyCode: type: string title: ISO Currency Code enum: - GBP - EUR description: An ISO-4217 currency code, used with e-wallets and transactions. minLength: 3 maxLength: 3 WalletStatus: type: string enum: - UNKNOWN - ACTIVE - CLOSED description: |- The status of the wallet. `UNKNOWN`: The wallet status is unknown. `ACTIVE`: The wallet is active and ready to send money to and receive money from. `CLOSED`: The wallet is closed. Any transactions made to or from this wallet will error. WalletTransactionExecuteRequest: type: object description: WalletTransactionExecuteRequest defines the request schema for `/wallet/transaction/execute` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' idempotency_key: $ref: '#/components/schemas/WalletTransactionIdempotencyKey' wallet_id: type: string description: The ID of the e-wallet to debit from minLength: 1 counterparty: $ref: '#/components/schemas/WalletTransactionCounterparty' amount: $ref: '#/components/schemas/WalletTransactionAmount' reference: type: string maxLength: 18 minLength: 6 description: |- A reference for the transaction. This must be an alphanumeric string with 6 to 18 characters and must not contain any special characters or spaces. Ensure that the `reference` field is unique for each transaction. originating_fund_source: $ref: '#/components/schemas/OriginatingFundSource' required: - idempotency_key - wallet_id - counterparty - amount - reference WalletTransactionIdempotencyKey: title: WalletTransactionIdempotencyKey type: string maxLength: 128 minLength: 1 description: |- A random key provided by the client, per unique wallet transaction. Maximum of 128 characters. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. If a request to execute a wallet transaction fails due to a network connection error, then after a minimum delay of one minute, you can retry the request with the same idempotency key to guarantee that only a single wallet transaction is created. If the request was successfully processed, it will prevent any transaction that uses the same idempotency key, and was received within 24 hours of the first request, from being processed. WalletTransactionCounterparty: title: WalletTransactionCounterparty type: object additionalProperties: true description: An object representing the e-wallet transaction's counterparty properties: name: type: string description: The name of the counterparty minLength: 1 numbers: $ref: '#/components/schemas/WalletTransactionCounterpartyNumbers' address: $ref: '#/components/schemas/PaymentInitiationAddress' date_of_birth: type: string format: date nullable: true description: The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. required: - name - numbers WalletTransactionCounterpartyNumbers: title: WalletTransactionCounterpartyNumbers additionalProperties: true type: object description: The counterparty's bank account numbers. Exactly one of IBAN or Bacs data is required. properties: bacs: $ref: '#/components/schemas/WalletTransactionCounterpartyBACS' international: $ref: '#/components/schemas/WalletTransactionCounterpartyInternational' WalletTransactionCounterpartyBACS: description: The account number and sort code of the counterparty's account allOf: - $ref: '#/components/schemas/RecipientBACS' - type: object additionalProperties: true WalletTransactionCounterpartyInternational: description: International Bank Account Number for a Wallet Transaction type: object nullable: true additionalProperties: true properties: iban: $ref: '#/components/schemas/NumbersIBAN' WalletTransactionAmount: title: WalletTransactionAmount type: object additionalProperties: true properties: iso_currency_code: $ref: '#/components/schemas/WalletISOCurrencyCode' value: type: number format: double minimum: 0.01 description: The amount of the transaction. Must contain at most two digits of precision e.g. `1.23`. required: - iso_currency_code - value description: The amount and currency of a transaction OriginatingFundSource: type: object title: OriginatingFundSource nullable: true description: The original source of the funds. This field is required by local regulation for certain businesses (e.g. money remittance) to send payouts to recipients in the EU and UK. required: - full_name - address - account_number - bic properties: full_name: type: string description: The full name associated with the source of the funds. address: $ref: '#/components/schemas/PaymentInitiationAddress' account_number: type: string description: The account number from which the funds are sourced. bic: type: string description: The Business Identifier Code, also known as SWIFT code, for this bank account. minLength: 8 maxLength: 11 WalletTransactionExecuteResponse: type: object additionalProperties: true description: WalletTransactionExecuteResponse defines the response schema for `/wallet/transaction/execute` properties: transaction_id: type: string description: A unique ID identifying the transaction status: $ref: '#/components/schemas/WalletTransactionStatus' request_id: $ref: '#/components/schemas/RequestID' required: - transaction_id - status - request_id WalletTransactionRelation: title: WalletTransactionRelation type: object additionalProperties: true description: |- Transactions are related when they have a logical connection. For example, a `PAYOUT` transaction can be returned by the sender, creating a `RETURN` transaction. Each `PAYOUT` transaction can have at most one corresponding `RETURN` transaction in case of reversal. These relationships are bi-directional, meaning that both entities have references to each other. For instance, when a transaction of type RETURN occurs, it is linked to the original transaction being returned. Likewise, the original transaction has a reference back to the RETURN transaction that represents the return. 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 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 description: The ID of the related transaction. type: type: string description: The type of the transaction. enum: - PAYOUT - RETURN - REFUND - FUNDS_SWEEP WalletTransactionStatus: type: string enum: - AUTHORISING - INITIATED - EXECUTED - SETTLED - BLOCKED - FAILED description: |- The status of the transaction. `AUTHORISING`: The transaction is being processed for validation and compliance. `INITIATED`: The transaction has been initiated and is currently being processed. `EXECUTED`: The transaction has been successfully executed and is considered complete. This is only applicable for debit transactions. `SETTLED`: The transaction has settled and funds are available for use. This is only applicable for credit transactions. A transaction will typically settle within seconds to several days, depending on which payment rail is used. `FAILED`: The transaction failed to process successfully. This is a terminal status. `BLOCKED`: The transaction has been blocked for violating compliance rules. This is a terminal status. WalletTransactionFailureReason: type: string nullable: true description: |- The error code of a failed transaction. Error codes include: `EXTERNAL_SYSTEM`: The transaction was declined by an external system. `EXPIRED`: The transaction request has expired. `CANCELLED`: The transaction request was rescinded. `INVALID`: The transaction did not meet certain criteria, such as an inactive account or no valid counterparty, etc. `ACCOUNT_INVALID`: The transaction could not be processed because the wallet account is invalid or inactive. `AUTHENTICATION_FAILED`: The transaction could not be processed because authentication with the wallet provider failed. `UNKNOWN`: The transaction was unsuccessful, but the exact cause is unknown. enum: - EXTERNAL_SYSTEM - EXPIRED - CANCELLED - INVALID - ACCOUNT_INVALID - AUTHENTICATION_FAILED - UNKNOWN WalletTransactionPayeeVerificationStatus: type: string nullable: true description: |- Result of payee verification check for EUR payouts. Payee verification checks whether the payee name provided matches the account holder name at the destination institution. `FULL_MATCH`: The payee name fully matches the account holder. `PARTIAL_MATCH`: The payee name partially matches the account holder. `NO_MATCH`: The payee name does not match the account holder. `ERROR`: An error occurred during payee verification. `CHECK_NOT_POSSIBLE`: Payee verification could not be performed. This field is only populated for applicable EUR payout transactions and will be `null` for other transaction types. enum: - FULL_MATCH - PARTIAL_MATCH - NO_MATCH - ERROR - CHECK_NOT_POSSIBLE WalletTransactionGetRequest: type: object description: WalletTransactionGetRequest defines the request schema for `/wallet/transaction/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' transaction_id: type: string description: The ID of the transaction to fetch minLength: 1 required: - transaction_id WalletTransactionGetResponse: title: WalletTransactionGetResponse type: object additionalProperties: true description: WalletTransactionGetResponse defines the response schema for `/wallet/transaction/get` allOf: - $ref: '#/components/schemas/WalletTransaction' - type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - transaction_id - reference - type - amount - counterparty - status - created_at - request_id WalletTransactionListRequest: type: object description: WalletTransactionListRequest defines the request schema for `/wallet/transaction/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' wallet_id: type: string description: The ID of the e-wallet to fetch transactions from minLength: 1 cursor: type: string maxLength: 256 description: A value representing the latest transaction to be included in the response. Set this from `next_cursor` received in the previous `/wallet/transaction/list` request. If provided, the response will only contain that transaction and transactions created before it. If omitted, the response will contain transactions starting from the most recent, and in descending order by the `created_at` time. count: type: integer description: The number of transactions to fetch minimum: 1 maximum: 200 default: 10 options: $ref: '#/components/schemas/WalletTransactionListRequestOptions' required: - wallet_id WalletTransactionsListRequest: type: object description: WalletTransactionListRequest defines the request schema for `/wallet/transaction/list` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' wallet_id: type: string description: The ID of the e-wallet to fetch transactions from minLength: 1 cursor: type: string maxLength: 256 description: A base64 value representing the latest transaction that has already been requested. Set this to `next_cursor` received from the previous `/wallet/transaction/list` request. If provided, the response will only contain transactions created before that transaction. If omitted, the response will contain transactions starting from the most recent, and in descending order by the `created_at` time. count: type: integer description: The number of transactions to fetch minimum: 1 maximum: 200 default: 10 options: $ref: '#/components/schemas/WalletTransactionListRequestOptions' required: - wallet_id WalletTransactionListRequestOptions: type: object description: Additional wallet transaction options nullable: true properties: start_time: type: string description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDThh:mm:ssZ) for filtering transactions, inclusive of the provided date. format: date-time end_time: type: string description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDThh:mm:ssZ) for filtering transactions, inclusive of the provided date. format: date-time WalletTransactionListResponse: type: object additionalProperties: true description: WalletTransactionListResponse defines the response schema for `/wallet/transaction/list` properties: transactions: type: array description: An array of transactions of an e-wallet, associated with the given `wallet_id` items: $ref: '#/components/schemas/WalletTransaction' next_cursor: type: string description: The value that, when used as the optional `cursor` parameter to `/wallet/transaction/list`, will return the corresponding transaction as its first entry. request_id: $ref: '#/components/schemas/RequestID' required: - transactions - request_id WalletTransaction: title: WalletTransaction type: object additionalProperties: true properties: transaction_id: type: string description: A unique ID identifying the transaction wallet_id: type: string description: The ID of the e-wallet that this transaction is associated with. reference: type: string description: A reference for the transaction type: type: string enum: - BANK_TRANSFER - PAYOUT - PIS_PAY_IN - REFUND - FUNDS_SWEEP - RETURN - RECALL - ACCOUNT_FUNDING - AUTO_REFUND description: |- The type of the transaction. The supported transaction types that are returned are: `BANK_TRANSFER:` a transaction which credits an e-wallet through an external bank transfer. `PAYOUT:` a transaction which debits an e-wallet by disbursing funds to a counterparty. `PIS_PAY_IN:` a payment which credits an e-wallet through Plaid's Payment Initiation Services (PIS) APIs. For more information see the [Payment Initiation endpoints](https://plaid.com/docs/api/products/payment-initiation/). `REFUND:` a transaction which debits an e-wallet by refunding a previously initiated payment made through Plaid's [PIS APIs](https://plaid.com/docs/api/products/payment-initiation/). `FUNDS_SWEEP`: an automated transaction which debits funds from an e-wallet to a designated client-owned account. `RETURN`: an automated transaction where a debit transaction was reversed and money moved back to originating account. `RECALL`: a transaction where the sending bank has requested the return of funds due to a fraud claim, technical error, or other issue associated with the payment. `ACCOUNT_FUNDING`: an incoming transfer from an allowlisted account. Not automatically refunded. `AUTO_REFUND`: an outgoing refund automatically initiated by Plaid in response to an unexpected `BANK_TRANSFER`. scheme: $ref: '#/components/schemas/WalletPaymentScheme' amount: $ref: '#/components/schemas/WalletTransactionAmount' counterparty: $ref: '#/components/schemas/WalletTransactionCounterparty' status: $ref: '#/components/schemas/WalletTransactionStatus' created_at: type: string description: Timestamp when the transaction was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. format: date-time last_status_update: format: date-time type: string 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: type: string nullable: true description: The payment id that this transaction is associated with, if any. This is present only for transaction types `PIS_PAY_IN` and `REFUND`. failure_reason: $ref: '#/components/schemas/WalletTransactionFailureReason' error: $ref: '#/components/schemas/PlaidError' related_transactions: type: array description: A list of wallet transactions that this transaction is associated with, if any. items: $ref: '#/components/schemas/WalletTransactionRelation' required: - transaction_id - wallet_id - reference - type - amount - counterparty - status - created_at - last_status_update description: The transaction details TransactionsEnhanceGetRequest: type: object description: TransactionsEnhanceGetRequest defines the request schema for `/beta/transactions/v1/enhance`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' account_type: type: string description: The type of account for the requested transactions (`depository` or `credit`). transactions: type: array description: An array of raw transactions to be enhanced. items: $ref: '#/components/schemas/ClientProvidedRawTransaction' required: - account_type - transactions TransactionsEnrichRequest: type: object description: TransactionsEnrichRequest defines the request schema for `/transactions/enrich`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' account_type: type: string description: The account type for the requested transactions (either `depository` or `credit`). transactions: type: array description: An array of transaction objects to be enriched by Plaid. Maximum of 100 transactions per request. items: $ref: '#/components/schemas/ClientProvidedTransaction' options: $ref: '#/components/schemas/TransactionsEnrichRequestOptions' required: - account_type - transactions TransactionsEnrichRequestOptions: type: object description: An optional object to be used with the request. properties: include_legacy_category: type: boolean default: false description: |- Include `legacy_category` and `legacy_category_id` in the response (in addition to the default `personal_finance_category`). Categories are based on Plaid's legacy taxonomy. For a full list of legacy categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). personal_finance_category_version: $ref: '#/components/schemas/PersonalFinanceCategoryVersion' ClientProvidedTransaction: title: ClientProvidedTransaction type: object description: A client-provided transaction for Plaid to enrich. additionalProperties: true properties: id: type: string description: A unique ID for the transaction used to help you tie data back to your systems. user_id: x-hidden-from-docs: true type: string description: The Plaid generated ID that identifies the end user for whom you would like to enrich transactions. client_user_id: x-hidden-from-docs: true type: string description: A unique user id used to group transactions for a given user, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. client_account_id: x-hidden-from-docs: true type: string description: A unique account id used to group transactions for a given account, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_account_id`. account_type: x-hidden-from-docs: true type: string description: The account type associated with the transaction. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). account_subtype: x-hidden-from-docs: true type: string description: The account subtype associated with the transaction. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). description: type: string description: The raw description of the transaction. If you have location data in available an unstructured format, it may be appended to the `description` field. amount: type: number format: double description: The absolute value of the transaction (>= 0). When testing Enrich, note that `amount` data should be realistic. Unrealistic or inaccurate `amount` data may result in reduced quality output. direction: $ref: '#/components/schemas/EnrichTransactionDirection' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction e.g. USD. location: $ref: '#/components/schemas/ClientProvidedTransactionLocation' mcc: type: string description: Merchant category codes (MCCs) are four-digit numbers that describe a merchant's primary business activities. date_posted: type: string format: date description: The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. required: - id - description - amount - direction - iso_currency_code EnrichTransactionDirection: title: EnrichTransactionDirection type: string enum: - INFLOW - OUTFLOW description: |- The direction of the transaction from the perspective of the account holder: `OUTFLOW` - Includes outgoing transfers, purchases, and fees. (Typically represented as a negative value on checking accounts and debit cards and a positive value on credit cards.) `INFLOW` - Includes incoming transfers, refunds, and income. (Typically represented as a positive value on checking accounts and debit cards and a negative value on credit cards.) ClientProvidedTransactionLocation: title: ClientProvidedTransactionLocation type: object description: |- A representation of where a transaction took place. Use this field to pass in structured location information you may have about your transactions. Providing location data is optional but can increase result quality. If you have unstructured location information, it may be appended to the `description` field. additionalProperties: true properties: country: type: string description: The country where the transaction occurred, formatted as an ISO 3166-1 alpha-2 country code ("US" or "CA"). region: type: string description: The region or state where the transaction occurred, formatted as the official two-letter US state or Canadian province postal code, e.g. "CT" or "QC". city: type: string description: The city where the transaction occurred. address: type: string description: The street address where the transaction occurred. postal_code: type: string description: The postal code where the transaction occurred. ClientProvidedRawTransaction: title: ClientProvidedRawTransaction type: object description: A client-provided transaction for Plaid to enhance. additionalProperties: true properties: id: type: string description: A unique ID for the transaction used to help you tie data back to your systems. description: type: string description: The raw description of the transaction. amount: type: number format: double description: |- 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: type: string description: The ISO-4217 currency code of the transaction e.g. USD. required: - id - description - amount - iso_currency_code TransactionsEnhanceGetResponse: type: object description: TransactionsEnhanceGetResponse defines the response schema for `/beta/transactions/v1/enhance`. x-examples: {} additionalProperties: true properties: enhanced_transactions: type: array description: An array of enhanced transactions. items: $ref: '#/components/schemas/ClientProvidedEnhancedTransaction' required: - enhanced_transactions TransactionsEnrichResponse: type: object description: TransactionsEnrichResponse defines the response schema for `/transactions/enrich`. x-examples: {} additionalProperties: true properties: enriched_transactions: type: array description: A list of enriched transactions. items: $ref: '#/components/schemas/ClientProvidedEnrichedTransaction' request_id: $ref: '#/components/schemas/RequestID' required: - enriched_transactions ClientProvidedEnhancedTransaction: title: ClientProvidedEnhancedTransaction type: object description: A client-provided transaction that Plaid has enhanced. x-examples: {} additionalProperties: true properties: id: type: string description: Unique transaction identifier to tie transactions back to clients' systems. description: type: string description: The raw description of the transaction. amount: type: number format: double description: The value of the transaction, denominated in the account's currency, as stated in `iso_currency_code`. 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. iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. enhancements: $ref: '#/components/schemas/Enhancements' required: - id - description - amount - iso_currency_code - enhancements ClientProvidedEnrichedTransaction: title: ClientProvidedEnrichedTransaction type: object description: A client-provided transaction that Plaid has enriched. x-examples: {} additionalProperties: true properties: id: type: string description: The unique ID for the transaction as provided by you in the request. client_user_id: x-hidden-from-docs: true type: string description: A unique user id used to group transactions for a given user, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. client_account_id: x-hidden-from-docs: true type: string description: A unique account id used to group transactions for a given account, as a unique identifier from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_account_id`. account_type: x-hidden-from-docs: true type: string description: The account type associated with the transaction. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). account_subtype: x-hidden-from-docs: true type: string description: The account subtype associated with the transaction. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). description: type: string description: The raw description of the transaction. amount: type: number format: double description: The absolute value of the transaction (>= 0) direction: $ref: '#/components/schemas/EnrichTransactionDirection' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction e.g. USD. enrichments: $ref: '#/components/schemas/Enrichments' client_customization: $ref: '#/components/schemas/ClientCustomization' required: - id - description - amount - iso_currency_code - enrichments PaymentChannel: title: Transaction Payment Channel type: string enum: - online - in store - other description: |- The channel used to make a payment. `online:` transactions that took place online. `in store:` transactions that were made at a physical location. `other:` transactions that relate to banks, e.g. fees or deposits. Enhancements: title: Enhancements type: object description: A grouping of the Plaid produced transaction enhancement fields. additionalProperties: true properties: merchant_name: type: string description: The name of the primary counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description. nullable: true website: type: string description: The website associated with this transaction, if available. nullable: true logo_url: type: string 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 description: The check number of the transaction. This field is only populated for check transactions. nullable: true payment_channel: $ref: '#/components/schemas/PaymentChannel' category_id: description: The ID of the category to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). type: string nullable: true category: type: array description: A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). items: type: string location: $ref: '#/components/schemas/Location' personal_finance_category: $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 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. items: $ref: '#/components/schemas/Counterparty' required: - payment_channel - location - category - category_id Enrichments: title: Enrichments type: object description: A grouping of the Plaid produced transaction enrichment fields. additionalProperties: true properties: check_number: x-hidden-from-docs: true type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true 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. items: $ref: '#/components/schemas/Counterparty' entity_id: type: string description: A unique, stable, Plaid-generated ID that maps to the primary counterparty. nullable: true legacy_category_id: deprecated: true description: |- The ID of the legacy category to which this transaction belongs. For a full list of legacy categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). We recommend using the `personal_finance_category` for transaction categorization to obtain the best results. type: string nullable: true legacy_category: deprecated: true nullable: true type: array description: |- A hierarchical array of the legacy categories to which this transaction belongs. For a full list of legacy categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). We recommend using the `personal_finance_category` for transaction categorization to obtain the best results. items: type: string location: $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 a 100×100 pixel PNG file. nullable: true merchant_name: type: string description: The name of the primary counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description. nullable: true payment_channel: $ref: '#/components/schemas/PaymentChannel' phone_number: type: string description: The phone number associated with the counterparty in E.164 format. If there is a location match (i.e. a street address is returned in the location object), the phone number will be location specific. nullable: true personal_finance_category: $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 a 100×100 pixel PNG file. website: type: string description: The website associated with this transaction. nullable: true required: - payment_channel - location - personal_finance_category - personal_finance_category_icon_url - logo_url - website - counterparties - merchant_name - phone_number TransactionsUserInsightsGetRequest: type: object description: TransactionsUserInsightsGetRequest defines the request schema for `/beta/transactions/user_insights/v1/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_user_id: type: string description: A unique client-provided `client_user_id` to retrieve insights for. required: - client_user_id TransactionsUserInsightsGetResponse: type: object description: TransactionsUserInsightsGetResponse defines the response schema for `/beta/transactions/user_insights/v1/get`. additionalProperties: true properties: user_data_overview: $ref: '#/components/schemas/UserDataOverview' counterparty_insights: $ref: '#/components/schemas/CounterpartyInsights' category_insights: $ref: '#/components/schemas/CategoryInsights' recurring_transactions: $ref: '#/components/schemas/RecurringTransactions' required: - user_data_overview UserDataOverview: type: object description: metadata for the set of insights provided in `TransactionsUserInsightsGetResponse` additionalProperties: true properties: transaction_count: type: integer description: The total number of transactions. oldest_transaction_date: type: string format: date description: The date of the oldest transaction processed to generate insights. newest_transaction_date: type: string format: date description: The date of the newest transaction processed to generate insights. days_available: type: integer description: The range of days of transactions available. total_outflows: type: number format: double description: Sum of outflow amounts. total_inflows: type: number format: double description: Sum of inflow amounts. required: - transaction_count - days_available - total_outflows - total_inflows CounterpartyInsights: type: object description: Insights around a user's counterparties additionalProperties: true properties: financial_institution_insights: type: array description: Insights related to a user's transactions with other financial institutions, including detected account types. items: $ref: '#/components/schemas/FinancialInstitutionInsights' merchant_insights: type: array description: Insights about a user's top merchants, ranked by spend. items: $ref: '#/components/schemas/MerchantInsights' FinancialInstitutionInsights: type: object description: Insights surrounding external financial institution counterparties associated with a user. properties: name: type: string description: Name of the financial institution counterparty. entity_id: type: string nullable: true description: A unique, stable, Plaid-generated id that maps to the counterparty. website: type: string nullable: true description: The website associated with the counterparty. detected_accounts: type: array description: Associated accounts, detected based on the nature of transfers to/from this institution. items: $ref: '#/components/schemas/DetectedAccount' required: - name - website - detected_accounts DetectedAccount: type: object description: A possible account detected to be associated with a transaction user. additionalProperties: true properties: account_type: type: string description: The detected account type (depository, credit, loan, investment etc.). nullable: true account_subtype: type: string description: The detected subtype of the account, based on the transactions to/from the institution. nullable: true transaction_count: type: integer description: The number of transactions associated with this detected account type at this financial institution. oldest_transaction_date: type: string format: date description: The date of the oldest transaction associated with this detected account type at this financial institution. newest_transaction_date: type: string format: date description: The date of the newest transaction associated with this detected account type at this financial institution. newest_transaction_amount: type: number format: double description: Amount of the most recent transaction associated with this detected account type at this financial institution. total_outflows: type: number format: double description: Sum of outflow amounts associated with this detected account type at this financial institution. total_inflows: type: number format: double description: Sum of inflow amounts associated with this detected account type at this financial institution. required: - account_type - account_subtype - transaction_count - total_outflows - total_inflows MerchantInsights: type: object description: Insights into a user's top merchants. properties: name: type: string description: The counterparty name. entity_id: type: string nullable: true description: A unique, stable, Plaid-generated id that maps to the merchant. website: type: string nullable: true description: The website associated with the merchant. transaction_count: type: integer description: The number of transactions associated with merchant of this type. personal_finance_category_primary: type: string nullable: true description: The primary personal finance category associated with this merchant. personal_finance_category_detailed: type: string nullable: true description: The detailed personal finance category associated with this merchant. total_outflows: type: number format: double description: Sum of outflow amounts. total_inflows: type: number format: double description: Sum of inflow amounts. required: - name - website - transaction_count - personal_finance_category_primary - personal_finance_category_detailed - total_outflows - total_inflows CategoryInsights: type: object description: Insights on a user's top personal finance categories. additionalProperties: true properties: primary_category_insights: type: array description: List of insights of top primary personal finance categories ranked by outflow. items: $ref: '#/components/schemas/CategoryInsightDetails' detailed_category_insights: type: array description: List of insights of top detailed personal finance categories ranked by outflow. items: $ref: '#/components/schemas/CategoryInsightDetails' CategoryInsightDetails: type: object description: Insights object for categories. additionalProperties: true properties: name: type: string description: Category name. transaction_count: type: integer description: The number of transactions associated with this category. total_outflows: type: number format: double description: Sum of outflow amounts. total_inflows: type: number format: double description: Sum of inflow amounts. top_counterparties: type: array description: The most common counterparties associated with this category sorted by outflow. items: type: string required: - name - transaction_count - total_outflows - total_inflows RecurringTransactions: type: object description: Insights object for recurring transactions for `/beta/transactions/user_insights/v1/get` endpoint additionalProperties: true properties: inflow_streams: type: array description: An array of inflow transaction streams (e.g., income). items: $ref: '#/components/schemas/RecurringInsightsStream' outflow_streams: type: array description: An array of outflow transaction streams (e.g., subscriptions, bills, loan payments). items: $ref: '#/components/schemas/RecurringInsightsStream' required: - inflow_streams - outflow_streams RecurringInsightsStream: type: object description: Insights object for recurring transactions streams. additionalProperties: true properties: stream_id: type: string description: A unique id for the stream. description: type: string description: The client-provided raw description of the most recent transaction in the stream. merchant_name: type: string description: The merchant or primary counterparty associated with the transaction stream. oldest_transaction_date: type: string format: date description: The posted date of the earliest transaction in the stream. newest_transaction_date: type: string format: date description: The posted date of the latest transaction in the stream. average_days_apart: type: number format: double description: The average number of days between each of the recurring transactions. frequency: $ref: '#/components/schemas/RecurringTransactionFrequency' transaction_count: type: integer description: The number of transactions in this stream. transaction_ids: type: array description: An array of Plaid transaction IDs belonging to the stream, sorted by posted date. items: type: string average_amount: $ref: '#/components/schemas/TransactionStreamAmount' newest_transaction_amount: $ref: '#/components/schemas/TransactionStreamAmount' is_active: type: boolean description: Indicates whether the transaction stream is still live. status: $ref: '#/components/schemas/TransactionStreamStatus' personal_finance_category_primary: type: string description: The primary category associated with the transaction stream. personal_finance_category_detailed: type: string description: The detailed category associated with the transaction stream. required: - stream_id - merchant_name - average_days_apart - is_active BetaEwaReportV1GetRequest: x-hidden-from-docs: true type: object description: BetaEwaReportV1GetRequest defines the request schema for `/beta/ewa_report/v1/get` properties: access_token: $ref: '#/components/schemas/AccessToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - access_token BetaEwaReportV1GetResponse: x-hidden-from-docs: true type: object description: BetaEwaReportV1GetResponse defines the response schema for `/beta/ewa_report/v1/get` properties: request_id: $ref: '#/components/schemas/RequestID' ewa_report_id: type: string description: Unique identifier for the generated EWA score group. generation_time: type: string format: date-time 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)`. items: $ref: '#/components/schemas/EwaScore' ewa_attributes: $ref: '#/components/schemas/EwaAttributes' additionalProperties: true EwaAttributes: x-hidden-from-docs: true type: object nullable: true additionalProperties: type: number nullable: true description: A set of attributes providing context about the factors that contributed to the EWA scores. Each key is the attribute name and the value is its numeric score, or null if the attribute could not be computed. EwaScore: x-hidden-from-docs: true type: object description: EwaScore represents an earned wage access score for a specific advance amount range. properties: lowest_amount: type: number format: float description: Float value representing the lower bound (inclusive) of the advance amount range associated with a specific EWA score. highest_amount: type: number format: float description: Float value representing the upper bound (exclusive) of the advance amount range associated with a specific EWA score. score: type: integer description: EWA score for the corresponding amount bucket. Scores range from 1-99, where a higher score indicates a higher likelihood of repayment. additionalProperties: true IssuesSearchRequest: type: object description: IssuesSearchRequest defines the request schema for `/issues/search`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' item_id: type: string description: A unique identifier for the Plaid Item. link_session_id: type: string description: A unique identifier for the Link session. link_session_request_id: type: string description: The `request_id` for the Link session that might have had an institution connection issue. IssuesSearchResponse: type: object description: IssuesSearchResponse defines the response schema for `/issues/search`. additionalProperties: true properties: issues: type: array items: $ref: '#/components/schemas/Issue' description: A list of issues affecting the Item, session, or request passed in, conforming to the Issues data model. An empty list indicates that no matching issues were found. request_id: $ref: '#/components/schemas/RequestID' IssuesSubscribeRequest: type: object description: IssuesSubscribeRequest defines the request schema for `/issues/subscribe`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' issue_id: type: string description: The unique identifier of the issue to subscribe to. webhook: type: string description: The webhook URL where notifications should be sent when the issue status changes. required: - issue_id - webhook IssuesSubscribeResponse: type: object description: IssuesSubscribeResponse defines the response schema for `/issues/subscribe`. additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id IssuesStatus: type: string enum: - REPORTED - AWAITING_RESOLUTION - FIX_IN_PROGRESS - FIX_PENDING_VALIDATION - CANNOT_FIX - RESOLVED description: The current status of the issue. Issue: type: object description: Information on an issue encountered with financial institution interactions during Linking. additionalProperties: true properties: issue_id: type: string description: The unique identifier of the issue. institution_names: type: array items: type: string description: A list of names of the financial institutions affected. institution_ids: type: array items: type: string description: A list of ids of the financial institutions affected. created_at: type: string format: date-time description: The creation time of the record tracking this issue. summary: type: string description: A simple summary of the error for the end user. detailed_description: type: string description: A more detailed description for the customer. status: $ref: '#/components/schemas/IssuesStatus' IssuesGetRequest: type: object description: IssuesGetRequest defines the request schema for `/issues/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' issue_id: type: string description: The unique identifier of the issue to retrieve. required: - issue_id IssuesGetResponse: type: object description: IssuesGetResponse defines the response schema for `/issues/get`. additionalProperties: true properties: issue: $ref: '#/components/schemas/Issue' request_id: $ref: '#/components/schemas/RequestID' UserTransactionsRefreshRequest: type: object description: UserTransactionsRefreshRequest defines the request schema for `/user/transactions/refresh` properties: user_id: type: string description: A Plaid-generated ID that identifies the end user. client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - user_id UserTransactionsRefreshResponse: type: object description: UserTransactionsRefreshResponse defines the response schema for `/user/transactions/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' user_id: type: string description: The user ID associated with the refresh request. results: type: array items: $ref: '#/components/schemas/RefreshResult' additionalProperties: true UserFinancialDataRefreshRequest: type: object description: UserFinancialDataRefreshRequest defines the request schema for `/user/financial_data/refresh` properties: user_id: type: string description: A Plaid-generated ID that identifies the end user. client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - user_id UserFinancialDataRefreshResponse: type: object description: UserFinancialDataRefreshResponse defines the response schema for `/user/financial_data/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' user_id: type: string description: The user ID associated with the refresh request. results: type: array items: $ref: '#/components/schemas/RefreshResult' additionalProperties: true RefreshResult: type: object description: RefreshResult represents the result status of a user refresh for a specific item. properties: item_id: type: string description: A unique identifier for the Plaid Item. product: type: string description: The product for which the refresh was attempted. error: $ref: '#/components/schemas/PlaidError' additionalProperties: true PaymentProfileCreateRequest: type: object description: PaymentProfileCreateRequest defines the request schema for `/payment_profile/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' PaymentProfileCreateResponse: type: object additionalProperties: true description: PaymentProfileCreateResponse defines the response schema for `/payment_profile/create` properties: payment_profile_token: $ref: '#/components/schemas/PaymentProfileToken' request_id: $ref: '#/components/schemas/RequestID' required: - payment_profile_token - request_id PaymentProfileToken: type: string title: PaymentProfileToken description: A payment profile token associated with the Payment Profile data that is being requested. x-hidden-from-docs: true PaymentProfileGetRequest: type: object description: PaymentProfileGetRequest defines the request schema for `/payment_profile/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_profile_token: $ref: '#/components/schemas/PaymentProfileToken' required: - payment_profile_token PaymentProfileGetResponse: type: object additionalProperties: true description: PaymentProfileGetResponse defines the response schema for `/payment_profile/get` properties: updated_at: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time the given Payment Profile was updated at created_at: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the time the given Payment Profile was created at deleted_at: type: string nullable: true format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the time the given Payment Profile was deleted at. Always `null` if the Payment Profile has not been deleted status: $ref: '#/components/schemas/PaymentProfileStatus' request_id: $ref: '#/components/schemas/RequestID' required: - request_id - status - created_at - updated_at - deleted_at PaymentProfileStatus: type: string enum: - PENDING - READY - REMOVED description: |- The status of the given Payment Profile. `READY`: This Payment Profile is ready to be used to create transfers using `/transfer/authorization/create` and `/transfer/create`. `PENDING`: This Payment Profile is not ready to be used. You'll need to call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field to initiate the account linking experience. `REMOVED`: This Payment Profile has been removed. PaymentProfileRemoveRequest: type: object description: PaymentProfileRemoveRequest defines the request schema for `/payment_profile/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_profile_token: $ref: '#/components/schemas/PaymentProfileToken' required: - payment_profile_token PaymentProfileRemoveResponse: type: object additionalProperties: true description: PaymentProfileRemoveResponse defines the response schema for `/payment_profile/remove` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id PartnerCustomerCreateRequest: description: Request schema for `/partner/customer/create`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' company_name: description: The company name of the end customer being created. This will be used to display the end customer in the Plaid Dashboard. It will not be shown to end users. type: string is_diligence_attested: description: Denotes whether or not the partner has completed attestation of diligence for the end customer to be created. type: boolean products: description: The products to be enabled for the end customer. If empty or `null`, this field will default to the products enabled for the reseller at the time this endpoint is called. type: array items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - balance - identity - income_verification - investments - investments_auth - liabilities - transactions - employment - cra_base_report - cra_income_insights - cra_partner_insights create_link_customization: description: |- If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid account manager for assistance. Important: Data Transparency Messaging (DTM) use cases will not be copied to the end customer's Link customization unless the **Publish changes** button is clicked after the use cases are applied. Link will not work in Production unless the end customer's DTM use cases are configured. For more details, see [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/). type: boolean logo: description: Base64-encoded representation of the end customer's logo. Must be a PNG of size 1024x1024 under 4MB. The logo will be shared with financial institutions and shown to the end user during Link flows. A logo is required if `create_link_customization` is `true`. If `create_link_customization` is `false` and the logo is omitted, the partner's logo will be used if one exists, otherwise a stock logo will be used. type: string legal_entity_name: description: The end customer's legal name. This will be shared with financial institutions as part of the OAuth registration process. It will not be shown to end users. type: string website: description: The end customer's website. type: string application_name: description: The name of the end customer's application. This will be shown to end users when they go through the Plaid Link flow. The application name must be unique and cannot match the name of another application already registered with Plaid. type: string technical_contact: $ref: '#/components/schemas/PartnerEndCustomerTechnicalContact' billing_contact: $ref: '#/components/schemas/PartnerEndCustomerBillingContact' customer_support_info: $ref: '#/components/schemas/PartnerEndCustomerCustomerSupportInfo' address: $ref: '#/components/schemas/PartnerEndCustomerAddress' is_bank_addendum_completed: description: Denotes whether the partner has forwarded the Plaid bank addendum to the end customer. type: boolean assets_under_management: $ref: '#/components/schemas/PartnerEndCustomerAssetsUnderManagement' redirect_uris: description: A list of URIs indicating the destination(s) where a user can be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. URIs should not contain any query parameters. When used in Production, URIs must use https. To modify redirect URIs for an end customer after creating them, go to the end customer's [API page](https://dashboard.plaid.com/team/api) in the Dashboard. type: array items: type: string registration_number: description: The unique identifier assigned to a financial institution by regulatory authorities, if applicable. For banks, this is the FDIC Certificate Number. For credit unions, this is the Credit Union Charter Number. type: string required: - company_name - is_diligence_attested - legal_entity_name - website - application_name - address - is_bank_addendum_completed PartnerCustomerCreateResponse: description: Response schema for `/partner/customer/create`. type: object additionalProperties: true properties: end_customer: $ref: '#/components/schemas/PartnerEndCustomerWithSecrets' request_id: $ref: '#/components/schemas/RequestID' PartnerCustomerGetRequest: description: Request schema for `/partner/customer/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string required: - end_customer_client_id PartnerCustomerGetResponse: description: Response schema for `/partner/customer/get`. type: object additionalProperties: true properties: end_customer: $ref: '#/components/schemas/PartnerEndCustomer' request_id: $ref: '#/components/schemas/RequestID' PartnerCustomerEnableRequest: description: Request schema for `/partner/customer/enable`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string required: - end_customer_client_id PartnerCustomerEnableResponse: description: Response schema for `/partner/customer/enable`. type: object additionalProperties: true properties: production_secret: description: The end customer's secret key for the Production environment. type: string request_id: $ref: '#/components/schemas/RequestID' PartnerCustomerRemoveRequest: description: Request schema for `/partner/customer/remove`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string description: The `client_id` of the end customer to be removed. required: - end_customer_client_id PartnerCustomerRemoveResponse: description: Response schema for `/partner/customer/remove`. type: object additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' PartnerCustomerOAuthInstitutionsGetRequest: description: Request schema for `/partner/customer/oauth_institutions/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string required: - end_customer_client_id PartnerCustomerOAuthInstitutionsGetResponse: description: Response schema for `/partner/customer/oauth_institutions/get`. type: object additionalProperties: true properties: flowdown_status: $ref: '#/components/schemas/PartnerEndCustomerFlowdownStatus' questionnaire_status: $ref: '#/components/schemas/PartnerEndCustomerQuestionnaireStatus' institutions: type: array description: The OAuth institutions with which the end customer's application is being registered. items: $ref: '#/components/schemas/PartnerEndCustomerOAuthInstitution' request_id: $ref: '#/components/schemas/RequestID' PartnerEndCustomerFlowdownStatus: type: string enum: - NOT_STARTED - IN_REVIEW - NEGOTIATION - COMPLETE description: The status of the addendum to the Plaid MSA ("flowdown") for the end customer. PartnerEndCustomerQuestionnaireStatus: type: string enum: - NOT_STARTED - RECEIVED - COMPLETE description: The status of the end customer's security questionnaire. PartnerEndCustomerOAuthInstitution: description: The OAuth registration information for an institution. type: object additionalProperties: true properties: name: type: string institution_id: type: string environments: $ref: '#/components/schemas/PartnerEndCustomerOAuthInstitutionEnvironments' production_enablement_date: type: string description: The date on which the end customer's application was approved by the institution, or an empty string if their application has not yet been approved. nullable: true classic_disablement_date: type: string description: The date on which non-OAuth Item adds will no longer be supported for this institution, or an empty string if no such date has been set by the institution. nullable: true errors: type: array description: The errors encountered while registering the end customer's application with the institutions. items: $ref: '#/components/schemas/PlaidError' PartnerEndCustomerOAuthInstitutionEnvironments: description: Registration statuses by environment. type: object additionalProperties: true properties: development: $ref: '#/components/schemas/PartnerEndCustomerOAuthInstitutionApplicationStatus' production: $ref: '#/components/schemas/PartnerEndCustomerOAuthInstitutionApplicationStatus' PartnerEndCustomerOAuthInstitutionApplicationStatus: type: string enum: - NOT_STARTED - PROCESSING - APPROVED - ENABLED - ATTENTION_REQUIRED description: The registration status for the end customer's application. PartnerEndCustomer: description: The details for an end customer. type: object additionalProperties: true properties: client_id: type: string description: The `client_id` of the end customer. company_name: type: string description: The company name associated with the end customer. status: $ref: '#/components/schemas/PartnerEndCustomerStatus' PartnerEndCustomerWithSecrets: description: The details for the newly created end customer, including secrets for non-Production environments. type: object additionalProperties: true allOf: - $ref: '#/components/schemas/PartnerEndCustomer' - type: object properties: secrets: $ref: '#/components/schemas/PartnerEndCustomerSecrets' PartnerEndCustomerStatus: type: string enum: - UNDER_REVIEW - PENDING_ENABLEMENT - ACTIVE - DENIED - MORE_INFORMATION_NEEDED x-override-enum-values-shown: - UNDER_REVIEW - PENDING_ENABLEMENT - ACTIVE - DENIED description: |- The status of the given end customer. `UNDER_REVIEW`: The end customer has been created and enabled in the Sandbox environment. The end customer must be manually reviewed by the Plaid team before it can be enabled in Production, at which point its status will automatically transition to `PENDING_ENABLEMENT` or `DENIED`. `PENDING_ENABLEMENT`: The end customer is ready to be fully enabled in the Production environment. Call the `/partner/customer/enable` endpoint to enable the end customer in full Production. `ACTIVE`: The end customer has been fully enabled in all environments. `DENIED`: The end customer has been created and enabled in the Sandbox environment, but it did not pass review by the Plaid team and therefore cannot be enabled for Production access. Talk to your account manager for more information. PartnerEndCustomerSecrets: description: The secrets for the newly created end customer. type: object additionalProperties: true properties: sandbox: description: The end customer's secret key for the Sandbox environment. type: string development: description: The end customer's secret key for the Development environment. The Development environment has been removed. type: string deprecated: true x-hidden-from-docs: true production: description: The end customer's secret key for the Production environment. The end customer will be provided with a limited number of credits to test in the Production environment before full enablement. type: string PartnerEndCustomerTechnicalContact: description: The technical contact for the end customer. Defaults to partner's technical contact if omitted. type: object additionalProperties: true properties: given_name: type: string family_name: type: string email: type: string PartnerEndCustomerCustomerSupportInfo: description: This information is public. Users of your app will see this information when managing connections between your app and their bank accounts in Plaid Portal. Defaults to partner's customer support info if omitted. This field is mandatory for partners whose Plaid accounts were created after November 26, 2024 and will be mandatory for all partners by the 1033 compliance deadline. type: object additionalProperties: true properties: email: type: string description: This field is mandatory for partners whose Plaid accounts were created after November 26, 2024 and will be mandatory for all partners by the 1033 compliance deadline. phone_number: type: string contact_url: type: string link_update_url: type: string PartnerEndCustomerAssetsUnderManagement: description: Assets under management for the given end customer. Required for end customers with monthly service commitments. type: object additionalProperties: true properties: amount: type: number format: double iso_currency_code: type: string required: - amount - iso_currency_code PartnerEndCustomerBillingContact: description: The billing contact for the end customer. Defaults to partner's billing contact if omitted. type: object additionalProperties: true properties: given_name: type: string family_name: type: string email: type: string PartnerEndCustomerAddress: description: The end customer's address. type: object additionalProperties: true properties: city: type: string street: type: string region: type: string postal_code: type: string country_code: description: ISO-3166-1 alpha-2 country code standard. type: string BetaPartnerCustomerV1CreateRequest: description: Request schema for `/beta/partner/customer/v1/create`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' company_name: description: The company name of the end customer being created. This will be used to display the end customer in the Plaid Dashboard. It will not be shown to end users. type: string is_diligence_attested: description: Denotes whether or not the partner has completed attestation of diligence for the end customer to be created. type: boolean products: description: The products to be enabled for the end customer. If empty or `null`, this field will default to the products enabled for the reseller at the time this endpoint is called. type: array items: $ref: '#/components/schemas/Products' create_link_customization: description: |- If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid account manager for assistance. Important: Data Transparency Messaging (DTM) use cases will not be copied to the end customer's Link customization unless the **Publish changes** button is clicked after the use cases are applied. Link will not work in Production unless the end customer's DTM use cases are configured. For more details, see [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/). type: boolean logo: description: Base64-encoded representation of the end customer's logo. Must be a PNG of size 1024x1024 under 4MB. The logo will be shared with financial institutions and shown to the end user during Link flows. A logo is required if `create_link_customization` is `true`. If `create_link_customization` is `false` and the logo is omitted, the partner's logo will be used if one exists, otherwise a stock logo will be used. type: string legal_entity_name: description: The end customer's legal name. This will be shared with financial institutions as part of the OAuth registration process. It will not be shown to end users. type: string website: description: The end customer's website. type: string application_name: description: The name of the end customer's application. This will be shown to end users when they go through the Plaid Link flow. The application name must be unique and cannot match the name of another application already registered with Plaid. type: string technical_contact: $ref: '#/components/schemas/PartnerEndCustomerTechnicalContact' billing_contact: $ref: '#/components/schemas/PartnerEndCustomerBillingContact' customer_support_info: $ref: '#/components/schemas/PartnerEndCustomerCustomerSupportInfo' address: $ref: '#/components/schemas/PartnerEndCustomerAddress' redirect_uris: description: A list of URIs indicating the destination(s) where a user can be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. URIs should not contain any query parameters. When used in Production, URIs must use https. To modify redirect URIs for an end customer after creating them, go to the end customer's [API page](https://dashboard.plaid.com/team/api) in the Dashboard. type: array items: type: string bank_addendum_acceptance: $ref: '#/components/schemas/PartnerEndCustomerBankAddendumAcceptance' questionnaires: $ref: '#/components/schemas/PartnerEndCustomerQuestionnaires' required: - company_name - website - application_name - address - customer_support_info BetaPartnerCustomerV1CreateResponse: description: Response schema for `/beta/partner/customer/v1/create`. type: object additionalProperties: true properties: end_customer: $ref: '#/components/schemas/BetaPartnerEndCustomerWithSecrets' request_id: $ref: '#/components/schemas/RequestID' BetaPartnerEndCustomerWithSecrets: description: The details for the newly created end customer, including secrets for non-Production environments. type: object additionalProperties: true allOf: - $ref: '#/components/schemas/BetaPartnerEndCustomer' - type: object properties: secrets: $ref: '#/components/schemas/PartnerEndCustomerSecrets' BetaPartnerEndCustomer: description: The details for an end customer. type: object additionalProperties: true properties: client_id: type: string description: The `client_id` of the end customer. company_name: type: string description: The company name associated with the end customer. status: $ref: '#/components/schemas/PartnerEndCustomerStatus' product_statuses: $ref: '#/components/schemas/PartnerEndCustomerProductStatuses' requirements_due: $ref: '#/components/schemas/PartnerEndCustomerRequirementsDue' PartnerEndCustomerProductStatuses: description: Mapping of product names to their current status. type: object additionalProperties: true PartnerEndCustomerRequirementsDue: description: A list of fields that are still required to be submitted. type: array items: $ref: '#/components/schemas/PartnerEndCustomerRequirementDue' PartnerEndCustomerRequirementDue: description: A field that may be required to be submitted for enablement. type: string enum: - legal_entity_name - website - application_name - is_diligence_attested - technical_contact - billing_contact - address - bank_addendum_acceptance - questionnaires.cra PartnerEndCustomerBankAddendumAcceptance: description: The bank addendum acceptance for the end customer. type: object additionalProperties: true properties: customer_accepted: type: boolean description: Denotes whether the end customer has accepted the bank addendum terms. customer_ip_address: type: string description: The IP address of the end customer when they accepted the bank addendum. customer_agreement_timestamp: type: string format: date-time description: The timestamp of when the end customer accepted the bank addendum in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`). PartnerEndCustomerQuestionnaires: description: The questionnaires for the end customer. type: object additionalProperties: true properties: cra: $ref: '#/components/schemas/PartnerEndCustomerCRAQuestionnaire' PartnerEndCustomerCRAQuestionnaire: description: The CRA questionnaire for the end customer. type: object additionalProperties: true properties: purposes: $ref: '#/components/schemas/PartnerEndCustomerCRAPurposes' is_third_party_involved: type: boolean description: Denotes whether the third party is involved. is_technical_service_provider_involved: type: boolean description: Denotes whether the technical service provider is involved. PartnerEndCustomerCRAPurposes: description: A map of permissible purposes to their corresponding use cases. type: object additionalProperties: true properties: WRITTEN_INSTRUCTION: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' EMPLOYMENT: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' INSURANCE_UNDERWRITING: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' LICENSE_ELIGIBILITY: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' RISK_ASSESSMENT: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' BUSINESS_NEED_TRANSACTION: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' BUSINESS_NEED_ACCOUNT_REVIEW: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCases' PartnerEndCustomerCRAUseCases: description: The list of use cases associated with a given permissible purpose. type: object properties: use_cases: type: array description: List of use cases for the given permissible purpose. items: $ref: '#/components/schemas/PartnerEndCustomerCRAUseCase' PartnerEndCustomerCRAUseCase: description: A CRA use case under a permissible purpose. type: string enum: - CREDIT_UNDERWRITING - TENANT_SCREENING - INVESTOR_OR_SERVICER_OF_CREDIT - UTILITIES - BANK_ACCOUNT_OPENING - IDENTITY_VERIFICATION_FRAUD_PREVENTION - COLLECTIONS_DEBT_RECOVERY BetaPartnerCustomerV1GetRequest: description: Request schema for `/beta/partner/customer/v1/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string required: - end_customer_client_id BetaPartnerCustomerV1GetResponse: description: Response schema for `/beta/partner/customer/v1/get`. type: object additionalProperties: true properties: end_customer: $ref: '#/components/schemas/BetaPartnerEndCustomer' request_id: $ref: '#/components/schemas/RequestID' BetaPartnerCustomerV1UpdateRequest: description: Request schema for `/beta/partner/customer/v1/update`. type: object additionalProperties: true properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string legal_entity_name: type: string redirect_uris: type: array items: type: string bank_addendum_acceptance: $ref: '#/components/schemas/PartnerEndCustomerBankAddendumAcceptance' questionnaires: $ref: '#/components/schemas/PartnerEndCustomerQuestionnaires' required: - end_customer_client_id BetaPartnerCustomerV1UpdateResponse: description: Response schema for `/beta/partner/customer/v1/update`. type: object additionalProperties: true properties: end_customer: $ref: '#/components/schemas/BetaPartnerEndCustomer' request_id: $ref: '#/components/schemas/RequestID' BetaPartnerCustomerV1EnableRequest: description: Request schema for `/beta/partner/customer/v1/enable`. type: object additionalProperties: true properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' end_customer_client_id: type: string products: type: array items: $ref: '#/components/schemas/Products' required: - end_customer_client_id BetaPartnerCustomerV1EnableResponse: description: Response schema for `/beta/partner/customer/v1/enable`. type: object additionalProperties: true properties: end_customer_client_id: type: string status: $ref: '#/components/schemas/PartnerEndCustomerStatus' product_statuses: $ref: '#/components/schemas/PartnerEndCustomerProductStatuses' production_secret: type: string request_id: $ref: '#/components/schemas/RequestID' LinkDeliverySessionStatus: type: string enum: - CREATED - OPENED - EXITED - COMPLETED - EXPIRED description: |- The status of the given Hosted Link session. `CREATED`: The session is created but not yet accessed by the user `OPENED`: The session is opened by the user but not yet completed `EXITED`: The session has been exited by the user `COMPLETED`: The session has been completed by the user `EXPIRED`: The session has expired LinkDeliveryDeliveryMethod: type: string enum: - SMS - EMAIL description: |- The delivery method to be used to deliver the Hosted Link session URL. `SMS`: The URL will be delivered through SMS `EMAIL`: The URL will be delivered through email LinkDeliveryCommunicationMethod: type: object description: The communication method containing both the type and address to send the URL. properties: method: $ref: '#/components/schemas/LinkDeliveryDeliveryMethod' address: type: string description: The phone number / email address that Hosted Link sessions are delivered to. Phone numbers must be in E.164 format. LinkDeliveryRecipient: type: object description: Metadata related to the recipient. If the information required to populate this field is not available, leave it blank. properties: communication_methods: type: array items: $ref: '#/components/schemas/LinkDeliveryCommunicationMethod' description: The list of communication methods to send the Hosted Link session URL to. If delivery is not required, leave this field blank. first_name: type: string description: First name of the recipient. Will be used in the body of the email / text (if configured). If this information is not available, leave this field blank. LinkDeliveryOptions: type: object description: Optional metadata related to the Hosted Link session properties: recipient: $ref: '#/components/schemas/LinkDeliveryRecipient' LinkDeliveryCreateRequest: type: object description: LinkDeliveryCreateRequest defines the request schema for `/link_delivery/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' link_token: type: string description: A `link_token` from a previous invocation of `/link/token/create`. options: $ref: '#/components/schemas/LinkDeliveryOptions' required: - link_token LinkDeliveryCreateResponse: type: object additionalProperties: true description: LinkDeliveryCreateResponse defines the response schema for `/link_delivery/create` properties: link_delivery_url: type: string description: The URL to the Hosted Link session, which will be delivered by the specified delivery method. link_delivery_session_id: type: string description: The ID for the Hosted Link session. Same as the `link_token` string excluding the "link-{env}-" prefix. request_id: $ref: '#/components/schemas/RequestID' required: - link_delivery_url - link_delivery_session_id - request_id LinkDeliveryGetRequest: type: object description: LinkDeliveryGetRequest defines the request schema for `/link_delivery/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' link_delivery_session_id: type: string description: The ID for the Hosted Link session from a previous invocation of `/link_delivery/create`. required: - link_delivery_session_id LinkDeliveryGetResponse: type: object additionalProperties: true description: LinkDeliveryGetResponse defines the response schema for `/link_delivery/get` properties: status: $ref: '#/components/schemas/LinkDeliverySessionStatus' created_at: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the time the given Hosted Link session was created at. completed_at: type: string format: date-time nullable: true description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the time the given Hosted Link session was completed at. request_id: $ref: '#/components/schemas/RequestID' access_tokens: type: array items: $ref: '#/components/schemas/AccessToken' nullable: true description: An array of access tokens associated with the Hosted Link session. item_ids: type: array items: $ref: '#/components/schemas/ItemId' nullable: true description: An array of `item_id`s associated with the Hosted Link session. required: - status - created_at - request_id LinkUserDeliveryStatusWebhook: title: LinkUserDeliveryStatusWebhook x-hidden-from-docs: true description: Webhook indicating that the status of the delivery of the Hosted Link session to a user type: object additionalProperties: true properties: webhook_type: type: string description: '`LINK_DELIVERY`' webhook_code: type: string description: '`DELIVERY_STATUS`' link_delivery_session_id: type: string description: The ID of the Hosted Link session. timestamp: type: string description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. link_delivery_metadata: $ref: '#/components/schemas/LinkDeliveryMetadata' required: - webhook_type - webhook_code - link_delivery_session_id - timestamp - link_delivery_metadata x-examples: {} LinkDeliveryCallbackWebhook: title: LinkDeliveryCallbackWebhook x-hidden-from-docs: true description: Webhook containing metadata proxied over from Link callback e.g. `onEvent`, `onExit`, `onSuccess`. type: object additionalProperties: true properties: webhook_type: type: string description: '`LINK_DELIVERY`' webhook_code: type: string description: '`LINK_CALLBACK`' link_delivery_session_id: type: string description: The ID of the Hosted Link session. timestamp: type: string description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. error: $ref: '#/components/schemas/PlaidError' link_callback_metadata: $ref: '#/components/schemas/LinkCallbackMetadata' required: - webhook_type - webhook_code - link_delivery_session_id - timestamp - link_callback_metadata x-examples: {} CreditCategory: title: CreditCategory nullable: true type: object additionalProperties: true description: |- Information describing the intent of the transaction. Most relevant for credit use cases, but not limited to such use cases. See the [`taxonomy csv file`](https://plaid.com/documents/credit-category-taxonomy.csv) for a full list of credit categories. properties: primary: type: string description: A high level category that communicates the broad category of the transaction. detailed: type: string description: A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category. required: - primary - detailed UserAccountRevokedWebhook: title: UserAccountRevokedWebhook type: object additionalProperties: true description: |- The `USER_ACCOUNT_REVOKED` webhook is fired when an end user has revoked access to their account on the Data Provider's portal. This webhook is currently sent only for PNC Items, but may be sent in the future for other financial institutions that allow account-level permissions revocation through their portals. Upon receiving this webhook, it is recommended to delete any Plaid-derived data you have stored that is associated with the revoked account. If you are using Auth and receive this webhook, this webhook indicates that the TAN associated with the revoked account is no longer valid and cannot be used to create new transfers. You should not create new ACH transfers for the account that was revoked until access has been re-granted. You can request the user to re-grant access to their account by sending them through [update mode](https://plaid.com/docs/link/update-mode). Alternatively, they may re-grant access directly through the Data Provider's portal. After the user has re-granted access, Auth customers should call the auth endpoint again to obtain the new TAN. x-examples: example-1: webhook_type: ITEM webhook_code: USER_ACCOUNT_REVOKED item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J user_id: usr_9nSp2KuZ2x4JDw environment: production properties: webhook_type: type: string description: '`ITEM`' webhook_code: type: string description: '`USER_ACCOUNT_REVOKED`' item_id: $ref: '#/components/schemas/ItemId' user_id: $ref: '#/components/schemas/UserId' account_id: type: string description: The external account ID of the affected account environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - account_id - environment StatementsRefreshCompleteWebhook: type: object title: StatementsRefreshCompleteWebhook description: Fired when refreshed statements extraction is completed or failed to be completed. Triggered by calling `/statements/refresh`. additionalProperties: true properties: webhook_type: type: string description: '`STATEMENTS`' webhook_code: type: string description: '`STATEMENTS_REFRESH_COMPLETE`' item_id: type: string description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. result: $ref: '#/components/schemas/StatementsRefreshCompleteResult' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - item_id - result - environment x-examples: example-1: webhook_type: STATEMENTS webhook_code: STATEMENTS_REFRESH_COMPLETE item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 result: SUCCESS environment: production StatementsRefreshCompleteResult: type: string enum: - SUCCESS - FAILURE 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`. `FAILURE`: The statements failed to be extracted. CashFlowUpdatesEventWebhookCodes: type: string enum: - LARGE_DEPOSIT_DETECTED - LOW_BALANCE_DETECTED - NEW_LOAN_PAYMENT_DETECTED - NSF_OVERDRAFT_DETECTED description: Webhook code for a Cash Flow Updates event. CashFlowUpdatesInsightsWebhook: title: CashFlowUpdatesInsightsWebhook type: object deprecated: true additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire between one and four times a day with information on the status of the update. This webhook will not fire immediately upon enrollment in Cash Flow Updates. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. At approximately the same time as the `INSIGHTS_UPDATED` webhook, any event-driven `CASH_FLOW_UPDATES` webhooks (e.g. `LOW_BALANCE_DETECTED`, `LARGE_DEPOSIT_DETECTED`) that were triggered by the update will also fire. This webhook has been replaced by the `CASH_FLOW_INSIGHTS_UPDATED` webhook for all customers who began using Plaid Check on or after December 10, 2025. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`INSIGHTS_UPDATED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: INSIGHTS_UPDATED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesNSFWebhook: title: CashFlowUpdatesNSFWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update includes an NSF overdraft transaction. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`NSF_OVERDRAFT_DETECTED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: NSF_OVERDRAFT_DETECTED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesNewIncomeStreamWebhook: title: CashFlowUpdatesNewIncomeStreamWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update includes a new income stream. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`NEW_INCOME_STREAM_DETECTED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: NEW_INCOME_STREAM_DETECTED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesExpectedDepositMissedWebhook: title: CashFlowUpdatesExpectedDepositMissedWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects that an expected deposit was missed. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`EXPECTED_DEPOSIT_MISSED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: EXPECTED_DEPOSIT_MISSED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesLowBalanceWebhook: title: CashFlowUpdatesLowBalanceWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a balance below $100. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`LOW_BALANCE_DETECTED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: LOW_BALANCE_DETECTED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesLargeDepositWebhook: title: CashFlowUpdatesLargeDepositWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a deposit over $5,000. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`LARGE_DEPOSIT_DETECTED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: LARGE_DEPOSIT_DETECTED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesNewLoanPaymentWebhook: title: CashFlowUpdatesNewLoanPaymentWebhook deprecated: true type: object additionalProperties: true description: For each user's Item enabled for Cash Flow Updates, this webhook will fire when an update detects a new loan payment. Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`NEW_LOAN_PAYMENT_DETECTED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` that the report is associated with environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: NEW_LOAN_PAYMENT_DETECTED status: AVAILABLE user_id: 9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334 environment: production CashFlowUpdatesInsightsV2Webhook: title: CashFlowUpdatesInsightsV2Webhook type: object additionalProperties: true description: For each item on an enabled user, this webhook will fire up to four times a day with status information. This webhook will not fire immediately upon enrollment in Cash Flow Updates. The payload may contain an `insights` array with insights that have been detected, if any (e.g. `LOW_BALANCE_DETECTED`, `LARGE_DEPOSIT_DETECTED`). Upon receiving the webhook, call `/cra/monitoring_insights/get` to retrieve the updated insights. properties: webhook_type: type: string description: '`CASH_FLOW_UPDATES`' webhook_code: type: string description: '`CASH_FLOW_INSIGHTS_UPDATED`' status: $ref: '#/components/schemas/MonitoringInsightsStatus' user_id: type: string description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. insights: type: array items: $ref: '#/components/schemas/CashFlowInsight' description: |- Array containing the insights detected within the generated report, if any. Possible values include: `LARGE_DEPOSIT_DETECTED`: signaling a deposit over $5,000 `LOW_BALANCE_DETECTED`: signaling a balance below $100 `NEW_LOAN_PAYMENT_DETECTED`: signaling a new loan payment `NSF_OVERDRAFT_DETECTED`: signaling an NSF overdraft environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - user_id - insights - environment x-examples: example-1: webhook_type: CASH_FLOW_UPDATES webhook_code: CASH_FLOW_INSIGHTS_UPDATED status: AVAILABLE user_id: usr_6009db6e insights: - LARGE_DEPOSIT_DETECTED - LOW_BALANCE_DETECTED - NEW_LOAN_PAYMENT_DETECTED - NSF_OVERDRAFT_DETECTED environment: sandbox example-2: webhook_type: CASH_FLOW_UPDATES webhook_code: CASH_FLOW_INSIGHTS_UPDATED status: FAILED user_id: usr_6009db6e insights: [] environment: sandbox CashFlowInsight: title: CashFlowInsight enum: - LARGE_DEPOSIT_DETECTED - LOW_BALANCE_DETECTED - NEW_LOAN_PAYMENT_DETECTED - NSF_OVERDRAFT_DETECTED description: An insight that can be detected by the Cash Flow Updates product type: string BaseReportsErrorWebhook: title: BaseReportsErrorWebhook type: object x-hidden-from-docs: true additionalProperties: true description: Fired when Base Report generation has failed. The resulting `error` will have an `error_type` of `BASE_REPORT_ERROR`. x-examples: example-1: webhook_type: BASE_REPORT webhook_code: ERROR user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb error: display_message: null error_code: PRODUCT_NOT_ENABLED error_message: 'The following products are not supported by this institution: Identity' error_type: BASE_REPORT_ERROR request_id: m8MDnv9okwxFNBV environment: production properties: webhook_type: type: string description: '`BASE_REPORT`' webhook_code: type: string description: '`ERROR`' error: $ref: '#/components/schemas/PlaidError' user_id: type: string description: The `user_id` corresponding to the User ID the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - error - user_id - environment CraBankIncomeCompleteWebhook: type: object title: CraBankIncomeCompleteWebhook description: Fired when a bank income report has finished generating or failed to generate, triggered by calling `/credit/bank_income/get`. additionalProperties: true properties: webhook_type: type: string description: '`CRA_INCOME`' webhook_code: type: string description: '`BANK_INCOME_COMPLETE`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. result: $ref: '#/components/schemas/CraBankIncomeCompleteResult' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CRA_INCOME webhook_code: BANK_INCOME_COMPLETE user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production CraBankIncomeCompleteResult: type: string enum: - SUCCESS - FAILURE description: |- The result of the bank income report generation `SUCCESS`: The bank income report was successfully generated and can be retrieved via `/credit/bank_income/get`. `FAILURE`: The bank income report failed to be generated CraBankIncomeErrorWebhook: type: object title: CraBankIncomeErrorWebhook description: Fired when a bank income report has failed to generate additionalProperties: true properties: webhook_type: type: string description: '`CRA_INCOME`' webhook_code: type: string description: '`ERROR`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CRA_INCOME webhook_code: ERROR user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production BankIncomeCompleteWebhook: type: object title: BankIncomeCompleteWebhook description: Fired when a bank income report has finished generating or failed to generate, triggered by calling `/credit/bank_income/get` in CRA enabled client. additionalProperties: true properties: webhook_type: type: string description: '`INCOME`' webhook_code: type: string description: '`BANK_INCOME_COMPLETE`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. result: $ref: '#/components/schemas/BankIncomeCompleteResult' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - result - environment x-examples: example-1: webhook_type: INCOME webhook_code: BANK_INCOME_COMPLETE user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb result: SUCCESS environment: production BankIncomeCompleteResult: type: string enum: - SUCCESS - FAILURE description: |- The result of the bank income report generation `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 description: Fired when the Check Report is ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. additionalProperties: true properties: webhook_type: type: string description: '`CHECK_REPORT`' webhook_code: type: string description: '`CHECK_REPORT_READY`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. successful_products: type: array description: Specifies a list of products that have successfully been generated for the report. nullable: true 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 failed_products: type: array description: Specifies a list of products that have failed to generate for the report. Additional detail on what caused the failure can be found by calling the product /get endpoint. nullable: true 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: $ref: '#/components/schemas/ItemId' description: A list of `item_ids` included in the Check Report. Access to this field is in closed beta. x-hidden-from-docs: true nullable: true environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CHECK_REPORT webhook_code: CHECK_REPORT_READY user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb successful_products: - cra_base_report environment: production CraCheckReportFailedWebhook: type: object title: CraCheckReportFailedWebhook 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: type: string description: '`CHECK_REPORT`' webhook_code: type: string description: '`CHECK_REPORT_FAILED`' 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: $ref: '#/components/schemas/ItemId' description: A list of `item_ids` included in the Check Report. Access to this field is in closed beta. x-hidden-from-docs: true nullable: true environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: 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 title: CraUpgradeFailedWebhook description: Fired when a Check Report upgrade attempt has failed additionalProperties: true properties: webhook_type: type: string description: '`CHECK_REPORT`' webhook_code: type: string description: '`UPGRADE_FAILED`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. item_ids: type: array items: $ref: '#/components/schemas/ItemId' description: An array of `item_id`s for items that failed to be upgraded by a Check Report upgrade attempt. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - item_ids - environment x-examples: example-1: webhook_type: CHECK_REPORT webhook_code: UPGRADE_FAILED user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb item_ids: - eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 - DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6 environment: production x-hidden-from-docs: true CraUserCheckReportReadyWebhook: type: object title: CraUserCheckReportReadyWebhook description: Fired when the Check Report is ready to be retrieved. Once this webhook has fired, the report will be available to retrieve for 24 hours. additionalProperties: true properties: webhook_type: type: string description: '`CHECK_REPORT`' webhook_code: type: string description: '`USER_CHECK_REPORT_READY`' user_id: type: string description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. successful_products: type: array description: Specifies a list of products that have successfully been generated for the report. 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 failed_products: type: array description: Specifies a list of products that have failed to generate for the report. 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: $ref: '#/components/schemas/ItemId' description: A list of `item_ids` included in the Check Report. Access to this field is in closed beta. x-hidden-from-docs: true nullable: true environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CHECK_REPORT webhook_code: USER_CHECK_REPORT_READY user_id: usr_8c3ZbDBYjaqUXZ successful_products: - cra_base_report environment: production CraUserCheckReportFailedWebhook: type: object title: CraUserCheckReportFailedWebhook 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: type: string description: '`CHECK_REPORT`' webhook_code: type: string description: '`USER_CHECK_REPORT_FAILED`' user_id: type: string description: The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`. 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: $ref: '#/components/schemas/ItemId' description: A list of `item_ids` included in the Check Report. Access to this field is in closed beta. x-hidden-from-docs: true nullable: true environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: 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 title: CraPartnerInsightsCompleteWebhook description: Fired when a partner insights report has finished generating and results are available additionalProperties: true properties: webhook_type: type: string description: '`CRA_INSIGHTS`' webhook_code: type: string description: '`PARTNER_INSIGHTS_COMPLETE`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CRA_INSIGHTS webhook_code: PARTNER_INSIGHTS_COMPLETE user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production CraPartnerInsightsErrorWebhook: type: object title: CraPartnerInsightsErrorWebhook description: Fired when a partner insights report has failed to generate additionalProperties: true properties: webhook_type: type: string description: '`CRA_INSIGHTS`' webhook_code: type: string description: '`PARTNER_INSIGHTS_ERROR`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: CRA_INSIGHTS webhook_code: PARTNER_INSIGHTS_ERROR user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production IncomeVerificationRefreshReconnectNeededWebhook: type: object title: IncomeVerificationRefreshReconnectNeededWebhook description: Fired when the attempt to refresh Payroll Income data for a user via `/credit/payroll_income/refresh` failed because the user must re-connect their payroll account. additionalProperties: true properties: webhook_type: type: string description: '`INCOME`' webhook_code: type: string description: '`INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: INCOME webhook_code: INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production BankIncomeRefreshUpdateWebhook: type: object title: BankIncomeRefreshUpdateWebhook 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: type: string description: '`INCOME`' webhook_code: type: string description: '`BANK_INCOME_REFRESH_UPDATE`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - environment x-examples: example-1: webhook_type: INCOME webhook_code: BANK_INCOME_REFRESH_UPDATE user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb environment: production BankIncomeRefreshCompleteWebhook: type: object title: BankIncomeRefreshCompleteWebhook 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: type: string description: '`INCOME`' webhook_code: type: string description: '`BANK_INCOME_REFRESH_COMPLETE`' user_id: type: string description: The `user_id` corresponding to the user the webhook has fired for. result: $ref: '#/components/schemas/BankIncomeRefreshCompleteResult' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - user_id - result - environment x-examples: example-1: webhook_type: INCOME webhook_code: BANK_INCOME_REFRESH_COMPLETE user_id: wz666MBjYWTp2PDzzggYhM6oWWmBb result: SUCCESS environment: production BankIncomeRefreshCompleteResult: type: string enum: - SUCCESS - FAILURE description: |- The result of the bank income refresh report generation `SUCCESS`: The refreshed report was successfully generated and can be retrieved via `/credit/bank_income/get`. `FAILURE`: The refreshed report failed to be generated LinkEventMetadata: type: object title: LinkEventMetadata description: Metadata about an event that occurred while the user was going through Link additionalProperties: true properties: error_code: type: string description: The error code that the user encountered. Emitted by `ERROR`, `EXIT`. error_message: type: string description: 'The error message that the user encountered. Emitted by: `ERROR`, `EXIT`.' error_type: type: string description: 'The error type that the user encountered. Emitted by: `ERROR`, `EXIT`.' exit_status: type: string description: 'The status key indicates the point at which the user exited the Link flow. Emitted by: `EXIT`.' institution_id: type: string description: 'The ID of the selected institution. Emitted by: all events.' institution_name: type: string description: 'The name of the selected institution. Emitted by: all events.' institution_search_query: type: string description: 'The query used to search for institutions. Emitted by: `SEARCH_INSTITUTION`.' request_id: type: string description: 'The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation. Emitted by: all events.' mfa_type: type: string description: 'If set, the user has encountered one of the following MFA types: code, device, questions, selections. Emitted by: `SUBMIT_MFA` and `TRANSITION_VIEW` when `view_name` is `MFA`.' view_name: type: string description: 'The name of the view that is being transitioned to. Emitted by: `TRANSITION_VIEW`.' selection: type: string description: 'Either the verification method for a matched institution selected by the user or the Auth Type Select flow type selected by the user. If selection is used to describe selected verification method, then possible values are `phoneotp` or `password`; if selection is used to describe the selected Auth Type Select flow, then possible values are `flow_type_manual` or `flow_type_instant`. Emitted by: `MATCHED_SELECT_VERIFY_METHOD` and `SELECT_AUTH_TYPE`.' brand_name: type: string description: The name of the selected brand. match_reason: type: string 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 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`. LinkEvent: type: object title: LinkEvent description: An event that occurred while the user was going through Link additionalProperties: true properties: event_name: type: string description: Event name timestamp: type: string description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. event_id: type: string description: UUID that can be used to deduplicate events event_metadata: $ref: '#/components/schemas/LinkEventMetadata' required: - event_id - timestamp - event_name - event_metadata LinkEventsWebhook: title: LinkEventsWebhook type: object additionalProperties: true description: |- This webhook contains a summary of the events from a Link session and will be fired after the user finishes going through Link. If the user abandons the Link flow (i.e., closes the hosted link webpage or leaves Link open for too long without taking any action), the webhook will be fired 5-15 minutes after the last user interaction. A single Link session may occasionally generate multiple `EVENTS` webhooks. If this occurs, the new webhook will contain all previous events for the session, as well as new events that occurred since the previous `EVENTS` webhook was sent. If this occurs, events can be grouped using the `link_session_id` field and, if necessary, de-duplicated using the `event_id` field. By default, the `EVENTS` webhook is sent only for sessions where the end user goes through a Hosted Link flow (including Link Recovery flows). If you would like to receive this webhook for sessions not using Hosted Link, contact your account manager or support. This enablement will also cause you to receive the `SESSION_FINISHED` webhook for non-Hosted-Link sessions and to be able to use `/link/token/get` to receive events data for non-Hosted Link sessions. properties: webhook_type: type: string description: '`LINK`' webhook_code: type: string description: '`EVENTS`' events: type: array description: The Link events emitted during the Link session items: $ref: '#/components/schemas/LinkEvent' link_session_id: type: string description: An identifier for the Link session these events occurred in 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 link_session_id: 1daca4d5-9a0d-4e85-a2e9-1e905ecaa32e link_token: link-sandbox-79e723b0-0e04-4248-8a33-15ceb6828a45 webhook_code: EVENTS webhook_type: LINK events: - event_id: 9469937a-6fac-40be-9322-f86e8c0b94ed event_metadata: request_id: ClqZyuhovgkaQ3j event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:17:54Z" - event_id: 4b2390cf-33a2-4078-b933-62468b9e53a5 event_metadata: error_code: INVALID_CREDENTIALS error_message: the provided credentials were not correct error_type: ITEM_ERROR institution_id: ins_20 institution_name: Citizens Bank request_id: ttK0NtGKaVAlbCR event_name: ERROR timestamp: "2024-05-21T00:18:09Z" - event_id: 45f76afe-f2aa-495c-a326-f37e043a1ccd event_metadata: request_id: WRJqqeh8Hxife05 event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:17:56Z" - event_id: 978b772c-f2cc-404f-9449-2113e4671c4f event_metadata: error_code: INVALID_CREDENTIALS error_message: the provided credentials were not correct error_type: ITEM_ERROR exit_status: requires_credentials institution_id: ins_20 institution_name: Citizens Bank request_id: u1HcAeiCKtz3qmm event_name: EXIT timestamp: "2024-05-21T00:18:13Z" - event_id: a873db76-aa4e-4a00-9d60-7ae08aa8e63f event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: ttK0NtGKaVAlbCR event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:18:09Z" - event_id: ca85566d-5f32-4716-909f-82f3a0b6160b event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: XRvev3cP9wYUFz5 event_name: SUBMIT_CREDENTIALS timestamp: "2024-05-21T00:18:07Z" - event_id: 09220752-6b83-407e-baf0-f6228df16ea0 event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: WRJqqeh8Hxife05 event_name: SELECT_INSTITUTION timestamp: "2024-05-21T00:18:01Z" - event_id: 1c75d2ee-19c1-4d1b-8600-7d06cecbb270 event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: 5vc1IyBHfLkIVFx event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:18:12Z" - event_id: 1c9c9059-c065-4362-836a-d9afb91a6125 event_metadata: request_id: MlFW5NSWtCs1KLI event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:17:50Z" - event_id: 4f381b3f-172b-4bca-9804-c230f8d36a3b event_metadata: institution_id: ins_20 institution_name: Citizens Bank request_id: XRvev3cP9wYUFz5 event_name: TRANSITION_VIEW timestamp: "2024-05-21T00:18:02Z" - event_id: dd9d4747-d4da-4c11-88d6-b5a0e96f1886 event_metadata: request_id: ClqZyuhovgkaQ3j event_name: SKIP_SUBMIT_PHONE timestamp: "2024-05-21T00:17:55Z" ItemAddResultWebhook: title: ItemAddResultWebhook type: object additionalProperties: true description: Fired when a user successfully adds a Plaid Item during a Link session when using Hosted Link or Multi-Item Link sessions. Contains the public token for the Item. properties: webhook_type: type: string description: '`LINK`' webhook_code: type: string description: '`ITEM_ADD_RESULT`' link_session_id: type: string description: The identifier for the Link session. link_token: type: string description: The `link_token` used to create the Link session. public_token: type: string description: The `public_token` corresponding to the Item that was added. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - link_session_id - link_token - public_token - environment x-examples: example-1: webhook_type: LINK webhook_code: ITEM_ADD_RESULT link_session_id: 356dbb28-7f98-44d1-8e6d-0cec580f3171 link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176 public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d environment: sandbox LinkSessionFinishedWebhook: title: LinkSessionFinishedWebhook type: object additionalProperties: true description: |- Contains the state of a completed Link session, along with the public token(s) if available. By default, this webhook is sent only for sessions enabled for the Hosted Link flow (including Link Recovery flows), a Multi-Item Link flow, or a Layer flow. If you would like to receive this webhook for other sessions, contact your account manager or support. This enablement will also enable the `EVENTS` webhook for all Link sessions and the ability to use `/link/token/get` to retrieve events for non-Hosted-Link sessions. properties: webhook_type: type: string description: '`LINK`' webhook_code: type: string description: '`SESSION_FINISHED`' status: type: string description: The final status of the Link session. Will always be "SUCCESS" or "EXITED". link_session_id: type: string description: The identifier for the Link session. link_token: type: string description: The `link_token` used to create the Link session. public_token: deprecated: true type: string description: The public token generated by the Link session. This field has been deprecated; please use `public_tokens` instead. public_tokens: type: array description: The public tokens generated by the Link session. items: type: string user_id: $ref: '#/components/schemas/UserId' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - link_session_id - link_token - environment x-examples: example-1: webhook_type: LINK webhook_code: SESSION_FINISHED status: SUCCESS link_session_id: 356dbb28-7f98-44d1-8e6d-0cec580f3171 link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176 public_tokens: - public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d environment: sandbox HostedMMDVerificationWebhook: title: HostedMMDVerificationWebhook type: object additionalProperties: true description: Contains the state of an SMS Same-Day Micro-deposits verification session. properties: webhook_type: type: string description: '`AUTH`' webhook_code: type: string description: '`SMS_MICRODEPOSITS_VERIFICATION`' status: type: string description: The final status of the Same-Day Micro-deposits verification. Will always be `MANUALLY_VERIFIED` or `VERIFICATION_FAILED`. item_id: $ref: '#/components/schemas/ItemId' account_id: type: string description: The external account ID of the affected account environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - status - item_id - account_id x-examples: example-1: webhook_type: AUTH webhook_code: SMS_MICRODEPOSITS_VERIFICATION status: MANUALLY_VERIFIED item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6 account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK environment: sandbox InstitutionStatusAlertWebhook: title: InstitutionStatusAlertWebhook description: Fired when institution status meets the conditions configured in the developer dashboard. type: object additionalProperties: true properties: webhook_type: type: string description: '`DASHBOARD_CONFIGURED_ALERT`' webhook_code: type: string description: '`INSTITUTION_STATUS_ALERT_TRIGGERED`' institution_id: type: string description: The ID of the associated institution. institution_overall_success_rate: type: number format: double description: The global success rate of the institution, calculated based on item add health. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - institution_id - institution_overall_success_rate - environment x-examples: example-1: webhook_type: DASHBOARD_CONFIGURED_ALERT webhook_code: INSTITUTION_STATUS_ALERT_TRIGGERED institution_id: ins_56 institution_overall_success_rate: 0.9 environment: production SandboxPaymentSimulateRequest: type: object description: SandboxPaymentSimulateRequest defines the request schema for `/sandbox/payment/simulate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' payment_id: type: string description: The ID of the payment to simulate webhook: type: string description: The webhook url to use for any payment events triggered by the simulated status change. status: type: string description: |- The status to set the payment to. Valid statuses include: - `PAYMENT_STATUS_INITIATED` - `PAYMENT_STATUS_INSUFFICIENT_FUNDS` - `PAYMENT_STATUS_FAILED` - `PAYMENT_STATUS_EXECUTED` - `PAYMENT_STATUS_SETTLED` - `PAYMENT_STATUS_CANCELLED` - `PAYMENT_STATUS_REJECTED` required: - payment_id - webhook - status SandboxPaymentSimulateResponse: type: object additionalProperties: true description: SandboxPaymentSimulateResponse defines the response schema for `/sandbox/payment/simulate` properties: request_id: $ref: '#/components/schemas/RequestID' old_status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' new_status: $ref: '#/components/schemas/PaymentInitiationPaymentStatus' required: - request_id - old_status - new_status AssetReportCreateRequest: type: object description: AssetReportCreateRequest defines the request schema for `/asset_report/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $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. items: $ref: '#/components/schemas/AccessToken' minItems: 1 maxItems: 99 days_requested: type: integer maximum: 731 minimum: 0 description: |- The maximum integer number of days of history to include in the Asset Report. If using Fannie Mae Day 1 Certainty, `days_requested` must be at least 61 for new originations or at least 31 for refinancings. An Asset Report requested with "Additional History" (that is, with more than 61 days of transaction history) will incur an Additional History fee. options: $ref: '#/components/schemas/AssetReportCreateRequestOptions' required: - days_requested AssetReportCreateRequestOptions: type: object description: An optional object to filter `/asset_report/create` results. If provided, must be non-`null`. The optional `user` object is required for the report to be eligible for Fannie Mae's Day 1 Certainty program. properties: client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. webhook: type: string description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready. nullable: true format: url include_fast_report: deprecated: true type: boolean description: true to return balance and identity earlier as a fast report. Defaults to false if omitted. nullable: true x-hidden-from-docs: true products: deprecated: true type: array description: 'Additional information that can be included in the asset report. Possible values: `"investments"`' x-hidden-from-docs: true items: type: string add_ons: type: array items: $ref: '#/components/schemas/AssetReportAddOns' 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 Investments is requested, `investments` must be specified in the `optional_products` array when initializing Link. user: $ref: '#/components/schemas/AssetReportUser' require_all_items: type: boolean nullable: true default: true description: 'By default (`true`), the asynchronous report generation fails unless all Items extract successfully. If set to `false`, the report will still be generated as long as at least one Item extracts successfully; extraction failures on the remaining Items are tolerated. This setting applies only to failures that occur during asynchronous extraction. It does not relax the synchronous check at call time: if any Item is already unhealthy when `/asset_report/create` is invoked, the request fails immediately regardless of this value.' AssetReportCreateResponse: type: object additionalProperties: true description: AssetReportCreateResponse defines the response schema for `/asset_report/create` properties: asset_report_token: $ref: '#/components/schemas/AssetReportToken' asset_report_id: $ref: '#/components/schemas/AssetReportId' request_id: $ref: '#/components/schemas/RequestID' required: - asset_report_token - asset_report_id - request_id AssetReportRefreshRequest: type: object description: AssetReportRefreshRequest defines the request schema for `/asset_report/refresh` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportRefreshAssetReportToken' days_requested: type: integer minimum: 0 maximum: 731 description: The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the value from the original call to `/asset_report/create` will be used. nullable: true options: $ref: '#/components/schemas/AssetReportRefreshRequestOptions' required: - asset_report_token AssetReportRefreshRequestOptions: description: An optional object to filter `/asset_report/refresh` results. If provided, cannot be `null`. If not specified, the `options` from the original call to `/asset_report/create` will be used. type: object properties: client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. webhook: type: string description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready. nullable: true format: url user: $ref: '#/components/schemas/AssetReportUser' AssetReportRefreshResponse: type: object additionalProperties: true description: AssetReportRefreshResponse defines the response schema for `/asset_report/refresh` properties: asset_report_id: $ref: '#/components/schemas/AssetReportId' asset_report_token: $ref: '#/components/schemas/AssetReportToken' request_id: $ref: '#/components/schemas/RequestID' required: - asset_report_id - asset_report_token - request_id AssetReportRemoveRequest: type: object description: AssetReportRemoveRequest defines the request schema for `/asset_report/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportToken' required: - asset_report_token AssetReportRemoveResponse: type: object additionalProperties: true description: AssetReportRemoveResponse defines the response schema for `/asset_report/remove` properties: removed: type: boolean description: '`true` if the Asset Report was successfully removed.' request_id: $ref: '#/components/schemas/RequestID' required: - removed - request_id AssetReportFilterRequest: type: object description: AssetReportFilterRequest defines the request schema for `/asset_report/filter` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportToken' account_ids_to_exclude: type: array description: The accounts to exclude from the Asset Report, identified by `account_id`. items: type: string required: - asset_report_token - account_ids_to_exclude AssetReportFilterResponse: type: object additionalProperties: true description: AssetReportFilterResponse defines the response schema for `/asset_report/filter` properties: asset_report_token: $ref: '#/components/schemas/AssetReportToken' asset_report_id: $ref: '#/components/schemas/AssetReportId' request_id: $ref: '#/components/schemas/RequestID' required: - asset_report_token - asset_report_id - request_id AssetReportGetRequest: type: object description: AssetReportGetRequest defines the request schema for `/asset_report/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportTokenNullable' user_token: type: string description: The user token associated with the User for which to create an asset report for. The latest asset report associated with the User will be returned x-hidden-from-docs: true include_insights: type: boolean default: false description: '`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.' fast_report: type: boolean default: false description: '`true` to fetch "fast" version of asset report. Defaults to false if omitted. Can only be used if `/asset_report/create` was called with `options.add_ons` set to `["fast_assets"]`.' options: $ref: '#/components/schemas/AssetReportGetRequestOptions' AssetReportGetRequestOptions: type: object description: An optional object to filter or add data to `/asset_report/get` results. If provided, must be non-`null`. properties: days_to_include: type: integer maximum: 731 minimum: 0 nullable: true description: The maximum number of days of history to include in the Asset Report. AssetReportGetResponse: type: object additionalProperties: true description: AssetReportGetResponse defines the response schema for `/asset_report/get` properties: report: $ref: '#/components/schemas/AssetReport' warnings: type: array description: If the Asset Report generation was successful but identity information cannot be returned, this array will contain information about the errors causing identity information to be missing items: $ref: '#/components/schemas/Warning' request_id: $ref: '#/components/schemas/RequestID' required: - report - warnings - request_id AssetReportPDFGetRequest: type: object description: AssetReportPDFGetRequest defines the request schema for `/asset_report/pdf/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportToken' options: $ref: '#/components/schemas/AssetReportPDFGetRequestOptions' required: - asset_report_token AssetReportPDFGetRequestOptions: type: object description: An optional object to filter or add data to `/asset_report/get` results. If provided, must be non-`null`. properties: days_to_include: type: integer maximum: 731 minimum: 0 nullable: true description: The maximum integer number of days of history to include in the Asset Report. AssetReportPDFGetResponse: format: binary type: string 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/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' asset_report_token: $ref: '#/components/schemas/AssetReportToken' auditor_id: type: string description: The `auditor_id` of the third party with whom you would like to share the Asset Report. required: - asset_report_token AssetReportAuditCopyCreateResponse: type: object additionalProperties: true description: AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/create` properties: audit_copy_token: type: string description: A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token should be stored securely. request_id: $ref: '#/components/schemas/RequestID' required: - audit_copy_token - request_id AssetReportAuditCopyGetRequest: title: AssetReportAuditCopyGetRequest type: object description: AssetReportAuditCopyGetRequest defines the request schema for `/asset_report/audit_copy/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' audit_copy_token: type: string description: The `audit_copy_token` granting access to the Audit Copy you would like to get. required: - audit_copy_token AssetReportAuditCopyRemoveRequest: type: object description: AssetReportAuditCopyRemoveRequest defines the request schema for `/asset_report/audit_copy/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' audit_copy_token: type: string description: The `audit_copy_token` granting access to the Audit Copy you would like to revoke. required: - audit_copy_token AssetReportAuditCopyRemoveResponse: type: object additionalProperties: true description: AssetReportAuditCopyRemoveResponse defines the response schema for `/asset_report/audit_copy/remove` properties: removed: type: boolean description: '`true` if the Audit Copy was successfully removed.' request_id: $ref: '#/components/schemas/RequestID' required: - removed - request_id AssetReportAuditCopyPdfGetRequest: type: object description: AssetReportAuditCopyPDFGetRequest defines the request schema for `/asset_report/audit_copy/pdf/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' audit_copy_token: type: string description: The `audit_copy_token` granting access to the Audit Copy you would like to get as a PDF. options: $ref: '#/components/schemas/AssetReportPDFGetRequestOptions' required: - audit_copy_token AssetReportAuditCopyPdfGetResponse: format: binary type: string description: AssetReportAuditCopyPDFGetResponse defines the response schema for `/asset_report/audit_copy/pdf/get` CraMonitoringInsightsSubscribeRequest: type: object description: CraMonitoringInsightsSubscribeRequest defines the request schema for `/cra/monitoring_insights/subscribe` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' item_id: type: string description: The Item ID to subscribe for Cash Flow Updates. webhook: type: string description: URL to which Plaid will send Cash Flow Updates webhooks, for example when the requested Cash Flow Updates report is ready. format: url income_categories: type: array description: Income categories to include in Cash Flow Updates. If empty or `null`, this field will default to including all possible categories. items: $ref: '#/components/schemas/CreditBankIncomeCategory' nullable: true user_token: $ref: '#/components/schemas/UserToken' required: - webhook CraMonitoringInsightsSubscribeResponse: type: object additionalProperties: true description: CraMonitoringInsightsSubscribeResponse defines the response schema for `/cra/monitoring_insights/subscribe` properties: request_id: $ref: '#/components/schemas/RequestID' subscription_id: $ref: '#/components/schemas/CraMonitoringInsightsSubscriptionID' required: - request_id - subscription_id CraMonitoringInsightsSubscriptionID: title: CraMonitoringInsightsSubscriptionId type: string description: A unique identifier for the subscription. CraMonitoringInsightsUnsubscribeRequest: type: object description: CraMonitoringInsightsUnsubscribeRequest defines the request schema for `/cra/monitoring_insights/unsubscribe` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' subscription_id: $ref: '#/components/schemas/CraMonitoringInsightsSubscriptionID' required: - subscription_id CraMonitoringInsightsUnsubscribeResponse: type: object additionalProperties: true description: CraMonitoringInsightsUnsubscribeResponse defines the response schema for `/cra/monitoring_insights/unsubscribe` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraMonitoringInsightsGetRequest: type: object description: CraMonitoringInsightsGetRequest defines the request schema for `/cra/monitoring_insights/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' consumer_report_permissible_purpose: $ref: '#/components/schemas/MonitoringConsumerReportPermissiblePurpose' user_token: $ref: '#/components/schemas/UserToken' required: - consumer_report_permissible_purpose CraMonitoringInsightsGetResponse: type: object additionalProperties: true description: CraMonitoringInsightsGetResponse defines the response schema for `/cra/monitoring_insights/get` properties: request_id: $ref: '#/components/schemas/RequestID' user_insights_id: $ref: '#/components/schemas/UserInsightsId' items: type: array description: An array of Monitoring Insights Items associated with the user. items: $ref: '#/components/schemas/CraMonitoringInsightsItem' required: - request_id - user_insights_id - items UserInsightsId: title: UserInsightsId description: A unique ID identifying a User Monitoring Insights Report. Like all Plaid identifiers, this ID is case sensitive. type: string CraMonitoringInsightsItem: title: CraMonitoringInsightsItem type: object additionalProperties: true description: An object representing a Monitoring Insights Item properties: date_generated: type: string format: date-time description: The date and time when the specific insights were generated (per-item), in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). item_id: type: string description: The `item_id` of the Item associated with the insights institution_id: type: string description: The id of the financial institution associated with the Item. institution_name: type: string description: The full financial institution name associated with the Item. status: $ref: '#/components/schemas/MonitoringInsightsItemStatus' insights: $ref: '#/components/schemas/MonitoringInsights' accounts: type: array description: Data about each of the accounts open on the Item. items: $ref: '#/components/schemas/BaseReportAccount' required: - date_generated - item_id - institution_id - institution_name - status - insights MonitoringInsightsItemStatus: title: MonitoringInsightsItemStatus type: object additionalProperties: true description: An object with details of the Monitoring Insights Item's status. properties: status_code: $ref: '#/components/schemas/MonitoringItemStatusCode' reason: type: string description: |- A reason for why a Monitoring Insights Report is not available. This field will only be populated when the `status_code` is not `AVAILABLE` nullable: true required: - status_code MonitoringInsightsStatus: title: MonitoringInsightsStatus type: string enum: - AVAILABLE - FAILED description: Enum for the status of the insights MonitoringItemStatusCode: title: MonitoringItemStatusCode type: string enum: - AVAILABLE - 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 enum: - ACCOUNT_REVIEW_CREDIT - WRITTEN_INSTRUCTION_OTHER description: |- Describes the reason you are generating a Consumer Report for this user. `ACCOUNT_REVIEW_CREDIT`: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A). `WRITTEN_INSTRUCTION_OTHER`: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan. MonitoringInsights: title: MonitoringInsights type: object nullable: true additionalProperties: true description: An object representing the Monitoring Insights for the given Item properties: income: $ref: '#/components/schemas/MonitoringIncomeInsights' loans: $ref: '#/components/schemas/MonitoringLoanInsights' required: - income - loans MonitoringIncomeInsights: title: MonitoringIncomeInsights type: object additionalProperties: true description: An object representing the income subcategory of the report properties: total_monthly_income: $ref: '#/components/schemas/TotalMonthlyIncomeInsights' income_sources_counts: $ref: '#/components/schemas/IncomeSourcesCounts' forecasted_monthly_income: $ref: '#/components/schemas/ForecastedMonthlyIncome' historical_annual_income: $ref: '#/components/schemas/HistoricalAnnualIncome' income_sources: type: array description: The income sources for this Item. Each entry in the array is a single income source items: $ref: '#/components/schemas/MonitoringIncomeSource' required: - total_monthly_income - income_sources_counts - forecasted_monthly_income - historical_annual_income - income_sources TotalMonthlyIncomeInsights: title: TotalMonthlyIncomeInsights type: object additionalProperties: true description: Details about the total monthly income properties: baseline_amount: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The aggregated income for the 30 days prior to subscription date current_amount: type: number description: The aggregated income of the last 30 days required: - current_amount IncomeSourcesCounts: title: IncomeSourcesCounts type: object additionalProperties: true description: Details about the number of income sources properties: baseline_count: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The number of income sources detected at the subscription date current_count: type: number description: The number of income sources currently detected required: - current_count MonitoringLoanInsights: title: MonitoringLoanInsights type: object additionalProperties: true description: An object representing the loan exposure subcategory of the report properties: loan_payments_counts: $ref: '#/components/schemas/LoanPaymentsCounts' loan_disbursements_count: type: number description: The number of loan disbursements detected in the last 30 days loan_payment_merchants_counts: $ref: '#/components/schemas/LoanPaymentsMerchantCounts' required: - loan_payments_counts - loan_disbursements_count - loan_payment_merchants_counts LoanPaymentsMerchantCounts: title: LoanPaymentsMerchantCounts type: object additionalProperties: true description: Details regarding the number of unique loan payment merchants properties: baseline_count: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The number of unique loan payment merchants detected in the 30 days before the subscription date current_count: type: number description: The current number of unique loan payment merchants detected in the last 30 days required: - current_count LoanPaymentsCounts: title: LoanPaymentsCounts type: object additionalProperties: true description: Details regarding the number of loan payments properties: baseline_count: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The number of loan payments made in the 30 days before the subscription date current_count: type: number description: The current number of loan payments made in the last 30 days required: - current_count MonitoringIncomeSource: title: MonitoringIncomeSource type: object additionalProperties: true description: An object representing an income source properties: income_source_id: type: string description: A unique identifier for an income source income_description: type: string description: The most common name or original description for the underlying income transactions income_category: $ref: '#/components/schemas/CreditBankIncomeCategory' last_transaction_date: type: string format: date description: The last detected transaction date for this income source required: - income_source_id - income_description - income_category - last_transaction_date ForecastedMonthlyIncome: title: ForecastedMonthlyIncome type: object additionalProperties: true description: An object representing the predicted average monthly net income amount. This amount reflects the funds deposited into the account and may not include any withheld income such as taxes or other payroll deductions properties: baseline_amount: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The forecasted monthly income at the time of subscription current_amount: type: number description: The current forecasted monthly income required: - current_amount HistoricalAnnualIncome: title: HistoricalAnnualIncome type: object additionalProperties: true description: An object representing the historical annual income amount. properties: baseline_amount: type: number nullable: true deprecated: true x-hidden-from-docs: true description: The historical annual income at the time of subscription current_amount: type: number description: The current historical annual income required: - current_amount CraCheckReportPDFGetRequest: title: CraCheckReportPDFGetRequest type: object description: CraCheckReportPDFGetRequest defines the request schema for `/cra/check_report/pdf/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' add_ons: type: array description: Use this field to include other reports in the PDF. items: $ref: '#/components/schemas/CraPDFAddOns' user_token: $ref: '#/components/schemas/UserToken' CraPDFAddOns: title: CraPDFAddOns enum: - cra_income_insights - cra_partner_insights description: |- A list of add-ons that can be included in the PDF. `cra_income_insights`: Include Income Insights report in the PDF. `cra_partner_insights`: Include Partner Insights report in the PDF. type: string CraCheckReportPDFGetResponse: format: binary type: string description: CraCheckReportPDFGetResponse defines the response schema for `/cra/check_report/pdf/get` CraCheckReportBaseReportGetRequest: title: CraCheckReportBaseReportGetRequest type: object description: CraCheckReportBaseReportGetRequest defines the request schema for `/cra/check_report/base_report/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' item_ids: type: array description: The Item IDs to include in the Base Report. If not provided, all Items associated with the user will be included. nullable: true x-hidden-from-docs: true items: $ref: '#/components/schemas/ItemId' user_token: $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 additionalProperties: true description: CraCheckReportBaseReportGetResponse defines the response schema for `/cra/check_report/base_report/get` properties: report: $ref: '#/components/schemas/BaseReport' warnings: type: array description: This array contains any information about errors or alerts related to the Base Report that did not block generation of the report. items: $ref: '#/components/schemas/BaseReportWarning' request_id: $ref: '#/components/schemas/RequestID' required: - report - request_id - warnings BaseReportWarning: title: BaseReportWarning type: object additionalProperties: true description: It is possible for a Base Report to be returned with missing account owner information. In such cases, the Base Report will contain warning data in the response, indicating why obtaining the owner information failed. properties: warning_type: type: string description: The warning type, which will always be `BASE_REPORT_WARNING` warning_code: $ref: '#/components/schemas/BaseReportWarningCode' cause: $ref: '#/components/schemas/Cause' required: - warning_type - warning_code - cause BaseReportWarningCode: type: string description: |- The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Account-owner information is not available. `TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable. `USER_FRAUD_ALERT`: The User has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Note: when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer's identity. enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE - USER_FRAUD_ALERT BaseReportHistoricalBalance: title: BaseReportHistoricalBalance type: object additionalProperties: true description: An object representing a balance held by an account in the past properties: date: type: string format: date description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD) current: type: number format: double description: |- The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction. If the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting. iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`. 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: - date - current - iso_currency_code - unofficial_currency_code HistoricalBalance: title: HistoricalBalance type: object additionalProperties: true description: An object representing a balance held by an account in the past properties: date: type: string format: date description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD) current: type: number format: double description: |- The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction. If the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting. iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`. 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: - date - current - iso_currency_code - unofficial_currency_code AssetsProductReadyWebhook: title: AssetsProductReadyWebhook type: object additionalProperties: true description: Fired when the Asset Report has been generated and `/asset_report/get` is ready to be called. If you attempt to retrieve an Asset Report before this webhook has fired, you'll receive a response with the HTTP status code 400 and a Plaid error code of `PRODUCT_NOT_READY`. properties: webhook_type: type: string description: '`ASSETS`' webhook_code: type: string description: '`PRODUCT_READY`' asset_report_id: type: string description: The `asset_report_id` corresponding to the Asset Report the webhook has fired for. user_id: type: string description: The `user_id` corresponding to the User ID the webhook has fired for. report_type: $ref: '#/components/schemas/AssetReportType' environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - asset_report_id - environment x-examples: example-1: webhook_type: ASSETS webhook_code: PRODUCT_READY asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05 report_type: FULL environment: production AssetReportType: type: string description: Indicates either a Fast Asset Report, which will contain only current identity and balance information, or a Full Asset Report, which will also contain historical balance information and transaction data. enum: - FULL - FAST AssetsErrorWebhook: title: AssetsErrorWebhook type: object additionalProperties: true description: Fired when Asset Report generation has failed. The resulting `error` will have an `error_type` of `ASSET_REPORT_ERROR`. x-examples: example-1: webhook_type: ASSETS webhook_code: ERROR asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05 error: display_message: null error_code: PRODUCT_NOT_ENABLED error_message: 'the ''assets'' product is not enabled for the following access tokens: access-sandbox-fb88b20c-7b74-4197-8d01-0ab122dad0bc. please ensure that ''assets'' is included in the ''product'' array when initializing Link and create the Item(s) again.' error_type: ASSET_REPORT_ERROR request_id: m8MDnv9okwxFNBV environment: production properties: webhook_type: type: string description: '`ASSETS`' webhook_code: type: string description: '`ERROR`' error: $ref: '#/components/schemas/PlaidError' asset_report_id: type: string description: The ID associated with the Asset Report. user_id: type: string description: The `user_id` corresponding to the User ID the webhook has fired for. environment: $ref: '#/components/schemas/WebhookEnvironmentValues' required: - webhook_type - webhook_code - error - asset_report_id - environment Warning: title: Warning type: object additionalProperties: true description: It is possible for an Asset Report to be returned with missing account owner information. In such cases, the Asset Report will contain warning data in the response, indicating why obtaining the owner information failed. properties: warning_type: type: string description: The warning type, which will always be `ASSET_REPORT_WARNING` warning_code: type: string enum: - OWNERS_UNAVAILABLE - INVESTMENTS_UNAVAILABLE - TRANSACTIONS_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: - warning_type - warning_code - cause x-examples: example-1: warning_type: ASSET_REPORT_WARNING warning_code: OWNERS_UNAVAILABLE cause: error_type: ITEM_ERROR http_code: 400 error_code: PRODUCTS_NOT_SUPPORTED error_message: 'The following products are not supported by this institution: Identity' display_message: null request_id: s32PXYOyplhGTHd AssetReportUser: title: AssetReportUser type: object additionalProperties: true description: The user object allows you to provide additional information about the user to be appended to the Asset Report. All fields are optional. The `first_name`, `last_name`, and `ssn` fields are required if you would like the Report to be eligible for Fannie Mae's Day 1 Certainty™ program. properties: client_user_id: type: string nullable: true description: An identifier you determine and submit for the user. first_name: type: string nullable: true description: The user's first name. Required for the Fannie Mae Day 1 Certainty™ program. middle_name: type: string nullable: true description: The user's middle name last_name: type: string nullable: true description: The user's last name. Required for the Fannie Mae Day 1 Certainty™ program. ssn: type: string nullable: true description: |- The user's Social Security Number. Required for the Fannie Mae Day 1 Certainty™ program. Format: "ddd-dd-dddd" phone_number: type: string nullable: true description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567". Phone numbers provided in other formats will be parsed on a best-effort basis.' email: type: string nullable: true description: The user's email address. AssetReportAddOns: title: AssetReportAddOns enum: - investments - fast_assets description: |- Add-ons that should be included in the Asset Report. `investments`: The Investments add-on `fast_assets`: The Fast Assets add-on type: string AssetReportId: title: AssetReportId description: A unique ID identifying an Asset Report. Like all Plaid identifiers, this ID is case sensitive. type: string AssetReportToken: title: AssetReportToken type: string description: A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update an Asset Report. AssetReportTokenNullable: title: AssetReportTokenNullable type: string description: A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update an Asset Report. AssetReportRefreshAssetReportToken: title: AssetReportRefreshAssetReportToken type: string description: The `asset_report_token` returned by the original call to `/asset_report/create` AssetReport: title: AssetReport type: object additionalProperties: true description: An object representing an Asset Report properties: asset_report_id: $ref: '#/components/schemas/AssetReportId' insights: $ref: '#/components/schemas/AccountInsights' client_report_id: type: string nullable: true description: An identifier you determine and submit for the Asset Report. date_generated: type: string format: date-time description: The date and time when the Asset Report was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). days_requested: type: number description: The duration of transaction history you requested user: $ref: '#/components/schemas/AssetReportUser' items: type: array description: Data returned by Plaid about each of the Items included in the Asset Report. items: $ref: '#/components/schemas/AssetReportItem' required: - asset_report_id - client_report_id - date_generated - days_requested - user - items AssetReportItem: title: AssetReportItem type: object additionalProperties: true description: A representation of an Item within an Asset Report. properties: item_id: $ref: '#/components/schemas/ItemId' institution_name: type: string description: The full financial institution name associated with the Item. institution_id: description: The id of the financial institution associated with the Item. type: string date_last_updated: type: string format: date-time description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. accounts: type: array description: Data about each of the accounts open on the Item. items: $ref: '#/components/schemas/AccountAssets' required: - item_id - institution_name - institution_id - date_last_updated - accounts AccountAssets: title: AccountAssets type: object additionalProperties: true description: Asset information about an account properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. balances: $ref: '#/components/schemas/AssetReportAccountBalance' mask: type: string 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. name: type: string description: The name of the account, either assigned by the user or by the financial institution itself official_name: type: string nullable: true description: The official name of the account as given by the financial institution type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' verification_status: type: string enum: - automatically_verified - pending_automatic_verification - pending_manual_verification - manually_verified - verification_expired - verification_failed - database_matched description: |- The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only. `pending_automatic_verification`: The Item is pending automatic verification. `pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the micro-deposit. `automatically_verified`: The Item has successfully been automatically verified. `manually_verified`: The Item has successfully been manually verified. `verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. `verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. `database_matched`: (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. days_available: type: number description: The duration of transaction history available within this report for this Item, typically defined as the time since the date of the earliest transaction in that account. transactions: type: array description: Transaction history associated with the account. items: $ref: '#/components/schemas/AssetReportTransaction' investments: $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) items: $ref: '#/components/schemas/Owner' ownership_type: $ref: '#/components/schemas/OwnershipType' historical_balances: type: array description: |- Calculated data about the historical balances on the account. Available for `credit` and `depository` type accounts. items: $ref: '#/components/schemas/HistoricalBalance' account_insights: $ref: '#/components/schemas/AccountInsights' required: - account_id - balances - mask - name - official_name - type - subtype - days_available - transactions - owners - historical_balances AssetReportInvestments: title: AssetReportInvestments type: object additionalProperties: true description: A set of fields describing the investments data on an account. properties: holdings: type: array description: Quantities and values of securities held in the investment account. Map to the `securities` array for security details. items: $ref: '#/components/schemas/AssetReportInvestmentHolding' securities: type: array description: Details of specific securities held in on the investment account. items: $ref: '#/components/schemas/AssetReportInvestmentSecurity' transactions: type: array description: Transaction history on the investment account. items: $ref: '#/components/schemas/AssetReportInvestmentTransaction' AssetReportAccountBalance: title: AssetReportAccountBalance 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`. properties: available: type: number format: double description: |- The amount of funds available to be withdrawn from the account, as determined by the financial institution. For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution. Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`. Available balance may be cached and is not guaranteed to be up-to-date in real-time unless the value was returned by `/accounts/balance/get`. If `current` is `null` this field is guaranteed not to be `null`. nullable: true current: type: number format: double description: |- The total amount of funds in or owed by the account. For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder. For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution. Note that balance information may be cached unless the value was returned by `/accounts/balance/get`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require real-time balance information, use the `available` balance as provided by `/accounts/balance/get`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`. nullable: true limit: type: number format: double description: |- For `credit`-type accounts, this represents the credit limit. For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe. In North America, this field is typically only available for `credit`-type accounts. nullable: true margin_loan_amount: type: number format: double description: |- The total amount of borrowed funds in the account, as determined by the financial institution. For investment-type accounts, the margin balance is the total value of borrowed assets in the account, as presented by the institution. This is commonly referred to as margin or a loan. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. 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 `unofficial_currency_code`s. nullable: true last_updated_datetime: type: string format: date-time description: |- Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the oldest acceptable balance when making a request to `/accounts/balance/get`. This field is only used and expected when the institution is `ins_128026` (Capital One) and the Item contains one or more accounts with a non-depository account type, in which case a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For Capital One depository accounts as well as all other account types on all other institutions, this field is ignored. See [account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of account types. If the balance that is pulled is older than the given timestamp for Items with this field required, an `INVALID_REQUEST` error with the code of `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned with the most recent timestamp for the requested account contained in the response. nullable: true required: - available - current - limit - margin_loan_amount - iso_currency_code - unofficial_currency_code AssetReportInvestmentTransaction: title: AssetReportInvestmentTransaction type: object additionalProperties: true description: A transaction within an investment account. properties: investment_transaction_id: type: string description: The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive. account_id: type: string description: The `account_id` of the account against which this transaction posted. security_id: type: string description: The `security_id` to which this transaction is related. nullable: true date: type: string format: date description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. name: type: string description: The institution's description of the transaction. quantity: type: number format: double description: The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions. vested_quantity: type: number format: double description: The total quantity of vested assets held, as reported by the financial institution. Vested assets are only associated with [equities](https://plaid.com/docs/api/products/investments/#investments-holdings-get-response-securities-type). vested_value: type: number format: double description: The value of the vested holdings as reported by the institution. amount: description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: description: The price of the security at which this transaction occurred. type: number format: double fees: type: number format: double description: The combined value of all fees applied to this transaction nullable: true type: $ref: '#/components/schemas/InvestmentTransactionType' subtype: $ref: '#/components/schemas/InvestmentTransactionSubtype' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true required: - investment_transaction_id - account_id - security_id - date - name - quantity - vested_quantity - vested_value - amount - price - fees - type - subtype - iso_currency_code - unofficial_currency_code AssetReportInvestmentHolding: title: AssetReportInvestmentHolding type: object additionalProperties: true description: A securities holding at an institution. properties: account_id: type: string description: The Plaid `account_id` associated with the holding. security_id: type: string description: The Plaid `security_id` associated with the holding. Security data is not specific to a user's account; any user who held the same security at the same financial institution at the same time would have identical security data. The `security_id` for the same security will typically be the same across different institutions, but this is not guaranteed. The `security_id` does not typically change, but may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. ticker_symbol: type: string nullable: true description: The holding's trading symbol for publicly traded holdings, and otherwise a short identifier if available. institution_price: type: number format: double description: The last price given by the institution for this security. institution_price_as_of: type: string format: date description: The date at which `institution_price` was current. nullable: true institution_value: type: number format: double description: The value of the holding, as reported by the institution. cost_basis: type: number format: double description: The original total value of the holding. This field is calculated by Plaid as the sum of the purchase price of all of the shares in the holding. nullable: true quantity: description: The total quantity of the asset held, as reported by the financial institution. If the security is an option, `quantity` will reflect the total number of options (typically the number of contracts multiplied by 100), not the number of contracts. type: number format: double iso_currency_code: type: string description: The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true 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. 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 - security_id - ticker_symbol - institution_price - institution_value - cost_basis - quantity - iso_currency_code - unofficial_currency_code AssetReportInvestmentSecurity: title: AssetReportInvestmentSecurity type: object additionalProperties: true description: Investment security associated with the account. properties: security_id: type: string description: A unique, Plaid-specific identifier for the security, used to associate securities with holdings. Like all Plaid identifiers, the `security_id` is case sensitive. The `security_id` may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. name: nullable: true type: string description: A descriptive name for the security, suitable for display. ticker_symbol: type: string nullable: true description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: nullable: true type: string description: |- The security type of the holding. Valid security types are: `cash`: Cash, currency, and money market funds `cryptocurrency`: Digital or virtual currencies `derivative`: Options, warrants, and other derivative instruments `equity`: Domestic and foreign equities `etf`: Multi-asset exchange-traded investment funds `fixed income`: Bonds and certificates of deposit (CDs) `loan`: Loans and loan receivables `mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors `other`: Unknown or other investment types required: - security_id - name - ticker_symbol - type OwnershipType: description: |- How an asset is owned. `association`: Ownership by a corporation, partnership, or unincorporated association, including for-profit and not-for-profit organizations. `individual`: Ownership by an individual. `joint`: Joint ownership by multiple parties. `trust`: Ownership by a revocable or irrevocable trust. nullable: true type: string enum: - null - individual - joint - association - trust AssetReportTransaction: title: AssetReportTransaction description: A transaction on the asset report type: object additionalProperties: true properties: account_id: type: string description: The ID of the account in which this transaction occurred. amount: type: number format: double description: The settled value of the transaction, denominated in the transaction's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true original_description: type: string description: The string returned by the financial institution to describe the transaction. nullable: true category: type: array description: |- A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). This field will only appear in an Asset Report with Insights. nullable: true items: type: string category_id: description: |- The ID of the category to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). This field will only appear in an Asset Report with Insights. type: string nullable: true credit_category: $ref: '#/components/schemas/CreditCategory' check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true date: type: string format: date description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). date_transacted: type: string nullable: true description: The date on which the transaction took place, in ISO 8601 format. location: $ref: '#/components/schemas/Location' name: type: string deprecated: true description: |- The merchant name or transaction description. This is a legacy field that is no longer maintained. For merchant name, use the `merchant_name` field. For description, use the `original_description` field. This field will only appear in an Asset Report with Insights. merchant_name: type: string description: The merchant name, as enriched by Plaid. 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`. nullable: true payment_meta: $ref: '#/components/schemas/PaymentMeta' pending: type: boolean description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. pending_transaction_id: type: string description: The ID of a posted transaction's associated pending transaction, where applicable. nullable: true account_owner: type: string description: The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts. nullable: true transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. transaction_type: $ref: '#/components/schemas/AssetReportTransactionType' income_source_id: type: string description: A unique identifier for an income source. x-hidden-from-docs: true required: - transaction_id - pending - date - unofficial_currency_code - iso_currency_code - amount - account_id - original_description AssetReportTransactionType: title: AssetReportTransactionType type: string enum: - digital - place - special - unresolved description: | `digital:` transactions that took place online. `place:` transactions that were made at a physical location. `special:` transactions that relate to banks, e.g. fees or deposits. `unresolved:` transactions that do not fit into the other three types. AccountInsights: title: AccountInsights description: This is a container object for all lending-related insights. This field will be returned only for European customers. type: object nullable: true additionalProperties: true properties: risk: $ref: '#/components/schemas/RiskIndicators' affordability: $ref: '#/components/schemas/AffordabilityInsights' AffordabilityInsights: title: AffordabilityInsights description: Affordability insights focus on providing signal on the ability of a borrower to repay their loan without experiencing financial strain. It provides insights on factors such as a user's monthly income and expenses, disposable income, average expenditure, etc., helping lenders gauge the level of affordability of a borrower. type: object nullable: true additionalProperties: true properties: expenditure: $ref: '#/components/schemas/ExpenditureInsights' income: $ref: '#/components/schemas/IncomeInsights' RiskIndicators: title: RiskIndicators description: Risk indicators focus on providing signal on the possibility of a borrower defaulting on their loan repayments by providing data points related to its payment behavior, debt, and other relevant financial information, helping lenders gauge the level of risk involved in a certain operation. type: object nullable: true additionalProperties: true properties: bank_penalties: $ref: '#/components/schemas/BankPenaltiesIndicators' gambling: $ref: '#/components/schemas/GamblingIndicators' loan_disbursements: $ref: '#/components/schemas/LoanDisbursementsIndicators' loan_payments: $ref: '#/components/schemas/LoanPaymentsIndicators' negative_balance: $ref: '#/components/schemas/NegativeBalanceInsights' BankPenaltiesIndicators: title: BankPenaltiesIndicators description: Insights into bank penalties and fees, including overdraft fees, NSF fees, and other bank-imposed charges. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: The total value of outflow transactions categorized as `BANK_PENALTIES`, across all the accounts in the report within the requested time window. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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 monthly_average: $ref: '#/components/schemas/MonthlyAverage' category_details: type: array description: Detailed categories view of all the transactions that fall into the `BANK_PENALTIES` credit category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/CategoryExpenses' transactions_count: type: integer nullable: true description: The total number of transactions that fall into the `BANK_PENALTIES` credit category, across all the accounts in the report. monthly_summaries: type: array description: The monthly summaries of the transactions that fall into the `BANK_PENALTIES` credit category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/MonthlySummary' days_since_last_occurrence: type: integer nullable: true description: The number of days since the last transaction that falls into the `BANK_PENALTIES` credit category, across all the accounts in the report. percentage_of_income: type: number format: double nullable: true description: |- The percentage of the user's monthly inflows that was spent on transactions that fall into the `BANK_PENALTIES` credit category within the given time window, across all the accounts in the report. For example, a value of 100 represents that 100% of the inflows were spent on transactions that fall into the `BANK_PENALTIES` credit category. If there's no available income for the given time period, this field value will be `-1`. GamblingIndicators: title: GamblingIndicators description: Insights into gambling-related transactions, including frequency, amounts, and top merchants. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: The total value of transactions that fall into the `GAMBLING` credit category, across all the accounts in the report. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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 monthly_average: $ref: '#/components/schemas/MonthlyAverage' top_merchants: type: array description: |- Up to 3 top merchants that the user had the most transactions for in the given time window, in descending order of total spend. If the user has not spent money on any merchants in the given time window, this list will be empty. items: type: string transactions_count: type: integer nullable: true description: The total number of transactions that fall into the `GAMBLING` credit category, across all the accounts in the report. monthly_summaries: type: array description: The monthly summaries of the transactions that fall into the `GAMBLING` category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/MonthlySummary' days_since_last_occurrence: type: integer nullable: true description: The number of days since the last transaction that falls into the `GAMBLING` category, across all the accounts in the report. percentage_of_income: type: number format: double nullable: true description: |- The percentage of the user's monthly inflows that was spent on transactions that fall into the `GAMBLING` category within the given time window, across all the accounts in the report. For example, a value of 100 indicates that 100% of the inflows were spent on transactions that fall into the `GAMBLING` credit category. If there's no available income for the given time period, this field value will be `-1` LoanDisbursementsIndicators: title: LoanDisbursementsIndicators description: Insights into loan disbursement transactions received by the user, tracking incoming funds from loan providers. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: The total value of inflow transactions categorized as `LOAN_DISBURSEMENTS`, across all the accounts in the report within the requested time window. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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_details: description: Detailed categories view of all the transactions that fall into the `LOAN_DISBURSEMENTS` credit category within the given time window, across all the accounts in the report. type: array items: $ref: '#/components/schemas/CategoryExpenses' monthly_average: $ref: '#/components/schemas/MonthlyAverage' top_providers: type: array 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 not received money from any provider in the given time window, this list will be empty. items: type: string transactions_count: type: integer nullable: true description: The total number of transactions that fall into the `LOAN_DISBURSEMENTS` credit category, across all the accounts in the report. monthly_summaries: type: array description: The monthly summaries of the transactions that fall into the `LOAN_DISBURSEMENTS` category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/MonthlySummary' days_since_last_occurrence: type: integer nullable: true description: The number of days since the last transaction that falls into the `LOAN_DISBURSEMENTS` credit category, across all the accounts in the report. percentage_of_income: type: number format: double nullable: true description: |- The percentage of the user's monthly inflows that was received on transactions that fall into the `LOAN_DISBURSEMENTS` credit category within the given time window, across all the accounts in the report. For example, a value of 100 indicates that 100% of the inflows were spent on transactions that fall into the `LOAN_DISBURSEMENTS` credit category. If there's no available income for the given time period, this field value will be `-1`. LoanPaymentsIndicators: title: LoanPaymentsIndicators description: Insights into loan payment transactions made by the user, tracking outgoing payments to loan providers. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: The total value of outflow transactions categorized as `LOAN_PAYMENTS`, across all the accounts in the report within the requested time window. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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 monthly_average: $ref: '#/components/schemas/MonthlyAverage' category_details: type: array description: Detailed categories view of all the transactions that fall into the `LOAN_PAYMENTS` credit category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/CategoryExpenses' top_providers: type: array 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 not spent money on any provider in the given time window, this list will be empty. items: type: string transactions_count: type: integer nullable: true description: The total number of transactions that fall into the `LOAN_PAYMENTS` credit category, across all the accounts in the report. monthly_summaries: type: array description: The monthly summaries of the transactions that fall into the `LOAN_PAYMENTS` credit category within the given time window, across all the accounts in the report. items: $ref: '#/components/schemas/MonthlySummary' days_since_last_occurrence: type: integer nullable: true description: The number of days since the last transaction that falls into the `LOAN_PAYMENTS` credit category, across all the accounts in the report. percentage_of_income: type: number format: double nullable: true description: |- The percentage of the user's monthly inflows that was spent on transactions that fall into the `LOAN_PAYMENTS` credit category within the given time window, across all the accounts in the report. For example, a value of 100 indicates that 100% of the inflows were spent on transactions that fall into the `LOAN_PAYMENTS` credit category. If there's no available income for the given time period, this field value will be `-1` NegativeBalanceInsights: title: NegativeBalanceInsights description: Insights into negative balance occurrences, including frequency, duration, and minimum balance details. type: object nullable: true additionalProperties: true properties: days_since_last_occurrence: type: integer nullable: true description: |- The number of days since the last transaction that caused any account in the report to have a negative balance. This value is inclusive of the date of the last negative balance, meaning that if the last negative balance occurred today, this value will be `0`. days_with_negative_balance: type: integer nullable: true description: The number of aggregated days that the accounts in the report has had a negative balance within the given time window. minimum_balance: $ref: '#/components/schemas/AmountWithCurrency' occurrences: type: array description: |- The summary of the negative balance occurrences for this account. If the user has not had a negative balance in the account in the given time window, this list will be empty. items: $ref: '#/components/schemas/NegativeBalanceOccurrence' NegativeBalanceOccurrence: title: NegativeBalanceOccurrence description: Details about a specific occurrence of a negative balance period, including start and end dates. type: object nullable: true additionalProperties: true properties: start_date: type: string nullable: true format: date description: |- The date of the first transaction that caused the account to have a negative balance. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string nullable: true format: date description: |- The date of the last transaction that caused the account to have a negative balance. The date will be returned in an ISO 8601 format (YYYY-MM-DD). This date is inclusive, meaning that this was the last date that the account had a negative balance. minimum_balance: $ref: '#/components/schemas/AmountWithCurrency' OutlierTransactionsInsights: title: OutlierTransactionsInsights description: Insights into unusually large transactions that exceed typical spending patterns for the account. type: object nullable: true additionalProperties: true properties: transactions_count: type: integer nullable: true description: The total number of transactions whose value is above the threshold of normal amounts for a given account. total_amount: $ref: '#/components/schemas/AmountWithCurrency' top_categories: type: array description: Up to 3 top categories of expenses in this group. items: $ref: '#/components/schemas/CategoryExpenses' AmountWithCurrencyWithMonthlyAverage: type: object additionalProperties: true nullable: true description: Represents an amount and a monthly average allOf: - $ref: '#/components/schemas/AmountWithCurrency' - $ref: '#/components/schemas/MonthlyAverage' IncomeInsights: title: IncomeInsights description: Comprehensive income analysis including total income, income excluding transfers, and inbound transfer amounts. type: object nullable: true additionalProperties: true properties: total_income: allOf: - $ref: '#/components/schemas/AmountWithCurrency' description: The total amount of all income transactions in the given time period. income_excluding_transfers: allOf: - $ref: '#/components/schemas/AmountWithCurrencyWithMonthlyAverage' description: Income excluding account transfer transactions for the period, including a monthly average. transfers_in: allOf: - $ref: '#/components/schemas/AmountWithCurrencyWithMonthlyAverage' description: Sum of inbound transfer transactions for the period, including a monthly average. ExpenditureInsights: title: ExpenditureInsights description: Comprehensive analysis of spending patterns, categorizing expenses into essential, non-essential, and other categories. type: object nullable: true additionalProperties: true properties: cash_flow: allOf: - $ref: '#/components/schemas/AmountWithCurrencyWithMonthlyAverage' description: Net cash flow for the period (inflows minus outflows), including a monthly average. total_expenditure: $ref: '#/components/schemas/ExpenditureSummary' essential_expenditure: $ref: '#/components/schemas/ExpenditureSummary' non_essential_expenditure: $ref: '#/components/schemas/ExpenditureSummary' other: $ref: '#/components/schemas/ExpenditureSummary' transfers_out: $ref: '#/components/schemas/ExpenditureSummary' outlier_transactions: $ref: '#/components/schemas/OutlierTransactionsInsights' ExpenditureSummary: title: ExpenditureSummary description: Summary statistics for a specific expenditure category, including total amount, monthly average, and percentage of income. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: The total value of all the aggregated transactions in this expenditure category. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string nullable: true description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. monthly_average: $ref: '#/components/schemas/MonthlyAverage' transactions_count: type: integer nullable: true description: The total number of outflow transactions in this expenses group, within the given time window across all the accounts in the report. percentage_of_income: type: number format: double nullable: true description: |- The percentage of the total inflows that was spent in this expenses group, within the given time window across all the accounts in the report. For example, a value of 100 represents that 100% of the inflows were spent on transactions that fall into this expenditure group. If there's no available income for the given time period, this field value will be `-1`. top_categories: type: array description: |- The primary credit categories of the expenses within the given time window, across all the accounts in the report. The categories are sorted in descending order by the total value spent. See the [category taxonomy](https://plaid.com/documents/credit-category-taxonomy.csv) for a full listing of category IDs. items: $ref: '#/components/schemas/CategoryExpenses' MonthlySummary: title: MonthlySummary description: Monthly summary of transactions within a specific time period, showing aggregated amounts. type: object nullable: true additionalProperties: true properties: start_date: type: string format: date description: The start date of the month for the given report time window. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true end_date: type: string format: date description: The end date of the month for the given report time window. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). nullable: true total_amount: $ref: '#/components/schemas/AmountWithCurrency' AmountWithCurrency: title: AmountWithCurrency description: A monetary amount with its associated currency information, supporting both official and unofficial currency codes. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: |- If the parent object represents a category of transactions, such as `total_amount`, `transfers_in`, `total_income`, etc. the `amount` represents the sum of all of the transactions in the group. If the parent object is `cash_flow`, the `amount` represents the total value of all the inflows minus all the outflows across all the accounts in the report in the given time window. If the parent object is `minimum_balance`, the `amount` represents the lowest balance of the account during the given time window. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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 CategoryExpenses: title: CategoryExpenses description: Detailed expense information for a specific credit category, including transaction count and total amount spent. type: object nullable: true additionalProperties: true properties: id: type: string nullable: false description: |- The ID of the credit category. See the [category taxonomy](https://plaid.com/documents/credit-category-taxonomy.csv) for a full listing of category IDs. transactions_count: type: integer nullable: true description: The total number of transactions that fall into this credit category within the given time window. amount: type: number format: double nullable: true description: The total value for all the transactions that fall into this category within the given time window. iso_currency_code: type: string description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. 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 monthly_average: $ref: '#/components/schemas/MonthlyAverage' MonthlyAverage: title: MonthlyAverage description: The monthly average amount calculated by dividing the total by the number of calendar months in the time period. type: object nullable: true additionalProperties: true properties: amount: type: number format: double nullable: true description: |- The monthly average amount of all the aggregated transactions of the given category, across all the accounts for the given time window. The average is calculated by dividing the total amount of the transactions by the number of calendar months in the given time window. iso_currency_code: type: string nullable: true description: The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`. unofficial_currency_code: type: string nullable: true description: |- The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`. See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s. BaseReport: title: BaseReport type: object additionalProperties: true description: An object representing a Base Report properties: report_id: $ref: '#/components/schemas/BaseReportId' date_generated: type: string format: date-time description: The date and time when the Base Report was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). days_requested: type: number description: The number of days of transaction history requested. client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. items: type: array description: Data returned by Plaid about each of the Items included in the Base Report. items: $ref: '#/components/schemas/BaseReportItem' attributes: $ref: '#/components/schemas/BaseReportUserAttributes' required: - report_id - date_generated - days_requested - items BaseReportUserAttributes: title: BaseReportUserAttributes description: Calculated attributes derived from transaction-level data, aggregated across accounts. type: object additionalProperties: true properties: nsf_overdraft_transactions_count: type: integer description: The number of net NSF fee transactions in the time range for the report (not counting any fees that were reversed within that time range). nsf_overdraft_transactions_count_30d: type: integer description: The number of net NSF fee transactions in the last 30 days in the report (not counting any fees that were reversed within that time range). nsf_overdraft_transactions_count_60d: type: integer description: The number of net NSF fee transactions in the last 60 days in the report (not counting any fees that were reversed within that time range). nsf_overdraft_transactions_count_90d: type: integer description: The number of net NSF fee transactions in the last 90 days in the report (not counting any fees that were reversed within that time range). total_inflow_amount: $ref: '#/components/schemas/TotalReportInflowAmount' total_inflow_amount_30d: $ref: '#/components/schemas/TotalReportInflowAmount30d' total_inflow_amount_60d: $ref: '#/components/schemas/TotalReportInflowAmount60d' total_inflow_amount_90d: $ref: '#/components/schemas/TotalReportInflowAmount90d' total_outflow_amount: $ref: '#/components/schemas/TotalReportOutflowAmount' total_outflow_amount_30d: $ref: '#/components/schemas/TotalReportOutflowAmount30d' total_outflow_amount_60d: $ref: '#/components/schemas/TotalReportOutflowAmount60d' total_outflow_amount_90d: $ref: '#/components/schemas/TotalReportOutflowAmount90d' TotalReportInflowAmount: type: object description: Total amount of debit transactions into 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: -2500 iso_currency_code: USD unofficial_currency_code: null TotalReportInflowAmount30d: type: object description: Total amount of debit transactions into 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: -1000 iso_currency_code: USD unofficial_currency_code: null TotalReportInflowAmount60d: type: object description: Total amount of debit transactions into 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: -2500 iso_currency_code: USD unofficial_currency_code: null TotalReportInflowAmount90d: type: object description: Total amount of debit transactions into the report's accounts in the last 90 days. This field only takes into account USD transactions from the accounts. additionalProperties: true nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: -2500 iso_currency_code: USD unofficial_currency_code: null TotalReportOutflowAmount: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: 2500 iso_currency_code: USD unofficial_currency_code: null TotalReportOutflowAmount30d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: 1000 iso_currency_code: USD unofficial_currency_code: null TotalReportOutflowAmount60d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: 2500 iso_currency_code: USD unofficial_currency_code: null TotalReportOutflowAmount90d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code example: amount: 2500 iso_currency_code: USD unofficial_currency_code: null BaseReportItem: title: BaseReportItem type: object additionalProperties: true description: A representation of an Item within a Base Report. properties: institution_name: type: string description: The full financial institution name associated with the Item. institution_id: description: The id of the financial institution associated with the Item. type: string date_last_updated: type: string format: date-time description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. item_id: $ref: '#/components/schemas/ItemId' accounts: type: array description: Data about each of the accounts open on the Item. items: $ref: '#/components/schemas/BaseReportAccount' required: - institution_name - institution_id - item_id - date_last_updated - accounts BaseReportAccount: title: BaseReportAccount description: Base Report information about an account type: object additionalProperties: true properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. balances: $ref: '#/components/schemas/BaseReportAccountBalances' consumer_disputes: type: array description: The information about previously submitted valid dispute statements by the consumer items: $ref: '#/components/schemas/ConsumerDispute' mask: type: string 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. metadata: $ref: '#/components/schemas/BaseReportAccountMetadata' name: type: string description: The name of the account, either assigned by the user or by the financial institution itself official_name: type: string nullable: true description: The official name of the account as given by the financial institution type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' days_available: type: number description: The duration of transaction history available within this report for this Item, typically defined as the time since the date of the earliest transaction in that account. transactions: type: array description: Transaction history associated with the account. Transaction history returned by endpoints such as `/transactions/get` or `/investments/transactions/get` will be returned in the top-level `transactions` field instead. Some transactions may have their details masked in accordance to the FCRA. These will appear with a `credit_category` of `MASKED_TRANSACTION_CATEGORY`. items: $ref: '#/components/schemas/BaseReportTransaction' 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. This array can also be empty if no owners are found. items: $ref: '#/components/schemas/Owner' ownership_type: $ref: '#/components/schemas/OwnershipType' historical_balances: type: array x-hidden-from-docs: true description: Calculated data about the historical balances on the account. Currently not supported by `brokerage` or `investment` accounts. items: $ref: '#/components/schemas/BaseReportHistoricalBalance' account_insights: $ref: '#/components/schemas/BaseReportAccountInsights' attributes: $ref: '#/components/schemas/BaseReportAttributes' required: - account_id - balances - consumer_disputes - mask - metadata - name - official_name - type - subtype - days_available - transactions - owners - ownership_type ConsumerDispute: title: ConsumerDispute description: The information about a previously submitted valid dispute statement by the consumer x-hidden-from-docs: true type: object additionalProperties: true properties: consumer_dispute_id: type: string description: (Deprecated) A unique identifier (UUID) of the consumer dispute that can be used for troubleshooting deprecated: true dispute_field_create_date: type: string format: date description: Date of the disputed field (e.g. transaction date), in an ISO 8601 format (YYYY-MM-DD) category: $ref: '#/components/schemas/ConsumerDisputeCategory' statement: type: string description: Text content of dispute required: - consumer_dispute_id - dispute_field_create_date - category - statement ConsumerDisputeCategory: title: ConsumerReportCategory type: string enum: - TRANSACTION - BALANCE - IDENTITY - OTHER description: Type of data being disputed by the consumer BaseReportAccountBalances: title: BaseReportAccountBalances description: Information about an account's balances. type: object properties: available: type: number format: double description: |- The amount of funds available to be withdrawn from the account, as determined by the financial institution. For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution. Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`. Available balance may be cached and is not guaranteed to be up-to-date in real-time unless the value was returned by `/accounts/balance/get`. If `current` is `null` this field is guaranteed not to be `null`. nullable: true current: type: number format: double description: |- The total amount of funds in or owed by the account. For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder. For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution. Note that balance information may be cached unless the value was returned by `/accounts/balance/get`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require real-time balance information, use the `available` balance as provided by `/accounts/balance/get`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`. nullable: true limit: type: number format: double description: |- For `credit`-type accounts, this represents the credit limit. For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe. In North America, this field is typically only available for `credit`-type accounts. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. 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 `unofficial_currency_code`s. nullable: true last_updated_datetime: type: string format: date-time description: |- Timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the oldest acceptable balance when making a request to `/accounts/balance/get`. This field is only used and expected when the institution is `ins_128026` (Capital One) and the Item contains one or more accounts with a non-depository account type, in which case a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For Capital One depository accounts as well as all other account types on all other institutions, this field is ignored. See [account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of account types. If the balance that is pulled is older than the given timestamp for Items with this field required, an `INVALID_REQUEST` error with the code of `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned with the most recent timestamp for the requested account contained in the response. nullable: true average_balance: type: number format: double description: The average historical balance for the entire report nullable: true average_monthly_balances: type: array description: The average historical balance of each calendar month items: $ref: '#/components/schemas/BaseReportAverageMonthlyBalances' most_recent_thirty_day_average_balance: type: number format: double description: The average historical balance from the most recent 30 days nullable: true required: - available - current - limit - iso_currency_code - unofficial_currency_code BaseReportAccountMetadata: title: BaseReportAccountMetadata description: Metadata about the extracted account. type: object properties: start_date: type: string format: date description: The beginning of the range of the financial institution provided data for the account, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true end_date: type: string format: date description: The end of the range of the financial institution provided data for the account, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true required: - start_date - end_date BaseReportId: title: BaseReportId description: A unique ID identifying a Base Report. Like all Plaid identifiers, this ID is case sensitive. type: string BaseReportTransaction: title: BaseReportTransaction description: A transaction on the Base Report type: object additionalProperties: true properties: account_id: type: string description: The ID of the account in which this transaction occurred. amount: type: number format: double description: The settled value of the transaction, denominated in the transaction's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true name: deprecated: true x-hidden-from-docs: true nullable: true type: string description: |- The merchant name or transaction description. Note: This is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name. original_description: type: string description: The string returned by the financial institution to describe the transaction. nullable: true credit_category: $ref: '#/components/schemas/CreditCategory' check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true date: type: string format: date description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ). date_transacted: type: string nullable: true description: The date on which the transaction took place, in ISO 8601 format. location: $ref: '#/components/schemas/Location' 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`. nullable: true pending: type: boolean description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. account_owner: type: string description: The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts. nullable: true transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. transaction_type: $ref: '#/components/schemas/BaseReportTransactionType' category: type: array x-hidden-from-docs: true description: A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). nullable: true items: type: string category_id: x-hidden-from-docs: true type: string description: The ID of the category to which this transaction belongs. For a full list of categories, see [`/categories/get`](https://plaid.com/docs/api/products/transactions/#categoriesget). nullable: true personal_finance_category: x-hidden-from-docs: true allOf: - $ref: '#/components/schemas/PersonalFinanceCategory' required: - transaction_id - pending - date - unofficial_currency_code - iso_currency_code - amount - account_id - original_description BaseReportTransactionType: title: BaseReportTransactionType type: string nullable: true x-hidden-from-docs: true enum: - digital - place - special - unresolved description: | `digital:` transactions that took place online. `place:` transactions that were made at a physical location. `special:` transactions that relate to banks, e.g. fees or deposits. `unresolved:` transactions that do not fit into the other types. BaseReportAccountInsights: title: BaseReportAccountInsights deprecated: true description: Calculated insights derived from transaction-level data. This field has been deprecated in favor of [Base Report attributes aggregated across accounts](https://plaid.com/docs/api/products/check/#cra-check_report-base_report-get-response-report-attributes) and will be removed in a future release. type: object additionalProperties: true properties: oldest_transaction_date: type: string format: date nullable: true description: Date of the earliest transaction for the account. most_recent_transaction_date: type: string format: date nullable: true description: Date of the most recent transaction for the account. days_available: type: integer description: Number of days available for the account. average_days_between_transactions: type: number description: Average number of days between sequential transactions longest_gaps_between_transactions: type: array description: Longest gap between sequential transactions in a time period. This array can include multiple time periods. items: $ref: '#/components/schemas/BaseReportLongestGapInsights' number_of_inflows: type: array description: The number of debits into the account. This array will be empty for non-depository accounts. items: $ref: '#/components/schemas/BaseReportNumberFlowInsights' average_inflow_amounts: type: array description: Average amount of debit transactions into the account in a time period. This array will be empty for non-depository accounts. This field only takes into account USD transactions from the account. items: $ref: '#/components/schemas/BaseReportAverageFlowInsights' number_of_outflows: type: array description: The number of outflows from the account. This array will be empty for non-depository accounts. items: $ref: '#/components/schemas/BaseReportNumberFlowInsights' average_outflow_amounts: type: array description: Average amount of transactions out of the account in a time period. This array will be empty for non-depository accounts. This field only takes into account USD transactions from the account. items: $ref: '#/components/schemas/BaseReportAverageFlowInsights' number_of_days_no_transactions: type: integer description: Number of days with no transactions BaseReportAttributes: title: BaseReportAttributes description: Calculated attributes derived from transaction-level data. type: object additionalProperties: true properties: is_primary_account: type: boolean description: Prediction indicator of whether the account is a primary account. Only one account per account type across the items connected will have a value of true. nullable: true primary_account_score: type: number description: Value ranging from 0-1. The higher the score, the more confident we are of the account being the primary account. nullable: true nsf_overdraft_transactions_count: type: integer description: The number of net NSF fee transactions for a given account within the report time range (not counting any fees that were reversed within the time range). nsf_overdraft_transactions_count_30d: type: integer description: The number of net NSF fee transactions within the last 30 days for a given account (not counting any fees that were reversed within the time range). nsf_overdraft_transactions_count_60d: type: integer description: The number of net NSF fee transactions within the last 60 days for a given account (not counting any fees that were reversed within the time range). nsf_overdraft_transactions_count_90d: type: integer description: The number of net NSF fee transactions within the last 90 days for a given account (not counting any fees that were reversed within the time range). total_inflow_amount: $ref: '#/components/schemas/TotalInflowAmount' total_inflow_amount_30d: $ref: '#/components/schemas/TotalInflowAmount30d' total_inflow_amount_60d: $ref: '#/components/schemas/TotalInflowAmount60d' total_inflow_amount_90d: $ref: '#/components/schemas/TotalInflowAmount90d' total_outflow_amount: $ref: '#/components/schemas/TotalOutflowAmount' total_outflow_amount_30d: $ref: '#/components/schemas/TotalOutflowAmount30d' total_outflow_amount_60d: $ref: '#/components/schemas/TotalOutflowAmount60d' total_outflow_amount_90d: $ref: '#/components/schemas/TotalOutflowAmount90d' TotalInflowAmount: type: object description: Total amount of debit 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. additionalProperties: true nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalInflowAmount30d: type: object description: Total amount of debit 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. additionalProperties: true nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalInflowAmount60d: type: object description: Total amount of debit 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. additionalProperties: true nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalInflowAmount90d: type: object description: Total amount of debit 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. additionalProperties: true nullable: true properties: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalOutflowAmount: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalOutflowAmount30d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalOutflowAmount60d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code TotalOutflowAmount90d: type: object 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: amount: type: number description: Value of amount with up to 2 decimal places. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - amount - iso_currency_code - unofficial_currency_code BaseReportLongestGapInsights: title: BaseReportLongestGapInsights description: Largest number of days between sequential transactions per calendar month x-hidden-from-docs: true type: object additionalProperties: true properties: start_date: type: string format: date description: |- The start date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). days: type: integer nullable: true description: Largest number of days between sequential transactions for this time period. BaseReportNumberFlowInsights: title: BaseReportNumberFlowInsights description: The number of credits or debits out of the account. This field will only be included for depository accounts. x-hidden-from-docs: true type: object additionalProperties: true properties: start_date: type: string format: date description: |- The start date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). count: type: integer description: The number of credits or debits out of the account for this time period. required: - start_date - end_date - count BaseReportAverageFlowInsights: title: BaseReportAverageFlowInsights description: Average dollar amount of credit or debit transactions out of the account. This field will only be included for depository accounts. x-hidden-from-docs: true type: object additionalProperties: true properties: start_date: type: string format: date description: |- The start date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). total_amount: $ref: '#/components/schemas/CreditAmountWithCurrency' required: - start_date - end_date - total_amount BaseReportAverageMonthlyBalances: title: BaseReportAverageMonthlyBalances description: Average balance in dollar amount per month x-hidden-from-docs: true type: object additionalProperties: true properties: start_date: type: string description: |- The start date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string description: |- The end date of this time period. The date will be returned in an ISO 8601 format (YYYY-MM-DD). average_balance: $ref: '#/components/schemas/CreditAmountWithCurrency' required: - start_date - end_date - average_balance BaseReportInvestments: title: BaseReportInvestments type: object additionalProperties: true nullable: true description: A set of fields describing the investments data on an account. properties: holdings: type: array description: Quantities and values of securities held in the investment account. Map to the `securities` array for security details. items: $ref: '#/components/schemas/BaseReportInvestmentHolding' securities: type: array description: Details of specific securities held in the investment account. items: $ref: '#/components/schemas/BaseReportInvestmentSecurity' investment_transactions: type: array description: Transaction history on the investment account. items: $ref: '#/components/schemas/BaseReportInvestmentTransaction' required: - holdings - securities - investment_transactions BaseReportInvestmentTransaction: title: BaseReportInvestmentTransaction type: object additionalProperties: true description: A transaction within an investment account. properties: investment_transaction_id: type: string description: The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive. account_id: type: string description: The `account_id` of the account against which this transaction posted. security_id: type: string description: The `security_id` to which this transaction is related. nullable: true date: type: string format: date description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. name: type: string description: The institution's description of the transaction. quantity: type: number format: double description: The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions. amount: description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities. For transactions representing a simultaneous cash contribution and purchase of a security, the portion of the transaction representing the purchase takes precedence, and the `amount` is represented as positive. type: number format: double price: description: The price of the security at which this transaction occurred. type: number format: double fees: type: number format: double description: The combined value of all fees applied to this transaction nullable: true type: $ref: '#/components/schemas/InvestmentTransactionType' subtype: $ref: '#/components/schemas/InvestmentTransactionSubtype' iso_currency_code: type: string description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string 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 `unofficial_currency_code`s. nullable: true required: - investment_transaction_id - account_id - security_id - date - name - quantity - amount - price - fees - type - subtype - iso_currency_code - unofficial_currency_code BaseReportInvestmentHolding: title: BaseReportInvestmentHolding type: object additionalProperties: true description: A securities holding at an institution. properties: account_id: type: string description: The Plaid `account_id` associated with the holding. security_id: type: string description: The Plaid `security_id` associated with the holding. Security data is not specific to a user's account; any user who held the same security at the same financial institution at the same time would have identical security data. The `security_id` for the same security will typically be the same across different institutions, but this is not guaranteed. The `security_id` does not typically change, but may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. institution_price: type: number format: double description: The last price given by the institution for this security. institution_price_as_of: type: string format: date description: The date at which `institution_price` was current. nullable: true institution_value: type: number format: double description: The value of the holding, as reported by the institution. cost_basis: type: number format: double description: The original total value of the holding. This field is calculated by Plaid as the sum of the purchase price of all of the shares in the holding. nullable: true quantity: description: The total quantity of the asset held, as reported by the financial institution. If the security is an option, `quantity` will reflect the total number of options (typically the number of contracts multiplied by 100), not the number of contracts. type: number format: double iso_currency_code: type: string description: The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true 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. 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 - security_id - institution_price - institution_value - cost_basis - quantity - iso_currency_code - unofficial_currency_code BaseReportInvestmentSecurity: title: BaseReportInvestmentSecurity type: object additionalProperties: true description: Investment security associated with the account. properties: security_id: type: string description: A unique, Plaid-specific identifier for the security, used to associate securities with holdings. Like all Plaid identifiers, the `security_id` is case sensitive. The `security_id` may change if inherent details of the security change due to a corporate action, for example, in the event of a ticker symbol change or CUSIP change. name: nullable: true type: string description: A descriptive name for the security, suitable for display. isin: type: string nullable: true description: 12-character ISIN, a globally unique securities identifier. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). cusip: nullable: true type: string description: 9-character CUSIP, an identifier assigned to North American securities. A verified CUSIP Global Services license is required to receive this data. This field will be null by default for new customers, and null for existing customers starting March 12, 2024. If you would like access to this field, please start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform). institution_security_id: nullable: true type: string description: An identifier given to the security by the institution. institution_id: nullable: true type: string description: If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs. ticker_symbol: type: string nullable: true description: The security's trading symbol for publicly traded securities, and otherwise a short identifier if available. type: nullable: true type: string description: |- The security type of the holding. Valid security types are: `cash`: Cash, currency, and money market funds `cryptocurrency`: Digital or virtual currencies `derivative`: Options, warrants, and other derivative instruments `equity`: Domestic and foreign equities `etf`: Multi-asset exchange-traded investment funds `fixed income`: Bonds and certificates of deposit (CDs) `loan`: Loans and loan receivables `mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors `other`: Unknown or other investment types required: - security_id - name - isin - cusip - institution_security_id - institution_id - ticker_symbol - type BeaconAccountRiskEvaluateRequest: title: BeaconAccountRiskEvaluateRequest description: BeaconAccountRiskEvaluateRequest defines the request schema for `/beacon/account_risk/v1/evaluate` type: object x-hidden-from-docs: true properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/BeaconAccountRiskEvaluateRequestOptions' client_user_id: type: string description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple evaluations and/or multiple linked accounts. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. minLength: 1 maxLength: 36 client_evaluation_id: type: string description: Unique identifier of what you are looking to evaluate (account add, information change, etc.) to allow us to tie the activity to the decisions and possible fraud outcome sent via our feedback endpoints. You can use your internal request ID or similar. evaluation_reason: $ref: '#/components/schemas/BeaconAccountRiskEvaluateEvaluationReason' device: $ref: '#/components/schemas/SignalDevice' evaluate_time: type: string description: The time the event for evaluation has occurred. Populate this field for backfilling data. If you don't populate this field, we'll use the timestamp at the time of receipt. Use ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ). BeaconAccountRiskEvaluateRequestOptions: type: object description: An optional object to filter `/beacon/account_risk/v1/evaluate` results to a subset of the accounts on the linked Item. properties: account_ids: type: array description: An array of `account_ids` for the specific accounts to evaluate. items: type: string BeaconAccountRiskEvaluateEvaluationReason: type: string enum: - ONBOARDING - NEW_ACCOUNT - INFORMATION_CHANGE - DORMANT_USER - OTHER x-hidden-from-docs: true description: | Description of the reason you want to evaluate risk. `ONBOARDING`: user links a first bank account as part of the onboarding flow of your platform. `NEW_ACCOUNT`: user links another bank account or replaces the currently linked bank account on your platform. `INFORMATION_CHANGE`: user changes their information on your platform, e.g., updating their phone number. `DORMANT_USER`: you decide to re-evaluate a user that becomes active after a period of inactivity. `OTHER`: any other reasons not listed here Possible values: `ONBOARDING`, `NEW_ACCOUNT`, `INFORMATION_CHANGE`, `DORMANT_USER`, `OTHER` BeaconAccountRiskEvaluateResponse: title: BeaconAccountRiskEvaluateResponse description: BeaconAccountRiskEvaluateResponse defines the response schema for `/beacon/account_risk/v1/evaluate` type: object x-hidden-from-docs: true additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' accounts: type: array description: The accounts for which a risk evaluation has been requested. items: $ref: '#/components/schemas/BeaconAccountRiskEvaluateAccount' required: - request_id - accounts BeaconAccountRiskEvaluateAccount: title: BeaconAccountRiskEvaluateAccount description: An account in the `/beacon/account_risk/v1/evaluate` response. type: object properties: account_id: type: string description: The account ID. type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' attributes: $ref: '#/components/schemas/BeaconAccountRiskEvaluateAccountAttributes' BeaconAccountRiskEvaluateAccountAttributes: title: BeaconAccountRiskEvaluateAccountAttributes type: object description: |- The attributes object contains data that can be used to assess account risk. Examples of data include: `days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid `plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days `plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager properties: days_since_first_plaid_connection: type: integer description: The number of days since the first time the Item was connected to an application via Plaid nullable: true is_account_closed: type: boolean description: Indicates if the account has been closed by the financial institution or the consumer, or is at risk of being closed nullable: true is_account_frozen_or_restricted: type: boolean description: Indicates whether the account has withdrawals and transfers disabled or if access to the account is restricted. This could be due to a freeze by the credit issuer, legal restrictions (e.g., sanctions), or regulatory requirements limiting monthly withdrawals, among other reasons nullable: true total_plaid_connections_count: type: integer description: The total number of times the item has been connected to applications via Plaid nullable: true plaid_connections_count_7d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 7 days nullable: true plaid_connections_count_30d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 30 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true distinct_ip_addresses_count_3d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days nullable: true distinct_ip_addresses_count_7d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days nullable: true distinct_ip_addresses_count_30d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 30 days nullable: true distinct_ip_addresses_count_90d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 90 days nullable: true distinct_user_agents_count_3d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days nullable: true distinct_user_agents_count_7d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days nullable: true distinct_user_agents_count_30d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days nullable: true distinct_user_agents_count_90d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days nullable: true address_change_count_28d: type: integer description: The number of times the account's addresses on file have changed over the past 28 days nullable: true email_change_count_28d: type: integer description: The number of times the account's email addresses on file have changed over the past 28 days nullable: true phone_change_count_28d: type: integer description: The number of times the account's phone numbers on file have changed over the past 28 days nullable: true address_change_count_90d: type: integer description: The number of times the account's addresses on file have changed over the past 90 days nullable: true email_change_count_90d: type: integer description: The number of times the account's email addresses on file have changed over the past 90 days nullable: true phone_change_count_90d: type: integer description: The number of times the account's phone numbers on file have changed over the past 90 days nullable: true days_since_account_opening: type: integer description: The number of days since the bank account was opened, as reported by the financial institution nullable: true days_since_first_observed_transaction: type: integer description: The number of days since the oldest transaction available to Plaid for this account. This measure, combined with Plaid connection history, can be used to infer the age of the account nullable: true AAMVAAnalysis: description: |- Analyzed AAMVA data for the associated hit. Note: This field is only available for U.S. driver's licenses issued by participating states. nullable: true additionalProperties: true type: object properties: is_verified: type: boolean description: The overall outcome of checking the associated hit against the issuing state database. example: true id_number: $ref: '#/components/schemas/AAMVAMatchResult' id_issue_date: $ref: '#/components/schemas/AAMVAMatchResult' id_expiration_date: $ref: '#/components/schemas/AAMVAMatchResult' street: $ref: '#/components/schemas/AAMVADetailedMatchResult' city: $ref: '#/components/schemas/AAMVAMatchResult' postal_code: $ref: '#/components/schemas/AAMVADetailedMatchResult' date_of_birth: $ref: '#/components/schemas/AAMVAMatchResult' gender: $ref: '#/components/schemas/AAMVAMatchResult' height: $ref: '#/components/schemas/AAMVAMatchResult' eye_color: $ref: '#/components/schemas/AAMVAMatchResult' first_name: $ref: '#/components/schemas/AAMVADetailedMatchResult' middle_name: $ref: '#/components/schemas/AAMVADetailedMatchResult' last_name: $ref: '#/components/schemas/AAMVADetailedMatchResult' required: - is_verified - id_number - id_issue_date - id_expiration_date - street - city - postal_code - date_of_birth - gender - height - eye_color - first_name - middle_name - last_name AAMVADetailedMatchResult: description: |- The outcome of checking the associated hit against state databases. `match` - The field is an exact match with the state database. `partial_match` - The field is a partial match with the state database. `no_match` - The field is not an exact match with the state database. `no_data` - The field was unable to be checked against state databases. type: string enum: - match - partial_match - no_match - no_data AAMVAMatchResult: description: |- The outcome of checking the particular field against state databases. `match` - The field is an exact match with the state database. `no_match` - The field is not an exact match with the state database. `no_data` - The field was unable to be checked against state databases. type: string enum: - match - no_match - no_data AccountMask: type: string description: The last 2-4 numeric characters of this account's account number. example: "4000" AddressPurposeLabel: description: |- Field describing whether the associated address is being used for commercial or residential purposes. Note: This value will be `no_data` when Plaid does not have sufficient data to determine the address's use. type: string enum: - residential - commercial - no_data example: residential BeaconAccountRiskAttributes: title: BeaconAccountRiskAttributes type: object description: |- The attributes object contains data that can be used to assess account risk. Examples of data include: `days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid `plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days `plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager properties: days_since_first_plaid_connection: type: integer description: The number of days since the first time the Item was connected to an application via Plaid nullable: true example: 1 is_account_closed: type: boolean description: Indicates if the account has been closed by the financial institution or the consumer, or is at risk of being closed nullable: true example: false is_account_frozen_or_restricted: type: boolean description: Indicates whether the account has withdrawals and transfers disabled or if access to the account is restricted. This could be due to a freeze by the credit issuer, legal restrictions (e.g., sanctions), or regulatory requirements limiting monthly withdrawals, among other reasons nullable: true example: false total_plaid_connections_count: type: integer description: The total number of times the Item has been connected to applications via Plaid nullable: true example: 1 plaid_connections_count_7d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 7 days nullable: true example: 1 plaid_connections_count_30d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 30 days nullable: true example: 1 failed_plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true example: 1 plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true example: 1 failed_plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true example: 1 plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true example: 1 failed_plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true example: 1 plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true example: 1 distinct_ip_addresses_count_3d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days nullable: true example: 1 distinct_ip_addresses_count_7d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days nullable: true example: 1 distinct_ip_addresses_count_30d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 30 days nullable: true example: 1 distinct_ip_addresses_count_90d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 90 days nullable: true example: 1 distinct_user_agents_count_3d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days nullable: true example: 1 distinct_user_agents_count_7d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days nullable: true example: 1 distinct_user_agents_count_30d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days nullable: true example: 1 distinct_user_agents_count_90d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days nullable: true example: 1 address_change_count_28d: type: integer description: The number of times the account's addresses on file have changed over the past 28 days nullable: true example: 1 email_change_count_28d: type: integer description: The number of times the account's email addresses on file have changed over the past 28 days nullable: true example: 2 phone_change_count_28d: type: integer description: The number of times the account's phone numbers on file have changed over the past 28 days nullable: true example: 1 address_change_count_90d: type: integer description: The number of times the account's addresses on file have changed over the past 90 days nullable: true example: 3 email_change_count_90d: type: integer description: The number of times the account's email addresses on file have changed over the past 90 days nullable: true example: 4 phone_change_count_90d: type: integer description: The number of times the account's phone numbers on file have changed over the past 90 days nullable: true example: 2 days_since_account_opening: type: integer description: The number of days since the bank account was opened, as reported by the financial institution nullable: true example: 365 days_since_first_observed_transaction: type: integer description: The number of days since the oldest transaction available to Plaid for this account. This measure, combined with Plaid connection history, can be used to infer the age of the account nullable: true example: 180 required: - days_since_first_plaid_connection - is_account_closed - is_account_frozen_or_restricted - total_plaid_connections_count - plaid_connections_count_7d - plaid_connections_count_30d - failed_plaid_non_oauth_authentication_attempts_count_3d - plaid_non_oauth_authentication_attempts_count_3d - failed_plaid_non_oauth_authentication_attempts_count_7d - plaid_non_oauth_authentication_attempts_count_7d - failed_plaid_non_oauth_authentication_attempts_count_30d - plaid_non_oauth_authentication_attempts_count_30d - distinct_ip_addresses_count_3d - distinct_ip_addresses_count_7d - distinct_ip_addresses_count_30d - distinct_ip_addresses_count_90d - distinct_user_agents_count_3d - distinct_user_agents_count_7d - distinct_user_agents_count_30d - distinct_user_agents_count_90d - address_change_count_28d - email_change_count_28d - phone_change_count_28d - address_change_count_90d - email_change_count_90d - phone_change_count_90d - days_since_account_opening - days_since_first_observed_transaction additionalProperties: true BeaconAuditTrail: type: object title: BeaconAuditTrail description: Information about the last change made to the parent object specifying what caused the change as well as when it occurred. properties: source: $ref: '#/components/schemas/BeaconAuditTrailSource' dashboard_user_id: $ref: '#/components/schemas/DashboardUserIDNullable' timestamp: $ref: '#/components/schemas/Timestamp' required: - source - dashboard_user_id - timestamp additionalProperties: true BeaconAuditTrailSource: type: string enum: - dashboard - api - system - bulk_import description: |- A type indicating what caused a resource to be changed or updated. `dashboard` - The resource was created or updated by a member of your team via the Plaid dashboard. `api` - The resource was created or updated via the Plaid API. `system` - The resource was created or updated automatically by a part of the Plaid Beacon system. For example, if another business using Plaid Beacon created a fraud report that matched one of your users, your matching user's status would automatically be updated and the audit trail source would be `system`. `bulk_import` - The resource was created or updated as part of a bulk import process. For example, if your company provided a CSV of user data as part of your initial onboarding, the audit trail source would be `bulk_import`. BeaconBankAccountInsights: type: object title: BeaconBankAccountInsights description: Bank Account Insights encapsulate the risk insights for a single Bank Account linked to an Item that is associated with a Beacon User. properties: account_id: type: string description: The Plaid `account_id` example: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' attributes: $ref: '#/components/schemas/BeaconAccountRiskAttributes' required: - account_id - type - subtype - attributes additionalProperties: true BeaconBankAccounts: type: object title: BeaconBankAccounts description: A collection of Bank Accounts linked to an Item that is associated with this Beacon User. properties: item_id: type: string description: The Plaid Item ID the Bank Accounts belong to. example: 515cd85321d3649aecddc015 accounts: type: array items: $ref: '#/components/schemas/BeaconBankAccountInsights' required: - item_id - accounts additionalProperties: true BeaconDuplicateGetRequest: description: Request input for getting a Beacon Duplicate type: object properties: beacon_duplicate_id: $ref: '#/components/schemas/BeaconDuplicateID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_duplicate_id BeaconDuplicateGetResponse: description: A Beacon Duplicate represents a pair of matching Beacon Users and an analysis of the fields they matched on. additionalProperties: true properties: id: $ref: '#/components/schemas/BeaconDuplicateID' beacon_user1: $ref: '#/components/schemas/BeaconUserRevision' beacon_user2: $ref: '#/components/schemas/BeaconUserRevision' analysis: $ref: '#/components/schemas/BeaconMatchSummaryAnalysis' request_id: $ref: '#/components/schemas/RequestID' required: - id - beacon_user1 - beacon_user2 - analysis - request_id type: object BeaconDuplicateID: type: string title: BeaconDuplicateID example: becdup_11111111111111 description: ID of the associated Beacon Duplicate. BeaconMatchSummaryAnalysis: type: object title: BeaconMatchSummaryAnalysis description: Analysis of which fields matched between one Beacon User and another. properties: address: $ref: '#/components/schemas/BeaconMatchSummaryCode' date_of_birth: $ref: '#/components/schemas/BeaconMatchSummaryCode' email_address: $ref: '#/components/schemas/BeaconMatchSummaryCode' name: $ref: '#/components/schemas/BeaconMatchSummaryCode' id_number: $ref: '#/components/schemas/BeaconMatchSummaryCode' ip_address: $ref: '#/components/schemas/BeaconMatchSummaryCode' phone_number: $ref: '#/components/schemas/BeaconMatchSummaryCode' required: - address - date_of_birth - email_address - name - id_number - ip_address - phone_number additionalProperties: true BeaconMatchSummaryCode: description: |- An enum indicating the match type between two Beacon Users. `match` indicates that the provided input data was a strong match against the other Beacon User. `partial_match` indicates the data approximately matched the other Beacon User. For example, "Knope" vs. "Knope-Wyatt" for last name. `no_match` indicates that Plaid was able to compare this field against the other Beacon User and it did not match the provided input data. `no_data` indicates that Plaid was unable to compare this field against the original Beacon User because the field was not present in one of the Beacon Users. type: string title: BeaconMatchSummaryCode enum: - match - partial_match - no_match - no_data example: match BeaconProgramID: type: string title: BeaconProgramID example: becprg_11111111111111 description: ID of the associated Beacon Program. BeaconReport: type: object title: BeaconReport description: |- A Beacon Report describes the type of fraud committed by a user as well as the date the fraud was committed and the total amount of money lost due to the fraud incident. This information is used to block similar fraud attempts on your platform as well as alert other companies who screen a user with matching identity information. Other companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud. You can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users. properties: id: $ref: '#/components/schemas/BeaconReportID' beacon_user_id: $ref: '#/components/schemas/BeaconUserID' created_at: $ref: '#/components/schemas/Timestamp' type: $ref: '#/components/schemas/BeaconReportType' fraud_date: $ref: '#/components/schemas/ISO8601DateNullable' event_date: $ref: '#/components/schemas/ISO8601Date' fraud_amount: $ref: '#/components/schemas/FraudAmount' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' required: - id - beacon_user_id - created_at - type - fraud_date - event_date - fraud_amount - audit_trail additionalProperties: true BeaconReportCreateRequest: description: Request input for creating a Beacon Report type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' type: $ref: '#/components/schemas/BeaconReportCreateType' fraud_date: $ref: '#/components/schemas/ISO8601Date' fraud_amount: $ref: '#/components/schemas/FraudAmount' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id - type - fraud_date BeaconReportCreateResponse: description: |- A Beacon Report describes the type of fraud committed by a user as well as the date the fraud was committed and the total amount of money lost due to the fraud incident. This information is used to block similar fraud attempts on your platform as well as alert other companies who screen a user with matching identity information. Other companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud. You can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users. additionalProperties: true properties: id: $ref: '#/components/schemas/BeaconReportID' beacon_user_id: $ref: '#/components/schemas/BeaconUserID' created_at: $ref: '#/components/schemas/Timestamp' type: $ref: '#/components/schemas/BeaconReportType' fraud_date: $ref: '#/components/schemas/ISO8601DateNullable' event_date: $ref: '#/components/schemas/ISO8601Date' fraud_amount: $ref: '#/components/schemas/FraudAmount' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - beacon_user_id - created_at - type - fraud_date - event_date - fraud_amount - audit_trail - request_id type: object BeaconReportCreateType: type: string title: BeaconReportCreateType description: |- The type of Beacon Report. `first_party`: If this is the same individual as the one who submitted the KYC. `stolen`: If this is a different individual from the one who submitted the KYC. `synthetic`: If this is an individual using fabricated information. `account_takeover`: If this individual's account was compromised. `unknown`: If you aren't sure who committed the fraud. enum: - first_party - stolen - synthetic - account_takeover - data_breach - unknown x-override-enum-values-shown: - first_party - stolen - synthetic - account_takeover - unknown BeaconReportGetRequest: description: Request input for getting a Beacon Report type: object properties: beacon_report_id: $ref: '#/components/schemas/BeaconReportID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_report_id BeaconReportGetResponse: description: |- A Beacon Report describes the type of fraud committed by a user as well as the date the fraud was committed and the total amount of money lost due to the fraud incident. This information is used to block similar fraud attempts on your platform as well as alert other companies who screen a user with matching identity information. Other companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud. You can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users. additionalProperties: true properties: id: $ref: '#/components/schemas/BeaconReportID' beacon_user_id: $ref: '#/components/schemas/BeaconUserID' created_at: $ref: '#/components/schemas/Timestamp' type: $ref: '#/components/schemas/BeaconReportType' fraud_date: $ref: '#/components/schemas/ISO8601DateNullable' event_date: $ref: '#/components/schemas/ISO8601Date' fraud_amount: $ref: '#/components/schemas/FraudAmount' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - beacon_user_id - created_at - type - fraud_date - event_date - fraud_amount - audit_trail - request_id type: object BeaconReportID: type: string title: BeaconReportID example: becrpt_11111111111111 description: ID of the associated Beacon Report. BeaconReportIDNullable: type: string title: BeaconReportID example: becrpt_11111111111111 description: ID of the associated Beacon Report. nullable: true BeaconReportListRequest: description: Request input for listing Beacon Reports type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' cursor: $ref: '#/components/schemas/Cursor' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id BeaconReportListResponse: description: The response schema for `/beacon/report/list` additionalProperties: true properties: beacon_reports: type: array items: $ref: '#/components/schemas/BeaconReport' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - beacon_reports - next_cursor - request_id type: object BeaconReportSyndication: type: object title: BeaconReportSyndication description: |- A Beacon Report Syndication represents a Beacon Report created either by your organization or another Beacon customer that matches a specific Beacon User you've created. The `analysis` field in the response indicates which fields matched between the originally reported Beacon User and the Beacon User that the report was syndicated to. The `report` field in the response contains a subset of information from the original report. properties: id: $ref: '#/components/schemas/BeaconReportSyndicationID' beacon_user_id: $ref: '#/components/schemas/BeaconUserID' report: $ref: '#/components/schemas/BeaconReportSyndicationOriginalReport' analysis: $ref: '#/components/schemas/BeaconReportSyndicationAnalysis' required: - id - report - analysis - beacon_user_id additionalProperties: true BeaconReportSyndicationAnalysis: type: object title: BeaconReportSyndicationAnalysis description: Analysis of which fields matched between the originally reported Beacon User and the Beacon User that the report was syndicated to. properties: address: $ref: '#/components/schemas/BeaconMatchSummaryCode' date_of_birth: $ref: '#/components/schemas/BeaconMatchSummaryCode' email_address: $ref: '#/components/schemas/BeaconMatchSummaryCode' name: $ref: '#/components/schemas/BeaconMatchSummaryCode' id_number: $ref: '#/components/schemas/BeaconMatchSummaryCode' ip_address: $ref: '#/components/schemas/BeaconMatchSummaryCode' phone_number: $ref: '#/components/schemas/BeaconMatchSummaryCode' depository_accounts: type: array items: $ref: '#/components/schemas/BeaconSyndicatedReportDepositoryAccountMatchAnalysis' required: - address - date_of_birth - email_address - name - id_number - ip_address - phone_number - depository_accounts additionalProperties: true BeaconReportSyndicationGetRequest: description: Request input for getting a Beacon Report Syndication type: object properties: beacon_report_syndication_id: $ref: '#/components/schemas/BeaconReportSyndicationID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_report_syndication_id BeaconReportSyndicationGetResponse: description: |- A Beacon Report Syndication represents a Beacon Report created either by your organization or another Beacon customer that matches a specific Beacon User you've created. The `analysis` field in the response indicates which fields matched between the originally reported Beacon User and the Beacon User that the report was syndicated to. The `report` field in the response contains a subset of information from the original report. additionalProperties: true properties: id: $ref: '#/components/schemas/BeaconReportSyndicationID' beacon_user_id: $ref: '#/components/schemas/BeaconUserID' report: $ref: '#/components/schemas/BeaconReportSyndicationOriginalReport' analysis: $ref: '#/components/schemas/BeaconReportSyndicationAnalysis' request_id: $ref: '#/components/schemas/RequestID' required: - id - report - analysis - beacon_user_id - request_id type: object BeaconReportSyndicationID: type: string title: BeaconReportSyndicationID example: becrsn_11111111111111 description: ID of the associated Beacon Report Syndication. BeaconReportSyndicationListRequest: description: Request input for listing Beacon Report Syndications type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' cursor: $ref: '#/components/schemas/Cursor' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id BeaconReportSyndicationListResponse: description: The response schema for `/beacon/report_syndication/list` additionalProperties: true properties: beacon_report_syndications: type: array items: $ref: '#/components/schemas/BeaconReportSyndication' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - beacon_report_syndications - next_cursor - request_id type: object BeaconReportSyndicationOriginalReport: type: object title: BeaconReportSyndicationOriginalReport description: |- A subset of information from a Beacon Report that has been syndicated to a matching Beacon User in your program. The `id` field in the response is the ID of the original report that was syndicated. If the original report was created by your organization, the field will be filled with the ID of the report. Otherwise, the field will be `null` indicating that the original report was created by another Beacon customer. properties: id: $ref: '#/components/schemas/BeaconReportIDNullable' created_at: $ref: '#/components/schemas/Timestamp' type: $ref: '#/components/schemas/BeaconReportType' fraud_date: $ref: '#/components/schemas/ISO8601DateNullable' event_date: $ref: '#/components/schemas/ISO8601Date' required: - id - created_at - type - fraud_date - event_date additionalProperties: true BeaconReportType: type: string title: BeaconReportType description: |- The type of Beacon Report. `first_party`: If this is the same individual as the one who submitted the KYC. `stolen`: If this is a different individual from the one who submitted the KYC. `synthetic`: If this is an individual using fabricated information. `account_takeover`: If this individual's account was compromised. `data_breach`: If this individual's data was compromised in a breach. `unknown`: If you aren't sure who committed the fraud. enum: - first_party - stolen - synthetic - account_takeover - data_breach - unknown BeaconSyndicatedReportDepositoryAccountMatchAnalysis: title: BeaconSyndicatedReportDepositoryAccountMatchAnalysis type: object description: Analysis of whether this account matched between the originally reported Beacon User and the Beacon User that the report syndicated to. properties: account_mask: $ref: '#/components/schemas/AccountMask' routing_number: $ref: '#/components/schemas/RoutingNumber' match_status: $ref: '#/components/schemas/BeaconMatchSummaryCode' required: - account_mask - routing_number - match_status additionalProperties: true BeaconUser: type: object title: BeaconUser description: A Beacon User represents an end user that has been scanned against the Beacon Network. properties: item_ids: type: array description: An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User. items: type: string example: 515cd85321d3649aecddc015 uniqueItems: true example: - 515cd85321d3649aecddc015 id: $ref: '#/components/schemas/BeaconUserID' version: type: integer description: The `version` field begins with 1 and increments each time the user is updated. example: 1 created_at: $ref: '#/components/schemas/Timestamp' updated_at: $ref: '#/components/schemas/UpdatedAtTimestamp' status: $ref: '#/components/schemas/BeaconUserStatus' program_id: $ref: '#/components/schemas/BeaconProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' user: $ref: '#/components/schemas/BeaconUserData' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' required: - id - version - created_at - updated_at - status - program_id - client_user_id - user - audit_trail - item_ids additionalProperties: true BeaconUserAccountInsightsGetRequest: description: Request input for fetching the risk insights for a Beacon User's Bank Accounts type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' access_token: $ref: '#/components/schemas/AccessToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id - access_token BeaconUserAccountInsightsGetResponse: description: The response schema for `/beacon/user/account_insights/get` additionalProperties: true properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' created_at: $ref: '#/components/schemas/Timestamp' updated_at: $ref: '#/components/schemas/UpdatedAtTimestamp' bank_account_insights: $ref: '#/components/schemas/BeaconBankAccounts' request_id: $ref: '#/components/schemas/RequestID' required: - beacon_user_id - created_at - updated_at - bank_account_insights - request_id type: object BeaconUserAddress: type: object title: BeaconUserAddress description: |- Even if an address has been collected, some fields may be null depending on the region's addressing system. For example: Addresses from the United Kingdom will not include a region Addresses from Hong Kong will not include a postal code properties: street: $ref: '#/components/schemas/Street' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/City' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - street2 - city - region - postal_code - country additionalProperties: true BeaconUserCreateRequest: description: |- Request input for creating a Beacon User. The primary use for this endpoint is to add a new end user to Beacon for fraud and duplicate scanning. Some fields are optional, but it is recommended to provide as much information as possible to improve the accuracy of the fraud and duplicate scanning. type: object properties: program_id: $ref: '#/components/schemas/BeaconProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' user: $ref: '#/components/schemas/BeaconUserRequestData' access_tokens: type: array items: $ref: '#/components/schemas/AccessToken' description: |- Send this array of access tokens to link accounts to the Beacon User and have them evaluated for Account Insights. A maximum of 50 accounts total can be added to a single Beacon User. nullable: true client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - program_id - client_user_id - user BeaconUserCreateResponse: description: A Beacon User represents an end user that has been scanned against the Beacon Network. additionalProperties: true properties: item_ids: type: array description: An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User. items: type: string example: 515cd85321d3649aecddc015 uniqueItems: true example: - 515cd85321d3649aecddc015 id: $ref: '#/components/schemas/BeaconUserID' version: type: integer description: The `version` field begins with 1 and increments each time the user is updated. example: 1 created_at: $ref: '#/components/schemas/Timestamp' updated_at: $ref: '#/components/schemas/UpdatedAtTimestamp' status: $ref: '#/components/schemas/BeaconUserStatus' program_id: $ref: '#/components/schemas/BeaconProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' user: $ref: '#/components/schemas/BeaconUserData' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - version - created_at - updated_at - status - program_id - client_user_id - user - audit_trail - item_ids - request_id type: object BeaconUserData: type: object title: BeaconUserData description: A Beacon User's data and resulting analysis when checked against duplicate records and the Beacon Fraud Network. properties: date_of_birth: $ref: '#/components/schemas/ISO8601Date' name: $ref: '#/components/schemas/BeaconUserName' address: $ref: '#/components/schemas/BeaconUserAddress' email_address: $ref: '#/components/schemas/EmailAddressNullable' phone_number: $ref: '#/components/schemas/BeaconUserPhoneNumber' id_number: $ref: '#/components/schemas/BeaconUserIDNumber' ip_address: $ref: '#/components/schemas/IPAddress' depository_accounts: type: array items: $ref: '#/components/schemas/BeaconUserDepositoryAccount' required: - date_of_birth - name - address - email_address - phone_number - id_number - ip_address - depository_accounts additionalProperties: true BeaconUserDepositoryAccount: type: object title: BeaconUserDepositoryAccount description: Depository account information for the associated user. properties: account_mask: $ref: '#/components/schemas/AccountMask' routing_number: $ref: '#/components/schemas/RoutingNumber' added_at: $ref: '#/components/schemas/Timestamp' required: - account_mask - routing_number - added_at additionalProperties: true BeaconUserGetRequest: description: Request input for fetching a Beacon User type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id BeaconUserGetResponse: description: A Beacon User represents an end user that has been scanned against the Beacon Network. additionalProperties: true properties: item_ids: type: array description: An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User. items: type: string example: 515cd85321d3649aecddc015 uniqueItems: true example: - 515cd85321d3649aecddc015 id: $ref: '#/components/schemas/BeaconUserID' version: type: integer description: The `version` field begins with 1 and increments each time the user is updated. example: 1 created_at: $ref: '#/components/schemas/Timestamp' updated_at: $ref: '#/components/schemas/UpdatedAtTimestamp' status: $ref: '#/components/schemas/BeaconUserStatus' program_id: $ref: '#/components/schemas/BeaconProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' user: $ref: '#/components/schemas/BeaconUserData' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - version - created_at - updated_at - status - program_id - client_user_id - user - audit_trail - item_ids - request_id type: object BeaconUserHistoryListRequest: description: Request input for listing the history of a Beacon User type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' cursor: $ref: '#/components/schemas/Cursor' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id BeaconUserHistoryListResponse: description: The response schema for `/beacon/user/history/list` additionalProperties: true properties: beacon_users: type: array items: $ref: '#/components/schemas/BeaconUser' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - beacon_users - next_cursor - request_id type: object BeaconUserID: type: string title: BeaconUserID example: becusr_42cF1MNo42r9Xj description: ID of the associated Beacon User. BeaconUserIDNullable: type: string title: BeaconUserID deprecated: true example: null description: Beacon is deprecated in favor of Plaid Protect. This field is only populated for users of the deprecated Beacon product. nullable: true BeaconUserIDNumber: type: object title: BeaconUserIDNumber description: The ID number associated with a Beacon User. properties: value: $ref: '#/components/schemas/IDNumberValue' type: $ref: '#/components/schemas/IDNumberType' required: - value - type nullable: true additionalProperties: true BeaconUserName: type: object title: BeaconUserName description: The full name for a given Beacon User. properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name additionalProperties: true BeaconUserNameNullable: type: object title: BeaconUserName description: The full name for a given Beacon User. properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name nullable: true additionalProperties: true BeaconUserPhoneNumber: type: string title: BeaconUserPhoneNumber description: A phone number in E.164 format. example: "+19876543212" nullable: true BeaconUserRequestAddress: type: object title: BeaconUserRequestAddress description: Home address for the associated user. For more context on this field, see [Input Validation by Country](https://plaid.com/docs/identity-verification/hybrid-input-validation/#input-validation-by-country). properties: street: $ref: '#/components/schemas/Street' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/City' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - city - country nullable: true additionalProperties: true BeaconUserRequestAddressNullable: type: object title: BeaconUserRequestAddress description: Home address for the associated user. For more context on this field, see [Input Validation by Country](https://plaid.com/docs/identity-verification/hybrid-input-validation/#input-validation-by-country). properties: street: $ref: '#/components/schemas/Street' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/City' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - city - country nullable: true additionalProperties: true BeaconUserRequestData: type: object title: BeaconUserRequestData description: |- A Beacon User's data which is used to check against duplicate records and the Beacon Fraud Network. In order to create a Beacon User, in addition to the `name`, _either_ the `date_of_birth` _or_ the `depository_accounts` field must be provided. properties: date_of_birth: $ref: '#/components/schemas/ISO8601Date' name: $ref: '#/components/schemas/BeaconUserName' address: $ref: '#/components/schemas/BeaconUserRequestAddress' email_address: $ref: '#/components/schemas/EmailAddress' phone_number: $ref: '#/components/schemas/BeaconUserPhoneNumber' id_number: $ref: '#/components/schemas/BeaconUserIDNumber' ip_address: $ref: '#/components/schemas/IPAddress' depository_accounts: type: array items: $ref: '#/components/schemas/BeaconUserRequestDepositoryAccount' description: |- Provide a list of bank accounts that are associated with this Beacon User. These accounts will be scanned across the Beacon Network and used to find duplicate records. Note: These accounts will not have Bank Account Insights. To receive Bank Account Insights please supply `access_tokens`. required: - name additionalProperties: true BeaconUserRequestDepositoryAccount: type: object title: BeaconUserRequestDepositoryAccount description: Depository account information for the associated user. properties: account_number: type: string description: Must be a valid US Bank Account Number example: "1234567890" routing_number: $ref: '#/components/schemas/RoutingNumber' required: - account_number - routing_number additionalProperties: true BeaconUserReviewRequest: description: Request input for updating the status of a Beacon User type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' status: $ref: '#/components/schemas/BeaconUserStatus' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id - status BeaconUserRevision: type: object title: BeaconUserRevision description: A Beacon User Revision identifies a Beacon User at some point in its revision history. properties: id: $ref: '#/components/schemas/BeaconUserID' version: type: integer description: The `version` field begins with 1 and increments with each subsequent revision. example: 1 required: - id - version additionalProperties: true BeaconUserStatus: type: string title: BeaconUserStatus description: |- A status of a Beacon User. `rejected`: The Beacon User has been rejected for fraud. Users can be automatically or manually rejected. `pending_review`: The Beacon User has been marked for review. `cleared`: The Beacon User has been cleared of fraud. enum: - rejected - pending_review - cleared example: cleared BeaconUserUpdateRequest: description: Request input for updating the identity data of a Beacon User. type: object properties: beacon_user_id: $ref: '#/components/schemas/BeaconUserID' user: $ref: '#/components/schemas/BeaconUserUpdateRequestData' access_tokens: type: array items: $ref: '#/components/schemas/AccessToken' description: |- Send this array of access tokens to add accounts to this user for evaluation. This will add accounts to this Beacon User. If left null only existing accounts will be returned in response. A maximum of 50 accounts total can be added to a Beacon User. nullable: true client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - beacon_user_id BeaconUserUpdateRequestData: type: object title: BeaconUserUpdateRequestData description: A subset of a Beacon User's data which is used to patch the existing identity data associated with a Beacon User. At least one field must be provided. If left unset or null, user data will not be patched. properties: date_of_birth: $ref: '#/components/schemas/ISO8601Date' name: $ref: '#/components/schemas/BeaconUserNameNullable' address: $ref: '#/components/schemas/BeaconUserRequestAddressNullable' email_address: $ref: '#/components/schemas/EmailAddress' phone_number: $ref: '#/components/schemas/BeaconUserPhoneNumber' id_number: $ref: '#/components/schemas/BeaconUserIDNumber' ip_address: $ref: '#/components/schemas/IPAddress' depository_accounts: type: array items: $ref: '#/components/schemas/BeaconUserRequestDepositoryAccount' nullable: true additionalProperties: true BeaconUserUpdateResponse: description: A Beacon User represents an end user that has been scanned against the Beacon Network. additionalProperties: true properties: item_ids: type: array description: An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User. items: type: string example: 515cd85321d3649aecddc015 uniqueItems: true example: - 515cd85321d3649aecddc015 id: $ref: '#/components/schemas/BeaconUserID' version: type: integer description: The `version` field begins with 1 and increments each time the user is updated. example: 1 created_at: $ref: '#/components/schemas/Timestamp' updated_at: $ref: '#/components/schemas/UpdatedAtTimestamp' status: $ref: '#/components/schemas/BeaconUserStatus' program_id: $ref: '#/components/schemas/BeaconProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' user: $ref: '#/components/schemas/BeaconUserData' audit_trail: $ref: '#/components/schemas/BeaconAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - version - created_at - updated_at - status - program_id - client_user_id - user - audit_trail - item_ids - request_id type: object BusinessEmailAddress: type: object description: Email address associated with a business properties: email_address: type: string format: email nullable: true description: Email address of the business example: business@example.com required: - email_address additionalProperties: true BusinessEntityType: description: The legal structure or type of business entity type: string nullable: true enum: - sole_proprietorship - general_partnership - llc - llp - lllp - lp - c_corporation - s_corporation - b_corporation - nonprofit - cooperative - trust - professional_association - professional_corporation - trade_name - bank - credit_union - insurance - other - unknown example: llc title: BusinessEntityType BusinessFieldMatchSummary: type: object description: Summary of how a specific business field matched against data provider results properties: summary: $ref: '#/components/schemas/MatchSummaryCode' required: - summary additionalProperties: true BusinessKYBCheck: type: object description: Results from the KYB (Know Your Business) identity verification check properties: status: $ref: '#/components/schemas/BusinessVerificationStatus__KYBCheck' score: type: integer description: A score from 0 to 100 indicating the confidence in KYB (Know Your Business) identity assessment for the business example: 85 name: $ref: '#/components/schemas/BusinessFieldMatchSummary' address: $ref: '#/components/schemas/BusinessFieldMatchSummary' website: $ref: '#/components/schemas/BusinessFieldMatchSummary' match_details: $ref: '#/components/schemas/BusinessKYBMatchDetails' required: - status - score - name - address - website - match_details nullable: true additionalProperties: true BusinessKYBMatchDetails: type: object description: Detailed information about the business from data provider results properties: names: type: array description: Names associated with the business. items: $ref: '#/components/schemas/ProviderBusinessName' entity_type: $ref: '#/components/schemas/BusinessEntityType' addresses: type: array description: Addresses associated with the business items: $ref: '#/components/schemas/ProviderBusinessAddress' phone_numbers: type: array description: Phone numbers associated with the business items: $ref: '#/components/schemas/BusinessPhoneNumber' email_addresses: type: array description: Email addresses associated with the business items: $ref: '#/components/schemas/BusinessEmailAddress' websites: type: array description: Websites associated with the business items: $ref: '#/components/schemas/BusinessWebsite' formation_date: $ref: '#/components/schemas/ISO8601DateNullable' required: - names - entity_type - addresses - phone_numbers - email_addresses - websites - formation_date nullable: true additionalProperties: true BusinessName: type: string title: BusinessName example: Acme Corporation description: The name of the business. Must have at least one character and a maximum length of 500 characters. BusinessNameNullable: type: string title: BusinessName example: Acme Corporation description: The name of the business. Must have at least one character and a maximum length of 500 characters. nullable: true BusinessVerificationPhoneNumber: type: string description: A phone number in E.164 format. example: "+14025671234" title: BusinessVerificationPhoneNumber BusinessVerificationPhoneNumberNullable: type: string description: A phone number in E.164 format. example: "+14025671234" title: BusinessVerificationPhoneNumber nullable: true ProviderBusinessName: type: object description: Name associated with a business properties: is_primary: type: boolean description: Indicates whether this is the primary name for the business. example: true name: $ref: '#/components/schemas/BusinessNameNullable' required: - is_primary - name additionalProperties: true BusinessPhoneNumber: type: object description: Phone number associated with a business properties: number: type: string nullable: true description: Phone number in E.164 format example: "+12345678909" required: - number additionalProperties: true BusinessRiskCheck: type: object description: Results from the business risk assessment check properties: status: $ref: '#/components/schemas/BusinessVerificationStatus__RiskCheck' score: type: integer description: A score from 0 to 100 indicating the risk assessment for the business example: 92 industry_prediction: $ref: '#/components/schemas/BusinessIndustryPredictionNullable' required: - status - score - industry_prediction nullable: true additionalProperties: true BusinessIndustryPrediction: type: object description: The predicted industry classification for the business, based on digital presence assessments. properties: code: type: integer description: NAICS code for the predicted business industry. example: 518210 title: type: string description: The business industry classification of the predicted NAICS code. example: Data Processing, Hosting, and Related Services required: - code - title additionalProperties: true BusinessIndustryPredictionNullable: type: object additionalProperties: true description: Nullable industry prediction details. nullable: true allOf: - $ref: '#/components/schemas/BusinessIndustryPrediction' - type: object nullable: true BusinessSearchTerms: type: object description: The business information that was used to perform the verification search properties: name: $ref: '#/components/schemas/BusinessNameNullable' alternative_names: type: array description: Alternative business names that were submitted as search inputs. items: $ref: '#/components/schemas/BusinessName' address: $ref: '#/components/schemas/ResponseBusinessAddress' website: $ref: '#/components/schemas/URLNullable' phone_number: $ref: '#/components/schemas/BusinessVerificationPhoneNumberNullable' email_address: $ref: '#/components/schemas/EmailAddressNullable' required: - name - alternative_names - address - website - phone_number - email_address additionalProperties: true BusinessVerificationCreateRequest: type: object description: Request input for creating a business verification properties: client_user_id: $ref: '#/components/schemas/ClientUserID' business: $ref: '#/components/schemas/BusinessVerificationCreateRequestBusiness' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - client_user_id BusinessVerificationCreateRequestBusiness: type: object nullable: true description: Business information provided in the verification request properties: name: $ref: '#/components/schemas/BusinessName' alternative_name: $ref: '#/components/schemas/BusinessNameNullable' address: $ref: '#/components/schemas/RequestBusinessAddress' website: $ref: '#/components/schemas/URL' phone_number: $ref: '#/components/schemas/BusinessVerificationPhoneNumber' email_address: $ref: '#/components/schemas/EmailAddress' additionalProperties: true BusinessVerificationCreateResponse: description: A business verification represents a check of a business's identity and risk profile, including information collected about the business and results from third-party data providers. additionalProperties: true properties: id: $ref: '#/components/schemas/BusinessVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' status: $ref: '#/components/schemas/BusinessVerificationStatus__Overall' search_terms: $ref: '#/components/schemas/BusinessSearchTerms' kyb_check: $ref: '#/components/schemas/BusinessKYBCheck' risk_check: $ref: '#/components/schemas/BusinessRiskCheck' digital_presence_check: $ref: '#/components/schemas/BusinessDigitalPresenceCheck' request_id: $ref: '#/components/schemas/RequestID' shareable_url: $ref: '#/components/schemas/BusinessVerificationShareableURL' required: - id - client_user_id - created_at - completed_at - redacted_at - status - search_terms - kyb_check - risk_check - digital_presence_check - request_id - shareable_url type: object BusinessVerificationGetRequest: description: Request input for fetching a business verification type: object properties: business_verification_id: $ref: '#/components/schemas/BusinessVerificationID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - business_verification_id BusinessVerificationGetResponse: description: A business verification represents a check of a business's identity and risk profile, including information collected about the business and results from third-party data providers. additionalProperties: true properties: id: $ref: '#/components/schemas/BusinessVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' status: $ref: '#/components/schemas/BusinessVerificationStatus__Overall' search_terms: $ref: '#/components/schemas/BusinessSearchTerms' kyb_check: $ref: '#/components/schemas/BusinessKYBCheck' risk_check: $ref: '#/components/schemas/BusinessRiskCheck' digital_presence_check: $ref: '#/components/schemas/BusinessDigitalPresenceCheck' request_id: $ref: '#/components/schemas/RequestID' shareable_url: $ref: '#/components/schemas/BusinessVerificationShareableURL' required: - id - client_user_id - created_at - completed_at - redacted_at - status - search_terms - kyb_check - risk_check - digital_presence_check - request_id - shareable_url type: object BusinessVerificationID: type: string format: cognito_id example: busver_52xR9LKo77r1Np title: BusinessVerificationID description: ID of the associated business verification. BusinessVerificationStatus__KYBCheck: type: string enum: - active - success - failed example: success title: BusinessVerificationStatus description: Status of the KYB (Know Your Business) identity assessment check BusinessVerificationStatus__Overall: type: string enum: - active - success - failed example: success title: BusinessVerificationStatus description: Status of the overall business verification BusinessVerificationStatus__RiskCheck: type: string enum: - active - success - failed example: success title: BusinessVerificationStatus description: Status of the business risk assessment check BusinessVerificationStatus__WebPresenceCheck: type: string enum: - active - success - failed - not_applicable example: success title: BusinessVerificationStatus description: Status of the digital presence check BusinessVerificationShareableURL: type: string example: https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f description: A shareable URL that can be sent directly to the user to complete verification nullable: true BusinessCheckBooleanStatus: description: Tri-state boolean status, where `no_data` indicates the check could not determine a value. type: string enum: - "yes" - "no" - no_data example: "yes" BusinessDigitalPresenceCheck: type: object description: Results from the digital presence check. properties: status: $ref: '#/components/schemas/BusinessVerificationStatus__WebPresenceCheck' score: type: integer description: A score from 0 to 100 indicating digital presence confidence. example: 55 address: $ref: '#/components/schemas/BusinessFieldMatchSummary' phone_number: $ref: '#/components/schemas/BusinessFieldMatchSummary' email_address: $ref: '#/components/schemas/BusinessFieldMatchSummary' website: $ref: '#/components/schemas/BusinessFieldMatchSummary' website_analysis: $ref: '#/components/schemas/BusinessWebsiteAnalysis' required: - status - score - address - phone_number - email_address - website - website_analysis nullable: true additionalProperties: true BusinessWebsiteAnalysis: type: object description: Website analysis details if a website is found for the provided website in the search terms. properties: is_parked: $ref: '#/components/schemas/BusinessCheckBooleanStatus' email_is_deliverable: $ref: '#/components/schemas/BusinessCheckBooleanStatus' website_build_status: $ref: '#/components/schemas/BusinessWebsiteBuildStatus' whois_record: $ref: '#/components/schemas/BusinessWhoisRecord' ssl: $ref: '#/components/schemas/BusinessWebsiteSSL' required: - is_parked - email_is_deliverable - website_build_status - whois_record - ssl nullable: true additionalProperties: true BusinessWebsiteBuildStatus: type: string description: Build status of the business website. enum: - coming_soon - active - inactive example: active BusinessWhoisRecord: type: object description: WHOIS metadata for the business website domain. properties: domain_created_at: $ref: '#/components/schemas/TimestampNullable' domain_updated_at: $ref: '#/components/schemas/TimestampNullable' domain_expires_at: $ref: '#/components/schemas/TimestampNullable' registrar: type: string nullable: true description: Domain registrar. example: GANDI SAS required: - domain_created_at - domain_updated_at - domain_expires_at - registrar additionalProperties: true BusinessWebsiteSSL: type: object description: SSL status for the business website. properties: is_valid: $ref: '#/components/schemas/BusinessCheckBooleanStatus' required: - is_valid additionalProperties: true BusinessWebsite: type: object description: Website associated with a business properties: url: type: string format: uri nullable: true description: URL of the business website example: https://example.com required: - url additionalProperties: true City: type: string example: Pawnee title: CityName description: City from the address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters. CityNullable: type: string example: Pawnee title: CityName description: City from the address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters. nullable: true ClientUserID: type: string title: ClientUserID example: your-db-id-3b24110 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. 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. type: string example: eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM nullable: true DashboardUser: title: DashboardUser type: object description: Account information associated with a team member with access to the Plaid dashboard. properties: id: $ref: '#/components/schemas/DashboardUserID' created_at: $ref: '#/components/schemas/Timestamp' email_address: $ref: '#/components/schemas/EmailAddress' status: $ref: '#/components/schemas/DashboardUserStatus' required: - id - created_at - email_address - status additionalProperties: true DashboardUserGetRequest: description: Request input for fetching a dashboard user type: object properties: dashboard_user_id: $ref: '#/components/schemas/DashboardUserID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - dashboard_user_id DashboardUserGetResponse: description: Account information associated with a team member with access to the Plaid dashboard. additionalProperties: true properties: id: $ref: '#/components/schemas/DashboardUserID' created_at: $ref: '#/components/schemas/Timestamp' email_address: $ref: '#/components/schemas/EmailAddress' status: $ref: '#/components/schemas/DashboardUserStatus' request_id: $ref: '#/components/schemas/RequestID' required: - id - created_at - email_address - status - request_id type: object DashboardUserID: type: string title: DashboardUserID example: 54350110fedcbaf01234ffee description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this ID, use `/dashboard_user/get`. DashboardUserIDNullable: type: string title: DashboardUserID example: 54350110fedcbaf01234ffee description: ID of the associated user. To retrieve the email address or other details of the person corresponding to this ID, use `/dashboard_user/get`. nullable: true DashboardUserListRequest: description: Request input for listing dashboard users type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' cursor: $ref: '#/components/schemas/Cursor' DashboardUserListResponse: description: Paginated list of dashboard users additionalProperties: true properties: dashboard_users: description: List of dashboard users type: array items: $ref: '#/components/schemas/DashboardUser' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - dashboard_users - next_cursor - request_id type: object DashboardUserStatus: type: string example: active description: The current status of the user. enum: - invited - active - deactivated DateRange: type: object description: A date range with a start and end date example: ending: "1966-06-30" beginning: "1966-06-01" properties: beginning: $ref: '#/components/schemas/ISO8601Date' ending: $ref: '#/components/schemas/ISO8601Date' required: - beginning - ending title: DateRange additionalProperties: true DeprecatedClientUserID: type: string title: CustomerReference deprecated: true example: your-db-id-3b24110 description: Specifying `user.client_user_id` is deprecated. Please provide `client_user_id` at the root level instead. nullable: true DocumentAnalysis: description: High level descriptions of how the associated document was processed. If a document fails verification, the details in the `analysis` object should help clarify why the document was rejected. type: object properties: authenticity: $ref: '#/components/schemas/DocumentAuthenticityMatchCode' image_quality: $ref: '#/components/schemas/ImageQuality' extracted_data: $ref: '#/components/schemas/PhysicalDocumentExtractedDataAnalysis' fraud_analysis_details: $ref: '#/components/schemas/FraudAnalysisDetails' image_quality_details: $ref: '#/components/schemas/ImageQualityDetails' human_review: $ref: '#/components/schemas/HumanReview' aamva_verification: $ref: '#/components/schemas/AAMVAAnalysis' required: - authenticity - image_quality - extracted_data - fraud_analysis_details - image_quality_details - aamva_verification additionalProperties: true DocumentAuthenticityMatchCode: description: |- High level summary of whether the document in the provided image matches the formatting rules and security checks for the associated jurisdiction. For example, most identity documents have formatting rules like the following: The image of the person's face must have a certain contrast in order to highlight skin tone The subject in the document's image must remove eye glasses and pose in a certain way The informational fields (name, date of birth, ID number, etc.) must be colored and aligned according to specific rules Security features like watermarks and background patterns must be present So a `match` status for this field indicates that the document in the provided image seems to conform to the various formatting and security rules associated with the detected document. type: string enum: - match - partial_match - no_match - no_data example: match DocumentDateOfBirthMatchCode: description: A match summary describing the cross comparison between the subject's date of birth, extracted from the document image, and the date of birth they separately provided to the identity verification attempt. type: string enum: - match - partial_match - no_match - no_data example: match DocumentImage__Back: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg description: Temporary URL that expires after 60 seconds for downloading the original image of the back of the document. Might be null if the back of the document was not collected. nullable: true DocumentImage__CroppedBack: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg description: Temporary URL that expires after 60 seconds for downloading a cropped image containing just the back of the document. Might be null if the back of the document was not collected. nullable: true DocumentImage__CroppedFront: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg description: Temporary URL that expires after 60 seconds for downloading a cropped image containing just the front of the document. nullable: true DocumentImage__Face: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg description: Temporary URL that expires after 60 seconds for downloading a crop of just the user's face from the document image. Might be null if the document does not contain a face photo. nullable: true DocumentImage__Front: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg description: Temporary URL that expires after 60 seconds for downloading the uncropped original image of the front of the document. nullable: true DocumentNameMatchCode: description: A match summary describing the cross comparison between the subject's name, extracted from the document image, and the name they separately provided to the identity verification attempt. type: string enum: - match - partial_match - no_match - no_data example: match DocumentStatus: type: string enum: - success - failed - manually_approved example: success title: DocumentStatus description: An outcome status for this specific document submission. Distinct from the overall `documentary_verification.status` that summarizes the verification outcome from one or more documents. DocumentaryVerification: description: Data, images, analysis, and results from the `documentary_verification` step. This field will be `null` unless `steps.documentary_verification` has reached a terminal state of either `success` or `failed`. title: DocumentaryVerification type: object properties: status: type: string description: The outcome status for the associated Identity Verification attempt's `documentary_verification` step. This field will always have the same value as `steps.documentary_verification`. example: success documents: description: |- An array of documents submitted to the `documentary_verification` step. Each entry represents one user submission, where each submission will contain both a front and back image, or just a front image, depending on the document type. Note: Plaid will automatically let a user submit a new set of document images up to three times if we detect that a previous attempt might have failed due to user error. For example, if the first set of document images are blurry or obscured by glare, the user will be asked to capture their documents again, resulting in at least two separate entries within `documents`. If the overall `documentary_verification` is `failed`, the user has exhausted their retry attempts. type: array items: $ref: '#/components/schemas/DocumentaryVerificationDocument' required: - status - documents nullable: true additionalProperties: true DocumentaryVerificationDocument: type: object description: Images, extracted data, and analysis from a user's identity document additionalProperties: true properties: status: $ref: '#/components/schemas/DocumentStatus' attempt: example: 1 type: integer description: The `attempt` field begins with 1 and increments with each subsequent document upload. images: $ref: '#/components/schemas/PhysicalDocumentImages' extracted_data: $ref: '#/components/schemas/PhysicalDocumentExtractedData' analysis: $ref: '#/components/schemas/DocumentAnalysis' redacted_at: $ref: '#/components/schemas/TimestampNullable' required: - analysis - attempt - extracted_data - images - status - redacted_at EmailAddress: type: string format: email example: user@example.com title: EmailAddress description: A valid email address. Must not have leading or trailing spaces and address must be RFC compliant. For more information, see [RFC 3696](https://datatracker.ietf.org/doc/html/rfc3696). EmailAddressNullable: type: string format: email example: user@example.com title: EmailAddress description: A valid email address. Must not have leading or trailing spaces and address must be RFC compliant. For more information, see [RFC 3696](https://datatracker.ietf.org/doc/html/rfc3696). nullable: true EntityDocument: title: EntityDocument type: object description: An official document, usually issued by a governing body or institution, with an associated identifier. properties: type: $ref: '#/components/schemas/EntityDocumentType' number: $ref: '#/components/schemas/WatchlistScreeningDocumentValue' required: - type - number additionalProperties: true EntityDocumentType: type: string enum: - bik - business_number - imo - other - swift - tax_id title: EntityDocumentType example: swift description: |- The kind of official document represented by this object. `bik` - Russian bank code `business_number` - A number that uniquely identifies the business within a category of businesses `imo` - Number assigned to the entity by the International Maritime Organization `other` - Any document not covered by other categories `swift` - Number identifying a bank and branch. `tax_id` - Identification issued for the purpose of collecting taxes EntityScreeningHitAnalysis: type: object description: Analysis information describing why a screening hit matched the provided entity information properties: documents: $ref: '#/components/schemas/MatchSummaryCode' email_addresses: $ref: '#/components/schemas/MatchSummaryCode' locations: $ref: '#/components/schemas/MatchSummaryCode' names: $ref: '#/components/schemas/MatchSummaryCode' phone_numbers: $ref: '#/components/schemas/MatchSummaryCode' urls: $ref: '#/components/schemas/MatchSummaryCode' search_terms_version: type: integer description: The version of the entity screening's `search_terms` that were compared when the entity screening hit was added. Entity screening hits are immutable once they have been reviewed. If changes are detected due to updates to the entity screening's `search_terms`, the associated entity program, or the list's source data prior to review, the entity screening hit will be updated to reflect those changes. example: 1 required: - search_terms_version additionalProperties: true EntityScreeningHitData: type: object description: Information associated with the entity watchlist hit properties: documents: description: Documents associated with the watchlist hit type: array items: $ref: '#/components/schemas/EntityScreeningHitDocumentsItems' email_addresses: description: Email addresses associated with the watchlist hit type: array items: $ref: '#/components/schemas/EntityScreeningHitEmailsItems' locations: description: Locations associated with the watchlist hit type: array items: $ref: '#/components/schemas/GenericScreeningHitLocationItems' names: description: Names associated with the watchlist hit type: array items: $ref: '#/components/schemas/EntityScreeningHitNamesItems' phone_numbers: description: Phone numbers associated with the watchlist hit type: array items: $ref: '#/components/schemas/EntityScreeningHitsPhoneNumberItems' urls: description: URLs associated with the watchlist hit type: array items: $ref: '#/components/schemas/EntityScreeningHitUrlsItems' additionalProperties: true EntityScreeningHitDocumentsItems: type: object description: Analyzed documents for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/EntityDocument' additionalProperties: true EntityScreeningHitEmails: type: object description: Email address information for the associated entity watchlist hit properties: email_address: $ref: '#/components/schemas/EmailAddress' required: - email_address additionalProperties: true EntityScreeningHitEmailsItems: type: object description: Analyzed emails for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/EntityScreeningHitEmails' additionalProperties: true EntityScreeningHitNames: type: object description: Name information for the associated entity watchlist hit properties: full: type: string example: Al Qaida description: The full name of the entity. is_primary: type: boolean example: false description: Primary names are those most commonly used to refer to this entity. Only one name will ever be marked as primary. weak_alias_determination: $ref: '#/components/schemas/WeakAliasDetermination' required: - full - is_primary - weak_alias_determination additionalProperties: true EntityScreeningHitNamesItems: type: object description: Analyzed names for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/EntityScreeningHitNames' additionalProperties: true EntityScreeningHitPhoneNumbers: type: object description: Phone number information associated with the entity screening hit properties: type: $ref: '#/components/schemas/PhoneType' phone_number: $ref: '#/components/schemas/WatchlistScreeningPhoneNumber' required: - type - phone_number additionalProperties: true EntityScreeningHitUrls: type: object description: URLs associated with the entity screening hit properties: url: $ref: '#/components/schemas/URL' required: - url additionalProperties: true EntityScreeningHitUrlsItems: type: object description: Analyzed URLs for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/EntityScreeningHitUrls' additionalProperties: true EntityScreeningHitsPhoneNumberItems: type: object description: Analyzed phone numbers for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/EntityScreeningHitPhoneNumbers' additionalProperties: true EntityWatchlistCode: type: string enum: - CA_CON - EU_CON - IZ_SOE - IZ_UNC - IZ_WBK - US_CAP - US_FSE - US_MBS - US_SDN - US_SSI - US_CMC - US_UVL - US_SAM - US_TEL - AU_CON - UK_HMC example: EU_CON description: |- Shorthand identifier for a specific screening list for entities. `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List `CA_CON`: Government of Canada Consolidated List of Sanctions `EU_CON`: European External Action Service Consolidated List `IZ_SOE`: State Owned Enterprise List `IZ_UNC`: United Nations Consolidated Sanctions `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals `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 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 `US_SAM`: US System for Award Management Exclusion List `US_TEL`: US Terrorist Exclusion List `UK_HMC`: Foreign, Commonwealth & Development Office UK Sanctions List title: EntityWatchlistCode EntityWatchlistProgram: type: object description: A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of entities. title: EntityWatchlistProgram properties: id: $ref: '#/components/schemas/EntityWatchlistProgramID' created_at: $ref: '#/components/schemas/Timestamp' is_rescanning_enabled: description: Indicator specifying whether the program is enabled and will perform daily rescans. type: boolean example: true lists_enabled: description: Watchlists enabled for the associated program type: array example: - EU_CON uniqueItems: true items: $ref: '#/components/schemas/EntityWatchlistCode' name: $ref: '#/components/schemas/EntityWatchlistScreeningProgramName' name_sensitivity: $ref: '#/components/schemas/ProgramNameSensitivity' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' is_archived: $ref: '#/components/schemas/ProgramArchived' required: - id - created_at - is_rescanning_enabled - lists_enabled - name - name_sensitivity - audit_trail - is_archived additionalProperties: true EntityWatchlistProgramID: type: string example: entprg_2eRPsDnL66rZ7H title: EntityWatchlistProgramID description: ID of the associated entity program. EntityWatchlistScreening: type: object properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningID' search_terms: $ref: '#/components/schemas/EntityWatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' required: - id - search_terms - assignee - status - client_user_id - audit_trail title: EntityWatchlistScreening description: 'The entity screening object allows you to represent an entity in your system, update its profile, and search for it on various watchlists. Note: Rejected entity screenings will not receive new hits, regardless of entity program configuration.' additionalProperties: true EntityWatchlistScreeningHit: type: object description: Data from a government watchlist that has been attached to the screening. title: EntityWatchlistScreeningHit properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' review_status: $ref: '#/components/schemas/WatchlistScreeningHitStatus' first_active: $ref: '#/components/schemas/Timestamp' inactive_since: $ref: '#/components/schemas/TimestampNullable' historical_since: $ref: '#/components/schemas/TimestampNullable' list_code: $ref: '#/components/schemas/EntityWatchlistCode' plaid_uid: $ref: '#/components/schemas/InternalUID' source_uid: $ref: '#/components/schemas/SourceUID' sub_programs: type: array description: | Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN entries these are the program codes published in the SDN list (for example `SDGT` for Specially Designated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins, `IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice, so callers should treat unknown values as opaque strings rather than enum members. items: type: string example: SDGT example: - SDGT - SDNTK analysis: $ref: '#/components/schemas/EntityScreeningHitAnalysis' data: $ref: '#/components/schemas/EntityScreeningHitData' required: - id - review_status - first_active - inactive_since - historical_since - list_code - plaid_uid - source_uid - sub_programs additionalProperties: true EntityWatchlistScreeningHitID: type: string example: enthit_52xR9LKo77r1Np title: EntityWatchlistScreeningHitID description: ID of the associated entity screening hit. EntityWatchlistScreeningID: type: string example: entscr_52xR9LKo77r1Np title: EntityWatchlistScreeningID description: ID of the associated entity screening. EntityWatchlistScreeningName: type: string title: EntityWatchlistScreeningName example: Al-Qaida description: The name of the organization being screened. Must have at least one alphabetical character, have a maximum length of 100 characters, and not include leading or trailing spaces. EntityWatchlistScreeningProgramName: type: string title: EntityWatchlistScreeningProgramName example: Sample Program description: A name for the entity program to define its purpose. For example, "High Risk Organizations" or "Applicants". EntityWatchlistScreeningReview: title: EntityWatchlistScreeningReview type: object description: |- A review submitted by a team member for an entity watchlist screening. A review can be either a comment on the current screening state, actions taken against hits attached to the watchlist screening, or both. properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningReviewID' confirmed_hits: type: array description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' dismissed_hits: type: array description: Hits marked as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' comment: $ref: '#/components/schemas/ReviewComment' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' required: - id - confirmed_hits - dismissed_hits - comment - audit_trail additionalProperties: true EntityWatchlistScreeningReviewID: type: string title: EntityWatchlistScreeningReviewID example: entrev_aCLNRxK3UVzn2r description: ID of the associated entity review. EntityWatchlistScreeningSearchTerms: type: object description: Search terms associated with an entity used for searching against watchlists properties: entity_watchlist_program_id: $ref: '#/components/schemas/EntityWatchlistProgramID' legal_name: $ref: '#/components/schemas/EntityWatchlistScreeningName' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValueNullable' email_address: $ref: '#/components/schemas/EmailAddressNullable' country: $ref: '#/components/schemas/GenericCountryCodeNullable' phone_number: $ref: '#/components/schemas/WatchlistScreeningPhoneNumberNullable' url: $ref: '#/components/schemas/URLNullable' version: type: integer description: The current version of the search terms. Starts at `1` and increments with each edit to `search_terms`. example: 1 required: - entity_watchlist_program_id - legal_name - document_number - email_address - country - phone_number - url - version additionalProperties: true EntityWatchlistSearchTerms: type: object required: - entity_watchlist_program_id - legal_name description: Search inputs for creating an entity watchlist screening properties: entity_watchlist_program_id: $ref: '#/components/schemas/EntityWatchlistProgramID' legal_name: $ref: '#/components/schemas/EntityWatchlistScreeningName' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValueNullable' email_address: $ref: '#/components/schemas/EmailAddressNullable' country: $ref: '#/components/schemas/GenericCountryCodeNullable' phone_number: $ref: '#/components/schemas/WatchlistScreeningPhoneNumberNullable' url: $ref: '#/components/schemas/URLNullable' ExpirationDate: description: |- A description of whether the associated document was expired when the verification was performed. Note: In the case where an expiration date is not present on the document or failed to be extracted, this value will be `no_data`. type: string enum: - not_expired - expired - no_data example: not_expired FamilyNameField: type: string example: Knope title: FamilyName description: A string with at least one non-whitespace character, with a max length of 100 characters. ForwardedJSONResponse: description: An arbitrary JSON payload sent to or received from the Plaid server. Internal use only. additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id type: object FraudAmount: type: object title: FraudAmount description: |- The amount and currency of the fraud or attempted fraud. `fraud_amount` should be omitted to indicate an unknown fraud amount. properties: iso_currency_code: $ref: '#/components/schemas/ISOCurrencyCode' value: type: number format: double example: 100 description: |- The amount value. This value can be 0 to indicate no money was lost. Must not contain more than two digits of precision (e.g., `1.23`). required: - iso_currency_code - value nullable: true additionalProperties: true FraudAnalysisDetails: nullable: true additionalProperties: true type: object description: Details about the fraud analysis performed on the document. properties: type_supported: description: |- Whether the submitted document type is supported for fraud analysis. `success` - The document type is supported. `failed` - The document type is not supported. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' portrait_presence_check: description: |- The outcome of the portrait presence check. `success` - A portrait was detected. `failed` - No portrait was detected. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' portrait_details_check: description: |- The outcome of the portrait details check including photo embedding and face landmark checks. `success` - The portrait passed all validity checks. `failed` - The portrait did not pass one or more validity checks. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' image_composition_check: description: |- The outcome of the image composition check. `success` - The image is a valid physical document capture. `failed` - The image appears to be a photograph of a screen or a digital forgery. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' integrity_check: description: |- The outcome of the integrity check for document security elements. `success` - Data is consistent across all checked security elements. `failed` - Inconsistencies were detected across one or more security elements. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' detail_check: description: |- The outcome of the document detail check for correct styling and layout. `success` - The document passed all authenticity checks. `failed` - The document did not pass one or more authenticity checks. allOf: - $ref: '#/components/schemas/FraudCheckOutcome' issue_date_check: description: |- The outcome of the issue date validity check. `success` - The issue date is valid. `failed` - The issue date is invalid or could not be verified. `no_data` - The check could not be performed due to insufficient data. allOf: - $ref: '#/components/schemas/FraudCheckOutcomeWithNoData' required: - type_supported - portrait_presence_check - portrait_details_check - image_composition_check - integrity_check - detail_check - issue_date_check FraudCheckOutcome: type: string description: |- The outcome of the fraud check. `success` - The check passed. `failed` - The check did not pass. enum: - success - failed FraudCheckOutcomeWithNoData: type: string description: |- The outcome of the fraud check. `success` - The check passed. `failed` - The check did not pass. `no_data` - The check could not be performed due to insufficient data. enum: - success - failed - no_data GenericCountryCode: type: string title: GenericCountryCode example: US description: Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form. GenericCountryCodeNullable: type: string title: GenericCountryCode example: US description: Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form. nullable: true GenericScreeningHitLocationItems: type: object description: Analyzed location information for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/WatchlistScreeningHitLocations' additionalProperties: true GivenNameField: type: string example: Leslie title: GivenName description: A string with at least one non-whitespace character, with a max length of 100 characters. HiddenMatchSummaryCode: description: |- An enum indicating the match type between data provided by user and data checked against an external data source. `match` indicates that the provided input data was a strong match against external data. `partial_match` indicates the data approximately matched against external data. For example, "Knope" vs. "Knope-Wyatt" for last name. `no_match` indicates that Plaid was able to perform a check against an external data source and it did not match the provided input data. `no_data` indicates that Plaid was unable to find external data to compare against the provided input data. `no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user. type: string title: MatchSummaryCode enum: - match - partial_match - no_match - no_data - no_input example: match x-hidden-from-docs: true HumanReview: description: Details about the human review check, which refers to a check that is performed by a document specialist. x-hidden-from-docs: true nullable: true additionalProperties: true type: object properties: status: $ref: '#/components/schemas/HumanReviewStatus' required: - status HumanReviewStatus: type: string description: |- The outcome of the human review check, when available. The following values are possible: `success` - The document passed the check. `failed` - The document failed the check. `no_data` - The document was submitted, but the document specialist review was not completed in time. enum: - success - failed - no_data IDNumberType: description: A globally unique and human readable ID type, specific to the country and document category. For more context on this field, see [Input Validation Rules](https://plaid.com/docs/identity-verification/hybrid-input-validation/#id-numbers). type: string enum: - ar_dni - au_drivers_license - au_passport - br_cpf - ca_sin - cl_run - cn_resident_card - co_nit - dk_cpr - eg_national_id - es_dni - es_nie - hk_hkid - in_pan - in_epic - it_cf - jo_civil_id - jp_my_number - ke_huduma_namba - kw_civil_id - mx_curp - mx_rfc - my_nric - ng_nin - nz_drivers_license - om_civil_id - ph_psn - pl_pesel - ro_cnp - sa_national_id - se_pin - sg_nric - tr_tc_kimlik - us_ssn - us_ssn_last_4 - za_smart_id example: us_ssn title: IDNumberType IDNumberValue: type: string example: "123456789" title: IDNumberValue description: Value of the identity document typed in by the user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see [Input Validation Rules](https://plaid.com/docs/identity-verification/hybrid-input-validation/#id-numbers). IDVProtectEvent: description: Information about a Protect event including Trust Index score and fraud attributes. type: object additionalProperties: true properties: event_id: type: string description: The event ID. example: ptevt_7AJYTMFxRUgJ timestamp: type: string format: date-time description: The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` example: "2020-07-24T03:26:02Z" trust_index: $ref: '#/components/schemas/TrustIndex' fraud_attributes: $ref: '#/components/schemas/FraudAttributes' required: - event_id - timestamp - trust_index - fraud_attributes nullable: true IPAddress: description: An IPv4 or IPv6 address. type: string example: 192.0.2.42 title: IPAddress nullable: true ISO8601Date: type: string format: date title: ISO8601Date example: "1990-05-29" description: A date in the format YYYY-MM-DD (RFC 3339 Section 5.6). ISO8601DateNullable: type: string format: date title: ISO8601Date example: "1990-05-29" description: A date in the format YYYY-MM-DD (RFC 3339 Section 5.6). nullable: true ISOCurrencyCode: type: string title: ISOCurrencyCode enum: - USD description: An ISO-4217 currency code. IdempotencyFlag: type: boolean 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/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 description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: $ref: '#/components/schemas/IdentityVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' previous_attempt_id: $ref: '#/components/schemas/PreviousIdentityVerificationAttemptID' shareable_url: $ref: '#/components/schemas/ShareableURL' template: $ref: '#/components/schemas/IdentityVerificationTemplateReference' user: $ref: '#/components/schemas/IdentityVerificationUserData' status: $ref: '#/components/schemas/IdentityVerificationStatus' steps: $ref: '#/components/schemas/IdentityVerificationStepSummary' documentary_verification: $ref: '#/components/schemas/DocumentaryVerification' selfie_check: $ref: '#/components/schemas/SelfieCheck' kyc_check: $ref: '#/components/schemas/KYCCheckDetails' risk_check: $ref: '#/components/schemas/RiskCheckDetails' verify_sms: $ref: '#/components/schemas/VerifySMSDetails' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualIDNullable' beacon_user_id: $ref: '#/components/schemas/BeaconUserIDNullable' user_id: $ref: '#/components/schemas/PlaidUserIDNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' latest_scored_protect_event: $ref: '#/components/schemas/IDVProtectEvent' required: - id - client_user_id - created_at - completed_at - previous_attempt_id - shareable_url - template - user - status - steps - documentary_verification - selfie_check - kyc_check - risk_check - verify_sms - watchlist_screening_id - beacon_user_id - user_id - redacted_at IdentityVerificationAutofillAddress: description: |- Even if an address has been autofilled, some fields may be null depending on the region's addressing system. For example: Addresses from the United Kingdom will not include a region Addresses from Hong Kong will not include postal code type: object properties: street: $ref: '#/components/schemas/Street' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/CityNullable' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' po_box: $ref: '#/components/schemas/POBoxStatus' type: $ref: '#/components/schemas/AddressPurposeLabel' required: - street - street2 - city - region - postal_code - country - po_box - type nullable: true additionalProperties: true IdentityVerificationAutofillCreateRequest: type: object description: Request input to autofill an Identity Verification properties: identity_verification_id: $ref: '#/components/schemas/IdentityVerificationID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - identity_verification_id IdentityVerificationAutofillCreateResponse: description: Autofill represents unverified customer information. This needs to be confirmed by the customer before using. additionalProperties: true properties: status: $ref: '#/components/schemas/IdentityVerificationAutofillStatus' user: $ref: '#/components/schemas/IdentityVerificationAutofillUserData' request_id: $ref: '#/components/schemas/RequestID' required: - status - user - request_id type: object IdentityVerificationAutofillStatus: description: A status enum indicating whether autofill succeeded or failed. type: string enum: - success - failed example: success title: IdentityVerificationAutofillStatus IdentityVerificationAutofillUserData: description: User information that was autofilled. All this information should be confirmed by the user before using. type: object properties: name: $ref: '#/components/schemas/IdentityVerificationResponseUserName' address: $ref: '#/components/schemas/IdentityVerificationAutofillAddress' id_number: $ref: '#/components/schemas/UserIDNumber' required: - name - address - id_number nullable: true additionalProperties: true IdentityVerificationConsent: type: boolean example: true default: false title: IdentityVerificationConsent description: |- A flag specifying whether the end user has already agreed to a privacy policy specifying that their data will be shared with Plaid for verification purposes. If `gave_consent` is set to `true`, the `accept_tos` step will be marked as `skipped` and the end user's session will start at the next step requirement. IdentityVerificationCreateRequest: type: object properties: client_user_id: $ref: '#/components/schemas/ClientUserID' user_id: $ref: '#/components/schemas/PlaidUserID' is_shareable: type: boolean example: true title: EnableSharableLink description: A flag specifying whether you would like Plaid to expose a shareable URL for the verification being created. template_id: $ref: '#/components/schemas/IdentityVerificationTemplateID' gave_consent: $ref: '#/components/schemas/IdentityVerificationConsent' user: $ref: '#/components/schemas/IdentityVerificationCreateRequestUser' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' is_idempotent: $ref: '#/components/schemas/IdempotencyFlag' required: - is_shareable - template_id - gave_consent description: Request schema for `/identity_verification/create` IdentityVerificationCreateRequestUser: description: |- User information collected outside of Link, most likely via your own onboarding process. Each of the following identity fields are optional: `email_address` `phone_number` `date_of_birth` `name` `address` `id_number` 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: $ref: '#/components/schemas/EmailAddress' phone_number: $ref: '#/components/schemas/IdentityVerificationUserPhoneNumber' date_of_birth: $ref: '#/components/schemas/ISO8601Date' name: $ref: '#/components/schemas/IdentityVerificationRequestUserName' address: $ref: '#/components/schemas/UserAddress' id_number: $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. additionalProperties: true properties: id: $ref: '#/components/schemas/IdentityVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' previous_attempt_id: $ref: '#/components/schemas/PreviousIdentityVerificationAttemptID' shareable_url: $ref: '#/components/schemas/ShareableURL' template: $ref: '#/components/schemas/IdentityVerificationTemplateReference' user: $ref: '#/components/schemas/IdentityVerificationUserData' status: $ref: '#/components/schemas/IdentityVerificationStatus' steps: $ref: '#/components/schemas/IdentityVerificationStepSummary' documentary_verification: $ref: '#/components/schemas/DocumentaryVerification' selfie_check: $ref: '#/components/schemas/SelfieCheck' kyc_check: $ref: '#/components/schemas/KYCCheckDetails' risk_check: $ref: '#/components/schemas/RiskCheckDetails' verify_sms: $ref: '#/components/schemas/VerifySMSDetails' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualIDNullable' beacon_user_id: $ref: '#/components/schemas/BeaconUserIDNullable' user_id: $ref: '#/components/schemas/PlaidUserIDNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' latest_scored_protect_event: $ref: '#/components/schemas/IDVProtectEvent' request_id: $ref: '#/components/schemas/RequestID' required: - id - client_user_id - created_at - completed_at - previous_attempt_id - shareable_url - template - user - status - steps - documentary_verification - selfie_check - kyc_check - risk_check - verify_sms - watchlist_screening_id - beacon_user_id - user_id - redacted_at - request_id type: object IdentityVerificationDocumentAddressResponse: description: |- The address extracted from the document. The address must at least contain the following fields to be a valid address: `street`, `city`, `country`. If any are missing or unable to be extracted, the address will be null. `region`, and `postal_code` may be null based on the addressing system. For example: Addresses from the United Kingdom will not include a region Addresses from Hong Kong will not include postal code Note: Optical Character Recognition (OCR) technology may sometimes extract incorrect data from a document. type: object properties: street: $ref: '#/components/schemas/IdentityVerificationDocumentStreet' city: $ref: '#/components/schemas/IdentityVerificationDocumentCity' region: $ref: '#/components/schemas/IdentityVerificationDocumentRegion' postal_code: $ref: '#/components/schemas/IdentityVerificationDocumentPostalCode' country: $ref: '#/components/schemas/IdentityVerificationDocumentCountryCode' required: - street - city - region - postal_code - country nullable: true additionalProperties: true IdentityVerificationDocumentCity: type: string example: Pawnee title: IdentityVerificationDocumentCity description: City extracted from the document. IdentityVerificationDocumentCountryCode: type: string title: IdentityVerificationDocumentCountryCode example: US description: Valid, capitalized, two-letter ISO code representing the country extracted from the document. Must be in ISO 3166-1 alpha-2 form. IdentityVerificationDocumentISO8601DateOfBirth: type: string format: date title: IdentityVerificationDocumentISO8601DateOfBirth example: "1990-05-29" description: A date extracted from the document in the format YYYY-MM-DD (RFC 3339 Section 5.6). nullable: true IdentityVerificationDocumentISO8601ExpirationDate: type: string format: date title: IdentityVerificationDocumentISO8601ExpirationDate example: "2030-05-29" description: The expiration date of the document in the format YYYY-MM-DD (RFC 3339 Section 5.6). nullable: true IdentityVerificationDocumentISO8601IssueDate: type: string format: date title: IdentityVerificationDocumentISO8601IssueDate example: "2020-05-29" description: The issue date of the document in the format YYYY-MM-DD (RFC 3339 Section 5.6). nullable: true IdentityVerificationDocumentNameResponse: type: object description: The individual's name extracted from the document. properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name nullable: true additionalProperties: true IdentityVerificationDocumentPostalCode: type: string example: "46001" title: IdentityVerificationDocumentPostalCode description: The postal code extracted from the document. Between 2 and 10 alphanumeric characters. For US-based addresses this must be 5 numeric digits. nullable: true IdentityVerificationDocumentRegion: type: string example: IN title: IdentityVerificationDocumentRegion description: A subdivision code extracted from the document. Related terms would be "state", "province", "prefecture", "zone", "subdivision", etc. For a full list of valid codes, see [country subdivision codes](https://plaid.com/documents/country_subdivision_codes.json). Country prefixes are omitted, since they can be inferred from the `country` field. nullable: true IdentityVerificationDocumentStreet: type: string example: 123 Main St. Unit 42 title: IdentityVerificationDocumentStreet description: The full street address extracted from the document. IdentityVerificationGetRequest: description: Request input for fetching an Identity Verification type: object properties: identity_verification_id: $ref: '#/components/schemas/IdentityVerificationID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - identity_verification_id IdentityVerificationGetResponse: description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: $ref: '#/components/schemas/IdentityVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' previous_attempt_id: $ref: '#/components/schemas/PreviousIdentityVerificationAttemptID' shareable_url: $ref: '#/components/schemas/ShareableURL' template: $ref: '#/components/schemas/IdentityVerificationTemplateReference' user: $ref: '#/components/schemas/IdentityVerificationUserData' status: $ref: '#/components/schemas/IdentityVerificationStatus' steps: $ref: '#/components/schemas/IdentityVerificationStepSummary' documentary_verification: $ref: '#/components/schemas/DocumentaryVerification' selfie_check: $ref: '#/components/schemas/SelfieCheck' kyc_check: $ref: '#/components/schemas/KYCCheckDetails' risk_check: $ref: '#/components/schemas/RiskCheckDetails' verify_sms: $ref: '#/components/schemas/VerifySMSDetails' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualIDNullable' beacon_user_id: $ref: '#/components/schemas/BeaconUserIDNullable' user_id: $ref: '#/components/schemas/PlaidUserIDNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' latest_scored_protect_event: $ref: '#/components/schemas/IDVProtectEvent' request_id: $ref: '#/components/schemas/RequestID' required: - id - client_user_id - created_at - completed_at - previous_attempt_id - shareable_url - template - user - status - steps - documentary_verification - selfie_check - kyc_check - risk_check - verify_sms - watchlist_screening_id - beacon_user_id - user_id - redacted_at - request_id type: object IdentityVerificationID: type: string example: idv_52xR9LKo77r1Np title: IdentityVerificationID description: ID of the associated Identity Verification attempt. IdentityVerificationListRequest: description: Request input for listing Identity Verifications type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' template_id: $ref: '#/components/schemas/IdentityVerificationTemplateID' 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, 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 cursor: $ref: '#/components/schemas/Cursor' required: - template_id IdentityVerificationListResponse: description: Paginated list of Plaid sessions. additionalProperties: true properties: identity_verifications: description: List of Plaid sessions type: array items: $ref: '#/components/schemas/IdentityVerification' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - identity_verifications - next_cursor - request_id type: object IdentityVerificationRequestUser: type: object description: |- User information collected outside of Link, most likely via your own onboarding process. Each of the following identity fields are optional: `email_address` `phone_number` `date_of_birth` `name` `address` `id_number` 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. properties: email_address: $ref: '#/components/schemas/EmailAddress' phone_number: $ref: '#/components/schemas/IdentityVerificationUserPhoneNumber' date_of_birth: $ref: '#/components/schemas/ISO8601Date' name: $ref: '#/components/schemas/IdentityVerificationRequestUserName' address: $ref: '#/components/schemas/UserAddress' id_number: $ref: '#/components/schemas/UserIDNumber' nullable: true additionalProperties: true IdentityVerificationRequestUserName: type: object properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name description: You can use this field to pre-populate the user's legal name; if it is provided here, they will not be prompted to enter their name in the identity verification attempt. nullable: true IdentityVerificationResponseUserName: type: object properties: given_name: $ref: '#/components/schemas/GivenNameField' family_name: $ref: '#/components/schemas/FamilyNameField' required: - given_name - family_name description: The full name provided by the user. If the user has not submitted their name, this field will be null. Otherwise, both fields are guaranteed to be filled. additionalProperties: true nullable: true IdentityVerificationRetryRequest: type: object description: Request input for retrying an identity verification attempt properties: client_user_id: $ref: '#/components/schemas/ClientUserID' template_id: $ref: '#/components/schemas/IdentityVerificationTemplateID' strategy: $ref: '#/components/schemas/Strategy' user: $ref: '#/components/schemas/IdentityVerificationRequestUser' steps: $ref: '#/components/schemas/IdentityVerificationRetryRequestStepsObject' is_shareable: type: boolean example: true title: EnableSharableLink description: A flag specifying whether you would like Plaid to expose a shareable URL for the verification being retried. If a value for this flag is not specified, the `is_shareable` setting from the original verification attempt will be used. nullable: true client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - client_user_id - strategy - template_id IdentityVerificationRetryRequestStepsObject: type: object description: |- Instructions for the `custom` retry strategy specifying which steps should be required or skipped. Note: This field must be provided when the retry strategy is `custom` and must be omitted otherwise. Custom retries override settings in your Plaid Template. For example, if your Plaid Template has `verify_sms` disabled, a custom retry with `verify_sms` enabled will still require the step. The `selfie_check` step is currently not supported on the sandbox server. Sandbox requests will silently disable the `selfie_check` step when provided. properties: verify_sms: description: A boolean field specifying whether the new session should require or skip the `verify_sms` step. type: boolean kyc_check: description: A boolean field specifying whether the new session should require or skip the `kyc_check` (Data Source Verification) step. type: boolean documentary_verification: description: A boolean field specifying whether the new session should require or skip the `documentary_verification` step. type: boolean selfie_check: description: A boolean field specifying whether the new session should require or skip the `selfie_check` step. If a previous session has already passed the `selfie_check` step, the new selfie check will be a Selfie Reauthentication check, in which the selfie is tested for liveness and for consistency with the previous selfie. type: boolean required: - verify_sms - kyc_check - documentary_verification - selfie_check nullable: true IdentityVerificationRetryResponse: description: An identity verification attempt represents a customer's attempt to verify their identity, reflecting the required steps for completing the session, the results for each step, and information collected in the process. additionalProperties: true properties: id: $ref: '#/components/schemas/IdentityVerificationID' client_user_id: $ref: '#/components/schemas/ClientUserID' created_at: $ref: '#/components/schemas/Timestamp' completed_at: $ref: '#/components/schemas/TimestampNullable' previous_attempt_id: $ref: '#/components/schemas/PreviousIdentityVerificationAttemptID' shareable_url: $ref: '#/components/schemas/ShareableURL' template: $ref: '#/components/schemas/IdentityVerificationTemplateReference' user: $ref: '#/components/schemas/IdentityVerificationUserData' status: $ref: '#/components/schemas/IdentityVerificationStatus' steps: $ref: '#/components/schemas/IdentityVerificationStepSummary' documentary_verification: $ref: '#/components/schemas/DocumentaryVerification' selfie_check: $ref: '#/components/schemas/SelfieCheck' kyc_check: $ref: '#/components/schemas/KYCCheckDetails' risk_check: $ref: '#/components/schemas/RiskCheckDetails' verify_sms: $ref: '#/components/schemas/VerifySMSDetails' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualIDNullable' beacon_user_id: $ref: '#/components/schemas/BeaconUserIDNullable' user_id: $ref: '#/components/schemas/PlaidUserIDNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' latest_scored_protect_event: $ref: '#/components/schemas/IDVProtectEvent' request_id: $ref: '#/components/schemas/RequestID' required: - id - client_user_id - created_at - completed_at - previous_attempt_id - shareable_url - template - user - status - steps - documentary_verification - selfie_check - kyc_check - risk_check - verify_sms - watchlist_screening_id - beacon_user_id - user_id - redacted_at - request_id type: object IdentityVerificationStatus: type: string enum: - active - success - failed - expired - canceled - pending_review example: success title: IdentityVerificationStatus description: |- The status of this Identity Verification attempt. `active` - The Identity Verification attempt is incomplete. The user may have completed part of the session, but has neither failed nor passed. `success` - The Identity Verification attempt has completed, passing all steps defined to the associated Identity Verification template. `failed` - The user failed one or more steps in the session and was told to contact support. `expired` - The Identity Verification attempt was active for a long period of time without being completed and was automatically marked as expired. Note that sessions currently do not expire. Automatic expiration is expected to be enabled in the future. `canceled` - The Identity Verification attempt was canceled, either via the dashboard by a user, or via API. The user may have completed part of the session, but has neither failed nor passed. `pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review. IdentityVerificationStepStatus: type: string enum: - success - active - failed - waiting_for_prerequisite - not_applicable - skipped - expired - canceled - pending_review - manually_approved - manually_rejected example: success title: IdentityVerificationStepStatus description: The status of a step in the Identity Verification process. IdentityVerificationStepSummary: type: object description: |- Each step will be one of the following values: `active` - This step is the user's current step. They are either in the process of completing this step, or they recently closed their Identity Verification attempt while in the middle of this step. Only one step will be marked as `active` at any given point. `success` - The Identity Verification attempt has completed this step. `failed` - The user failed this step. This can either cause the user to fail the session as a whole, or cause them to fall back to another step depending on how the Identity Verification template is configured. A failed step does not imply a failed session. `waiting_for_prerequisite` - The user needs to complete another step first, before they progress to this step. This step may never run, depending on if the user fails an earlier step or if the step is only run as a fallback. `not_applicable` - This step will not be run for this session. `skipped` - The retry instructions that created this Identity Verification attempt specified that this step should be skipped. `expired` - This step had not yet been completed when the Identity Verification attempt as a whole expired. `canceled` - The Identity Verification attempt was canceled before the user completed this step. `pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review. `manually_approved` - The step was manually overridden to pass by a team member in the dashboard. `manually_rejected` - The step was manually overridden to fail by a team member in the dashboard. required: - accept_tos - verify_sms - kyc_check - documentary_verification - selfie_check - watchlist_screening - risk_check properties: accept_tos: $ref: '#/components/schemas/IdentityVerificationStepStatus' verify_sms: $ref: '#/components/schemas/IdentityVerificationStepStatus' kyc_check: $ref: '#/components/schemas/IdentityVerificationStepStatus' documentary_verification: $ref: '#/components/schemas/IdentityVerificationStepStatus' selfie_check: $ref: '#/components/schemas/IdentityVerificationStepStatus' watchlist_screening: $ref: '#/components/schemas/IdentityVerificationStepStatus' risk_check: $ref: '#/components/schemas/IdentityVerificationStepStatus' additionalProperties: true IdentityVerificationTemplateID: type: string example: idvtmp_4FrXJvfQU3zGUR title: IdentityVerificationTemplateID description: ID of the associated Identity Verification template. Like all Plaid identifiers, this is case-sensitive. IdentityVerificationTemplateReference: type: object properties: id: $ref: '#/components/schemas/IdentityVerificationTemplateID' version: $ref: '#/components/schemas/IdentityVerificationTemplateVersion' required: - id - version description: The resource ID and version number of the template configuring the behavior of a given Identity Verification. additionalProperties: true IdentityVerificationTemplateVersion: type: integer example: 2 title: IdentityVerificationTemplateVersion description: Version of the associated Identity Verification template. IdentityVerificationUserAddress: description: |- Even if an address has been collected, some fields may be null depending on the region's addressing system. For example: Addresses from the United Kingdom will not include a region Addresses from Hong Kong will not include postal code type: object properties: street: $ref: '#/components/schemas/StreetNullable' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/CityNullable' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - street2 - city - region - postal_code - country nullable: true additionalProperties: true IdentityVerificationUserData: type: object properties: phone_number: $ref: '#/components/schemas/IdentityVerificationUserPhoneNumber' date_of_birth: $ref: '#/components/schemas/ISO8601DateNullable' ip_address: $ref: '#/components/schemas/IPAddress' email_address: $ref: '#/components/schemas/EmailAddressNullable' name: $ref: '#/components/schemas/IdentityVerificationResponseUserName' address: $ref: '#/components/schemas/IdentityVerificationUserAddress' id_number: $ref: '#/components/schemas/UserIDNumber' required: - date_of_birth - email_address - ip_address - name - address - id_number description: The identity data that was either collected from the user or provided via API in order to perform an Identity Verification. additionalProperties: true IdentityVerificationUserPhoneNumber: type: string description: A valid phone number in E.164 format. example: "+12345678909" title: PhoneNumber nullable: true ImageQuality: description: |- A high level description of the quality of the image the user submitted. For example, an image that is blurry, distorted by glare from a nearby light source, or improperly framed might be marked as low or medium quality. Poor quality images are more likely to fail OCR and/or template conformity checks. Note: By default, Plaid will let a user recapture document images twice before failing the entire session if we attribute the failure to low image quality. type: string enum: - high - medium - low example: high ImageQualityDetails: nullable: true additionalProperties: true type: object description: Details about the image quality of the document. properties: glare_check: description: |- The outcome of the glare check. `success` - The image is free of glare. `failed` - The image contains glare that may obscure document details. allOf: - $ref: '#/components/schemas/ImageQualityOutcome' dimensions_check: description: |- The outcome of the dimensions check. `success` - The image meets the minimum size and resolution requirements. `failed` - The image does not meet the minimum size or resolution requirements. allOf: - $ref: '#/components/schemas/ImageQualityOutcome' blur_check: description: |- The outcome of the blur check. `success` - The image is sufficiently sharp. `failed` - The image is too blurry for analysis. allOf: - $ref: '#/components/schemas/ImageQualityOutcome' required: - glare_check - dimensions_check - blur_check ImageQualityOutcome: type: string description: |- The outcome of the image quality check. `success` - The check passed. `failed` - The check did not pass. enum: - success - failed IndividualScreeningHitNames: type: object description: Name information for the associated individual watchlist hit properties: full: type: string example: Aleksey Potemkin description: The full name of the individual, including all parts. is_primary: type: boolean example: false description: Primary names are those most commonly used to refer to this person. Only one name will ever be marked as primary. weak_alias_determination: $ref: '#/components/schemas/WeakAliasDetermination' required: - full - is_primary - weak_alias_determination additionalProperties: true IndividualWatchlistCode: type: string enum: - AU_CON - CA_CON - EU_CON - IZ_CIA - IZ_IPL - IZ_PEP - IZ_UNC - IZ_WBK - UK_HMC - US_DPL - US_DTC - US_FBI - US_FSE - US_ISN - US_MBS - US_PLC - US_SAM - US_SDN - US_SSI - SG_SOF - TR_TWL - TR_DFD - TR_FOR - TR_WMD - TR_CMB example: US_SDN description: |- Shorthand identifier for a specific screening list for individuals. `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List `CA_CON`: Government of Canada Consolidated List of Sanctions `EU_CON`: European External Action Service Consolidated List `IZ_CIA`: CIA List of Chiefs of State and Cabinet Members `IZ_IPL`: Interpol Red Notices for Wanted Persons List `IZ_PEP`: Politically Exposed Persons List `IZ_UNC`: United Nations Consolidated Sanctions `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals `UK_HMC`: Foreign, Commonwealth & Development Office UK Sanctions List `US_DPL`: Bureau of Industry and Security Denied Persons List `US_DTC`: US Department of State AECA Debarred `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 `US_SSI`: US OFAC Sectoral Sanctions Identifications `SG_SOF`: Government of Singapore Terrorists and Terrorist Entities `TR_TWL`: Government of Turkey Terrorist Wanted List `TR_DFD`: Government of Turkey Domestic Freezing Decisions `TR_FOR`: Government of Turkey Foreign Freezing Requests `TR_WMD`: Government of Turkey Weapons of Mass Destruction `TR_CMB`: Government of Turkey Capital Markets Board title: IndividualWatchlistCode IndividualWatchlistProgram: type: object description: A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of individuals. title: IndividualWatchlistProgram properties: id: $ref: '#/components/schemas/WatchlistProgramID' created_at: $ref: '#/components/schemas/Timestamp' is_rescanning_enabled: description: Indicator specifying whether the program is enabled and will perform daily rescans. type: boolean example: true lists_enabled: description: Watchlists enabled for the associated program type: array example: - US_SDN uniqueItems: true items: $ref: '#/components/schemas/IndividualWatchlistCode' name: $ref: '#/components/schemas/IndividualWatchlistScreeningProgramName' name_sensitivity: $ref: '#/components/schemas/ProgramNameSensitivity' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' is_archived: $ref: '#/components/schemas/ProgramArchived' required: - id - created_at - is_rescanning_enabled - lists_enabled - name - name_sensitivity - audit_trail - is_archived additionalProperties: true IndividualWatchlistScreeningProgramName: type: string title: IndividualWatchlistScreeningProgramName example: Sample Program description: A name for the program to define its purpose. For example, "High Risk Individuals", "US Cardholders", or "Applicants". InternalUID: type: string title: InternalUID description: A universal identifier for a watchlist individual that is stable across searches and updates. example: uid_3NggckTimGSJHS IssuingCountry: description: |- A binary match indicator specifying whether the country that issued the provided document matches the country that the user separately provided to Plaid. Note: You can configure whether a `no_match` on `issuing_country` fails the `documentary_verification` by editing your Plaid Template. type: string enum: - match - no_match KYCCheckAddressSummary: type: object description: Result summary object specifying how the `address` field matched. properties: summary: $ref: '#/components/schemas/MatchSummaryCode' po_box: $ref: '#/components/schemas/POBoxStatus' type: $ref: '#/components/schemas/AddressPurposeLabel' street: $ref: '#/components/schemas/HiddenMatchSummaryCode' city: $ref: '#/components/schemas/HiddenMatchSummaryCode' region: $ref: '#/components/schemas/HiddenMatchSummaryCode' postal_code: $ref: '#/components/schemas/HiddenMatchSummaryCode' international_details: $ref: '#/components/schemas/KYCCheckDetailsInternationalAddress' required: - summary - po_box - type additionalProperties: true KYCCheckDateOfBirthSummary: description: Result summary object specifying how the `date_of_birth` field matched. type: object properties: summary: $ref: '#/components/schemas/MatchSummaryCode' day: $ref: '#/components/schemas/HiddenMatchSummaryCode' month: $ref: '#/components/schemas/HiddenMatchSummaryCode' year: $ref: '#/components/schemas/HiddenMatchSummaryCode' required: - summary additionalProperties: true KYCCheckDetails: type: object description: Additional information for the `kyc_check` (Data Source Verification) step. This field will be `null` unless `steps.kyc_check` has reached a terminal state of either `success` or `failed`. properties: status: type: string description: The outcome status for the associated Identity Verification attempt's `kyc_check` step. This field will always have the same value as `steps.kyc_check`. example: success address: $ref: '#/components/schemas/KYCCheckAddressSummary' name: $ref: '#/components/schemas/KYCCheckNameSummary' date_of_birth: $ref: '#/components/schemas/KYCCheckDateOfBirthSummary' id_number: $ref: '#/components/schemas/KYCCheckIDNumberSummary' phone_number: $ref: '#/components/schemas/KYCCheckPhoneSummary' required: - status - phone_number - address - name - date_of_birth - id_number nullable: true additionalProperties: true KYCCheckDetailsInternationalAddress: additionalProperties: true nullable: true x-hidden-from-docs: true type: object description: Result summary object specifying how the `address` field matched for fields that are only present on an international KYC check. properties: building: $ref: '#/components/schemas/HiddenMatchSummaryCode' county: $ref: '#/components/schemas/HiddenMatchSummaryCode' district: $ref: '#/components/schemas/HiddenMatchSummaryCode' house_number: $ref: '#/components/schemas/HiddenMatchSummaryCode' subpremise: $ref: '#/components/schemas/HiddenMatchSummaryCode' thoroughfare: $ref: '#/components/schemas/HiddenMatchSummaryCode' required: - building - county - district - house_number - subpremise - thoroughfare KYCCheckIDNumberSummary: description: Result summary object specifying how the `id_number` field matched. type: object properties: summary: $ref: '#/components/schemas/MatchSummaryCode' required: - summary additionalProperties: true KYCCheckNameSummary: description: Result summary object specifying how the `name` field matched. type: object properties: summary: $ref: '#/components/schemas/MatchSummaryCode' given_name: $ref: '#/components/schemas/HiddenMatchSummaryCode' family_name: $ref: '#/components/schemas/HiddenMatchSummaryCode' required: - summary additionalProperties: true KYCCheckPhoneSummary: description: Result summary object specifying how the `phone` field matched. type: object properties: summary: $ref: '#/components/schemas/MatchSummaryCode' area_code: $ref: '#/components/schemas/MatchSummaryCode' required: - summary - area_code additionalProperties: true MatchSummary: type: object description: Summary object reflecting the match result of the associated data properties: summary: $ref: '#/components/schemas/MatchSummaryCode' required: - summary additionalProperties: true MatchSummaryCode: description: |- An enum indicating the match type between data provided by user and data checked against an external data source. `match` indicates that the provided input data was a strong match against external data. `partial_match` indicates the data approximately matched against external data. For example, "Knope" vs. "Knope-Wyatt" for last name. `no_match` indicates that Plaid was able to perform a check against an external data source and it did not match the provided input data. `no_data` indicates that Plaid was unable to find external data to compare against the provided input data. `no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user. type: string title: MatchSummaryCode enum: - match - partial_match - no_match - no_data - no_input example: match POBoxStatus: description: Field describing whether the associated address is a post office box. Will be `yes` when a P.O. box is detected, `no` when Plaid confirmed the address is not a P.O. box, and `no_data` when Plaid was not able to determine if the address is a P.O. box. type: string enum: - "yes" - "no" - no_data example: "yes" PhoneType: description: An enum indicating whether a phone number is a phone line or a fax line. type: string enum: - phone - fax PhysicalDocumentCategory: type: string description: |- The type of identity document detected in the images provided. Will always be one of the following values: `drivers_license` - A driver's license issued by the associated country, establishing identity without any guarantee as to citizenship, and granting driving privileges `id_card` - A general national identification card, distinct from driver's licenses as it only establishes identity `passport` - A travel passport issued by the associated country for one of its citizens `residence_permit_card` - An identity document issued by the associated country permitting a foreign citizen to temporarily reside there `resident_card` - An identity document issued by the associated country permitting a foreign citizen to permanently reside there `visa` - An identity document issued by the associated country permitting a foreign citizen entry for a short duration and for a specific purpose, typically no longer than 6 months Note: This value may be different from the ID type that the user selects within Link. For example, if they select "Driver's License" but then submit a picture of a passport, this field will say `passport` enum: - drivers_license - id_card - passport - residence_permit_card - resident_card - visa example: drivers_license PhysicalDocumentExtractedData: type: object description: Data extracted from a user-submitted document. properties: id_number: $ref: '#/components/schemas/PhysicalDocumentIDNumber' category: $ref: '#/components/schemas/PhysicalDocumentCategory' expiration_date: $ref: '#/components/schemas/IdentityVerificationDocumentISO8601ExpirationDate' issue_date: $ref: '#/components/schemas/IdentityVerificationDocumentISO8601IssueDate' issuing_country: $ref: '#/components/schemas/GenericCountryCode' issuing_region: $ref: '#/components/schemas/Region' date_of_birth: $ref: '#/components/schemas/IdentityVerificationDocumentISO8601DateOfBirth' address: $ref: '#/components/schemas/IdentityVerificationDocumentAddressResponse' name: $ref: '#/components/schemas/IdentityVerificationDocumentNameResponse' required: - id_number - category - expiration_date - issue_date - issuing_country - issuing_region - date_of_birth - address nullable: true additionalProperties: true PhysicalDocumentExtractedDataAnalysis: type: object description: Analysis of the data extracted from the submitted document. properties: name: $ref: '#/components/schemas/DocumentNameMatchCode' date_of_birth: $ref: '#/components/schemas/DocumentDateOfBirthMatchCode' expiration_date: $ref: '#/components/schemas/ExpirationDate' issuing_country: $ref: '#/components/schemas/IssuingCountry' required: - name - date_of_birth - expiration_date - issuing_country nullable: true additionalProperties: true PhysicalDocumentIDNumber: type: string description: Alpha-numeric ID number extracted via OCR from the user's document image. example: AB123456 nullable: true PhysicalDocumentImages: type: object description: URLs for downloading original and cropped images for this document submission. The URLs are designed to only allow downloading, not hot linking, so the URL will only serve the document image for 60 seconds before expiring. The expiration time is 60 seconds after the `GET` request for the associated Identity Verification attempt. A new expiring URL is generated with each request, so you can always rerequest the Identity Verification attempt if one of your URLs expires. properties: original_front: $ref: '#/components/schemas/DocumentImage__Front' original_back: $ref: '#/components/schemas/DocumentImage__Back' cropped_front: $ref: '#/components/schemas/DocumentImage__CroppedFront' cropped_back: $ref: '#/components/schemas/DocumentImage__CroppedBack' face: $ref: '#/components/schemas/DocumentImage__Face' required: - original_front - original_back - cropped_front - cropped_back - face additionalProperties: true PlaidUserID: 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, 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, 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 example: "46001" title: PostalCode description: The postal code for the associated address. Between 2 and 10 alphanumeric characters. For US-based addresses this must be 5 numeric digits. nullable: true PreviousIdentityVerificationAttemptID: type: string example: idv_42cF1MNo42r9Xj description: The ID for the Identity Verification preceding this session. This field will only be filled if the current Identity Verification is a retry of a previous attempt. nullable: true ProgramArchived: type: boolean example: false title: Archived description: Archived programs are read-only and cannot screen new customers nor participate in ongoing monitoring. ProgramNameSensitivity: type: string enum: - coarse - balanced - strict - exact example: balanced description: |- The valid name matching sensitivity configurations for a screening program. Note that while certain matching techniques may be more prevalent on less strict settings, all matching algorithms are enabled for every sensitivity. `coarse` - See more potential matches. This sensitivity will see more broad phonetic matches across alphabets that make missing a potential hit very unlikely. This setting is noisier and will require more manual review. `balanced` - A good default for most companies. This sensitivity is balanced to show high quality hits with reduced noise. `strict` - Aggressive false positive reduction. This sensitivity will require names to be more similar than `coarse` and `balanced` settings, relying less on phonetics, while still accounting for character transpositions, missing tokens, and other common permutations. `exact` - Matches must be nearly exact. This sensitivity will only show hits with exact or nearly exact name matches with only basic correction such as extraneous symbols and capitalization. This setting is generally not recommended unless you have a very specific use case. title: ProgramNameSensitivity ProviderBusinessAddress: description: Detailed address information for a business from data provider properties: street: $ref: '#/components/schemas/StreetNullable' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/CityNullable' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' is_primary: type: boolean description: Whether this is the primary address for the business example: true required: - street - street2 - city - region - postal_code - country - is_primary type: object ProxyType: type: string description: |- An enum indicating whether a network proxy is present and if so what type it is. `none_detected` indicates the user is not on a detectable proxy network. `tor` indicates the user was using a Tor browser, which sends encrypted traffic on a decentralized network and is somewhat similar to a VPN (Virtual Private Network). `vpn` indicates the user is on a VPN (Virtual Private Network) `web_proxy` indicates the user is on a web proxy server, which may allow them to conceal information such as their IP address or other identifying information. `public_proxy` indicates the user is on a public web proxy server, which is similar to a web proxy but can be shared by multiple users. This may allow multiple users to appear as if they have the same IP address for instance. enum: - none_detected - tor - vpn - web_proxy - public_proxy nullable: true Region: type: string example: IN title: Region description: A subdivision code. "Subdivision" is a generic term for "state", "province", "prefecture", "zone", etc. For the list of valid codes, see [country subdivision codes](https://plaid.com/documents/country_subdivision_codes.json). Country prefixes are omitted, since they are inferred from the `country` field. nullable: true RequestBusinessAddress: type: object description: Physical address of a business. Used for input requests. properties: street: $ref: '#/components/schemas/Street' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/City' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - city - country additionalProperties: true ResponseBusinessAddress: type: object description: Physical address of a business. Used for response schemas. properties: street: $ref: '#/components/schemas/StreetNullable' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/CityNullable' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - street - street2 - city - region - postal_code - country additionalProperties: true ReviewComment: description: A comment submitted by a team member as part of reviewing a watchlist screening. type: string title: ReviewComment example: These look like legitimate matches, rejecting the customer. nullable: true RiskCheckBehavior: type: object description: Result summary object specifying values for `behavior` attributes of risk check, when available. properties: user_interactions: $ref: '#/components/schemas/RiskCheckBehaviorUserInteractionsLabel' fraud_ring_detected: $ref: '#/components/schemas/RiskCheckBehaviorFraudRingDetectedLabel' bot_detected: $ref: '#/components/schemas/RiskCheckBehaviorBotDetectedLabel' risk_level: $ref: '#/components/schemas/RiskLevelWithNoData' required: - user_interactions - fraud_ring_detected - bot_detected nullable: true additionalProperties: true RiskCheckBehaviorBotDetectedLabel: description: |- Field describing the outcome of a bot detection behavior risk check. `yes` indicates that automated activity was detected. `no` indicates that automated activity was not detected. `no_data` indicates there was not enough information available to give an accurate signal. type: string enum: - "yes" - "no" - no_data RiskCheckBehaviorFraudRingDetectedLabel: description: |- Field describing the outcome of a fraud ring behavior risk check. `yes` indicates that fraud ring activity was detected. `no` indicates that fraud ring activity was not detected. `no_data` indicates there was not enough information available to give an accurate signal. type: string enum: - "yes" - "no" - no_data RiskCheckBehaviorUserInteractionsLabel: description: |- Field describing the overall user interaction signals of a behavior risk check. This value represents how familiar the user is with the personal data they provide, based on a number of signals that are collected during their session. `genuine` indicates the user has high familiarity with the data they are providing, and that fraud is unlikely. `neutral` indicates some signals are present in between `risky` and `genuine`, but there are not enough clear signals to determine an outcome. `risky` indicates the user has low familiarity with the data they are providing, and that fraud is likely. `no_data` indicates there is not sufficient information to give an accurate signal. type: string enum: - genuine - neutral - risky - no_data example: risky RiskCheckDetails: type: object description: Additional information for the `risk_check` step. properties: status: $ref: '#/components/schemas/IdentityVerificationStepStatus' behavior: $ref: '#/components/schemas/RiskCheckBehavior' email: $ref: '#/components/schemas/RiskCheckEmail' phone: $ref: '#/components/schemas/RiskCheckPhone' devices: type: array description: Array of result summary objects specifying values for `device` attributes of risk check. items: $ref: '#/components/schemas/RiskCheckDevice' identity_abuse_signals: $ref: '#/components/schemas/RiskCheckIdentityAbuseSignals' network: $ref: '#/components/schemas/RiskCheckNetwork' facial_duplicates: type: array description: The attributes related to the facial duplicates captured in risk check. items: $ref: '#/components/schemas/RiskCheckFacialDuplicate' trust_index_score: description: The trust index score for the `risk_check` step. example: 86 type: integer nullable: true required: - status - behavior - devices - email - phone - identity_abuse_signals - facial_duplicates - trust_index_score nullable: true additionalProperties: true RiskCheckDevice: description: Result summary object specifying values for `device` attributes of risk check. type: object properties: ip_proxy_type: $ref: '#/components/schemas/ProxyType' ip_spam_list_count: nullable: true example: 1 description: Count of spam lists the IP address is associated with if known. type: integer ip_timezone_offset: $ref: '#/components/schemas/UTCOffset' risk_level: $ref: '#/components/schemas/RiskLevel' factors: $ref: '#/components/schemas/RiskCheckFactors' required: - ip_proxy_type - ip_spam_list_count - ip_timezone_offset additionalProperties: true RiskCheckEmail: type: object description: Result summary object specifying values for `email` attributes of risk check. properties: is_deliverable: $ref: '#/components/schemas/RiskCheckEmailIsDeliverableStatus' breach_count: nullable: true example: 1 description: Count of all known breaches of this email address if known. type: integer first_breached_at: $ref: '#/components/schemas/ISO8601DateNullable' last_breached_at: $ref: '#/components/schemas/ISO8601DateNullable' domain_registered_at: $ref: '#/components/schemas/ISO8601DateNullable' domain_is_free_provider: $ref: '#/components/schemas/RiskCheckEmailDomainIsFreeProvider' domain_is_custom: $ref: '#/components/schemas/RiskCheckEmailDomainIsCustom' domain_is_disposable: $ref: '#/components/schemas/RiskCheckEmailDomainIsDisposable' top_level_domain_is_suspicious: $ref: '#/components/schemas/RiskCheckEmailTopLevelDomainIsSuspicious' is_edu: $ref: '#/components/schemas/RiskCheckEmailIsEdu' includes_date_of_birth: $ref: '#/components/schemas/RiskCheckEmailIncludesDateOfBirth' name: $ref: '#/components/schemas/RiskCheckEmailName' linked_services: description: A list of online services where this email address has been detected to have accounts or other activity. type: array example: - facebook uniqueItems: true items: $ref: '#/components/schemas/RiskCheckLinkedService' risk_level: $ref: '#/components/schemas/RiskLevel' factors: $ref: '#/components/schemas/RiskCheckFactors' required: - is_deliverable - breach_count - first_breached_at - last_breached_at - domain_registered_at - domain_is_free_provider - domain_is_custom - domain_is_disposable - top_level_domain_is_suspicious - is_edu - includes_date_of_birth - name - linked_services nullable: true additionalProperties: true RiskCheckEmailDomainIsCustom: description: Indicates whether the email address domain is custom if known, i.e. a company domain and not free or disposable. example: "yes" type: string enum: - "yes" - "no" - no_data RiskCheckEmailDomainIsDisposable: description: Indicates whether the email domain is listed as disposable if known. Disposable domains are often used to create email addresses that are part of a fake set of user details. example: "yes" type: string enum: - "yes" - "no" - no_data RiskCheckEmailDomainIsFreeProvider: description: Indicates whether the email address domain is a free provider such as Gmail or Hotmail if known. example: "yes" type: string enum: - "yes" - "no" - no_data RiskCheckEmailIsDeliverableStatus: description: SMTP-MX check to confirm the email address exists if known. example: "yes" type: string enum: - "yes" - "no" - no_data RiskCheckEmailTopLevelDomainIsSuspicious: description: Indicates whether the email address top level domain, which is the last part of the domain, is fraudulent or risky if known. In most cases, a suspicious top level domain is also associated with a disposable or high-risk domain. example: "yes" type: string enum: - "yes" - "no" - no_data RiskCheckEmailIsEdu: description: Indicates whether the email address domain is an educational institution domain if known. example: no_data type: string enum: - "yes" - "no" - no_data RiskCheckEmailIncludesDateOfBirth: description: Indicates whether the email address includes the date of birth or year of birth if known. example: no_data type: string enum: - "yes" - "no" - no_data RiskCheckEmailName: description: |- Indicates whether the provided name matches the email address according to the KYC name-matches-email inference result if known. `match` - "The email's name identifiers match the user's name." `partial_match` - "The email's name identifiers partially match the user's name." `no_match` - "The email's name identifiers do not match the user's name." `indeterminate` - "The email does not contain any name identifiers, and a match could not be determined." `no_input` - "The user's profile does not contain the required user inputs to determine a match." `no_data` - "Field could not be verified against available sources." example: match type: string enum: - no_input - indeterminate - no_match - partial_match - match - no_data RiskCheckFacialDuplicate: description: Result summary object specifying values for the `facial_duplicates` attributes of risk check. type: object properties: id: $ref: '#/components/schemas/IdentityVerificationID' similarity: description: Similarity score of the match. Ranges from 0 to 100. example: 95 type: integer matched_after_completed: description: Whether this match occurred after the session was complete. For example, this would be `true` if a later session ended up matching this one. type: boolean example: true required: - id - similarity - matched_after_completed additionalProperties: true RiskCheckFactors: x-hidden-from-docs: true description: List of factors, when available, that contribute towards the risk level of the given risk check type. type: array items: type: string RiskCheckIdentityAbuseSignals: type: object description: Result summary object capturing abuse signals related to `identity abuse`, e.g. stolen and synthetic identity fraud. These attributes are only available for US identities and some signals may not be available depending on what information was collected. properties: synthetic_identity: $ref: '#/components/schemas/RiskCheckSyntheticIdentity' stolen_identity: $ref: '#/components/schemas/RiskCheckStolenIdentity' required: - synthetic_identity - stolen_identity nullable: true additionalProperties: true RiskCheckLinkedService: type: string description: An enum indicating the type of a linked service. Note that `adult_sites` refers to explicit video content, and includes a number of related services. enum: - aboutme - adobe - adult_sites - airbnb - altbalaji - amazon - apple - archiveorg - atlassian - bitmoji - bodybuilding - booking - bukalapak - codecademy - deliveroo - diigo - discord - disneyplus - duolingo - ebay - envato - eventbrite - evernote - facebook - firefox - flickr - flipkart - foursquare - freelancer - gaana - giphy - github - google - gravatar - hubspot - imgur - instagram - jdid - kakao - kommo - komoot - lastfm - lazada - line - linkedin - mailru - microsoft - myspace - netflix - nike - ok - patreon - pinterest - plurk - quora - qzone - rambler - rappi - replit - samsung - seoclerks - shopclues - skype - snapchat - snapdeal - soundcloud - spotify - starz - strava - taringa - telegram - tiki - tokopedia - treehouse - tumblr - twitter - venmo - viber - vimeo - vivino - vkontakte - wattpad - weibo - whatsapp - wordpress - xing - yahoo - yandex - zalo - zoho example: apple RiskCheckNetwork: x-hidden-from-docs: true description: Result summary object specifying values for network attributes of risk check. type: object nullable: true additionalProperties: true properties: risk_level: $ref: '#/components/schemas/RiskLevel' factors: $ref: '#/components/schemas/RiskCheckFactors' required: - risk_level - factors RiskCheckPhone: type: object description: Result summary object specifying values for `phone` attributes of risk check. properties: linked_services: description: A list of online services where this phone number has been detected to have accounts or other activity. type: array example: - facebook uniqueItems: true items: $ref: '#/components/schemas/RiskCheckLinkedService' risk_level: $ref: '#/components/schemas/RiskLevel' factors: $ref: '#/components/schemas/RiskCheckFactors' required: - linked_services nullable: true additionalProperties: true RiskCheckStolenIdentity: description: |- Field containing the data used in determining the outcome of the stolen identity risk check. Contains the following fields: `score` - A score from 0 to 100 indicating the likelihood that the user is a stolen identity. type: object properties: score: description: A score from 0 to 100 indicating the likelihood that the user is a stolen identity. type: integer example: 0 risk_level: $ref: '#/components/schemas/RiskLevel' required: - score nullable: true additionalProperties: true RiskCheckSyntheticIdentity: description: |- Field containing the data used in determining the outcome of the synthetic identity risk check. Contains the following fields: `score` - A score from 0 to 100 indicating the likelihood that the user is a synthetic identity. type: object properties: score: description: A score from 0 to 100 indicating the likelihood that the user is a synthetic identity. type: integer example: 0 risk_level: $ref: '#/components/schemas/RiskLevel' first_party_synthetic_fraud: $ref: '#/components/schemas/SyntheticFraud' third_party_synthetic_fraud: $ref: '#/components/schemas/SyntheticFraud' required: - score nullable: true additionalProperties: true RiskLevel: description: Risk level for the given risk check type. x-hidden-from-docs: true type: string enum: - low - medium - high RiskLevelWithNoData: description: Risk level for the given risk check type, when available. x-hidden-from-docs: true type: string enum: - low - medium - high - no_data RoutingNumber: type: string description: The routing number of the account. example: "021000021" SMSVerification: type: object description: Additional information for the individual SMS verification. properties: status: $ref: '#/components/schemas/SMSVerificationStatus' attempt: description: The attempt field begins with 1 and increments with each subsequent SMS verification. type: integer example: 1 phone_number: type: string description: A phone number in E.164 format. example: "+12345678909" nullable: true delivery_attempt_count: description: The number of delivery attempts made within the verification to send the SMS code to the user. Each delivery attempt represents the user taking action from the front end UI to request creation and delivery of a new SMS verification code, or to resend an existing SMS verification code. There is a limit of 3 delivery attempts per verification. type: integer example: 1 solve_attempt_count: description: The number of attempts made by the user within the verification to verify the SMS code by entering it into the front end UI. There is a limit of 3 solve attempts per verification. type: integer example: 1 initially_sent_at: $ref: '#/components/schemas/TimestampNullable' last_sent_at: $ref: '#/components/schemas/TimestampNullable' redacted_at: $ref: '#/components/schemas/TimestampNullable' required: - status - attempt - phone_number - delivery_attempt_count - solve_attempt_count - initially_sent_at - last_sent_at - redacted_at additionalProperties: true SMSVerificationStatus: description: The outcome status for the individual SMS verification. type: string example: success enum: - pending - success - failed - canceled ScreeningHitAnalysis: description: Analysis information describing why a screening hit matched the provided user information type: object properties: dates_of_birth: $ref: '#/components/schemas/MatchSummaryCode' documents: $ref: '#/components/schemas/MatchSummaryCode' locations: $ref: '#/components/schemas/MatchSummaryCode' names: $ref: '#/components/schemas/MatchSummaryCode' search_terms_version: type: integer description: The version of the screening's `search_terms` that were compared when the screening hit was added. Screening hits are immutable once they have been reviewed. If changes are detected due to updates to the screening's `search_terms`, the associated program, or the list's source data prior to review, the screening hit will be updated to reflect those changes. example: 1 required: - search_terms_version additionalProperties: true ScreeningHitData: description: Information associated with the watchlist hit type: object properties: dates_of_birth: description: Dates of birth associated with the watchlist hit type: array items: $ref: '#/components/schemas/ScreeningHitDateOfBirthItem' documents: description: Documents associated with the watchlist hit type: array items: $ref: '#/components/schemas/ScreeningHitDocumentsItems' locations: description: Locations associated with the watchlist hit type: array items: $ref: '#/components/schemas/GenericScreeningHitLocationItems' names: description: Names associated with the watchlist hit type: array items: $ref: '#/components/schemas/ScreeningHitNamesItems' additionalProperties: true ScreeningHitDateOfBirthItem: type: object description: Analyzed date of birth for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/DateRange' additionalProperties: true ScreeningHitDocumentsItems: description: Analyzed document information for the associated hit type: object properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/WatchlistScreeningDocument' additionalProperties: true ScreeningHitNamesItems: type: object description: Analyzed name information for the associated hit properties: analysis: $ref: '#/components/schemas/MatchSummary' data: $ref: '#/components/schemas/IndividualScreeningHitNames' additionalProperties: true SelfieAnalysis: type: object description: High level descriptions of how the associated selfie was processed. If a selfie fails verification, the details in the `analysis` object should help clarify why the selfie was rejected. properties: document_comparison: $ref: '#/components/schemas/SelfieAnalysisDocumentComparison' liveness_check: $ref: '#/components/schemas/SelfieAnalysisLivenessCheck' age_check: $ref: '#/components/schemas/SelfieAgeCheck' facial_analysis: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysis' required: - document_comparison - liveness_check additionalProperties: true SelfieAnalysisDocumentComparison: type: string enum: - match - no_match - no_input description: Information about the comparison between the selfie and the document (if documentary verification also ran). SelfieAgeCheck: type: object nullable: true description: Age-estimation results from the selfie capture. This field is `null` when an age range could not be estimated from the selfie capture. properties: status: $ref: '#/components/schemas/SelfieAgeCheckStatus' reported_age: type: integer example: 36 nullable: true description: The user's age at the time of the selfie capture, calculated from the date of birth submitted during Identity Verification. If multiple date of birth sources are available, the date of birth submitted in the flow session takes priority over the document date of birth. This field is `null` when the date of birth is unavailable. age_estimate_lower_bound: type: integer example: 32 description: Lower bound of the estimated age range from the selfie capture. age_estimate_upper_bound: type: integer example: 38 description: Upper bound of the estimated age range from the selfie capture. required: - status - reported_age - age_estimate_lower_bound - age_estimate_upper_bound additionalProperties: true SelfieAgeCheckStatus: type: string enum: - match - warning - no_match - no_data example: match description: |- An enum indicating whether the reported age aligns with the estimated selfie capture age range. `match` indicates that the reported age falls within the estimated selfie capture age range. `warning` indicates that the reported age falls outside the estimated selfie capture age range, but is close enough that the result should be reviewed. `no_match` indicates that the reported age falls far outside the estimated selfie capture age range. `no_data` indicates that there was not enough data available at age-estimation time to compare the reported age against the estimated selfie capture age range. SelfieAnalysisFacialAnalysis: additionalProperties: true nullable: true x-hidden-from-docs: true type: object description: Analysis of the facial features of the selfie when compared to the face in the uploaded document, if one is present. properties: left_eye: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' right_eye: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' left_brow: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' right_brow: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' forehead: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' middle_forehead: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' nose: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' philtrum: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' mouth: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' jaw: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' left_cheek: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' right_cheek: $ref: '#/components/schemas/SelfieAnalysisFacialAnalysisOutcome' required: - left_eye - right_eye - left_brow - right_brow - forehead - middle_forehead - nose - philtrum - mouth - jaw - left_cheek - right_cheek SelfieAnalysisFacialAnalysisOutcome: type: string enum: - success - failed description: Outcome of the facial analysis for a specific facial feature. SelfieAnalysisLivenessCheck: type: string enum: - success - failed description: Assessment of whether the selfie capture is of a real human being, as opposed to a picture of a human on a screen, a picture of a paper cut out, someone wearing a mask, or a deepfake. SelfieCapture: type: object description: The image or video capture of a selfie. Only one of `image_url` or `video_url` will be populated per selfie. In the vast majority of sessions Plaid records a short video of the user, so `video_url` is populated and `image_url` is `null`. `image_url` is only populated in the rare passive-liveness fallback case, where the user's device could not complete the standard video liveness capture (for example, a camera or streaming error) and submitted a single still image instead. properties: image_url: $ref: '#/components/schemas/SelfieCaptureImageURL' video_url: $ref: '#/components/schemas/SelfieCaptureVideoURL' required: - image_url - video_url additionalProperties: true SelfieCaptureImageURL: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg description: Temporary URL for downloading a still-image selfie capture. This field is only populated when the session fell back to passive (image-based) liveness. For the majority of selfie checks this field is `null` and `video_url` is populated instead. nullable: true SelfieCaptureVideoURL: type: string example: https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm description: Temporary URL for downloading a video selfie capture. This is the standard selfie capture for Identity Verification. Plaid records a short video of the user during the Selfie Check liveness step, so this field is populated for the vast majority of selfie checks. nullable: true SelfieCheck: description: Additional information for the `selfie_check` step. This field will be `null` unless `steps.selfie_check` has reached a terminal state of either `success` or `failed`. title: SelfieCheck type: object properties: status: $ref: '#/components/schemas/SelfieCheckStatus' selfies: description: An array of selfies submitted to the `selfie_check` step. Each entry represents one user submission. type: array items: $ref: '#/components/schemas/SelfieCheckSelfie' required: - status - selfies nullable: true additionalProperties: true SelfieCheckSelfie: type: object description: Captures and analysis from a user's selfie. additionalProperties: true properties: status: $ref: '#/components/schemas/SelfieStatus' attempt: example: 1 type: integer description: The `attempt` field begins with 1 and increments with each subsequent selfie upload. capture: $ref: '#/components/schemas/SelfieCapture' analysis: $ref: '#/components/schemas/SelfieAnalysis' required: - status - attempt - capture - analysis SelfieCheckStatus: type: string enum: - success - failed example: success description: The outcome status for the associated Identity Verification attempt's `selfie_check` step. This field will always have the same value as `steps.selfie_check`. SelfieStatus: type: string enum: - success - failed example: success description: An outcome status for this specific selfie. Distinct from the overall `selfie_check.status` that summarizes the verification outcome from one or more selfies. ShareableURL: type: string example: https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f description: A shareable URL that can be sent directly to the user to complete verification nullable: true Source: type: string enum: - dashboard - link - api - system - 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 example: 26192ABC nullable: true Strategy: description: |- An instruction specifying what steps the new Identity Verification attempt should require the user to complete: `reset` - Restart the user at the beginning of the session, regardless of whether they successfully completed part of their previous session. `incomplete` - Start the new session at the step that the user failed in the previous session, skipping steps that have already been successfully completed. `infer` - If the most recent Identity Verification attempt associated with the given `client_user_id` has a status of `failed` or `expired`, retry using the `incomplete` strategy. Otherwise, use the `reset` strategy. `custom` - Start the new session with a custom configuration, specified by the value of the `steps` field Note: 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 enum: - reset - incomplete - infer - custom Street: type: string example: 123 Main St. title: Street description: The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. Street2: type: string example: Unit 42 title: Street2 description: Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 50 characters. nullable: true StreetNullable: type: string example: 123 Main St. title: Street description: The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. nullable: true SyntheticFraud: x-hidden-from-docs: true description: Field containing the data used in determining the outcome of a synthetic fraud risk check. type: object nullable: true additionalProperties: true properties: risk_level: $ref: '#/components/schemas/RiskLevel' required: - risk_level Timestamp: description: An ISO8601 formatted timestamp. type: string format: date-time title: Timestamp example: "2020-07-24T03:26:02Z" TimestampNullable: description: An ISO8601 formatted timestamp. type: string format: date-time title: Timestamp example: "2020-07-24T03:26:02Z" nullable: true URL: type: string format: uri title: URL example: https://example.com description: An 'http' or 'https' URL (must begin with either of those). URLNullable: type: string format: uri title: URL example: https://example.com description: An 'http' or 'https' URL (must begin with either of those). nullable: true UTCOffset: type: string description: UTC offset of the timezone associated with the IP address. example: "+06:00:00" nullable: true UpdateEntityScreeningRequestSearchTerms: type: object description: Search terms for editing an entity watchlist screening properties: entity_watchlist_program_id: $ref: '#/components/schemas/EntityWatchlistProgramID' legal_name: $ref: '#/components/schemas/EntityWatchlistScreeningName' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValue' email_address: $ref: '#/components/schemas/EmailAddress' country: $ref: '#/components/schemas/GenericCountryCode' phone_number: $ref: '#/components/schemas/WatchlistScreeningPhoneNumber' url: $ref: '#/components/schemas/URL' required: - entity_watchlist_program_id nullable: true UpdateIndividualScreeningRequestSearchTerms: type: object description: Search terms for editing an individual watchlist screening properties: watchlist_program_id: $ref: '#/components/schemas/WatchlistProgramID' legal_name: $ref: '#/components/schemas/WatchlistScreeningIndividualName' date_of_birth: $ref: '#/components/schemas/ISO8601Date' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValue' country: $ref: '#/components/schemas/GenericCountryCode' nullable: true UpdatedAtTimestamp: description: An ISO8601 formatted timestamp. This field indicates the last time the resource was modified. type: string format: date-time title: Timestamp example: "2020-07-24T03:26:02Z" UserAddress: type: object properties: street: $ref: '#/components/schemas/StreetNullable' street2: $ref: '#/components/schemas/Street2' city: $ref: '#/components/schemas/CityNullable' region: $ref: '#/components/schemas/Region' postal_code: $ref: '#/components/schemas/PostalCode' country: $ref: '#/components/schemas/GenericCountryCode' required: - country description: |- Home address for the user. Supported values are: not provided, address with only country code or full address. For more context on this field, see [Input Validation by Country](https://plaid.com/docs/identity-verification/hybrid-input-validation/#input-validation-by-country). nullable: true additionalProperties: true UserIDNumber: description: ID number submitted by the user, currently used only for the Identity Verification product. If the user has not submitted this data yet, this field will be `null`. Otherwise, both fields are guaranteed to be filled. type: object properties: value: $ref: '#/components/schemas/IDNumberValue' type: $ref: '#/components/schemas/IDNumberType' required: - value - type nullable: true additionalProperties: true VerifySMSDetails: type: object description: Additional information for the `verify_sms` step. properties: status: $ref: '#/components/schemas/VerifySMSDetailsStatus' verifications: type: array description: An array where each entry represents a verification attempt for the `verify_sms` step. Each entry represents one user-submitted phone number. Phone number edits, and in some cases error handling due to edge cases like rate limiting, may generate additional verifications. items: $ref: '#/components/schemas/SMSVerification' required: - status - verifications nullable: true additionalProperties: true VerifySMSDetailsStatus: description: The outcome status for the associated Identity Verification attempt's `verify_sms` step. This field will always have the same value as `steps.verify_sms`. type: string example: success enum: - success - failed WatchlistProgramID: type: string example: prg_2eRPsDnL66rZ7H title: WatchlistProgramID description: ID of the associated program. WatchlistScreeningAuditTrail: title: WatchlistScreeningAuditTrail description: Information about the last change made to the parent object specifying what caused the change as well as when it occurred. type: object properties: source: $ref: '#/components/schemas/Source' dashboard_user_id: $ref: '#/components/schemas/DashboardUserIDNullable' timestamp: $ref: '#/components/schemas/Timestamp' required: - source - dashboard_user_id - timestamp additionalProperties: true WatchlistScreeningDocument: title: WatchlistScreeningDocument type: object description: An official document, usually issued by a governing body or institution, with an associated identifier. properties: type: $ref: '#/components/schemas/WatchlistScreeningDocumentType' number: $ref: '#/components/schemas/WatchlistScreeningDocumentValue' required: - type - number additionalProperties: true WatchlistScreeningDocumentType: type: string enum: - birth_certificate - drivers_license - immigration_number - military_id - other - passport - personal_identification - ration_card - ssn - student_id - tax_id - travel_document - voter_id title: WatchlistScreeningDocumentType example: passport description: |- The kind of official document represented by this object. `birth_certificate` - A certificate of birth `drivers_license` - A license to operate a motor vehicle `immigration_number` - Immigration or residence documents `military_id` - Identification issued by a military group `other` - Any document not covered by other categories `passport` - An official passport issued by a government `personal_identification` - Any generic personal identification that is not covered by other categories `ration_card` - Identification that entitles the holder to rations `ssn` - United States Social Security Number `student_id` - Identification issued by an educational institution `tax_id` - Identification issued for the purpose of collecting taxes `travel_document` - Visas, entry permits, refugee documents, etc. `voter_id` - Identification issued for the purpose of voting WatchlistScreeningDocumentValue: type: string title: WatchlistScreeningDocumentValue example: C31195855 description: The numeric or alphanumeric identifier associated with this document. Must be between 4 and 32 characters long, and cannot have leading or trailing spaces. WatchlistScreeningDocumentValueNullable: type: string title: WatchlistScreeningDocumentValue example: C31195855 description: The numeric or alphanumeric identifier associated with this document. Must be between 4 and 32 characters long, and cannot have leading or trailing spaces. nullable: true WatchlistScreeningEntityCreateRequest: type: object description: Request input for creating an entity watchlist screening properties: search_terms: $ref: '#/components/schemas/EntityWatchlistSearchTerms' client_user_id: $ref: '#/components/schemas/ClientUserID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - search_terms WatchlistScreeningEntityCreateResponse: description: 'The entity screening object allows you to represent an entity in your system, update its profile, and search for it on various watchlists. Note: Rejected entity screenings will not receive new hits, regardless of entity program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningID' search_terms: $ref: '#/components/schemas/EntityWatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningEntityGetRequest: description: Request input for fetching an entity watchlist screening type: object properties: entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - entity_watchlist_screening_id WatchlistScreeningEntityGetResponse: description: 'The entity screening object allows you to represent an entity in your system, update its profile, and search for it on various watchlists. Note: Rejected entity screenings will not receive new hits, regardless of entity program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningID' search_terms: $ref: '#/components/schemas/EntityWatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningEntityHistoryListRequest: description: Request input for listing changes to entity watchlist screenings type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' cursor: $ref: '#/components/schemas/Cursor' required: - entity_watchlist_screening_id WatchlistScreeningEntityHistoryListResponse: description: Paginated list of entity watchlist screenings additionalProperties: true properties: entity_watchlist_screenings: description: List of entity watchlist screening type: array items: $ref: '#/components/schemas/EntityWatchlistScreening' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - entity_watchlist_screenings - next_cursor - request_id type: object WatchlistScreeningEntityHitListRequest: description: Request input for listing hits for an entity watchlist screening type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' cursor: $ref: '#/components/schemas/Cursor' required: - entity_watchlist_screening_id WatchlistScreeningEntityHitListResponse: description: Paginated list of entity watchlist screening hits additionalProperties: true properties: entity_watchlist_screening_hits: description: List of entity watchlist screening hits type: array items: $ref: '#/components/schemas/EntityWatchlistScreeningHit' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - entity_watchlist_screening_hits - next_cursor - request_id type: object WatchlistScreeningEntityListRequest: description: Request input for listing entity watchlist screenings type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' entity_watchlist_program_id: $ref: '#/components/schemas/EntityWatchlistProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' status: $ref: '#/components/schemas/WatchlistScreeningStatus' assignee: $ref: '#/components/schemas/DashboardUserID' cursor: $ref: '#/components/schemas/Cursor' required: - entity_watchlist_program_id WatchlistScreeningEntityListResponse: description: Paginated list of entity watchlist screenings additionalProperties: true properties: entity_watchlist_screenings: description: List of entity watchlist screening type: array items: $ref: '#/components/schemas/EntityWatchlistScreening' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - entity_watchlist_screenings - next_cursor - request_id type: object WatchlistScreeningEntityProgramGetRequest: description: Request input for fetching an entity watchlist program type: object properties: entity_watchlist_program_id: $ref: '#/components/schemas/EntityWatchlistProgramID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - entity_watchlist_program_id WatchlistScreeningEntityProgramGetResponse: description: A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of entities. additionalProperties: true properties: id: $ref: '#/components/schemas/EntityWatchlistProgramID' created_at: $ref: '#/components/schemas/Timestamp' is_rescanning_enabled: description: Indicator specifying whether the program is enabled and will perform daily rescans. type: boolean example: true lists_enabled: description: Watchlists enabled for the associated program type: array example: - EU_CON uniqueItems: true items: $ref: '#/components/schemas/EntityWatchlistCode' name: $ref: '#/components/schemas/EntityWatchlistScreeningProgramName' name_sensitivity: $ref: '#/components/schemas/ProgramNameSensitivity' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' is_archived: $ref: '#/components/schemas/ProgramArchived' request_id: $ref: '#/components/schemas/RequestID' required: - id - created_at - is_rescanning_enabled - lists_enabled - name - name_sensitivity - audit_trail - is_archived - request_id type: object WatchlistScreeningEntityProgramListRequest: description: Request input for listing entity watchlist screening programs type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' cursor: $ref: '#/components/schemas/Cursor' WatchlistScreeningEntityProgramListResponse: description: Paginated list of entity watchlist screening programs additionalProperties: true properties: entity_watchlist_programs: description: List of entity watchlist screening programs type: array items: $ref: '#/components/schemas/EntityWatchlistProgram' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - entity_watchlist_programs - next_cursor - request_id type: object WatchlistScreeningEntityReviewCreateRequest: type: object description: Request input for creating a review for an entity screening properties: confirmed_hits: type: array items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. dismissed_hits: type: array items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' description: Hits to mark as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. comment: $ref: '#/components/schemas/ReviewComment' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' required: - confirmed_hits - dismissed_hits - entity_watchlist_screening_id WatchlistScreeningEntityReviewCreateResponse: description: |- A review submitted by a team member for an entity watchlist screening. A review can be either a comment on the current screening state, actions taken against hits attached to the watchlist screening, or both. additionalProperties: true properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningReviewID' confirmed_hits: type: array description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' dismissed_hits: type: array description: Hits marked as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. items: $ref: '#/components/schemas/EntityWatchlistScreeningHitID' comment: $ref: '#/components/schemas/ReviewComment' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - confirmed_hits - dismissed_hits - comment - audit_trail - request_id type: object WatchlistScreeningEntityReviewListRequest: description: Request input for listing reviews for an entity watchlist screening type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' cursor: $ref: '#/components/schemas/Cursor' required: - entity_watchlist_screening_id WatchlistScreeningEntityReviewListResponse: description: Paginated list of entity watchlist screening reviews additionalProperties: true properties: entity_watchlist_screening_reviews: description: List of entity watchlist screening reviews type: array items: $ref: '#/components/schemas/EntityWatchlistScreeningReview' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - entity_watchlist_screening_reviews - next_cursor - request_id type: object WatchlistScreeningEntityUpdateRequest: type: object description: Request input for editing an entity watchlist screening properties: entity_watchlist_screening_id: $ref: '#/components/schemas/EntityWatchlistScreeningID' search_terms: $ref: '#/components/schemas/UpdateEntityScreeningRequestSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserID' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' reset_fields: $ref: '#/components/schemas/WatchlistScreeningEntityUpdateRequestResettableFieldList' required: - entity_watchlist_screening_id WatchlistScreeningEntityUpdateRequestResettableField: type: string enum: - assignee description: The name of a field that can be reset back to null WatchlistScreeningEntityUpdateRequestResettableFieldList: type: array items: $ref: '#/components/schemas/WatchlistScreeningEntityUpdateRequestResettableField' description: A list of fields to reset back to null nullable: true WatchlistScreeningEntityUpdateResponse: description: 'The entity screening object allows you to represent an entity in your system, update its profile, and search for it on various watchlists. Note: Rejected entity screenings will not receive new hits, regardless of entity program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/EntityWatchlistScreeningID' search_terms: $ref: '#/components/schemas/EntityWatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningHit: type: object description: Data from a government watchlist or PEP list that has been attached to the screening. title: WatchlistScreeningHit properties: id: $ref: '#/components/schemas/WatchlistScreeningHitID' review_status: $ref: '#/components/schemas/WatchlistScreeningHitStatus' first_active: $ref: '#/components/schemas/Timestamp' inactive_since: $ref: '#/components/schemas/TimestampNullable' historical_since: $ref: '#/components/schemas/TimestampNullable' list_code: $ref: '#/components/schemas/IndividualWatchlistCode' plaid_uid: $ref: '#/components/schemas/InternalUID' source_uid: $ref: '#/components/schemas/SourceUID' sub_programs: type: array description: | Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN entries these are the program codes published in the SDN list (for example `SDGT` for Specially Designated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins, `IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice, so callers should treat unknown values as opaque strings rather than enum members. items: type: string example: SDGT example: - SDGT - SDNTK analysis: $ref: '#/components/schemas/ScreeningHitAnalysis' data: $ref: '#/components/schemas/ScreeningHitData' required: - id - review_status - first_active - inactive_since - historical_since - list_code - plaid_uid - source_uid - sub_programs additionalProperties: true WatchlistScreeningHitID: type: string example: scrhit_52xR9LKo77r1Np title: WatchlistScreeningHitID description: ID of the associated screening hit. WatchlistScreeningHitLocations: type: object description: Location information for the associated watchlist hit properties: full: type: string example: Florida, US description: The full location string, potentially including elements like street, city, postal codes and country codes. Note that this is not necessarily a complete or well-formatted address. country: $ref: '#/components/schemas/GenericCountryCode' required: - full - country additionalProperties: true WatchlistScreeningHitStatus: type: string title: WatchlistScreeningHitStatus enum: - confirmed - pending_review - dismissed example: pending_review description: The current state of review. All watchlist screening hits begin in a `pending_review` state but can be changed by creating a review. When a hit is in the `pending_review` state, it will always show the latest version of the watchlist data Plaid has available and be compared against the latest customer information saved in the watchlist screening. Once a hit has been marked as `confirmed` or `dismissed` it will no longer be updated so that the state is as it was when the review was first conducted. WatchlistScreeningIndividual: type: object properties: id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' search_terms: $ref: '#/components/schemas/WatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' required: - id - search_terms - assignee - status - client_user_id - audit_trail title: WatchlistScreeningIndividual description: 'The screening object allows you to represent a customer in your system, update their profile, and search for them on various watchlists. Note: Rejected customers will not receive new hits, regardless of program configuration.' additionalProperties: true WatchlistScreeningIndividualCreateRequest: type: object description: Request input for creating an individual watchlist screening properties: search_terms: $ref: '#/components/schemas/WatchlistScreeningRequestSearchTerms' client_user_id: $ref: '#/components/schemas/ClientUserID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - search_terms WatchlistScreeningIndividualCreateResponse: description: 'The screening object allows you to represent a customer in your system, update their profile, and search for them on various watchlists. Note: Rejected customers will not receive new hits, regardless of program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' search_terms: $ref: '#/components/schemas/WatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningIndividualGetRequest: description: Request input for fetching an individual watchlist screening type: object properties: watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - watchlist_screening_id WatchlistScreeningIndividualGetResponse: description: 'The screening object allows you to represent a customer in your system, update their profile, and search for them on various watchlists. Note: Rejected customers will not receive new hits, regardless of program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' search_terms: $ref: '#/components/schemas/WatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningIndividualHistoryListRequest: description: Request input for listing changes to watchlist screenings for individuals type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' cursor: $ref: '#/components/schemas/Cursor' required: - watchlist_screening_id WatchlistScreeningIndividualHistoryListResponse: description: Paginated list of individual watchlist screenings. additionalProperties: true properties: watchlist_screenings: description: List of individual watchlist screenings type: array items: $ref: '#/components/schemas/WatchlistScreeningIndividual' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - watchlist_screenings - next_cursor - request_id type: object WatchlistScreeningIndividualHitListRequest: description: Request input for listing hits for an individual watchlist screening type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' cursor: $ref: '#/components/schemas/Cursor' required: - watchlist_screening_id WatchlistScreeningIndividualHitListResponse: description: Paginated list of individual watchlist screening hits additionalProperties: true properties: watchlist_screening_hits: description: List of individual watchlist screening hits type: array items: $ref: '#/components/schemas/WatchlistScreeningHit' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - watchlist_screening_hits - next_cursor - request_id type: object WatchlistScreeningIndividualID: type: string example: scr_52xR9LKo77r1Np title: WatchlistScreeningIndividualID description: ID of the associated screening. WatchlistScreeningIndividualIDNullable: type: string example: scr_52xR9LKo77r1Np title: WatchlistScreeningIndividualID description: ID of the associated screening. nullable: true WatchlistScreeningIndividualListRequest: description: Request input for listing watchlist screenings for individuals type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' watchlist_program_id: $ref: '#/components/schemas/WatchlistProgramID' client_user_id: $ref: '#/components/schemas/ClientUserID' status: $ref: '#/components/schemas/WatchlistScreeningStatus' assignee: $ref: '#/components/schemas/DashboardUserID' cursor: $ref: '#/components/schemas/Cursor' required: - watchlist_program_id WatchlistScreeningIndividualListResponse: description: Paginated list of individual watchlist screenings. additionalProperties: true properties: watchlist_screenings: description: List of individual watchlist screenings type: array items: $ref: '#/components/schemas/WatchlistScreeningIndividual' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - watchlist_screenings - next_cursor - request_id type: object WatchlistScreeningIndividualName: type: string title: WatchlistScreeningIndividualName example: Aleksey Potemkin description: The legal name of the individual being screened. Must have at least one alphabetical character, have a maximum length of 100 characters, and not include leading or trailing spaces. WatchlistScreeningIndividualProgramGetRequest: description: Request input for fetching an individual watchlist program type: object properties: watchlist_program_id: $ref: '#/components/schemas/WatchlistProgramID' secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' required: - watchlist_program_id WatchlistScreeningIndividualProgramGetResponse: description: A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of individuals. additionalProperties: true properties: id: $ref: '#/components/schemas/WatchlistProgramID' created_at: $ref: '#/components/schemas/Timestamp' is_rescanning_enabled: description: Indicator specifying whether the program is enabled and will perform daily rescans. type: boolean example: true lists_enabled: description: Watchlists enabled for the associated program type: array example: - US_SDN uniqueItems: true items: $ref: '#/components/schemas/IndividualWatchlistCode' name: $ref: '#/components/schemas/IndividualWatchlistScreeningProgramName' name_sensitivity: $ref: '#/components/schemas/ProgramNameSensitivity' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' is_archived: $ref: '#/components/schemas/ProgramArchived' request_id: $ref: '#/components/schemas/RequestID' required: - id - created_at - is_rescanning_enabled - lists_enabled - name - name_sensitivity - audit_trail - is_archived - request_id type: object WatchlistScreeningIndividualProgramListRequest: description: Request input for listing watchlist screening programs for individuals type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' cursor: $ref: '#/components/schemas/Cursor' WatchlistScreeningIndividualProgramListResponse: description: Paginated list of individual watchlist screening programs additionalProperties: true properties: watchlist_programs: description: List of individual watchlist screening programs type: array items: $ref: '#/components/schemas/IndividualWatchlistProgram' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - watchlist_programs - next_cursor - request_id type: object WatchlistScreeningIndividualReviewCreateRequest: type: object description: Request input for creating a screening review properties: confirmed_hits: type: array items: $ref: '#/components/schemas/WatchlistScreeningHitID' description: Hits to mark as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. dismissed_hits: type: array items: $ref: '#/components/schemas/WatchlistScreeningHitID' description: Hits to mark as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. comment: $ref: '#/components/schemas/ReviewComment' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' required: - confirmed_hits - dismissed_hits - watchlist_screening_id WatchlistScreeningIndividualReviewCreateResponse: description: |- A review submitted by a team member for an individual watchlist screening. A review can be either a comment on the current screening state, actions taken against hits attached to the watchlist screening, or both. additionalProperties: true properties: id: $ref: '#/components/schemas/WatchlistScreeningReviewID' confirmed_hits: type: array description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/WatchlistScreeningHitID' dismissed_hits: type: array description: Hits marked as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. items: $ref: '#/components/schemas/WatchlistScreeningHitID' comment: $ref: '#/components/schemas/ReviewComment' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - confirmed_hits - dismissed_hits - comment - audit_trail - request_id type: object WatchlistScreeningIndividualReviewListRequest: description: Request input for listing reviews for an individual watchlist screening type: object properties: secret: $ref: '#/components/schemas/APISecret' client_id: $ref: '#/components/schemas/APIClientID' watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' cursor: $ref: '#/components/schemas/Cursor' required: - watchlist_screening_id WatchlistScreeningIndividualReviewListResponse: description: Paginated list of screening reviews additionalProperties: true properties: watchlist_screening_reviews: description: List of screening reviews type: array items: $ref: '#/components/schemas/WatchlistScreeningReview' next_cursor: $ref: '#/components/schemas/Cursor' request_id: $ref: '#/components/schemas/RequestID' required: - watchlist_screening_reviews - next_cursor - request_id type: object WatchlistScreeningIndividualUpdateRequest: type: object description: Request input for editing an individual watchlist screening properties: watchlist_screening_id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' search_terms: $ref: '#/components/schemas/UpdateIndividualScreeningRequestSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserID' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserID' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' reset_fields: $ref: '#/components/schemas/WatchlistScreeningIndividualUpdateRequestResettableFieldList' required: - watchlist_screening_id WatchlistScreeningIndividualUpdateRequestResettableField: type: string enum: - assignee description: The name of a field that can be reset back to null WatchlistScreeningIndividualUpdateRequestResettableFieldList: type: array items: $ref: '#/components/schemas/WatchlistScreeningIndividualUpdateRequestResettableField' description: A list of fields to reset back to null nullable: true WatchlistScreeningIndividualUpdateResponse: description: 'The screening object allows you to represent a customer in your system, update their profile, and search for them on various watchlists. Note: Rejected customers will not receive new hits, regardless of program configuration.' additionalProperties: true properties: id: $ref: '#/components/schemas/WatchlistScreeningIndividualID' search_terms: $ref: '#/components/schemas/WatchlistScreeningSearchTerms' assignee: $ref: '#/components/schemas/DashboardUserIDNullable' status: $ref: '#/components/schemas/WatchlistScreeningStatus' client_user_id: $ref: '#/components/schemas/ClientUserIDNullable' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' request_id: $ref: '#/components/schemas/RequestID' required: - id - search_terms - assignee - status - client_user_id - audit_trail - request_id type: object WatchlistScreeningPhoneNumber: type: string description: A phone number in E.164 format. example: "+14025671234" title: WatchlistScreeningPhoneNumber WatchlistScreeningPhoneNumberNullable: type: string description: A phone number in E.164 format. example: "+14025671234" title: WatchlistScreeningPhoneNumber nullable: true WatchlistScreeningRequestSearchTerms: type: object description: Search inputs for creating a watchlist screening required: - watchlist_program_id - legal_name properties: watchlist_program_id: $ref: '#/components/schemas/WatchlistProgramID' legal_name: $ref: '#/components/schemas/WatchlistScreeningIndividualName' date_of_birth: $ref: '#/components/schemas/ISO8601Date' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValue' country: $ref: '#/components/schemas/GenericCountryCode' WatchlistScreeningReview: title: WatchlistScreeningReview type: object description: |- A review submitted by a team member for an individual watchlist screening. A review can be either a comment on the current screening state, actions taken against hits attached to the watchlist screening, or both. properties: id: $ref: '#/components/schemas/WatchlistScreeningReviewID' confirmed_hits: type: array description: Hits marked as a true positive after thorough manual review. These hits will never recur or be updated once confirmed. In most cases, confirmed hits indicate that the customer should be rejected. items: $ref: '#/components/schemas/WatchlistScreeningHitID' dismissed_hits: type: array description: Hits marked as a false positive after thorough manual review. These hits will never recur or be updated once dismissed. items: $ref: '#/components/schemas/WatchlistScreeningHitID' comment: $ref: '#/components/schemas/ReviewComment' audit_trail: $ref: '#/components/schemas/WatchlistScreeningAuditTrail' required: - id - confirmed_hits - dismissed_hits - comment - audit_trail additionalProperties: true WatchlistScreeningReviewID: type: string title: WatchlistScreeningReviewID example: rev_aCLNRxK3UVzn2r description: ID of the associated review. WatchlistScreeningSearchTerms: type: object description: Search terms for creating an individual watchlist screening properties: watchlist_program_id: $ref: '#/components/schemas/WatchlistProgramID' legal_name: $ref: '#/components/schemas/WatchlistScreeningIndividualName' date_of_birth: $ref: '#/components/schemas/ISO8601DateNullable' document_number: $ref: '#/components/schemas/WatchlistScreeningDocumentValueNullable' country: $ref: '#/components/schemas/GenericCountryCodeNullable' version: type: integer description: The current version of the search terms. Starts at `1` and increments with each edit to `search_terms`. example: 1 required: - watchlist_program_id - legal_name - date_of_birth - document_number - country - version additionalProperties: true WatchlistScreeningStatus: description: A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared. type: string enum: - rejected - pending_review - cleared example: cleared title: WatchlistScreeningStatus WeakAliasDetermination: type: string enum: - none - source - plaid example: none description: Names that are explicitly marked as low quality either by their `source` list, or by `plaid` by a series of additional checks done by Plaid. Plaid does not ever surface a hit as a result of a weak name alone. If a name has no quality issues, this value will be `none`. title: WeakAliasDetermination CreditAuditCopyTokenUpdateRequest: type: object description: CreditAuditCopyTokenUpdateRequest defines the request schema for `/credit/audit_copy_token/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' audit_copy_token: type: string description: The `audit_copy_token` you would like to update. report_tokens: type: array description: Array of tokens which the specified Audit Copy Token will be updated with. The types of token supported are asset report token and employment report token. There can be at most 1 of each token type in the array. items: $ref: '#/components/schemas/AssetReportToken' required: - audit_copy_token - report_tokens CreditAuditCopyTokenUpdateResponse: type: object additionalProperties: true description: Defines the response schema for `/credit/audit_copy_token/update` properties: request_id: $ref: '#/components/schemas/RequestID' updated: type: boolean description: '`true` if the Audit Copy Token was successfully updated.' required: - request_id - updated CraCheckReportIncomeInsightsGetRequest: title: CraCheckReportIncomeInsightsGetRequest type: object description: Defines the request schema for `/cra/check_report/income_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' user_id: $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 type: object description: CraCheckReportIncomeInsightsGetResponse defines the response schema for `/cra/check_report/income_insights/get`. properties: report: $ref: '#/components/schemas/CraIncomeInsights' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the Income Insights generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - request_id CheckReportWarning: 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 some of the requested information could not be retrieved. properties: warning_type: type: string description: The warning type, which will always be `CHECK_REPORT_WARNING` warning_code: $ref: '#/components/schemas/CheckReportWarningCode' cause: $ref: '#/components/schemas/Cause' required: - warning_type - warning_code - cause CheckReportWarningCode: type: string description: |- The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Account-owner information is not available. `TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable. `USER_FRAUD_ALERT`: The user has placed a fraud alert on their Plaid Check consumer report due to suspected fraud. Please note that when a fraud alert is in place, the recipient of the consumer report has an obligation to verify the consumer's identity. enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE - USER_FRAUD_ALERT ConsumerReportPDFGetRequest: type: object description: ConsumerReportPDFGetRequest defines the request schema for `/consumer_report/pdf/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' required: - user_token ConsumerReportPDFGetResponse: format: binary type: string description: ConsumerReportPDFGetResponse defines the response schema for `/consumer_report/pdf/get` CraIncomeInsights: type: object additionalProperties: true description: The Check Income Insights Report for an end user. properties: report_id: type: string description: The unique identifier associated with the Check Income Insights Report. generated_time: type: string description: The time when the Check Income Insights Report was generated. format: date-time days_requested: type: integer description: The number of days requested by the customer for the Check Income Insights Report. client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. items: type: array description: The list of Items in the report along with the associated metadata about the Item. items: $ref: '#/components/schemas/CraBankIncomeItem' user_summary: $ref: '#/components/schemas/CraIncomeInsightsUserSummary' income_streams: type: array description: The list of income streams for this user. items: $ref: '#/components/schemas/CraIncomeStream' bank_income_summary: $ref: '#/components/schemas/CraBankIncomeSummary' warnings: x-hidden-from-docs: true type: array description: If data from the report was unable to be retrieved, the warnings object will contain information about the error that caused the data to be incomplete. items: $ref: '#/components/schemas/CraBankIncomeWarning' required: - income_streams CraBankIncomeItem: type: object description: The details and metadata for an end user's Item. properties: item_id: $ref: '#/components/schemas/ItemId' accounts: type: array description: The Item's accounts that have bank income data. items: $ref: '#/components/schemas/CraBankIncomeAccount' bank_income_accounts: x-hidden-from-docs: true type: array description: This is a V1 (II1) field. For the V2 (II2) equivalent, use the `accounts` field. The Item's accounts that have bank income data. items: $ref: '#/components/schemas/CraBankIncomeAccount' bank_income_sources: x-hidden-from-docs: true type: array description: This is a V1 (II1) field. For the V2 (II2) equivalent, use the report-level `income_streams` field. The income sources for this Item. Each entry in the array is a single income source. items: $ref: '#/components/schemas/CraBankIncomeSource' last_updated_time: type: string description: The time when this Item's data was last retrieved from the financial institution. format: date-time institution_id: type: string description: The unique identifier of the institution associated with the Item. institution_name: type: string description: The name of the institution associated with the Item. required: - bank_income_sources - bank_income_accounts CraBankIncomeAccount: type: object description: The Item's bank accounts that have the selected data. properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. mask: type: string description: |- The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. nullable: true metadata: $ref: '#/components/schemas/CraBankIncomeAccountMetadata' name: type: string description: The name of the bank account. official_name: type: string description: The official name of the bank account. nullable: true subtype: $ref: '#/components/schemas/DepositoryAccountSubtype' type: $ref: '#/components/schemas/CreditBankIncomeAccountType' owners: x-hidden-from-docs: true type: array description: Data returned by the financial institution about the account owner or owners. Identity information is optional, so field may return an empty array. items: $ref: '#/components/schemas/Owner' required: - mask - metadata - name - official_name - subtype - type - owners CraBankIncomeAccountMetadata: title: CraBankIncomeAccountMetadata description: An object containing metadata about the extracted account. type: object properties: start_date: type: string format: date description: The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true end_date: type: string format: date description: The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true required: - start_date - end_date CraBankIncomeSource: type: object additionalProperties: true x-hidden-from-docs: true description: Detailed information for the income source. properties: account_id: type: string description: The account ID with which this income source is associated. income_source_id: type: string description: A unique identifier for an income source. If the report is regenerated and a new `report_id` is created, the new report will have a new set of `income_source_id`s. income_description: type: string description: The most common name or original description for the underlying income transactions. income_category: $ref: '#/components/schemas/CreditBankIncomeCategory' start_date: type: string format: date description: |- Minimum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- Maximum of all dates within the specific income sources in the user's bank account for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). pay_frequency: $ref: '#/components/schemas/CreditBankIncomePayFrequency' total_amount: type: number description: Total amount of earnings in the user's bank account for the specific income source for days requested by the client. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' transaction_count: type: integer description: Number of transactions for the income source within the start and end date. next_payment_date: type: string format: date nullable: true description: |- The expected date of the end user's next paycheck for the income source. The date will be returned in an ISO 8601 format (YYYY-MM-DD). status: $ref: '#/components/schemas/CraBankIncomeStatus' historical_average_monthly_gross_income: type: number description: An estimate of the average gross monthly income based on the historical net amount and income category for the income source(s). nullable: true historical_average_monthly_income: type: number description: The average monthly net income amount estimated based on the historical data for the income source(s). nullable: true forecasted_average_monthly_income: type: number description: The predicted average monthly net income amount for the income source(s). nullable: true forecasted_average_monthly_income_prediction_intervals: type: array description: The prediction interval(s) for the forecasted average monthly income. items: $ref: '#/components/schemas/CraPredictionInterval' employer: $ref: '#/components/schemas/CraBankIncomeEmployer' income_provider: $ref: '#/components/schemas/CraBankIncomeIncomeProvider' historical_summary: type: array items: $ref: '#/components/schemas/CraBankIncomeHistoricalSummary' required: - forecasted_average_monthly_income_prediction_intervals - income_provider CraPredictionInterval: description: The object containing prediction interval data. type: object additionalProperties: true x-hidden-from-docs: true properties: lower_bound: type: number description: The lower bound of the predicted attribute for the given probability. nullable: true upper_bound: type: number description: The upper bound of the predicted attribute for the given probability. nullable: true probability: type: number description: |- The probability of the actual value of the attribute falling within the upper and lower bound. This is a percentage represented as a value between 0 and 1. nullable: true CraBankIncomeEmployer: description: The object containing employer data. type: object additionalProperties: true x-hidden-from-docs: true properties: name: type: string description: The name of the employer. nullable: true required: - name CraBankIncomeIncomeProvider: description: The object containing data about the income provider. type: object additionalProperties: true nullable: true properties: name: type: string description: The name of the income provider. is_normalized: type: boolean description: Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers. required: - name - is_normalized CraBankIncomeSummary: type: object description: This is a V1 (II1) schema. For the V2 (II2) equivalent, use `CraIncomeInsightsUserSummary`. Summary for income across all income sources and items (max history of 730 days). additionalProperties: true x-hidden-from-docs: true properties: total_amounts: type: array description: |- Total amount of earnings across all the income sources in the end user's Items for the days requested by the client. This can contain multiple amounts, with each amount denominated in one unique currency. items: $ref: '#/components/schemas/CreditAmountWithCurrency' start_date: type: string format: date description: |- The earliest date within the days requested in which all income sources identified by Plaid appear in a user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The latest date in which all income sources identified by Plaid appear in the user's account. The date will be returned in an ISO 8601 format (YYYY-MM-DD). income_sources_count: type: integer description: Number of income sources per end user. income_categories_count: type: integer description: Number of income categories per end user. income_transactions_count: type: integer description: Number of income transactions per end user. historical_average_monthly_gross_income: type: array description: An estimate of the average gross monthly income based on the historical net amount and income category for the income source(s). The average monthly income is calculated based on the lifetime of the income stream, rather than the entire historical period included in the scope of the report. items: $ref: '#/components/schemas/CreditAmountWithCurrency' historical_average_monthly_income: type: array description: The average monthly income amount estimated based on the historical data for the income source(s). The average monthly income is calculated based on the lifetime of the income stream, rather than the entire historical period included in the scope of the report. items: $ref: '#/components/schemas/CreditAmountWithCurrency' forecasted_average_monthly_income: type: array description: The predicted average monthly income amount for the income source(s). items: $ref: '#/components/schemas/CreditAmountWithCurrency' historical_annual_gross_income: type: array description: An estimate of the annual gross income for the income source, calculated by multiplying the `historical_average_monthly_gross_income` by 12. items: $ref: '#/components/schemas/CreditAmountWithCurrency' historical_annual_income: type: array description: An estimate of the annual net income for the income source, calculated by multiplying the `historical_average_monthly_income` by 12. items: $ref: '#/components/schemas/CreditAmountWithCurrency' forecasted_annual_income: type: array description: The predicted average annual income amount for the income source(s). items: $ref: '#/components/schemas/CreditAmountWithCurrency' historical_summary: type: array items: $ref: '#/components/schemas/CraBankIncomeHistoricalSummary' CraBankIncomeHistoricalSummary: type: object description: The end user's monthly summary for the income source(s). additionalProperties: true x-hidden-from-docs: true properties: total_amounts: type: array description: |- Total amount of earnings for the income source(s) of the user for the month in the summary. This can contain multiple amounts, with each amount denominated in one unique currency. items: $ref: '#/components/schemas/CreditAmountWithCurrency' start_date: type: string format: date description: |- The start date of the period covered in this monthly summary. This date will be the first day of the month, unless the month being covered is a partial month because it is the first month included in the summary and the date range being requested does not begin with the first day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: |- The end date of the period included in this monthly summary. This date will be the last day of the month, unless the month being covered is a partial month because it is the last month included in the summary and the date range being requested does not end with the last day of the month. The date will be returned in an ISO 8601 format (YYYY-MM-DD). transactions: type: array items: $ref: '#/components/schemas/CraBankIncomeTransaction' CraBankIncomeTransaction: type: object description: The transactions data for the end user's income source(s). additionalProperties: true x-hidden-from-docs: true properties: transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. amount: type: number description: |- The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative. date: type: string format: date description: |- For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD). name: type: string deprecated: true description: The merchant name or transaction description. This is a legacy field that is no longer maintained. For merchant name, use the `merchant_name` field; for description, use the `original_description` field. original_description: type: string description: The string returned by the financial institution to describe the transaction. nullable: true pending: type: boolean description: |- When true, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. check_number: type: string description: The check number of the transaction. This field is only populated for check transactions. nullable: true iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' bonus_type: $ref: '#/components/schemas/CraBankIncomeBonusType' required: - transaction_id - pending - date - unofficial_currency_code - iso_currency_code - amount - original_description CraBankIncomeBonusType: type: string x-hidden-from-docs: true description: |- The type of bonus that this transaction represents, if it is a bonus. `BONUS_INCLUDED`: Bonus is included in this transaction along with the normal pay `BONUS_ONLY`: This transaction is a standalone bonus enum: - BONUS_INCLUDED - BONUS_ONLY - null nullable: true CraBankIncomeStatus: type: string description: |- The status of the income sources. `ACTIVE`: The income source is active. `INACTIVE`: The income source is inactive. `UNKNOWN`: The income source status is unknown. enum: - ACTIVE - INACTIVE - UNKNOWN CraIncomeInsightsUserSummary: title: CraIncomeInsightsUserSummary type: object additionalProperties: true nullable: true description: Aggregated summary of all income streams for this user. properties: income_metrics: type: array description: List of a user's aggregated income metrics for each currency. items: $ref: '#/components/schemas/CraIncomeMetrics' required: - income_metrics CraIncomeMetrics: title: CraIncomeMetrics type: object additionalProperties: true description: Modeled income metrics for a given income stream or user summary. properties: current: $ref: '#/components/schemas/CraCurrentModeledIncome' projected: $ref: '#/components/schemas/CraProjectedModeledIncome' iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - current - projected - iso_currency_code - unofficial_currency_code CraCurrentModeledIncome: title: CraCurrentModeledIncome type: object additionalProperties: true nullable: true description: Modeled estimate of current income based on recently observed income transactions. properties: monthly: $ref: '#/components/schemas/CraMonthlyIncomeValues' annual: $ref: '#/components/schemas/CraAnnualIncomeValues' required: - monthly - annual CraProjectedModeledIncome: title: CraProjectedModeledIncome type: object additionalProperties: true nullable: true description: Forward-looking modeled estimate of income based on recent income transactions and trends in active streams. properties: monthly: $ref: '#/components/schemas/CraMonthlyIncomeValues' annual: $ref: '#/components/schemas/CraAnnualIncomeValues' required: - monthly - annual CraMonthlyIncomeValues: title: CraMonthlyIncomeValues type: object additionalProperties: true description: Modeled estimate of the monthly income. properties: gross_income: type: number description: Gross Income modeled from trends of observed transactions. net_income: type: number description: Net Income estimated from observed transactions. required: - gross_income - net_income CraAnnualIncomeValues: title: CraAnnualIncomeValues type: object additionalProperties: true description: Modeled estimate of the annual income. properties: gross_income: type: number description: Gross Income modeled from trends of observed transactions. net_income: type: number description: Net Income estimated from observed transactions. required: - gross_income - net_income CraIncomeStream: title: CraIncomeStream type: object additionalProperties: true description: An income stream detected for the user. properties: income_stream_id: type: string description: A unique identifier for an income stream. If the report is regenerated and a new `report_id` is created, the new report will have a new set of `income_stream_id`s. start_date: type: string format: date description: Minimum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: Maximum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). description: type: string description: The most common name or original description for the underlying income transactions. insights: $ref: '#/components/schemas/CraIncomeStreamInsights' income_metrics: $ref: '#/components/schemas/CraIncomeMetrics' transactions: type: array description: The transactions data for the income stream ordered by ascending date. items: $ref: '#/components/schemas/CraIncomeTransaction' required: - income_stream_id - start_date - end_date - description - insights - income_metrics - transactions CraIncomeStreamInsights: title: CraIncomeStreamInsights type: object additionalProperties: true description: Modeled insights for a given income stream. properties: income_category: $ref: '#/components/schemas/CraIncomeCategory' pay_frequency: $ref: '#/components/schemas/CreditBankIncomePayFrequency' income_provider: $ref: '#/components/schemas/CraBankIncomeIncomeProvider' status: $ref: '#/components/schemas/CraBankIncomeStatus' next_payment: $ref: '#/components/schemas/CraIncomeNextPayment' required: - income_category - pay_frequency - income_provider - status - next_payment CraIncomeCategory: title: CraIncomeCategory type: object additionalProperties: true description: |- The income category for a given stream. The streams returned in the response will be filtered based on these primary and secondary income categories. See the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories. properties: primary: type: string description: A high level category that communicates the broad category of the stream. secondary: type: string description: A granular category conveying the stream's intent. required: - primary - secondary CraIncomeNextPayment: title: CraIncomeNextPayment type: object additionalProperties: true nullable: true description: Metadata of the income stream's next payment. properties: date: type: string format: date description: The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD). required: - date CraIncomeTransactionOutlier: title: CraIncomeTransactionOutlier type: object additionalProperties: true description: Metadata on whether this income transaction is an outlier. properties: is_outlier: type: boolean description: Indicates whether an income transaction amount is unusually high compared to the amounts for that stream. amount: type: number nullable: true description: The amount that the transaction differs from the stream average transaction amount. required: - is_outlier CraIncomeTransaction: title: CraIncomeTransaction type: object additionalProperties: true description: The transaction data for an income stream. properties: transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. item_id: $ref: '#/components/schemas/ItemId' account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. amount: type: number description: |- The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative. date: type: string format: date description: |- For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD). original_description: type: string description: The string returned by the financial institution to describe the transaction. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' outlier: $ref: '#/components/schemas/CraIncomeTransactionOutlier' required: - transaction_id - item_id - account_id - amount - date - original_description - iso_currency_code - unofficial_currency_code - outlier CraCheckReportIncomeInsightsGetOptions: title: CraCheckReportIncomeInsightsGetOptions type: object nullable: true 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' income_insights_version: $ref: '#/components/schemas/IncomeInsightsVersion' required: - income_insights_version CraBankIncomeWarning: type: object additionalProperties: true description: The warning associated with the data that was unavailable. properties: warning_type: $ref: '#/components/schemas/CreditBankIncomeWarningType' warning_code: $ref: '#/components/schemas/CraBankIncomeWarningCode' cause: $ref: '#/components/schemas/CraBankIncomeCause' CraBankIncomeWarningCode: type: string description: |- The warning code identifies a specific kind of warning. `IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item `TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item `REPORT_DELETED`: Report deleted due to customer or consumer request `DATA_UNAVAILABLE`: No relevant data was found for the Item enum: - IDENTITY_UNAVAILABLE - TRANSACTIONS_UNAVAILABLE - REPORT_DELETED - DATA_UNAVAILABLE CraBankIncomeCause: type: object additionalProperties: true description: An error object and associated `item_id` used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items. properties: error_type: $ref: '#/components/schemas/CreditBankIncomeErrorType' error_code: type: string description: We use standard HTTP response codes for success and failure notifications, and our errors are further classified by `error_type`. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be `null` if no error has occurred. 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 description: |- A user-friendly representation of the error code. null if the error is not related to user action. This may change over time and is not safe for programmatic use. required: - error_type - 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 description: CraCheckReportCreateRequest defines the request schema for `/cra/check_report/create`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' user_token: $ref: '#/components/schemas/UserToken' webhook: type: string format: url description: | The destination URL to which webhooks will be sent days_requested: type: integer description: The number of days of data to request for the report. Default value is 365; maximum is 731; minimum is 180. If a value lower than 180 is provided, a minimum of 180 days of history will be requested. maximum: 731 days_required: type: integer description: The minimum number of days of data required for the report to be successfully generated. maximum: 184 client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. products: type: array 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: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - cra_income_insights - cra_cashflow_insights - cra_partner_insights - cra_network_insights - cra_lend_score base_report: $ref: '#/components/schemas/CraCheckReportCreateBaseReportOptions' cashflow_insights: $ref: '#/components/schemas/CraCheckReportCreateCashflowInsightsOptions' partner_insights: $ref: '#/components/schemas/CraCheckReportCreatePartnerInsightsOptions' lend_score: $ref: '#/components/schemas/CraCheckReportCreateLendScoreOptions' network_insights: $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/CraCheckReportCreateIncomeInsightsOptions' consumer_report_permissible_purpose: $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' required: - webhook - consumer_report_permissible_purpose - days_requested CraCheckReportCreateResponse: title: CraCheckReportCreateResponse additionalProperties: true type: object description: CraCheckReportCreateResponse defines the response schema for `/cra/check_report/create`. properties: request_id: $ref: '#/components/schemas/RequestID' CraPartnerInsightsGetRequest: title: CraPartnerInsightsGetRequest type: object description: CraPartnerInsightsGetRequest defines the request schema for `/cra/partner_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_token: $ref: '#/components/schemas/UserToken' user_tier: $ref: '#/components/schemas/CraUserTier' required: - user_token CraPartnerInsightsGetResponse: title: CraPartnerInsightsGetResponse additionalProperties: true type: object description: CraPartnerInsightsGetResponse defines the response schema for `/cra/partner_insights/get`. properties: report: type: array items: $ref: '#/components/schemas/CraPartnerInsights' request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraCheckReportPartnerInsightsGetRequest: title: CraCheckReportPartnerInsightsGetRequest type: object description: CraCheckReportPartnerInsightsGetRequest defines the request schema for `/cra/check_report/partner_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' user_token: $ref: '#/components/schemas/UserToken' user_tier: $ref: '#/components/schemas/CraUserTier' partner_insights: $ref: '#/components/schemas/CraCheckReportPartnerInsightsGetPartnerInsights' options: $ref: '#/components/schemas/CraCheckReportPartnerInsightsGetOptions' CraCheckReportPartnerInsightsGetPartnerInsights: title: CraCheckReportPartnerInsightsGetPartnerInsights type: object 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' fico: $ref: '#/components/schemas/CraPartnerInsightsFicoInput' CraCheckReportPartnerInsightsGetOptions: title: CraCheckReportPartnerInsightsGetOptions type: object nullable: true description: Deprecated, specify `partner_insights.prism_versions` instead. x-hidden-from-docs: true deprecated: true properties: prism_versions: $ref: '#/components/schemas/PrismVersionsDeprecated' CraCheckReportCreatePartnerInsightsOptions: title: CraCheckReportCreatePartnerInsightsOptions type: object nullable: true description: Defines configuration to generate Partner Insights. properties: prism_versions: $ref: '#/components/schemas/PrismVersions' fico: $ref: '#/components/schemas/CraPartnerInsightsFicoInput' PrismVersionsDeprecated: title: PrismVersions type: object nullable: true deprecated: true description: Deprecated, use `partner_insights.prism_versions` instead. properties: firstdetect: $ref: '#/components/schemas/PrismFirstDetectVersion' detect: $ref: '#/components/schemas/PrismDetectVersion' cashscore: $ref: '#/components/schemas/PrismCashScoreVersion' extend: $ref: '#/components/schemas/PrismExtendVersion' insights: $ref: '#/components/schemas/PrismInsightsVersion' PrismVersions: title: PrismVersions type: object nullable: true description: The versions of Prism products to evaluate properties: firstdetect: $ref: '#/components/schemas/PrismFirstDetectVersion' detect: $ref: '#/components/schemas/PrismDetectVersion' cashscore: $ref: '#/components/schemas/PrismCashScoreVersion' extend: $ref: '#/components/schemas/PrismExtendVersion' insights: $ref: '#/components/schemas/PrismInsightsVersion' CraPartnerInsightsFicoInput: title: CraPartnerInsightsFicoInput type: object nullable: true description: Configuration for the FICO products used in the Partner Insights product. properties: fico_lender_id: type: string description: ID provided by FICO that uniquely identifies the lender. Required for UltraFICO® score generation. Sometimes referred to as Lender Org ID. lender_application_id: type: string description: Client-generated identifier that uniquely identifies the FICO Application across FICO systems. ultrafico_score_requests: type: array description: A list of UltraFICO® scoring requests. Each request contains all configuration required to generate an UltraFICO score. items: $ref: '#/components/schemas/CraPartnerInsightsUltraFicoScoreRequest' required: - fico_lender_id - lender_application_id - ultrafico_score_requests CraPartnerInsightsUltraFicoScoreRequest: title: CraPartnerInsightsUltraFicoScoreRequest type: object description: Configuration required to generate a single UltraFICO® score. properties: ultrafico_score_version: $ref: '#/components/schemas/CraPartnerInsightsUltraFicoScoreVersion' fico_scoring_request_id: type: string x-hidden-from-docs: true description: FICO identifier for a particular scoring request. Should only be provided by FICO as part of the FICO-led flow. request_correlation_id: type: string description: Client-generated identifier that can be used to correlate scoring requests with their scoring results. base_fico_score: $ref: '#/components/schemas/CraPartnerInsightsBaseFicoScore' required: - ultrafico_score_version - base_fico_score CraPartnerInsightsUltraFicoScoreVersion: type: string description: The version of the UltraFICO® score. enum: - "1.0" CraPartnerInsightsBaseFicoScore: title: CraPartnerInsightsBaseFicoScore type: object description: Details about the base FICO score associated with an UltraFICO® scoring request. properties: bureau: $ref: '#/components/schemas/CraPartnerInsightsBureau' score: type: integer description: Numeric value of the base FICO score. reason_codes: type: array items: type: string maxItems: 4 description: Reason codes associated with the score, in priority order. May contain up to 4 items. reason_code_1: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `reason_codes` instead. The first reason code associated with the score. reason_code_2: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `reason_codes` instead. The second reason code associated with the score. reason_code_3: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `reason_codes` instead. The third reason code associated with the score. reason_code_4: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `reason_codes` instead. The fourth reason code associated with the score. did_inquiries_adversely_affect_score: type: boolean nullable: true description: Whether inquiries adversely affected the score but were not represented in one of the four reason codes. Sometimes referred to as the FACTA Flag. base_fico_score_version: $ref: '#/components/schemas/CraPartnerInsightsBaseFicoScoreVersion' required: - bureau - score - base_fico_score_version CraPartnerInsightsBureau: type: string description: The credit bureau that provided the base FICO score. enum: - EQUIFAX - EXPERIAN - TRANSUNION CraPartnerInsightsBaseFicoScoreVersion: type: string description: The version of the base FICO score model. enum: - "8" - "9" - "10" - 10T CraPartnerInsightsFicoResults: title: CraPartnerInsightsFicoResults type: object nullable: true description: The calculated UltraFICO® scores returned as part of the Partner Insights report. properties: lender_application_id: type: string description: Client-generated identifier that uniquely identifies the FICO Application across FICO systems. ultrafico_score_results: type: array description: UltraFICO® scoring results, one per provided UltraFICO scoring request. items: $ref: '#/components/schemas/CraPartnerInsightsUltraFicoScoreResult' report_characteristics: $ref: '#/components/schemas/CraPartnerInsightsFicoReportCharacteristics' required: - lender_application_id - ultrafico_score_results CraPartnerInsightsFicoReportCharacteristics: title: CraPartnerInsightsFicoReportCharacteristics type: object nullable: true description: Report characteristics returned by FICO describing the banking data used to generate the UltraFICO® score. properties: num_accounts: type: integer nullable: true description: Total number of accounts included in the report. Limited to checking, savings, and money market accounts. avg_daily_balance_over_1_month: type: number format: double nullable: true description: Average daily balance over the past 1 month. avg_daily_balance_over_3_months: type: number format: double nullable: true description: Average daily balance over the past 3 months. avg_daily_balance_over_6_months: type: number format: double nullable: true description: Average daily balance over the past 6 months. avg_daily_balance_over_12_months: type: number format: double nullable: true description: Average daily balance over the past 12 months. days_since_earliest_tx: type: integer nullable: true description: Number of days since the earliest transaction in the report. days_since_most_recent_negative_ending_balance: type: integer nullable: true description: Number of days since the most recent day with a negative ending balance. days_since_most_recent_insufficient_funds_fee_debit_tx: type: integer nullable: true description: Number of days since the most recent insufficient funds fee debit transaction. tot_number_days_with_negative_balance_over_1_month: type: integer nullable: true description: Total number of days with a negative balance over the past 1 month. tot_number_days_with_negative_balance_over_3_months: type: integer nullable: true description: Total number of days with a negative balance over the past 3 months. tot_number_days_with_negative_balance_over_6_months: type: integer nullable: true description: Total number of days with a negative balance over the past 6 months. tot_number_days_with_negative_balance_over_12_months: type: integer nullable: true description: Total number of days with a negative balance over the past 12 months. days_since_most_recent_tx: type: integer nullable: true description: Number of days since the most recent transaction. days_with_tx_over_1_month: type: integer nullable: true description: Number of days with at least one transaction over the past 1 month. days_with_tx_over_3_months: type: integer nullable: true description: Number of days with at least one transaction over the past 3 months. days_with_tx_over_6_months: type: integer nullable: true description: Number of days with at least one transaction over the past 6 months. days_with_tx_over_12_months: type: integer nullable: true description: Number of days with at least one transaction over the past 12 months. tot_current_balances: type: number format: double nullable: true description: Sum of current balances across all accounts in the report. num_checking_accounts: type: integer nullable: true description: Number of checking accounts included in the report. num_money_market_accounts: type: integer nullable: true description: Number of money market accounts included in the report. num_savings_accounts: type: integer nullable: true description: Number of savings accounts included in the report. CraPartnerInsightsUltraFicoScoreResult: title: CraPartnerInsightsUltraFicoScoreResult type: object description: The result of a single UltraFICO® score generation request. properties: request_correlation_id: type: string description: Client-generated identifier that can be used to correlate scoring requests with their scoring results. fico_scoring_request_id: type: string description: FICO-provided identifier that uniquely identifies this score generation request. ultrafico_score: $ref: '#/components/schemas/CraPartnerInsightsUltraFicoScore' 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 nullable: true description: The calculated UltraFICO® score. properties: ultrafico_score_version: $ref: '#/components/schemas/CraPartnerInsightsUltraFicoScoreVersion' score: type: integer description: Numeric value of the UltraFICO® score. negative_reason_codes: type: array items: type: string maxItems: 4 description: Negative reason codes associated with the score (reasons the score moved downward), in priority order. May contain up to 4 items. positive_reason_codes: type: array items: type: string maxItems: 4 description: Positive reason codes associated with the score (reasons the score moved upward), in priority order. May contain up to 4 items. reason_code_1: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `negative_reason_codes` instead. The first reason code associated with the score. reason_code_2: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `negative_reason_codes` instead. The second reason code associated with the score. reason_code_3: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `negative_reason_codes` instead. The third reason code associated with the score. reason_code_4: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `negative_reason_codes` instead. The fourth reason code associated with the score. positive_reason_code_1: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `positive_reason_codes` instead. The first positive reason code associated with the score. positive_reason_code_2: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `positive_reason_codes` instead. The second positive reason code associated with the score. positive_reason_code_3: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `positive_reason_codes` instead. The third positive reason code associated with the score. positive_reason_code_4: type: string nullable: true deprecated: true x-hidden-from-docs: true description: Deprecated. Use `positive_reason_codes` instead. The fourth positive reason code associated with the score. did_inquiries_adversely_affect_score: type: boolean nullable: true description: Whether inquiries adversely affected the score but were not represented in one of the four reason codes. Sometimes referred to as the FACTA Flag. required: - ultrafico_score_version - score PrismFirstDetectVersion: type: string description: The version of Prism FirstDetect. If not specified, will default to v3. nullable: true enum: - "3" - null PrismDetectVersion: type: string description: The version of Prism Detect nullable: true enum: - "4.1" - "4" - null PrismCashScoreVersion: type: string description: The version of Prism CashScore. If not specified, will default to v3. nullable: true x-override-enum-values-shown: - "4.1" - "4" - "3" - null enum: - "4.1" - "4" - 3_lite - "3" - null PrismExtendVersion: type: string description: The version of Prism Extend nullable: true enum: - "4.1" - "4" - null PrismInsightsVersion: type: string description: The version of Prism Insights. If not specified, will default to v3. nullable: true enum: - "4.1" - "4" - "3" - null CraCheckReportPartnerInsightsGetResponse: title: CraCheckReportPartnerInsightsGetResponse additionalProperties: true type: object description: CraCheckReportPartnerInsightsGetResponse defines the response schema for `/cra/check_report/partner_insights/get`. properties: report: $ref: '#/components/schemas/CraPartnerInsights' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the Partner Insights generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - request_id CraPartnerInsights: type: object additionalProperties: true description: The Partner Insights report of the bank data for an end user. properties: report_id: type: string description: A unique identifier associated with the Partner Insights object. generated_time: type: string description: The time when the Partner Insights report was generated. format: date-time client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. fico: $ref: '#/components/schemas/CraPartnerInsightsFicoResults' prism: $ref: '#/components/schemas/CraPartnerInsightsPrism' items: type: array description: The list of Items used in the report along with the associated metadata about the Item. items: $ref: '#/components/schemas/CraPartnerInsightsItem' CraPartnerInsightsItem: type: object additionalProperties: true description: The details and metadata for an end user's Item. properties: institution_id: type: string description: The ID for the institution that the user linked. institution_name: type: string description: The name of the institution the user linked. item_id: type: string description: The identifier for the Item. accounts: type: array description: A list of accounts in the Item. items: $ref: '#/components/schemas/CraPartnerInsightsItemAccount' CraPartnerInsightsItemAccount: type: object additionalProperties: true description: Account data corresponding to the Item from which Partner Insights were generated. properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. mask: type: string 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. metadata: $ref: '#/components/schemas/CraPartnerInsightsItemAccountMetadata' name: type: string description: The name of the account official_name: type: string description: The official name of the bank account. nullable: true subtype: $ref: '#/components/schemas/DepositoryAccountSubtype' type: $ref: '#/components/schemas/CreditBankIncomeAccountType' owners: type: array description: Data returned by the financial institution about the account owner or owners. Identity information is optional, so field may return an empty array. items: $ref: '#/components/schemas/Owner' required: - mask - metadata - name - official_name - subtype - type - owners CraPartnerInsightsItemAccountMetadata: title: CraPartnerInsightsItemAccountMetadata description: An object containing metadata about the extracted account. type: object properties: start_date: type: string format: date description: The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true end_date: type: string format: date description: The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd"). nullable: true required: - start_date - end_date CraPartnerInsightsPrism: type: object nullable: true additionalProperties: true description: The Prism Data insights for the user. properties: insights: $ref: '#/components/schemas/PrismInsights' cash_score: $ref: '#/components/schemas/PrismCashScore' extend: $ref: '#/components/schemas/PrismExtend' first_detect: $ref: '#/components/schemas/PrismFirstDetect' detect: $ref: '#/components/schemas/PrismDetect' status: type: string description: Details on whether the Prism Data attributes succeeded or failed to be generated. required: - status PrismInsights: type: object additionalProperties: true description: The data from the Insights product returned by Prism Data. nullable: true properties: version: type: integer description: The version of Prism Data's insights model used. This field is deprecated in favor of `model_version`. deprecated: true model_version: type: string description: The version of Prism Data's insights model used. result: $ref: '#/components/schemas/PrismInsightsResult' error_reason: $ref: '#/components/schemas/PrismErrorReason' required: - version PrismInsightsResult: type: object title: PrismInsightsResult description: The Insights Result object is a map of cash flow attributes, where the key is a string, and the value is a float or string. For a full list of attributes, contact your account manager. The attributes may vary depending on the Prism version used. PrismCashScore: type: object additionalProperties: true description: The data from the CashScore® product returned by Prism Data. nullable: true properties: version: type: integer description: The version of Prism Data's cash score model used. This field is deprecated in favor of `model_version`. deprecated: true model_version: type: string description: The version of Prism Data's cash score model used. score: type: integer nullable: true description: The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk. reason_codes: type: array description: The reasons for an individual having risk according to the cash score. items: type: string metadata: $ref: '#/components/schemas/PrismCashScoreMetadata' error_reason: $ref: '#/components/schemas/PrismErrorReason' required: - version - score PrismCashScoreMetadata: type: object additionalProperties: true description: An object containing metadata about the provided transactions. properties: max_age: type: integer nullable: true description: Number of days since the oldest transaction. min_age: type: integer nullable: true description: Number of days since the latest transaction. min_age_credit: type: integer nullable: true description: Number of days since the latest credit transaction. min_age_debit: type: integer nullable: true description: Number of days since the latest debit transaction. max_age_debit: type: integer nullable: true description: Number of days since the oldest debit transaction. max_age_credit: type: integer nullable: true description: Number of days since the oldest credit transaction. num_trxn_credit: type: integer nullable: true description: Number of credit transactions. num_trxn_debit: type: integer nullable: true description: Number of debit transactions. l1m_credit_value_cnt: type: integer nullable: true description: Number of credit transactions in the last 30 days. l1m_debit_value_cnt: type: integer nullable: true description: Number of debit transactions in the last 30 days. required: - max_age - min_age - min_age_credit - min_age_debit - max_age_debit - max_age_credit - num_trxn_credit - num_trxn_debit - l1m_credit_value_cnt - l1m_debit_value_cnt PrismExtend: type: object additionalProperties: true description: The data from the CashScore® Extend product returned by Prism Data. nullable: true properties: model_version: type: string description: The version of Prism Data's CashScore® Extend model used. score: type: integer nullable: true description: The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk. reason_codes: type: array description: The reasons for an individual having risk according to the CashScore® Extend score. items: type: string metadata: $ref: '#/components/schemas/PrismCashScoreMetadata' error_reason: $ref: '#/components/schemas/PrismErrorReason' required: - model_version - score PrismFirstDetect: type: object additionalProperties: true description: The data from the FirstDetect product returned by Prism Data. nullable: true properties: version: type: integer description: The version of Prism Data's FirstDetect model used. This field is deprecated in favor of `model_version`. deprecated: true model_version: type: string description: The version of Prism Data's FirstDetect model used. score: type: integer nullable: true description: The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk. reason_codes: type: array description: The reasons for an individual having risk according to the FirstDetect score. items: type: string metadata: $ref: '#/components/schemas/PrismCashScoreMetadata' error_reason: $ref: '#/components/schemas/PrismErrorReason' required: - version - score PrismDetect: type: object additionalProperties: true description: The data from the CashScore® Detect product returned by Prism Data. nullable: true properties: model_version: type: string description: The version of Prism Data's CashScore® Detect model used. score: type: integer nullable: true description: The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk. reason_codes: type: array description: The reasons for an individual having risk according to the CashScore® Detect score. items: type: string metadata: $ref: '#/components/schemas/PrismCashScoreMetadata' error_reason: $ref: '#/components/schemas/PrismErrorReason' required: - model_version - score PrismErrorReason: type: string description: The error returned by Prism for this product. CraCheckReportCashflowInsightsGetRequest: title: CraCheckReportCashflowInsightsGetRequest type: object description: CraCheckReportCashflowInsightsGetRequest defines the request schema for `/cra/check_report/cashflow_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' user_token: $ref: '#/components/schemas/UserToken' options: $ref: '#/components/schemas/CraCheckReportCashflowInsightsGetOptions' CraCheckReportLendScoreGetRequest: title: CraCheckReportLendScoreGetRequest type: object description: CraCheckReportLendScoreGetRequest defines the request schema for `/cra/check_report/lend_score/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' user_token: $ref: '#/components/schemas/UserToken' options: $ref: '#/components/schemas/CraCheckReportLendScoreGetOptions' CraCheckReportCreateBaseReportOptions: title: CraCheckReportCreateBaseReportOptions type: object nullable: true description: Defines configuration options to generate a Base Report properties: client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. This field is deprecated. Use the `client_report_id` field at the top level of the request instead. deprecated: true gse_options: $ref: '#/components/schemas/CraCheckReportGSEOptions' require_identity: type: boolean nullable: true description: Indicates that the report must include identity information. If identity information is not available, the report will fail. home_lending_report_options: $ref: '#/components/schemas/CraCheckReportHomeLendingReportOptions' CraCheckReportHomeLendingReportOptions: title: CraCheckReportHomeLendingReportOptions type: object nullable: true description: Options for configuring Home Lending Report (Verification Report) generation. properties: reports_requested: type: array items: $ref: '#/components/schemas/CraCheckReportVerificationGetReportType' description: Specifies which types of home lending reports to generate. employment_refresh_options: $ref: '#/components/schemas/CraCheckReportCreateEmploymentRefreshOptions' required: - reports_requested CraCheckReportGSEOptions: title: CraCheckReportGSEOptions type: object nullable: true description: Specifies options for creating reports that can be shared with GSEs for mortgage verification. properties: report_types: type: array items: $ref: '#/components/schemas/GSEReportType' description: Specifies which types of reports should be made available to GSEs. required: - report_types CraCheckReportCashflowInsightsGetOptions: title: CraCheckReportCashflowInsightsGetOptions type: object nullable: true 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' CraCheckReportLendScoreGetOptions: title: CraCheckReportLendScoreGetOptions type: object nullable: true 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' CraCheckReportNetworkInsightsGetOptions: title: CraCheckReportNetworkInsightsGetOptions type: object nullable: true 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' PlaidLendScoreVersion: type: string description: The version of the LendScore to use. Required if using LendScore. nullable: true enum: - v1.0 - v2.0 - LS1 x-override-enum-values-shown: - LS1 GSEReportType: enum: - VOA - EMPLOYMENT_REFRESH description: The types of GSE Reports supported by the Plaid API type: string CashflowAttributesVersion: type: string description: The version of cashflow attributes. Required if using Cash Flow Insights. nullable: true enum: - v1.0 - v2.0 - CFI1 x-override-enum-values-shown: - CFI1 NetworkInsightsVersion: type: string description: The version of Network Insights. Required if using Network Insights. nullable: true enum: - NI1 IncomeInsightsFilter: title: IncomeInsightsFilter type: object nullable: true description: |- Filters the returned income streams based on the specified income categories. If no filters are requested, streams from the following default set of categories are returned: - `EARNED_INCOME.*` (`EARNED_INCOME.SALARY`, `EARNED_INCOME.GIG_ECONOMY`, `EARNED_INCOME.SELF_EMPLOYED`) - `BENEFITS.DISABILITY` - `RETIREMENT.*` (`RETIREMENT.GOVERNMENT_DERIVED`, `RETIREMENT.PRIVATE_RETIREMENT`, `RETIREMENT.PLAN_DISTRIBUTION`) The final list of income categories is generated by adding the `included_categories`, then removing the `excluded_categories`. Priority is given to `excluded_categories` in the case of collisions. Filter patterns supported: - `*`: All categories - `PRIMARY.*`: All categories within the specified primary category - `PRIMARY.SECONDARY`: A specific income category For a list of income categories, see the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv). properties: included_categories: type: array description: Includes income streams matching the specified categories. items: type: string excluded_categories: type: array description: Excludes income streams matching the specified categories. items: type: string required: - included_categories IncomeInsightsVersion: title: IncomeInsightsVersion type: string nullable: true 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: title: CraCheckReportCashflowInsightsGetResponse additionalProperties: true type: object description: CraCheckReportCashflowInsightsGetResponse defines the response schema for `/cra/check_report/cashflow_insights/get`. properties: report: $ref: '#/components/schemas/CraCashflowInsightsReport' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the Cashflow Insights generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - report - request_id CraCashflowInsightsReport: type: object description: Contains data for the CRA Cashflow Insights Report. additionalProperties: true properties: report_id: type: string description: The unique identifier associated with the report object. generated_time: type: string description: The time when the report was generated. format: date-time attributes: $ref: '#/components/schemas/CashflowAttributesSchema' required: - report_id - generated_time CashflowAttributesSchema: type: object title: CashflowAttributes description: A map of cash flow attributes, where the key is a string, and the value is a string, float, int, or boolean. The specific list of attributes will depend on the cash flow attributes version used. For a full list of attributes, contact your account manager. CraCreditProfileCashflowAttributesSchema: type: object nullable: true title: CraCreditProfileCashflowAttributes description: A map of cash flow attributes, where the key is a string, and the value is a string, float, int, or boolean. The specific list of attributes will depend on the cash flow attributes version used. For a full list of attributes, contact your account manager. additionalProperties: {} CraCheckReportLendScoreGetResponse: title: CraCheckReportLendScoreGetResponse additionalProperties: true type: object description: CraCheckReportLendScoreGetResponse defines the response schema for `/cra/check_report/lend_score/get`. properties: report: $ref: '#/components/schemas/CraLendScoreReport' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the LendScore generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - report - request_id CraLendScoreReport: type: object description: Contains data for the CRA LendScore Report. additionalProperties: true properties: report_id: type: string description: The unique identifier associated with the report object. generated_time: type: string description: The time when the report was generated. format: date-time lend_score: $ref: '#/components/schemas/LendScore' required: - report_id - generated_time LendScore: type: object additionalProperties: true description: The results of the LendScore nullable: true properties: score: type: integer description: The score returned by the LendScore model. Will be an integer in the range 1 to 99. Higher scores indicate lower credit risk. nullable: true reason_codes: type: array description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes. items: type: string error_reason: type: string nullable: true description: Human-readable description of why the LendScore could not be computed. CraCreditProfileLendScore: type: object additionalProperties: true description: An individual LendScore result within a credit profile report. nullable: true properties: score: type: integer description: The score returned by the LendScore model. Will be an integer in the range 1 to 99. Higher scores indicate lower credit risk. nullable: true reason_codes: type: array description: The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes. items: type: string variant: type: string description: The variant identifier for this LendScore result. error_reason: type: string nullable: true description: Human-readable description of why the LendScore could not be computed. required: - score - reason_codes - variant - error_reason CraCheckReportNetworkInsightsGetRequest: title: CraCheckReportNetworkInsightsGetRequest type: object description: CraCheckReportNetworkInsightsGetRequest defines the request schema for `/cra/check_report/network_insights/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' options: $ref: '#/components/schemas/CraCheckReportNetworkInsightsGetOptions' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' user_token: $ref: '#/components/schemas/UserToken' CraCheckReportNetworkInsightsGetResponse: title: CraCheckReportNetworkInsightsGetResponse additionalProperties: true type: object description: CraCheckReportNetworkInsightsGetResponse defines the response schema for `/cra/check_report/network_insights/get`. properties: report: $ref: '#/components/schemas/CraNetworkInsightsReport' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the Network Insights generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - report - request_id CraNetworkInsightsReport: type: object description: Contains data for the CRA Network Attributes Report. additionalProperties: true properties: report_id: type: string description: The unique identifier associated with the report object. generated_time: type: string description: The time when the report was generated. format: date-time network_attributes: $ref: '#/components/schemas/NetworkInsightsSchema' items: type: array description: The Items the end user connected in Link. items: $ref: '#/components/schemas/CraNetworkInsightsItem' required: - report_id - generated_time - network_attributes - items NetworkInsightsSchema: type: object title: NetworkInsights description: A map of network attributes, where the key is a string, and the value is a float, int, or boolean. For a full list of attributes, contact your account manager. CraCreditProfileNetworkInsightsSchema: nullable: true type: object title: CraCreditProfileNetworkInsights description: A map of network attributes, where the key is a string, and the value is a float, int, or boolean. For a full list of attributes, contact your account manager. additionalProperties: {} CraNetworkInsightsItem: type: object description: Contains data about the connected Item. properties: institution_id: type: string description: The ID for the institution the user linked. institution_name: type: string description: The name of the institution the user linked. item_id: type: string description: The identifier for the Item. required: - institution_id - institution_name - item_id CraCheckReportVerificationGetRequest: title: CraCheckReportVerificationGetRequest type: object description: CraCheckReportVerificationGetRequest defines the request schema for `/cra/check_report/verification/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' reports_requested: type: array description: Specifies which types of home lending reports are expected in the response items: $ref: '#/components/schemas/CraCheckReportVerificationGetReportType' employment_refresh_options: $ref: '#/components/schemas/CraCheckReportVerificationGetEmploymentRefreshOptions' user_token: $ref: '#/components/schemas/UserToken' required: - reports_requested CraCheckReportVerificationGetReportType: title: CraCheckReportVerificationGetReportType type: string description: Type of home lending report. enum: - VOA - EMPLOYMENT_REFRESH - INCOME CraCheckReportVerificationGetEmploymentRefreshOptions: title: CraCheckReportVerificationGetEmploymentRefreshOptions type: object 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: 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 CraCheckReportVerificationGetResponse: title: CraCheckReportVerificationGetResponse type: object description: CraCheckReportVerificationGetResponse defines the response schema for `/cra/check_report/verification/get`. additionalProperties: true properties: report: $ref: '#/components/schemas/CraVerificationReport' request_id: $ref: '#/components/schemas/RequestID' warnings: type: array description: If the home lending report generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing. items: $ref: '#/components/schemas/CheckReportWarning' required: - report - request_id - warnings CraCheckReportVerificationPdfReportType: type: string description: The type of verification PDF report to fetch. enum: - voa - employment_refresh - income CraCheckReportVerificationPdfGetRequest: title: CraCheckReportVerificationPdfGetRequest type: object description: CraCheckReportVerificationPdfGetRequest defines the request schema for `/cra/check_report/verification/pdf/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' report_requested: deprecated: true allOf: - $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' - description: Deprecated. Use `reports_requested` instead. reports_requested: type: array description: | Specifies which types of verification reports to include in the returned PDF. Supported combinations are: `[voa]`, `[employment_refresh]`, `[income]`, or `[voa, income]`. Other combinations are not supported. items: $ref: '#/components/schemas/CraCheckReportVerificationPdfReportType' minItems: 1 uniqueItems: true 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: format: binary type: string description: CraCheckReportVerificationPdfGetResponse defines the response schema for `/cra/check_report/verification/pdf/get` CraVerificationReport: title: CraVerificationReport type: object description: Contains data for the CRA Home Lending Report. additionalProperties: true properties: report_id: type: string description: The unique identifier associated with the Home Lending Report object. This ID will be the same as the Base Report ID. gse_reference_id: type: string description: A unique token that can be shared with GSEs in order to provide them access to the report. This is automatically created during report generation when GSE options are specified. client_report_id: type: string nullable: true description: Client-generated identifier, which can be used by lenders to track loan applications. voa: $ref: '#/components/schemas/CraVoaReport' employment_refresh: $ref: '#/components/schemas/CraEmploymentRefreshReport' income: $ref: '#/components/schemas/CraVerificationIncomeReport' required: - report_id CraVoaReportAttributes: title: CraVoaReportAttributes type: object description: Attributes for the VOA report. additionalProperties: true properties: total_inflow_amount: $ref: '#/components/schemas/TotalReportInflowAmount' total_outflow_amount: $ref: '#/components/schemas/TotalReportOutflowAmount' required: - total_inflow_amount - total_outflow_amount CraVoaReport: title: CraVoaReport type: object description: An object representing a VOA report. additionalProperties: true nullable: true properties: generated_time: type: string format: date-time description: The date and time when the VOA Report was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z"). days_requested: type: number description: The number of days of transaction history that the VOA report covers. items: type: array description: Data returned by Plaid about each of the Items included in the Base Report. items: $ref: '#/components/schemas/CraVoaReportItem' attributes: $ref: '#/components/schemas/CraVoaReportAttributes' required: - generated_time - days_requested - items - attributes CraVoaReportItem: title: CraVoaReportItem type: object description: A representation of an Item within a VOA report. additionalProperties: true properties: accounts: type: array description: Data about each of the accounts open on the Item. items: $ref: '#/components/schemas/CraVoaReportAccount' institution_name: type: string description: The full financial institution name associated with the Item. institution_id: type: string description: The id of the financial institution associated with the Item. item_id: $ref: '#/components/schemas/ItemId' last_update_time: type: string format: date-time description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. required: - accounts - institution_name - institution_id - item_id - last_update_time CraVoaReportAccount: title: CraVoaReportAccount type: object description: VOA Report information about an account. additionalProperties: true properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. balances: $ref: '#/components/schemas/CraVoaReportAccountBalances' consumer_disputes: type: array description: The information about previously submitted valid dispute statements by the consumer items: $ref: '#/components/schemas/ConsumerDispute' mask: type: string 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. name: type: string description: The name of the account, either assigned by the user or by the financial institution itself. official_name: type: string nullable: true description: The official name of the account as given by the financial institution. type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' days_available: type: number description: The duration of transaction history available within this report for this Item, typically defined as the time since the date of the earliest transaction in that account. transactions_insights: $ref: '#/components/schemas/CraVoaReportTransactionsInsights' owners: type: array description: Data returned by the financial institution about the account owner or owners. items: $ref: '#/components/schemas/Owner' ownership_type: $ref: '#/components/schemas/OwnershipType' investments: $ref: '#/components/schemas/BaseReportInvestments' required: - account_id - balances - consumer_disputes - mask - name - official_name - type - subtype - days_available - transactions_insights - owners - ownership_type CraVoaReportAccountBalances: title: CraVoaReportAccountBalances type: object description: VOA Report information about an account's balances. additionalProperties: true properties: available: type: number format: double description: |- The amount of funds available to be withdrawn from the account, as determined by the financial institution. For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution. Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`. Available balance may be cached and is not guaranteed to be up-to-date in real-time unless the value was returned by `/accounts/balance/get`. If `current` is `null` this field is guaranteed not to be `null`. nullable: true current: type: number format: double description: |- The total amount of funds in or owed by the account. For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder. For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest. For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution. Note that balance information may be cached unless the value was returned by `/accounts/balance/get`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require real-time balance information, use the `available` balance as provided by `/accounts/balance/get`. When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`. nullable: true iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. 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 `unofficial_currency_code`s. nullable: true historical_balances: type: array description: |- Calculated data about the historical balances on the account. Available for `credit` and `depository` type accounts. items: $ref: '#/components/schemas/CraVoaReportAccountHistoricalBalance' average_balance_30_days: type: number format: double description: The average balance in the account over the last 30 days. Calculated using the derived historical balances. nullable: true average_balance_60_days: type: number format: double description: The average balance in the account over the last 60 days. Calculated using the derived historical balances. nullable: true nsf_overdraft_transactions_count: type: number description: The number of net NSF fee transactions in the time range for the report in the given account (not counting any fees that were reversed within the time range). required: - available - current - iso_currency_code - unofficial_currency_code - historical_balances - average_balance_30_days - average_balance_60_days - nsf_overdraft_transactions_count CraVoaReportAccountHistoricalBalance: title: CraVoaReportAccountHistoricalBalance type: object description: An object representing a balance held by an account in the past. additionalProperties: true properties: current: type: number format: double description: The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction. date: type: string format: date description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). iso_currency_code: type: string description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`. nullable: true unofficial_currency_code: type: string description: |- The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`. 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: - current - date - iso_currency_code - unofficial_currency_code CraVoaReportTransactionsInsights: title: CraVoaReportTransactionsInsights type: object description: Transaction data associated with the account. additionalProperties: true properties: all_transactions: type: array description: Transaction history associated with the account. items: $ref: '#/components/schemas/BaseReportTransaction' end_date: type: string format: date description: The latest timeframe provided by the FI, in an ISO 8601 format (YYYY-MM-DD). nullable: true start_date: type: string format: date description: The earliest timeframe provided by the FI, in an ISO 8601 format (YYYY-MM-DD). nullable: true required: - all_transactions - end_date - start_date CraEmploymentRefreshReport: title: CraEmploymentRefreshReport type: object description: An object representing an Employment Refresh Report. additionalProperties: true nullable: true properties: generated_time: type: string format: date-time description: The date and time when the Employment Refresh Report was created, in ISO 8601 format (e.g. "2018-04-12T03:32:11Z"). days_requested: type: number description: The number of days of transaction history that the Employment Refresh Report covers. items: type: array description: Data returned by Plaid about each of the Items included in the Employment Refresh Report. items: $ref: '#/components/schemas/CraEmploymentRefreshReportItem' required: - generated_time - days_requested - items CraEmploymentRefreshReportItem: title: CraEmploymentRefreshReportItem type: object description: A representation of an Item within an Employment Refresh Report. additionalProperties: true properties: accounts: type: array description: Data about each of the accounts open on the Item. items: $ref: '#/components/schemas/CraEmploymentRefreshReportAccount' institution_name: type: string description: The full financial institution name associated with the Item. institution_id: type: string description: The id of the financial institution associated with the Item. item_id: $ref: '#/components/schemas/ItemId' last_update_time: type: string format: date-time description: The date and time when this Item's data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. required: - accounts - institution_name - institution_id - item_id - last_update_time CraEmploymentRefreshReportAccount: title: CraEmploymentRefreshReportAccount type: object description: Employment Refresh Report information about an account. additionalProperties: true properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. name: type: string description: The name of the account, either assigned by the user or by the financial institution itself. official_name: type: string nullable: true description: The official name of the account as given by the financial institution. type: $ref: '#/components/schemas/AccountType' subtype: $ref: '#/components/schemas/AccountSubtype' transactions: type: array description: Transaction history associated with the account for the Employment Refresh Report. Note that this transaction differs from a Base Report transaction in that it will only be deposits, and the amounts will be omitted. items: $ref: '#/components/schemas/CraEmploymentRefreshReportTransaction' required: - account_id - name - official_name - type - subtype - transactions CraEmploymentRefreshReportTransaction: title: CraEmploymentRefreshReportTransaction type: object description: A transaction on the Employment Refresh Report. Note that this transaction differs from a Base Report transaction in that it will only be deposits, and the amounts will be omitted. additionalProperties: true properties: account_id: type: string description: The ID of the account in which this transaction occurred. original_description: type: string description: The string returned by the financial institution to describe the transaction. date: type: string format: date description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format ( `YYYY-MM-DD` ). pending: type: boolean description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled. transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. required: - account_id - original_description - date - pending - transaction_id CraVerificationIncomeReport: title: CraVerificationIncomeReport type: object description: An object representing an Income Report within the Home Lending Report. additionalProperties: true nullable: true properties: generated_time: type: string format: date-time description: The time when the Home Lending Income Report was generated. days_requested: type: integer description: The number of days requested by the customer for the Home Lending Income Report. user_summary: $ref: '#/components/schemas/CraVerificationIncomeUserSummary' income_streams: type: array description: The list of income streams for this user. items: $ref: '#/components/schemas/CraVerificationIncomeStream' items: type: array description: The list of Items in the report along with the associated metadata about the Item. items: $ref: '#/components/schemas/CraVerificationIncomeItem' required: - generated_time - days_requested - user_summary - income_streams - items CraVerificationIncomeUserSummary: title: CraVerificationIncomeUserSummary type: object additionalProperties: true nullable: true description: Aggregated summary of all income streams for this user. properties: income_metrics: type: array description: List of a user's aggregated income metrics for each currency. items: $ref: '#/components/schemas/CraVerificationIncomeMetrics' required: - income_metrics CraVerificationIncomeMetrics: title: CraVerificationIncomeMetrics type: object additionalProperties: true description: Modeled income metrics for a given income stream or user summary. properties: current: $ref: '#/components/schemas/CraVerificationModeledIncome' iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' required: - current - iso_currency_code - unofficial_currency_code CraVerificationModeledIncome: title: CraVerificationModeledIncome type: object additionalProperties: true nullable: true description: Modeled estimate of current income based on recently observed income transactions. properties: monthly: $ref: '#/components/schemas/CraVerificationIncomeValues' annual: $ref: '#/components/schemas/CraVerificationIncomeValues' required: - monthly - annual CraVerificationIncomeValues: title: CraVerificationIncomeValues type: object additionalProperties: true description: Modeled income values for a given time period. properties: gross_income: type: number format: double description: Gross Income modeled from trends of observed transactions. net_income: type: number format: double description: Net Income estimated from observed transactions. required: - gross_income - net_income CraVerificationIncomeStream: title: CraVerificationIncomeStream type: object additionalProperties: true description: An income stream detected for the user. properties: income_stream_id: type: string description: A unique identifier for an income stream. If the report is regenerated and a new `report_id` is created, the new report will have a new set of `income_stream_id`s. start_date: type: string format: date description: Minimum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). end_date: type: string format: date description: Maximum of all dates within the specific income stream for days requested by the client. The date will be returned in an ISO 8601 format (YYYY-MM-DD). description: type: string description: The most common name or original description for the underlying income transactions. insights: $ref: '#/components/schemas/CraVerificationIncomeStreamInsights' income_metrics: $ref: '#/components/schemas/CraVerificationIncomeMetrics' transactions: type: array description: The transactions data for the income stream ordered by ascending date. items: $ref: '#/components/schemas/CraVerificationIncomeTransaction' required: - income_stream_id - start_date - end_date - description - insights - income_metrics - transactions CraVerificationIncomeStreamInsights: title: CraVerificationIncomeStreamInsights type: object additionalProperties: true description: Modeled insights for a given income stream. properties: income_category: $ref: '#/components/schemas/CraVerificationIncomeCategory' pay_frequency: $ref: '#/components/schemas/CraVerificationIncomePayFrequency' income_provider: $ref: '#/components/schemas/CraVerificationIncomeProvider' status: $ref: '#/components/schemas/CraVerificationIncomeStatus' next_payment: $ref: '#/components/schemas/CraVerificationIncomeNextPayment' required: - income_category - pay_frequency - income_provider - status - next_payment CraVerificationIncomeCategory: title: CraVerificationIncomeCategory type: object additionalProperties: true description: |- The income category for a given stream. The streams returned in the response will be filtered based on these primary and secondary income categories. See the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories. properties: primary: type: string description: A high level category that communicates the broad category of the stream. secondary: type: string description: A granular category conveying the stream's intent. required: - primary - secondary CraVerificationIncomePayFrequency: title: CraVerificationIncomePayFrequency type: string description: |- The income pay frequency. `WEEKLY`: Weekly pay frequency. `BIWEEKLY`: Biweekly pay frequency. `SEMI_MONTHLY`: Semi-monthly pay frequency. `MONTHLY`: Monthly pay frequency. `DAILY`: Daily pay frequency. `UNKNOWN`: Pay frequency is unknown. enum: - WEEKLY - BIWEEKLY - SEMI_MONTHLY - MONTHLY - DAILY - UNKNOWN CraVerificationIncomeProvider: title: CraVerificationIncomeProvider type: object additionalProperties: true nullable: true description: The object containing data about the income provider. properties: name: type: string description: The name of the income provider. is_normalized: type: boolean description: Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers. required: - name - is_normalized CraVerificationIncomeStatus: title: CraVerificationIncomeStatus type: string description: |- The status of the income source. `ACTIVE`: The income source is active. `INACTIVE`: The income source is inactive. `UNKNOWN`: The income source status is unknown. enum: - ACTIVE - INACTIVE - UNKNOWN CraVerificationIncomeNextPayment: title: CraVerificationIncomeNextPayment type: object additionalProperties: true nullable: true description: Metadata of the income stream's next payment. properties: date: type: string format: date description: The expected date of the income stream's next payment. The date will be returned in an ISO 8601 format (YYYY-MM-DD). required: - date CraVerificationIncomeTransaction: title: CraVerificationIncomeTransaction type: object additionalProperties: true description: The transaction data for an income stream. properties: transaction_id: type: string description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive. item_id: $ref: '#/components/schemas/ItemId' account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. amount: type: number format: double description: |- The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative. date: type: string format: date description: |- For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an ISO 8601 format (YYYY-MM-DD). original_description: type: string description: The string returned by the financial institution to describe the transaction. iso_currency_code: $ref: '#/components/schemas/CreditIsoCurrencyCode' unofficial_currency_code: $ref: '#/components/schemas/CreditUnofficialCurrencyCode' outlier: $ref: '#/components/schemas/CraVerificationIncomeTransactionOutlier' required: - transaction_id - item_id - account_id - amount - date - original_description - iso_currency_code - unofficial_currency_code - outlier CraVerificationIncomeTransactionOutlier: title: CraVerificationIncomeTransactionOutlier type: object additionalProperties: true description: Metadata on whether this income transaction is an outlier. properties: is_outlier: type: boolean description: Indicates whether an income transaction amount is unusually high compared to the amounts for that stream. amount: type: number format: double nullable: true description: The amount that the transaction differs from the stream average transaction amount. required: - is_outlier CraVerificationIncomeItem: title: CraVerificationIncomeItem type: object additionalProperties: true description: The details and metadata for an end user's Item within the Home Lending Income Report. properties: item_id: $ref: '#/components/schemas/ItemId' accounts: type: array description: The Item's accounts that have bank income data. items: $ref: '#/components/schemas/CraVerificationIncomeAccount' last_updated_time: type: string format: date-time description: The time when this Item's data was last retrieved from the financial institution. institution_id: type: string description: The unique identifier of the institution associated with the Item. institution_name: type: string description: The name of the institution associated with the Item. required: - item_id - accounts - last_updated_time - institution_id - institution_name CraVerificationIncomeAccount: title: CraVerificationIncomeAccount type: object additionalProperties: true description: Account information within the Home Lending Income Report. properties: account_id: type: string description: |- Plaid's unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account. If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. Like all Plaid identifiers, the `account_id` is case sensitive. mask: type: string description: |- The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. nullable: true metadata: $ref: '#/components/schemas/CraBankIncomeAccountMetadata' name: type: string description: The name of the account, either assigned by the user or by the financial institution itself. official_name: type: string description: The official name of the account as given by the financial institution. nullable: true subtype: $ref: '#/components/schemas/AccountSubtype' type: $ref: '#/components/schemas/AccountType' required: - account_id - mask - metadata - name - official_name - subtype - type CraLoansApplicationsRegisterRequest: type: object description: CraLoansApplicationsRegisterRequest defines the request schema for `/cra/loans/applications/register`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' applications: type: array description: A list of loan applications to register. items: $ref: '#/components/schemas/CraLoanApplication' required: - applications CraLoansApplicationsRegisterResponse: title: CraLoansApplicationsRegisterResponse additionalProperties: true type: object description: CraLoansApplicationsRegisterResponse defines the response schema for `/cra/loans/applications/register`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraLoanApplication: type: object description: Contains loan application data. additionalProperties: true properties: user_token: $ref: '#/components/schemas/CraLoanUserToken' application_id: $ref: '#/components/schemas/CraLoanApplicationID' type: $ref: '#/components/schemas/CraLoanType' decision: $ref: '#/components/schemas/CraLoanApplicationDecision' application_date: type: string format: date description: The date the user applied for the loan. The date should be in ISO 8601 format (YYYY-MM-DD). decision_date: type: string format: date description: The date when the loan application's decision was made. The date should be in ISO 8601 format (YYYY-MM-DD). required: - user_token - application_id - type - decision CraLoanApplicationDecision: type: string description: The decision of the loan application. enum: - APPROVED - DECLINED - OTHER CRALoansRegisterRequest: type: object description: CraLoansRegisterRequest defines the request schema for `/cra/loans/register` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' loans: type: array description: A list of loans to register. items: $ref: '#/components/schemas/CraLoanRegister' required: - loans CraLoansRegisterResponse: title: CraLoansRegisterResponse additionalProperties: true type: object description: CraLoansRegisterResponse defines the response schema for `/cra/loans/register`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraLoanRegister: type: object description: Contains loan data to register. additionalProperties: true properties: user_token: $ref: '#/components/schemas/CraLoanUserToken' loan_id: $ref: '#/components/schemas/CraLoanID' type: $ref: '#/components/schemas/CraLoanType' payment_schedule: $ref: '#/components/schemas/CraLoanPaymentSchedule' opened_date: type: string format: date description: The date the loan account was opened. The date should be in ISO 8601 format (YYYY-MM-DD). opened_with_status: $ref: '#/components/schemas/CraLoanOpenedStatus' loan_amount: type: number description: The total amount of the approved loan. application: $ref: '#/components/schemas/CraLoanRegisterApplication' required: - user_token - loan_id - type - opened_date - payment_schedule - opened_with_status CraLoanRegisterApplication: type: object description: Contains loan application data to register. additionalProperties: true properties: application_id: $ref: '#/components/schemas/CraLoanApplicationID' application_date: type: string format: date description: The date the user applied for the loan. The date should be in ISO 8601 format (YYYY-MM-DD). CraLoansUpdateRequest: type: object description: CraLoansUpdateRequest defines the request schema for `/cra/loans/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' loans: type: array description: A list of loans to update. items: $ref: '#/components/schemas/CraLoanUpdate' required: - loans CraLoansUpdateResponse: title: CraLoansUpdateResponse additionalProperties: true type: object description: CraLoansUpdateResponse defines the response schema for `/cra/loans/update`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraLoanUpdate: type: object description: Contains loan data to update. additionalProperties: true properties: loan_id: $ref: '#/components/schemas/CraLoanID' status_history: type: array description: A list of status update history of the loan. items: $ref: '#/components/schemas/CraLoanStatusHistoryUpdate' payment_history: type: array description: The updates to the payment history for the loan. items: $ref: '#/components/schemas/CraLoanPaymentHistory' CraLoanStatusHistoryUpdate: type: object description: Contains the status and date of an update to the loan. additionalProperties: true properties: status: $ref: '#/components/schemas/CraLoanStatus' date: $ref: '#/components/schemas/CraLoanStatusEffectiveDate' required: - status - date CraLoanPaymentHistory: type: object description: Contains the payment information for a loan payment period. additionalProperties: true properties: period: type: integer description: |- The index to identify the loan's payment period, starting from 1. For example: 1 means the period between the loan's opening date and the 1st payment due date. 2 means the period between the loan's 1st payment due date and 2nd payment due date. due_date: type: string format: date description: The payment due date or end date of the payment period. The date should be in ISO 8601 format (YYYY-MM-DD). days_past_due: type: integer description: |- The number of days the loan was delinquent at the end of the pay period. If specified, should be greater than or equal to 0. amount_past_due: type: number description: The amount past due or the charge-off amount of the loan at the end of the payment period. balance_remaining: type: number description: The balance remaining on the loan at the end of the payment period. required: - period - due_date - days_past_due CraLoansUnregisterRequest: type: object description: CraLoansUnregisterRequest defines the request schema for `/cra/loans/unregister` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' loans: type: array description: A list of loans to unregister. items: $ref: '#/components/schemas/CraLoanUnregister' required: - loans CraLoanUnregisterResponse: title: CraLoanUnregisterResponse additionalProperties: true type: object description: CraLoanUnregisterResponse defines the response schema for `/cra/loans/unregister`. properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id CraLoanUnregister: type: object description: Contains loan data for the loan being unregistered. additionalProperties: true properties: loan_id: $ref: '#/components/schemas/CraLoanID' closed_with_status: $ref: '#/components/schemas/CraLoanClosedStatus' required: - loan_id - closed_with_status CraLoanType: type: string description: The type of loan the user applied for. enum: - PERSONAL - CREDIT_CARD - BUSINESS - MORTGAGE - AUTO - PAYDAY - STUDENT - HOME_EQUITY - OTHER CraLoanPaymentSchedule: type: string description: |- The frequency of a loan's payment schedule. `BIWEEKLY` represents one payment every two weeks. enum: - DAILY - WEEKLY - BIWEEKLY - MONTHLY - QUARTERLY - ANNUALLY - OTHER CraLoanStatus: type: string description: The status of the loan. enum: - APPROVED - DECLINED - BOOKED - CURRENT - DELINQUENT - DEFAULT - CHARGED_OFF - TRANSFERRED - PAID_OFF - OTHER CraLoanStatusEffectiveDate: type: string format: date description: The effective date for the status of the loan. The date should be in ISO 8601 format (YYYY-MM-DD). CraLoanUserToken: type: string description: The user token for the user associated with the loan. CraLoanApplicationID: type: string description: |- A unique identifier for the loan application. Personally identifiable information, such as an email address or phone number, should not be used in the `application_id`. CraLoanID: type: string description: |- A unique identifier for the loan. Personally identifiable information, such as an email address or phone number, should not be used in the `loan_id`. CraLoanOpenedStatus: type: object description: Contains the status and date information of the loan when registering. additionalProperties: true properties: status: $ref: '#/components/schemas/CraLoanStatus' date: $ref: '#/components/schemas/CraLoanStatusEffectiveDate' required: - status - date CraUserTier: type: string description: The tier of the user. x-hidden-from-docs: true nullable: true enum: - free - paid - null CraLoanClosedStatus: type: object description: Contains the status and date information of the loan when unregistering. additionalProperties: true properties: status: $ref: '#/components/schemas/CraLoanStatus' date: $ref: '#/components/schemas/CraLoanStatusEffectiveDate' required: - status - date CraCreditProfileReportGetRequest: title: CraCreditProfileReportGetRequest type: object description: CraCreditProfileReportGetRequest defines the request schema for `/cra/credit_profile/report/get`. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: $ref: '#/components/schemas/NewUserID' consumer_report_permissible_purpose: $ref: '#/components/schemas/ConsumerReportPermissiblePurpose' client_report_id: type: string description: Client-generated identifier, which can be used by lenders to track loan applications. report_type: $ref: '#/components/schemas/CraCreditProfileReportType' inquiry_type: $ref: '#/components/schemas/CraCreditProfileInquiryType' version: $ref: '#/components/schemas/CraCreditProfileReportVersion' required: - user_id - consumer_report_permissible_purpose - client_report_id - report_type - inquiry_type - version CraCreditProfileReportVersion: type: string description: The version of the credit profile report to retrieve. enum: - v1 CraCreditProfileInquiryType: type: string description: The inquiry type of credit profile report. enum: - SOFT_INQUIRY - STANDARD_INQUIRY CraCreditProfileReportType: type: string description: The product type for the credit profile report request. enum: - QUALIFY CraCreditProfileReportGetResponse: title: CraCreditProfileReportGetResponse additionalProperties: true type: object description: CraCreditProfileReportGetResponse defines the response schema for `/cra/credit_profile/report/get`. properties: report: $ref: '#/components/schemas/CraCreditProfileReport' request_id: $ref: '#/components/schemas/RequestID' user_id: $ref: '#/components/schemas/NewUserID' warnings: type: array description: If the report generation was successful but a subset of data could not be retrieved, this array will contain information about the errors causing information to be missing items: $ref: '#/components/schemas/CheckReportWarning' required: - report - request_id - warnings CraCreditProfileReport: type: object description: Contains data for the CRA Credit Profile Report. additionalProperties: true properties: date_retrieved: type: string description: The time when the report was retrieved. format: date-time inquiry_type: $ref: '#/components/schemas/CraCreditProfileInquiryType' client_report_id: type: string description: Client-generated identifier, which can be used by lenders to track loan applications. lend_scores: type: array description: The LendScore results for the credit profile report. items: $ref: '#/components/schemas/CraCreditProfileLendScore' cashflow_insights_attributes: $ref: '#/components/schemas/CraCreditProfileCashflowAttributesSchema' network_insights_attributes: $ref: '#/components/schemas/CraCreditProfileNetworkInsightsSchema' metadata: $ref: '#/components/schemas/CraCreditProfileReportMetadata' required: - date_retrieved - inquiry_type - client_report_id - lend_scores - cashflow_insights_attributes - network_insights_attributes - metadata CraCreditProfileReportMetadata: type: object nullable: true description: Metadata about the CRA Credit Profile Report. additionalProperties: true properties: item_count: type: integer description: The number of items used to calculate the report. institution_ids: type: array description: The institution IDs associated with the report. items: type: string account_count: type: integer description: The total number of accounts in the report. primary_account_count: type: integer description: The number of primary accounts in the report. depository_account_type_count: type: integer description: The number of depository accounts in the report. credit_account_type_count: type: integer description: The number of credit accounts in the report. other_account_type_count: type: integer description: The number of other accounts in the report. multiple_owner_account_count: type: integer description: The number of accounts with multiple owners in the report. generated_at: type: string format: date-time description: The time when the report was generated. oldest_transaction_date: type: string format: date description: The date of the oldest transaction in the report. most_recent_transaction_date: type: string format: date description: The date of the most recent transaction in the report. required: - item_count - institution_ids - account_count - primary_account_count - depository_account_type_count - credit_account_type_count - other_account_type_count - multiple_owner_account_count - 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 nullable: true 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. May be `null` if metadata was not available. additionalProperties: {} CraReportGetProductAttributes: title: CraReportGetProductAttributes x-hidden-from-docs: true type: object nullable: true description: A map of product attributes, where the key is a string and the value can be any JSON value. The specific list of attributes depends on the product and version. For a full list, see the data dictionary. May be `null` if attributes were not available. additionalProperties: {} 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 additionalProperties: true description: AssetReportFreddieGetRequest defines the request schema for `/credit/asset_report/freddie_mac/get` properties: audit_copy_token: type: string description: A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token should be stored securely. client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - audit_copy_token AssetReportFreddieGetResponse: title: AssetReportFreddieGetResponse type: object additionalProperties: true description: AssetReportFreddieGetResponse defines the response schema for `/credit/asset_report/freddie_mac/get` properties: DEAL: $ref: '#/components/schemas/AssetReportFreddie' request_id: $ref: '#/components/schemas/RequestID' SchemaVersion: type: number description: The Verification Of Assets (aka VOA or Freddie Mac Schema) schema version. required: - DEAL - request_id - SchemaVersion AssetReportFreddie: title: AssetReportFreddie type: object additionalProperties: true description: An object representing an Asset Report with Freddie Mac schema. properties: LOANS: $ref: '#/components/schemas/Loans' PARTIES: $ref: '#/components/schemas/Parties' SERVICES: $ref: '#/components/schemas/Services' required: - LOANS - PARTIES - SERVICES Loans: title: Loans type: object additionalProperties: true description: A collection of loans that are part of a single deal. properties: LOAN: $ref: '#/components/schemas/Loan' required: - LOAN Loan: title: Loan type: object additionalProperties: true description: Information specific to a mortgage loan agreement between one or more borrowers and a mortgage lender. properties: LOAN_IDENTIFIERS: $ref: '#/components/schemas/LoanIdentifiers' required: - LOAN_IDENTIFIERS LoanIdentifiers: title: LoanIdentifiers type: object additionalProperties: true description: Collection of current and previous identifiers for this loan. properties: LOAN_IDENTIFIER: $ref: '#/components/schemas/LoanIdentifier' required: - LOAN_IDENTIFIER LoanIdentifier: title: LoanIdentifier type: object additionalProperties: true description: The information used to identify this loan by various parties to the transaction or other organizations. properties: LoanIdentifier: type: string nullable: true description: The value of the identifier for the specified type. LoanIdentifierType: $ref: '#/components/schemas/LoanIdentifierType' required: - LoanIdentifier - LoanIdentifierType LoanIdentifierType: title: LoanIdentifierType type: string nullable: true description: A value from a MISMO prescribed list that specifies the type of loan identifier. enum: - LenderLoan - UniversalLoan Parties: title: Parties type: object additionalProperties: true description: A collection of objects that define specific parties to a deal. This includes the direct participating parties, such as borrower and seller and the indirect parties such as the credit report provider. properties: PARTY: type: array items: $ref: '#/components/schemas/Party' required: - PARTY Party: title: Party type: object additionalProperties: true 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' ROLES: $ref: '#/components/schemas/Roles' TAXPAYER_IDENTIFIERS: $ref: '#/components/schemas/TaxpayerIdentifiers' required: - INDIVIDUAL - ROLES - TAXPAYER_IDENTIFIERS PartyIndividual: title: INDIVIDUAL type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: NAME: $ref: '#/components/schemas/IndividualName' required: - NAME IndividualName: title: NAME type: object additionalProperties: true description: Parent container for name that allows for choice group between parsed and unparsed containers. properties: FirstName: type: string description: The first name of the individual represented by the parent object. LastName: type: string description: The last name of the individual represented by the parent object. required: - FirstName - LastName Roles: title: Roles type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ROLE: $ref: '#/components/schemas/Role' required: - ROLE Role: title: Role type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ROLE_DETAIL: $ref: '#/components/schemas/RoleDetail' required: - ROLE_DETAIL RoleDetail: title: RoleDetail type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: PartyRoleType: $ref: '#/components/schemas/PartyRoleType' required: - PartyRoleType PartyRoleType: title: PartyRoleType type: string description: A value from a MISMO defined list that identifies the role that the party plays in the transaction. Parties may be either a person or legal entity. A party may play multiple roles in a transaction. enum: - Borrower TaxpayerIdentifiers: title: TaxpayerIdentifiers type: object additionalProperties: true description: The collection of `TAXPAYER_IDENTIFICATION` elements properties: TAXPAYER_IDENTIFIER: $ref: '#/components/schemas/TaxpayerIdentifier' required: - TAXPAYER_IDENTIFIER TaxpayerIdentifier: title: TaxpayerIdentifier type: object additionalProperties: true description: Information about the Taxpayer identification values assigned to the individual or legal entity. properties: TaxpayerIdentifierType: $ref: '#/components/schemas/TaxpayerIdentifierType' TaxpayerIdentifierValue: type: string nullable: true description: The value of the taxpayer identifier as assigned by the IRS to the individual or legal entity. required: - TaxpayerIdentifierType - TaxpayerIdentifierValue TaxpayerIdentifierType: title: TaxpayerIdentifierType type: string nullable: true description: A value from a MISMO prescribed list that classifies identification numbers used by the Internal Revenue Service (IRS) in the administration of tax laws. A Social Security number (SSN) is issued by the SSA; all other taxpayer identification numbers are issued by the IRS. enum: - IndividualTaxpayerIdentificationNumber - SocialSecurityNumber Services: title: Services type: object additionalProperties: true description: A collection of objects that describe requests and responses for services. properties: SERVICE: $ref: '#/components/schemas/Service' required: - SERVICE Service: title: Service type: object additionalProperties: true description: A collection of details related to a fulfillment service or product in terms of request, process and result. properties: VERIFICATION_OF_ASSET: $ref: '#/components/schemas/VerificationOfAsset' STATUSES: $ref: '#/components/schemas/Statuses' required: - VERIFICATION_OF_ASSET - STATUSES VerificationOfAsset: title: VerificationOfAsset type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: REPORTING_INFORMATION: $ref: '#/components/schemas/ReportingInformation' SERVICE_PRODUCT_FULFILLMENT: $ref: '#/components/schemas/ServiceProductFulfillment' VERIFICATION_OF_ASSET_RESPONSE: $ref: '#/components/schemas/VerificationOfAssetResponse' required: - REPORTING_INFORMATION - SERVICE_PRODUCT_FULFILLMENT - VERIFICATION_OF_ASSET_RESPONSE ReportingInformation: title: ReportingInformation type: object additionalProperties: true description: Information about a report identifier and a report name. properties: ReportingInformationIdentifier: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ReportingInformationIdentifier ServiceProductFulfillment: title: ServiceProductFulfillment type: object additionalProperties: true description: A collection of details related to a fulfillment service or product in terms of request, process and result. properties: SERVICE_PRODUCT_FULFILLMENT_DETAIL: $ref: '#/components/schemas/ServiceProductFulfillmentDetail' required: - SERVICE_PRODUCT_FULFILLMENT_DETAIL ServiceProductFulfillmentDetail: title: ServiceProductFulfillmentDetail type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: VendorOrderIdentifier: type: string nullable: true description: A string that uniquely identifies a type of order Verification of Asset. ServiceProductFulfillmentIdentifier: $ref: '#/components/schemas/ServiceProductFulfillmentIdentifier' required: - VendorOrderIdentifier - ServiceProductFulfillmentIdentifier ServiceProductFulfillmentIdentifier: title: ServiceProductFulfillmentIdentifier type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. enum: - VOA - VOE VerificationOfAssetResponse: title: VerificationOfAssetResponse type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSETS: $ref: '#/components/schemas/Assets' required: - ASSETS Assets: title: Assets type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET: type: array items: $ref: '#/components/schemas/Asset' description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ASSET Asset: title: Asset type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_DETAIL: $ref: '#/components/schemas/AssetDetail' ASSET_OWNERS: $ref: '#/components/schemas/AssetOwners' ASSET_HOLDER: $ref: '#/components/schemas/AssetHolder' ASSET_TRANSACTIONS: $ref: '#/components/schemas/AssetTransactions' VALIDATION_SOURCES: $ref: '#/components/schemas/ValidationSources' required: - ASSET_DETAIL - ASSET_OWNERS - ASSET_HOLDER - ASSET_TRANSACTIONS - VALIDATION_SOURCES AssetDetail: title: AssetDetail type: object additionalProperties: true description: Details about an asset. properties: AssetUniqueIdentifier: type: string description: A vendor created unique Identifier. AssetAccountIdentifier: type: string description: A unique alphanumeric string identifying an asset. AssetAsOfDate: type: string description: Account Report As of Date / Create Date. Format YYYY-MM-DD AssetDescription: type: string nullable: true description: A text description that further defines the Asset. This could be used to describe the shares associated with the stocks, bonds or mutual funds, retirement funds or business owned that the borrower has disclosed (named) as an asset. AssetAvailableBalanceAmount: type: number format: double description: Asset Account Available Balance. AssetCurrentBalanceAmount: type: number format: double description: Asset Account Current Balance. AssetHoldingBalanceAmount: type: number format: double nullable: true description: 'Total market value of holdings (non-restricted, vested, not crypto, not other, not cash) Note: Any employer stock plan balance must be excluded from the total account balance (identification is ''stock plan'')' AssetHoldingBalanceNetMarginAmount: type: number format: double nullable: true description: HoldingsBalance net MarginAmount AssetBondsBalanceAmount: type: number format: double nullable: true description: Total market value of all bonds held (non-restricted, vested) AssetStocksBalanceAmount: type: number format: double nullable: true description: Total market value of all stocks held (non-restricted, vested, not employer sponsored stock plan) AssetCryptoBalanceAmount: type: number format: double nullable: true description: Total balance of all cryptocurrency held (non-restricted, vested) AssetOtherBalanceAmount: type: number format: double nullable: true description: Total balance of all other holding types (non-restricted, vested) AssetMarginAmountBalance: type: number format: double nullable: true description: loan balance (amount owed by account owner) AssetAvailableCashBalanceAmount: type: number format: double nullable: true description: amount available for cash withdrawal AssetCashBalanceAmount: type: number format: double nullable: true description: cash balance of the account AssetType: $ref: '#/components/schemas/AssetType' AssetTypeAdditionalDescription: type: string nullable: true 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 from the Financial Institution. Example: When looking for 3 months of data from the FI, pass in 90 days.' AssetOwnershipType: type: string nullable: true description: Ownership type of the asset account. AssetRetirementIndicator: type: string nullable: true enum: - "Yes" - "No" description: Whether or not the account is a retirement account (e.g., 401K, 403b, 457, thrift savings plans, traditional and Roth, IRAs, SEP-IRA, SIMPLE-IRA, KEOGH, state retirement savings plans, other independent and IRS-qualified employer retirement plans) AssetEmployerSponsoredIndicator: type: string nullable: true enum: - "Yes" - "No" description: Whether the account is employer sponsored retirement account or not (e.g., 401K, 403b, 457, thrift savings plan) required: - AssetUniqueIdentifier - AssetAccountIdentifier - AssetAsOfDate - AssetDescription - AssetAvailableBalanceAmount - AssetCurrentBalanceAmount - AssetType - AssetTypeAdditionalDescription - AssetDaysRequestedCount - AssetOwnershipType AssetType: title: AssetType type: string description: A value from a MISMO prescribed list that specifies financial assets in a mortgage loan transaction. Assets may be either liquid or fixed and are associated with a corresponding asset amount. enum: - CheckingAccount - SavingsAccount - Investment - MoneyMarketFund - Other AssetOwners: title: AssetOwners type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_OWNER: type: array items: $ref: '#/components/schemas/AssetOwner' description: A list of up to 4 account owners' full names. required: - ASSET_OWNER AssetOwner: title: AssetOwner type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: AssetOwnerText: type: string nullable: true description: Account Owner Full Name. required: - AssetOwnerText AssetHolder: title: AssetHolder type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: NAME: $ref: '#/components/schemas/AssetHolderName' required: - NAME AssetHolderName: title: NAME type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: FullName: type: string description: The unparsed name of either an individual or a legal entity. required: - FullName AssetHoldings: title: AssetHoldings type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_HOLDING: type: array items: $ref: '#/components/schemas/AssetHolding' required: - ASSET_HOLDING AssetHolding: title: AssetHolding type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: AssetHoldingID: type: string nullable: true description: Unique id of investment position Currency: type: string nullable: true description: US Dollar AssetHoldingDescription: type: string nullable: true description: Description of holding AssetHoldingSymbol: type: string nullable: true description: Investment position's market ticker symbol AssetHoldingSecurityName: type: string nullable: true description: Security name of investment holding AssetHoldingUnits: type: number nullable: true description: Number of units of holding AssetHoldingMarketValueAmount: type: number nullable: true description: market value of investment position AssetHoldingCurrentPriceAmount: type: number nullable: true description: current price of investment holding AssetHoldingType: type: string nullable: true enum: - Bond - Stock - Crypto - Other description: Type of holding (e.g. bond, stock, crypto, other) AssetHoldingRestrictedIndicator: type: string nullable: true enum: - "Yes" - "No" description: Whether or not the stock is restricted, i.e. "Restricted" or "Not Restricted" AssetHoldingVestedAmount: type: number nullable: true description: Amount of holding vested required: - AssetHoldingID - Currency - AssetHoldingDescription - AssetHoldingSymbol - AssetHoldingSecurityName - AssetHoldingUnits - AssetHoldingMarketValueAmount - AssetHoldingCurrentPriceAmount - AssetHoldingType - AssetHoldingRestrictedIndicator - AssetHoldingVestedAmount AssetTransactions: title: AssetTransactions type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_TRANSACTION: type: array items: $ref: '#/components/schemas/AssetTransaction' required: - ASSET_TRANSACTION AssetTransaction: title: AssetTransaction type: object additionalProperties: true description: An object representing... properties: ASSET_TRANSACTION_DETAIL: $ref: '#/components/schemas/AssetTransactionDetail' ASSET_TRANSACTION_DESCRIPTON: type: array items: $ref: '#/components/schemas/AssetTransactionDescription' description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. Note that "DESCRIPTON" is an intentional misspelling matching the upstream MISMO field name. required: - ASSET_TRANSACTION_DETAIL - ASSET_TRANSACTION_DESCRIPTON AssetTransactionDetail: title: AssetTransactionDetail type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: AssetTransactionUniqueIdentifier: type: string description: A vendor created unique Identifier. AssetTransactionAmount: type: number description: Asset Transaction Amount. AssetTransactionDate: type: string format: date description: Asset Transaction Date. AssetTransactionPostDate: type: string format: date description: Asset Transaction Post Date. AssetTransactionType: $ref: '#/components/schemas/AssetTransactionType' AssetInvestmentTransactionType: $ref: '#/components/schemas/AssetInvestmentTransactionType' AssetTransactionPaidByName: type: string nullable: true description: Populate with who did the transaction. AssetTransactionPaidToName: type: string nullable: true description: Populate with for whom the transaction is done AssetTransactionTypeAdditionalDescription: type: string nullable: true description: FI Provided - examples are atm, cash, check, credit, debit, deposit, directDebit, directDeposit, dividend, fee, interest, other, payment, pointOfSale, repeatPayment, serviceCharge, transfer. AssetInvestmentTransactionTypeDescription: type: string nullable: true description: Asset Investment Transaction Type Description. AssetTransactionCategoryType: $ref: '#/components/schemas/AssetTransactionCategoryType' FinancialInstitutionTransactionIdentifier: type: string nullable: true description: FI provided Transaction Identifier. required: - AssetTransactionUniqueIdentifier - AssetTransactionAmount - AssetTransactionDate - AssetTransactionPostDate - AssetTransactionType - AssetTransactionPaidByName - AssetTransactionTypeAdditionalDescription - AssetInvestmentTransactionTypeDescription - AssetTransactionCategoryType - FinancialInstitutionTransactionIdentifier AssetTransactionType: title: AssetTransactionType type: string description: Asset Transaction Type. enum: - Credit - Debit AssetInvestmentTransactionType: title: AssetInvestmentTransactionType type: string nullable: true description: Asset Investment Transaction Type Enumerated derived by Vendor. enum: - Buy - Sell - Dividends - Interest - Transfers - Reinvestments - FundsReceived - Other AssetTransactionCategoryType: title: AssetTransactionCategoryType type: string nullable: true description: Asset Transaction Category Type Enumerated derived by Vendor. enum: - ATMFee - Advertising - AirTravel - AlcoholBars - Allowance - Amusement - Arts - AutoTransport - AutoInsurance - AutoPayment - BabySupplies - BabysitterDaycare - BankFee - BillsUtilities - Bonus - BooksSupplies - Business Services - Buy - CashATM - Charity - Check - ChildSupport - Clothing - CoffeeShops - CreditCardPayment - Dentist - Doctor - Education - ElectronicsSoftware - Entertainment - Eyecare - FastFood - FederalTax - FeesCharges - FinanceCharge - Financial - FinancialAdvisor - FoodDining - Furnishings - GasFuel - GiftsDonations - Groceries - Gym - Hair - HealthFitness - HealthInsurance - Hobbies - Home - HomeImprovement - HomeInsurance - HomePhone - HomeServices - HomeSupplies - Hotel - Income - InterestIncome - Internet - Investments - Kids - KidsActivities - LateFee - Laundry - LawnGarden - Legal - LifeInsurance - LoanInsurance - LoanPayment - Loans - MobilePhone - MortgageRent - MoviesDVDs - Music - NewspapersMagazines - OfficeSupplies - Parking - Paycheck - PersonalCare - PetFoodSupplies - PetGrooming - Pets - Pharmacy - Printing - Property Tax - Public Transportation - Reimbursement - RentalCarTaxi - Restaurants - SalesTax - ServiceParts - ServiceFee - Shipping - Shopping - SpaMassage - SportingGoods - Sports - StateTax - Student Loan - Taxes - Television - Toys - Transfer - Travel - Tuition - Uncategorized - Utilities - Vacation - Veterinary AssetTransactionDescription: title: AssetTransactionDescription type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: AssetTransactionDescription: type: string description: Asset Transaction Description String up to 3 occurrences 1 required. required: - AssetTransactionDescription ValidationSources: title: ValidationSources type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: VALIDATION_SOURCE: type: array items: $ref: '#/components/schemas/ValidationSource' description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - VALIDATION_SOURCE ValidationSource: title: ValidationSource type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ValidationSourceName: type: string nullable: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. ValidationSourceReferenceIdentifier: type: string nullable: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ValidationSourceName - ValidationSourceReferenceIdentifier Statuses: title: Statuses type: object additionalProperties: true description: A collection of STATUS containers. properties: STATUS: $ref: '#/components/schemas/Status' required: - STATUS Status: title: Status type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: StatusCode: type: string nullable: true description: Status Code. StatusDescription: type: string nullable: true description: Status Description. required: - StatusCode - StatusDescription CreditFreddieMacReportsGetRequest: title: CreditFreddieMacReportsGetRequest type: object description: CreditFreddieMacReportsGetRequest defines the request schema for `/credit/freddie_mac/reports/get` properties: audit_copy_token: type: string description: A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token should be stored securely. client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - audit_copy_token CreditFreddieMacReportsGetResponse: title: CreditFreddieMacReportsGetResponse type: object additionalProperties: true description: CreditFreddieMacReportsGetResponse defines the response schema for `/credit/freddie_mac/reports/get` properties: DEAL: $ref: '#/components/schemas/CreditFreddieMacVerificationOfAssetsDeal' request_id: $ref: '#/components/schemas/RequestID' SchemaVersion: type: number description: The Verification Of Assets (VOA) schema version. required: - request_id - DEAL - SchemaVersion CreditFreddieMacVerificationOfAssetsDeal: title: CreditFreddieMacVerificationOfAssetsDeal type: object additionalProperties: true description: An object representing an Asset Report with Freddie Mac schema. properties: LOANS: $ref: '#/components/schemas/CreditFreddieMacLoans' PARTIES: $ref: '#/components/schemas/CreditFreddieMacParties' SERVICES: $ref: '#/components/schemas/CreditFreddieMacServices' required: - LOANS - PARTIES - SERVICES CreditFreddieMacLoans: title: CreditFreddieMacLoans type: object additionalProperties: true description: A collection of loans that are part of a single deal. properties: LOAN: $ref: '#/components/schemas/CreditFreddieMacLoan' required: - LOAN CreditFreddieMacLoan: title: CreditFreddieMacLoan type: object additionalProperties: true description: Information specific to a mortgage loan agreement between one or more borrowers and a mortgage lender. properties: LOAN_IDENTIFIERS: $ref: '#/components/schemas/CreditFreddieMacLoanIdentifiers' LoanRoleType: type: string description: Type of loan. The value can only be "SubjectLoan". required: - LOAN_IDENTIFIERS - LoanRoleType CreditFreddieMacLoanIdentifiers: title: CreditFreddieMacLoanIdentifiers type: object additionalProperties: true description: Collection of current and previous identifiers for this loan. properties: LOAN_IDENTIFIER: type: array items: $ref: '#/components/schemas/LoanIdentifier' required: - LOAN_IDENTIFIER CreditFreddieMacServices: title: CreditFreddieMacServices type: object additionalProperties: true description: A collection of objects that describe requests and responses for services. properties: SERVICE: $ref: '#/components/schemas/CreditFreddieMacService' required: - SERVICE CreditFreddieMacService: title: CreditFreddieMacService type: object additionalProperties: true description: A collection of details related to a fulfillment service or product in terms of request, process and result. properties: VERIFICATION_OF_ASSET: type: array items: $ref: '#/components/schemas/CreditFreddieMacVerificationOfAsset' STATUSES: $ref: '#/components/schemas/Statuses' required: - VERIFICATION_OF_ASSET - STATUSES CreditFreddieMacVerificationOfAsset: title: CreditFreddieMacVerificationOfAsset type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: REPORTING_INFORMATION: $ref: '#/components/schemas/CreditFreddieMacReportingInformation' SERVICE_PRODUCT_FULFILLMENT: $ref: '#/components/schemas/ServiceProductFulfillment' VERIFICATION_OF_ASSET_RESPONSE: $ref: '#/components/schemas/CreditFreddieMacVerificationOfAssetResponse' required: - REPORTING_INFORMATION - SERVICE_PRODUCT_FULFILLMENT - VERIFICATION_OF_ASSET_RESPONSE CreditFreddieMacReportingInformation: title: CreditFreddieMacReportingInformation type: object additionalProperties: true description: Information about a report identifier and a report name. properties: ReportDateTime: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. ReportIdentifierType: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. The value can only be "ReportID". ReportingInformationParentIdentifier: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. ReportingInformationIdentifier: type: string description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ReportingInformationIdentifier CreditFreddieMacVerificationOfAssetResponse: title: CreditFreddieMacVerificationOfAssetResponse type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSETS: $ref: '#/components/schemas/CreditFreddieMacAssets' required: - ASSETS CreditFreddieMacAssets: title: CreditFreddieMacAssets type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET: type: array items: $ref: '#/components/schemas/CreditFreddieMacAsset' description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ASSET CreditFreddieMacAsset: title: CreditFreddieMacAsset type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_DETAIL: $ref: '#/components/schemas/AssetDetail' ASSET_OWNERS: $ref: '#/components/schemas/AssetOwners' ASSET_HOLDER: $ref: '#/components/schemas/AssetHolder' ASSET_HOLDINGS: $ref: '#/components/schemas/AssetHoldings' ASSET_TRANSACTIONS: $ref: '#/components/schemas/CreditFreddieMacAssetTransactions' VALIDATION_SOURCES: $ref: '#/components/schemas/ValidationSources' required: - ASSET_DETAIL - ASSET_OWNERS - ASSET_HOLDER - ASSET_TRANSACTIONS - VALIDATION_SOURCES CreditFreddieMacAssetTransactions: title: CreditFreddieMacAssetTransactions type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: ASSET_TRANSACTION: type: array items: $ref: '#/components/schemas/CreditFreddieMacAssetTransaction' required: - ASSET_TRANSACTION CreditFreddieMacAssetTransaction: title: CreditFreddieMacAssetTransaction type: object additionalProperties: true description: An object representing... properties: ASSET_TRANSACTION_DETAIL: $ref: '#/components/schemas/AssetTransactionDetail' ASSET_TRANSACTION_DESCRIPTION: type: array items: $ref: '#/components/schemas/AssetTransactionDescription' description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. required: - ASSET_TRANSACTION_DETAIL - ASSET_TRANSACTION_DESCRIPTION CreditFreddieMacParties: title: CreditFreddieMacParties type: object additionalProperties: true description: A collection of objects that define specific parties to a deal. This includes the direct participating parties, such as borrower and seller and the indirect parties such as the credit report provider. properties: PARTY: type: array items: $ref: '#/components/schemas/CreditFreddieMacParty' required: - PARTY CreditFreddieMacParty: title: CreditFreddieMacParty type: object additionalProperties: true 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' ROLES: $ref: '#/components/schemas/Roles' TAXPAYER_IDENTIFIERS: $ref: '#/components/schemas/TaxpayerIdentifiers' required: - INDIVIDUAL - ROLES - TAXPAYER_IDENTIFIERS CreditFreddieMacPartyIndividual: title: CreditFreddieMacPartyIndividual type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: NAME: $ref: '#/components/schemas/CreditFreddieMacIndividualName' required: - NAME CreditFreddieMacIndividualName: title: CreditFreddieMacIndividualName type: object additionalProperties: true description: Documentation not found in the MISMO model viewer and not provided by Freddie Mac. properties: FirstName: type: string description: The first name of the individual represented by the parent object. LastName: type: string description: The last name of the individual represented by the parent object. MiddleName: type: string description: The middle name of the individual represented by the parent object. required: - FirstName - LastName - MiddleName CraCheckReportFreddieMacGetRequest: title: CraCheckReportFreddieMacGetRequest type: object description: CraCheckReportFreddieMacGetRequest defines the request schema for `/cra/check_report/freddie_mac/get` properties: third_party_user_token: $ref: '#/components/schemas/ThirdPartyUserToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - third_party_user_token CraCheckReportFreddieMacGetResponse: title: CraCheckReportFreddieMacGetResponse type: object additionalProperties: true description: CraCheckReportFreddieMacGetResponse defines the response schema for `/cra/check_report/freddie_mac/get` properties: DEAL: $ref: '#/components/schemas/CraCheckReportFreddieMacVerificationOfAssetsDeal' request_id: $ref: '#/components/schemas/RequestID' SchemaVersion: type: number description: The Verification Of Assets (VOA) schema version. required: - request_id - DEAL - SchemaVersion CraCheckReportFreddieMacVerificationOfAssetsDeal: title: CraCheckReportFreddieMacVerificationOfAssetsDeal type: object additionalProperties: true description: An object representing a Base Report with Freddie Mac schema. properties: LOANS: $ref: '#/components/schemas/CreditFreddieMacLoans' PARTIES: $ref: '#/components/schemas/CreditFreddieMacParties' SERVICES: $ref: '#/components/schemas/CreditFreddieMacServices' required: - LOANS - PARTIES - SERVICES IdentityDocumentsUploadsGetRequest: title: IdentityDocumentsUploadsGetRequest description: IdentityDocumentsUploadsGetRequest defines the request schema for `/identity/documents/uploads/get` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' options: $ref: '#/components/schemas/IdentityDocumentsUploadsGetRequestOptions' required: - access_token IdentityDocumentsUploadsGetRequestOptions: type: object description: An optional object to filter `/identity/documents/uploads/get` results. properties: account_ids: type: array description: |- A list of `account_ids` to retrieve for the Item. Note: An error will be returned if a provided `account_id` is not associated with the Item. items: type: string IdentityDocumentsUploadsGetResponse: type: object additionalProperties: true description: IdentityDocumentsUploadsGetResponse defines the response schema for `/identity/documents/uploads/get` properties: accounts: type: array description: The accounts for which Identity data has been requested items: $ref: '#/components/schemas/AccountIdentityDocumentUpload' item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - accounts - item - request_id AccountIdentityDocumentUpload: description: Identity information about an account title: AccountIdentityDocumentUpload allOf: - $ref: '#/components/schemas/AccountBase' - type: object additionalProperties: true properties: owners: type: array description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution; detecting whether the linked account is a business account is not currently supported. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29) items: $ref: '#/components/schemas/Owner' documents: type: array description: Data about the documents that were uploaded as proof of account ownership. items: $ref: '#/components/schemas/IdentityDocumentUpload' nullable: true required: - owners IdentityDocumentUpload: title: IdentityDocumentUpload type: object description: Document object with metadata of the uploaded document properties: document_id: type: string description: A UUID identifying the document. metadata: $ref: '#/components/schemas/IdentityDocumentUploadMetadata' risk_insights: $ref: '#/components/schemas/IdentityDocumentUploadRiskInsights' IdentityDocumentUploadMetadata: title: IdentityDocumentUploadMetadata type: object additionalProperties: true description: Metadata pertaining to the document. properties: document_type: type: string description: The submitted document type. Currently, this will always be `BANK_STATEMENT`. nullable: true is_account_number_match: type: boolean description: Boolean field indicating whether the uploaded document's account number matches the account number we have on file. If `false`, it is not recommended to accept the uploaded identity data as accurate without further verification. nullable: true page_count: type: integer nullable: true description: The number of pages in the uploaded document. last_updated: type: string format: date-time description: The timestamp when the document was last updated. uploaded_at: type: string format: date-time description: The timestamp when the document was originally uploaded. IdentityDocumentUploadRiskInsights: title: IdentityDocumentUploadRiskInsights type: object additionalProperties: true description: Object representing fraud risk data of the uploaded document. Only provided when using Identity Document Upload with Fraud Risk enabled. properties: risk_summary: $ref: '#/components/schemas/IdentityDocumentUploadRiskSummary' risk_signals: title: RiskSignals type: array description: An array of risk signals. items: $ref: '#/components/schemas/IdentityDocumentUploadRiskSignal' IdentityDocumentUploadRiskSummary: title: IdentityDocumentUploadRiskSummary type: object additionalProperties: true description: Risk summary of an uploaded document. properties: risk_score: type: integer description: A number between 0 and 100, inclusive, where a score closer to 0 indicates a document is likely to be trustworthy and a score closer to 100 indicates a document is likely to be fraudulent. nullable: true IdentityDocumentUploadRiskSignal: title: IdentityDocumentUploadRiskSignal type: object additionalProperties: true description: Risk signals tied to the document properties: type: type: string nullable: true description: The type of risk found. x-override-enum-values-shown: - FONT - MASKING - OVERLAID_TEXT - EDITED_TEXT - TEXT_COMPRESSION - ADDRESS_FORMAT_ANOMALY - DATE_FORMAT_ANOMALY - FONT_ANOMALY - NAME_FORMAT_ANOMALY - PDF_ALIGNMENT - BRUSH_DETECTION - METADATA_DATES_OUTSIDE_WINDOW - METADATA_DATES_INSIDE_WINDOW - METADATA_DATES_MISSING - METADATA_DATES_MATCH - ADOBE_FONTS - ANNOTATION_DATES - ANNOTATIONS - EDITED_WHILE_SCANNED - EXIF_DATA_MODIFIED - HIGH_USER_ACCESS - MALFORMED_DATE - QPDF - TEXT_LAYER_TEXT - TOUCHUP_TEXT - FLATTENED_PDF - BLACKLISTS - COPYCAT_IMAGE - COPYCAT_TEXT - REJECTED_CUSTOMER - TEMPLATES - SOFTWARE_BLACKLIST has_fraud_risk: description: Indicates whether fraud risk was detected for this risk signal. type: boolean nullable: true signal_description: description: A human-readable explanation providing more detail about the specific risk signal. type: string nullable: true page_number: type: integer nullable: true description: The relevant page associated with the risk signal. If the risk signal is not associated with a specific page, the value will be 0. ItemGetRequest: description: ItemGetRequest defines the request schema for `/item/get` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token ItemGetResponse: type: object additionalProperties: true description: ItemGetResponse defines the response schema for `/item/get` and `/item/webhook/update` properties: item: $ref: '#/components/schemas/ItemWithConsentFields' status: $ref: '#/components/schemas/ItemStatusNullable' request_id: $ref: '#/components/schemas/RequestID' required: - item - request_id ItemRemoveRequest: type: object description: ItemRemoveRequest defines the request schema for `/item/remove` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' reason_code: $ref: '#/components/schemas/ItemRemoveReasonCode' reason_note: type: string nullable: true maxLength: 512 description: Additional context or details about the reason for removing the Item. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`. required: - access_token ItemRemoveReasonCode: type: string description: | The reason for removing the Item `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud `FRAUD_FALSE_IDENTITY`: The end user created the connection using false identity information or stolen credentials `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 `CONNECTION_IS_NON_FUNCTIONAL`: The connection to the end user's financial institution is broken and cannot be restored `OTHER`: Any other reason for removing the connection not covered by the above categories nullable: true enum: - FRAUD_FIRST_PARTY - FRAUD_FALSE_IDENTITY - FRAUD_ABUSE - FRAUD_OTHER - CONNECTION_IS_NON_FUNCTIONAL - OTHER ItemRemoveResponse: type: object additionalProperties: true description: ItemRemoveResponse defines the response schema for `/item/remove` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ItemWebhookUpdateRequest: type: object description: ItemWebhookUpdateRequest defines the request schema for `/item/webhook/update` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' webhook: type: string description: The new webhook URL to associate with the Item. To remove a webhook from an Item, set to `null`. format: url nullable: true required: - access_token ItemWebhookUpdateResponse: type: object additionalProperties: true description: ItemWebhookUpdateResponse defines the response schema for `/item/webhook/update` properties: item: $ref: '#/components/schemas/Item' request_id: $ref: '#/components/schemas/RequestID' required: - item - request_id ItemAccessTokenInvalidateRequest: type: object description: ItemAccessTokenInvalidateRequest defines the request schema for `/item/access_token/invalidate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token ItemAccessTokenInvalidateResponse: type: object additionalProperties: true description: ItemAccessTokenInvalidateResponse defines the response schema for `/item/access_token/invalidate` properties: new_access_token: $ref: '#/components/schemas/AccessToken' request_id: $ref: '#/components/schemas/RequestID' required: - new_access_token - request_id ItemPublicTokenExchangeRequest: type: object description: ItemPublicTokenExchangeRequest defines the request schema for `/item/public_token/exchange` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' public_token: type: string description: Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/public_token/create`. required: - public_token ItemPublicTokenExchangeResponse: type: object additionalProperties: true description: ItemPublicTokenExchangeResponse defines the response schema for `/item/public_token/exchange` properties: access_token: $ref: '#/components/schemas/AccessToken' item_id: type: string description: The `item_id` value of the Item associated with the returned `access_token` request_id: $ref: '#/components/schemas/RequestID' required: - access_token - item_id - request_id ItemPublicTokenCreateRequest: type: object description: ItemPublicTokenCreateRequest defines the request schema for `/item/public_token/create` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token ItemPublicTokenCreateResponse: type: object additionalProperties: true description: ItemPublicTokenCreateResponse defines the response schema for `/item/public_token/create` properties: public_token: type: string description: A `public_token` for the particular Item corresponding to the specified `access_token` expiration: type: string format: date-time request_id: $ref: '#/components/schemas/RequestID' required: - public_token - request_id ItemImportRequest: type: object description: ItemImportRequest defines the request schema for `/item/import` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' institution_id: $ref: '#/components/schemas/ItemImportRequestInstitutionID' products: type: array description: Array of product strings items: $ref: '#/components/schemas/Products' minItems: 1 x-override-enum-values-shown: - assets - auth - balance - employment - identity - income_verification - investments - liabilities - payment_initiation - standing_orders - transactions - transfer user_auth: $ref: '#/components/schemas/ItemImportRequestUserAuth' options: $ref: '#/components/schemas/ItemImportRequestOptions' required: - products - user_auth ItemImportRequestInstitutionID: type: string 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 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. `INSTANT_MATCH`: The Item's Auth data was provided via the Instant Match fallback flow. `AUTOMATED_MICRODEPOSITS`: The Item's Auth data was provided via the Automated Micro-deposits flow. `SAME_DAY_MICRODEPOSITS`: The Item's Auth data was provided via the Same-Day Micro-deposits flow. `INSTANT_MICRODEPOSITS`: The Item's Auth data was provided via the Instant Micro-deposits flow. `DATABASE_MATCH`: The Item's Auth data was provided via the Database Match flow. `DATABASE_INSIGHTS`: The Item's Auth data was provided via the Database Insights flow. `TRANSFER_MIGRATED`: The Item's Auth data was provided via [`/transfer/migrate_account`](https://plaid.com/docs/api/products/transfer/account-linking/#migrate-account-into-transfers). `INVESTMENTS_FALLBACK`: The Item's Auth data for Investments Move was provided via a [fallback flow](https://plaid.com/docs/investments-move/#fallback-flows). type: string nullable: true enum: - INSTANT_AUTH - INSTANT_MATCH - AUTOMATED_MICRODEPOSITS - SAME_DAY_MICRODEPOSITS - INSTANT_MICRODEPOSITS - DATABASE_MATCH - DATABASE_INSIGHTS - TRANSFER_MIGRATED - INVESTMENTS_FALLBACK - null ItemImportRequestOptions: type: object description: An optional object to configure `/item/import` request. properties: webhook: type: string format: url description: | Specifies a webhook URL to associate with an Item. Plaid fires a webhook if credentials fail. ItemImportRequestUserAuth: type: object required: - user_id - auth_token description: Object of user ID and auth token pair, permitting Plaid to aggregate a user's accounts properties: user_id: type: string description: Opaque user identifier auth_token: type: string description: Authorization token Plaid will use to aggregate this user's accounts ItemImportResponse: type: object additionalProperties: true description: ItemImportResponse defines the response schema for `/item/import` properties: access_token: $ref: '#/components/schemas/AccessToken' request_id: $ref: '#/components/schemas/RequestID' required: - access_token - request_id Item: description: Metadata about the Item. type: object additionalProperties: true properties: item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string institution_id: description: The Plaid Institution ID associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same-Day Micro-deposits. type: string nullable: true institution_name: description: The name of the institution associated with the Item. Field is `null` for Items created without an institution connection, such as Items created via Same-Day Micro-deposits. type: string nullable: true webhook: description: The URL registered to receive webhooks for the Item. type: string nullable: true auth_method: $ref: '#/components/schemas/ItemAuthMethod' error: $ref: '#/components/schemas/PlaidError' available_products: description: A list of products available for the Item that have not yet been accessed. The contents of this array will be mutually exclusive with `billed_products`. type: array items: $ref: '#/components/schemas/Products' billed_products: description: | A list of products that have been billed for the Item. The contents of this array will be mutually exclusive with `available_products`. Note - `billed_products` is populated in all environments but only requests in Production are billed. Also note that products that are billed on a pay-per-call basis rather than a pay-per-Item basis, such as `balance`, will not appear here. type: array items: $ref: '#/components/schemas/Products' products: description: | A list of products added to the Item. In almost all cases, this will be the same as the `billed_products` field. For some products, it is possible for the product to be added to an Item but not yet billed (e.g. Assets, before `/asset_report/create` has been called, or Auth or Identity when added as Optional Products but before their endpoints have been called), in which case the product may appear in `products` but not in `billed_products`. type: array items: $ref: '#/components/schemas/Products' consented_products: description: | A list of products that the user has consented to for the Item via [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide). This will consist of all products where both of the following are true: the user has consented to the required data scopes for that product and you have Production access for that product. type: array items: $ref: '#/components/schemas/Products' x-override-enum-values-shown: - assets - auth - balance - balance_plus - beacon - identity - identity_match - investments - investments_auth - liabilities - transactions - income - income_verification - transfer - employment - recurring_transactions - signal - statements - processor_payments - processor_identity - cra_base_report - cra_income_insights - cra_lend_score - cra_partner_insights - cra_cashflow_insights - cra_monitoring - layer consent_expiration_time: description: The date and time at which the Item's access consent will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. If the Item does not have consent expiration scheduled, this field will be `null`. Currently, only institutions in Europe and a small number of institutions in the US have expiring consent. For a list of US institutions that currently expire consent, see the [OAuth Guide](https://plaid.com/docs/link/oauth/#refreshing-item-consent). nullable: true type: string format: date-time update_type: type: string description: |- Indicates whether an Item requires user interaction to be updated, which can be the case for Items with some forms of two-factor authentication. `background` - Item can be updated in the background `user_present_required` - Item requires user interaction to be updated enum: - background - user_present_required required: - item_id - webhook - error - available_products - billed_products - consent_expiration_time - update_type ItemWithConsentFields: description: Metadata about the Item type: object additionalProperties: true allOf: - $ref: '#/components/schemas/Item' - type: object properties: created_at: description: The date and time when the Item was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. type: string format: date-time consented_use_cases: type: array description: |- A list of use cases that the user has consented to for the Item via [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide). You can see the full list of use cases or update the list of use cases to request at any time via the Link Customization section of the [Plaid Dashboard](https://dashboard.plaid.com/link/data-transparency-v5). items: type: string consented_data_scopes: type: array description: A list of data scopes that the user has consented to for the Item via [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide). These are based on the `consented_products`; see the [full mapping](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/#data-scopes-by-product) of data scopes and products. items: $ref: '#/components/schemas/ItemConsentedDataScope' ItemConsentedDataScope: title: Consented Data Scope description: A data scope for the products that a user can consent to in [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide) type: string enum: - account_balance_info - contact_info - account_routing_number - transactions - credit_loan_info - investments - payroll_info - income_verification_paystubs_info - income_verification_w2s_info - income_verification_bank_statements - income_verification_employment_info - bank_statements - risk_info - network_insights_lite - fraud_info ItemStatus: description: An object with information about the status of the Item. type: object additionalProperties: true nullable: true x-examples: example-1: {} title: ItemStatus properties: investments: $ref: '#/components/schemas/ItemStatusInvestments' transactions: $ref: '#/components/schemas/ItemStatusTransactions' last_webhook: $ref: '#/components/schemas/ItemStatusLastWebhook' ItemStatusNullable: description: An object with information about the status of the Item. nullable: true allOf: - $ref: '#/components/schemas/ItemStatus' - type: object additionalProperties: true ItemStatusTransactions: description: Information about the last successful and failed transactions update for the Item. type: object additionalProperties: true nullable: true properties: last_successful_update: description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful transactions update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update. This field does not reflect transactions updates performed by non-Transactions products (e.g. Signal).' type: string format: date-time nullable: true last_failed_update: description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed transactions update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update. This field does not reflect transactions updates performed by non-Transactions products (e.g. Signal).' type: string format: date-time nullable: true ItemStatusInvestments: description: Information about the last successful and failed investments update for the Item. type: object additionalProperties: true nullable: true properties: last_successful_update: description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful investments update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update.' type: string format: date-time nullable: true last_failed_update: description: '[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed investments update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update.' type: string format: date-time nullable: true ItemStatusLastWebhook: description: Information about the last webhook fired for the Item. type: object additionalProperties: true nullable: true properties: sent_at: description: | [ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of when the webhook was fired. type: string format: date-time nullable: true code_sent: description: The last webhook code sent. type: string ItemProductsTerminateRequest: type: object description: ItemProductsTerminateRequest defines the request schema for `/item/products/terminate` properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' reason_code: $ref: '#/components/schemas/ProductsTerminateReasonCode' reason_note: type: string nullable: true maxLength: 512 description: Additional context or details about the reason for terminating products on the Item. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`. required: - access_token - reason_code ProductsTerminateReasonCode: type: string description: | The reason for terminating products. `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud using their real identity `FRAUD_FALSE_IDENTITY`: The connection was created using a false or stolen identity `FRAUD_ABUSE`: The end user is abusing the client's service or platform (for example, automation or excessive retries) through their connected account `FRAUD_OTHER`: Fraud-related, but not covered by the specific fraud categories above; `reason_note` should clarify `FRAUD_TRANSACTION`: Fraud occurred at the transaction level, such as an unauthorized transaction, card testing, chargeback, ACH return, or dispute `CONSUMER_LOAN_PAID_OFF`: The end user paid off their loan and no longer needs the product `CONSUMER_ACCOUNT_CLOSED`: The end user closed their account with the client and no longer needs the product `CONSUMER_CHARGE_OFF`: The end user's account has been charged off `CONSUMER_PAYMENT_METHOD_SWITCHED`: The end user switched to a different payment method and no longer needs the product `USER_OFFBOARDING`: The user is offboarding from the client's service or platform `DUPLICATE_ITEM`: This Item is a duplicate of another active Item for the same user `BILLING_TERMINATION`: The client's billing or subscription relationship with the end user has ended `OTHER`: None of the above; `reason_note` should clarify enum: - FRAUD_FIRST_PARTY - FRAUD_FALSE_IDENTITY - FRAUD_ABUSE - FRAUD_OTHER - FRAUD_TRANSACTION - CONSUMER_LOAN_PAID_OFF - CONSUMER_ACCOUNT_CLOSED - CONSUMER_CHARGE_OFF - CONSUMER_PAYMENT_METHOD_SWITCHED - USER_OFFBOARDING - DUPLICATE_ITEM - BILLING_TERMINATION - OTHER ItemProductsTerminateResponse: type: object additionalProperties: true description: ItemProductsTerminateResponse defines the response schema for `/item/products/terminate` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id OauthAPISecret: title: APISecret type: string description: Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body as either `secret` or `client_secret`. OAuthScope: title: OAuth Scope type: string description: |- 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` subject token type. `mcp:dashboard` allows access to the MCP dashboard server. example: user:read user:write exchange OAuthErrorCode: title: OAuth Error Code type: string enum: - invalid_request - invalid_client - invalid_grant - unauthorized_client - invalid_scope - unsupported_grant_type description: OAuth error code OAuthErrorDescription: title: OAuth Error Description type: string description: A human-readable description of the error OAuthErrorURI: title: OAuth Error URI type: string description: A URI identifying the specific error OAuthRefreshToken: title: OAuth Refresh Token type: string description: Refresh token for OAuth OAuthAccessToken: title: OAuth Access Token type: string description: Access token for OAuth OAuthAnyToken: title: OAuth Generic Token type: string description: An OAuth token of any type (`refresh_token`, `access_token`, etc) OAuthGrantType: type: string enum: - refresh_token - urn:ietf:params:oauth:grant-type:token-exchange - client_credentials description: |- The type of OAuth grant being requested: `client_credentials` allows exchanging a client id and client secret for a refresh and access token. `refresh_token` allows refreshing an access token using a refresh token. When using this grant type, only the `refresh_token` field is required (along with the `client_id` and `client_secret`). `urn:ietf:params:oauth:grant-type:token-exchange` allows exchanging a subject token for an OAuth token. When using this grant type, the `audience`, `subject_token` and `subject_token_type` fields are required. These grants are defined in their respective RFCs. `refresh_token` and `client_credentials` are defined in RFC 6749 and `urn:ietf:params:oauth:grant-type:token-exchange` is defined in RFC 8693. OAuthSubjectTokenType: type: string enum: - urn:plaid:params:tokens:user - urn:plaid:params:oauth:user-token - urn:plaid:params:credit:multi-user description: |- The type of the subject token. `urn:plaid:params:tokens:user` allows exchanging a Plaid-issued user token for an OAuth token. When using this token type, `audience` must be the same as the `client_id`. `subject_token` must be a Plaid-issued user token issued from the `/user/create` endpoint. `urn:plaid:params:oauth:user-token` allows exchanging a refresh token for an OAuth token to another `client_id`. The other `client_id` is provided in `audience`. `subject_token` must be an OAuth refresh token issued from the `/oauth/token` endpoint. `urn:plaid:params:credit:multi-user` allows exchanging a Plaid-issued user token for an OAuth token. When using this token type, `audience` may be a client id or a supported CRA partner URN. `audience` supports a comma-delimited list of clients. When multiple clients are specified in the `audience` a multi-party token is created which can be used by all parties in the audience in conjunction with their `client_id` and `client_secret`. OAuthTokenRequest: type: object required: - grant_type properties: grant_type: $ref: '#/components/schemas/OAuthGrantType' client_id: $ref: '#/components/schemas/APIClientID' client_secret: $ref: '#/components/schemas/OauthAPISecret' secret: $ref: '#/components/schemas/OauthAPISecret' scope: $ref: '#/components/schemas/OAuthScope' refresh_token: $ref: '#/components/schemas/OAuthRefreshToken' resource: type: string description: URI of the target resource server example: https://production.plaid.com audience: type: string description: |- Used when exchanging a token. The meaning depends on the `subject_token_type`: - For `urn:plaid:params:tokens:user`: Must be the same as the `client_id`. - For `urn:plaid:params:oauth:user-token`: The other `client_id` to exchange tokens to. - For `urn:plaid:params:credit:multi-user`: a `client_id` or one of the supported CRA partner URNs: `urn:plaid:params:cra-partner:experian`, `urn:plaid:params:cra-partner:fannie-mae`, or `urn:plaid:params:cra-partner:freddie-mac`. example: 68028ce48d2b0dec68747f6c subject_token: type: string description: Token representing the subject. The meaning depends on the `subject_token_type`. For `urn:plaid:params:tokens:user`, the `subject_token` must be a Plaid-issued user token from the `/user/create` endpoint. For `urn:plaid:params:oauth:user-token`, the `subject_token` must be an OAuth refresh token issued from the `/oauth/token` endpoint. example: user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d subject_token_type: $ref: '#/components/schemas/OAuthSubjectTokenType' description: OAuth token grant request. OAuthTokenResponse: type: object required: - access_token - refresh_token - token_type - expires_in - request_id additionalProperties: true properties: access_token: $ref: '#/components/schemas/OAuthAccessToken' refresh_token: $ref: '#/components/schemas/OAuthRefreshToken' token_type: type: string example: Bearer description: The type of the returned token. `Bearer` for OAuth access tokens. expires_in: type: integer example: 900 description: Time remaining in seconds before expiration. request_id: $ref: '#/components/schemas/RequestID' description: OAuth token grant success response OAuthIntrospectRequest: type: object required: - token properties: token: $ref: '#/components/schemas/OAuthAnyToken' client_id: $ref: '#/components/schemas/APIClientID' client_secret: $ref: '#/components/schemas/OauthAPISecret' secret: $ref: '#/components/schemas/OauthAPISecret' description: OAuth token introspect request. OAuthIntrospectResponse: type: object additionalProperties: true required: - active - request_id properties: active: type: boolean description: Boolean indicator of whether or not the presented token is currently active. A `true` value indicates that the token has been issued, has not been revoked, and is within the time window of validity. scope: $ref: '#/components/schemas/OAuthScope' client_id: $ref: '#/components/schemas/APIClientID' exp: type: integer description: Expiration time as UNIX timestamp since January 1 1970 UTC example: 1670000000 iat: type: integer description: Issued at time as UNIX timestamp since January 1 1970 UTC example: 1670000000 sub: type: string description: Subject of the token example: 68028ce48d2b0dec68747f6c aud: type: string description: Audience of the token example: https://production.plaid.com iss: type: string description: Issuer of the token example: https://production.plaid.com token_type: type: string description: Type of the token example: Bearer user_id: type: string description: User ID of the token example: wz666MBjYWTp2PDzzggYhM6oWWmBb request_id: $ref: '#/components/schemas/RequestID' description: OAuth token introspect response OAuthErrorResponse: type: object additionalProperties: true required: - request_id properties: error: $ref: '#/components/schemas/OAuthErrorCode' error_description: $ref: '#/components/schemas/OAuthErrorDescription' error_uri: $ref: '#/components/schemas/OAuthErrorURI' request_id: $ref: '#/components/schemas/RequestID' description: OAuth error response OAuthRevokeRequest: type: object required: - token properties: token: $ref: '#/components/schemas/OAuthAnyToken' client_id: $ref: '#/components/schemas/APIClientID' client_secret: $ref: '#/components/schemas/OauthAPISecret' secret: $ref: '#/components/schemas/OauthAPISecret' description: OAuth token revoke request OAuthRevokeResponse: type: object required: - request_id additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' description: Successful OAuth token revoke response GetRecipientsResponse: type: object description: GetRecipientsResponse defines the response schema for `/fdx/recipients` additionalProperties: true properties: recipients: type: array items: $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}` additionalProperties: true allOf: - $ref: '#/components/schemas/FDXRecipientMetadata' FDXConsentGrant: type: object additionalProperties: true description: An FDX consent grant. properties: id: type: string description: The persistent identifier of the consent grant status: $ref: '#/components/schemas/FDXConsentGrantStatus' createdTime: type: string format: date-time description: When the consent was initially granted updatedTime: type: string format: date-time description: When the consent grant was last updated expirationTime: type: string format: date-time description: When the consent grant will expire. Omitted when the grant has no expiration. parties: type: array description: Non-end-user parties participating in the consent grant (Data Recipient, Data Provider, Data Access Platform). items: $ref: '#/components/schemas/FDXParty' resources: type: array description: Permissioned resource entries. Omitted when there are no resources. items: $ref: '#/components/schemas/FDXConsentGrantResource' required: - id - status - createdTime - updatedTime - parties FDXConsentRevocation: type: object additionalProperties: true description: Request body for PUT /fdx/consents/{consentId}/revocation. properties: initiator: $ref: '#/components/schemas/FDXPartyType' reason: $ref: '#/components/schemas/FDXUpdateReason' otherReason: type: string description: Additional information or description of an `OTHER` reason updatedTime: type: string format: date-time description: When the revocation was effected on the initiator's side required: - initiator - reason FDXConsentGrantResource: type: object additionalProperties: true description: One permissioned resource on a consent grant. properties: resourceType: $ref: '#/components/schemas/FDXConsentResourceType' resourceId: type: string description: Identifier of the resource permissioned. dataClusters: type: array description: Names of clusters of data elements permissioned. items: $ref: '#/components/schemas/FDXDataCluster' required: - resourceType - resourceId - dataClusters FDXConsentRevocations: type: object additionalProperties: true description: The revocation history of a consent grant. Response body for GET /fdx/consents/{consentId}/revocation. properties: revocations: type: array description: Revocation records for the consent grant, most recent first. Empty when the grant has never been revoked. items: $ref: '#/components/schemas/FDXConsentRevocationRecord' required: - revocations FDXConsentRevocationRecord: type: object additionalProperties: true description: One revocation record on a consent grant, mirroring the FDX ConsentRevocation entity. properties: status: $ref: '#/components/schemas/FDXConsentGrantStatus' reason: $ref: '#/components/schemas/FDXUpdateReason' initiator: $ref: '#/components/schemas/FDXPartyType' updatedTime: type: string format: date-time description: When the consent grant was revoked required: - status - reason - initiator - updatedTime FDXConsentGrantStatus: title: FDX Consent Grant Status description: Current status of a consent grant. One of `ACTIVE`, `REVOKED`, `EXPIRED`. type: string enum: - ACTIVE - REVOKED - EXPIRED FDXConsentResourceType: title: FDX Consent Resource Type description: Type of resource permissioned on a consent grant. type: string enum: - ACCOUNT - CUSTOMER - DOCUMENT FDXDataCluster: title: FDX Data Cluster description: Name of a cluster of data elements permissioned by a consent grant. type: string enum: - ACCOUNT_BASIC - ACCOUNT_DETAILED - ACCOUNT_PAYMENTS - BILLS - CUSTOMER_CONTACT - CUSTOMER_PERSONAL - IMAGES - INVESTMENTS - NOTIFICATIONS - PAYMENT_SUPPORT - REWARDS - STATEMENTS - TAX - TRANSACTIONS - BALANCES - SCHEDULED_PAYMENTS FDXRecipientMetadata: title: FDXRecipientMetadata type: object description: Recipient metadata fields that are defined by FDX. properties: recipient_id: title: Recipient ID type: string maxLength: 256 description: The recipient identifier client_name: title: Client Name type: string maxLength: 256 description: The recipient name displayed by the Data Provider during the consent flow logo_uri: title: Logo URI type: string nullable: true description: Data Recipient Logo URL location third_party_legal_name: title: Third Party Legal Name type: string maxLength: 256 description: The legal name of the recipient required: - recipient_id - client_name - third_party_legal_name ExtendedRecipientMetadata: title: ExtendedRecipientMetadata description: Plaid and FDX-defined recipient metadata fields allOf: - $ref: '#/components/schemas/FDXRecipientMetadata' - type: object properties: category: title: Category description: The category that the recipient falls under type: string joined_date: title: Joined Date description: The date at which the recipient gained production access to Plaid type: string format: date example: "2021-07-15" connection_count: title: Connection Count description: The number of consumers connected to the recipient through this Data Partner type: integer required: - category - joined_date - connection_count FDXNotificationCategory: type: string title: Notification Category enum: - SECURITY - MAINTENANCE - FRAUD - CONSENT - NEW_DATA - TOKENIZED_ACCOUNT_NUMBER 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://datatracker.ietf.org/doc/html/rfc3339) type: string format: date-time example: "2021-07-15T14:46:41.375Z" FDXNotificationType: type: string title: Notification Type enum: - ACCOUNT_TAKEOVER - ADDRESS_CHANGED - BALANCE - CONSENT_EXPIRED - CONSENT_GRANTED - CONSENT_REVOKED - CONSENT_UPDATED - CUSTOM - MFA_TARGET_CHANGED - PHONE_CHANGED - PLANNED_OUTAGE - RISK - SERVICE - SUSPECTED_INCIDENT - TAN_ACTIVATED - TAN_CREATED - TAN_REVOKED - TAN_SUSPENDED description: Type of Notification FDXNotificationSeverity: type: string title: Notification Severity enum: - EMERGENCY - ALERT - WARNING - NOTICE - INFO description: Severity level of notification FDXNotificationPriority: type: string title: Notification Priority description: Priority of notification enum: - HIGH - MEDIUM - LOW FDXEventStatus: title: FDX Event Status description: Current status of indicated entity after reported event change. Not all statuses will be supported on all entity types by all data providers type: string enum: - ACTIVE - EXPIRED - REVOKED - SUSPENDED FDXUpdateReason: title: FDX Update Reason description: Reason for lifecycle event status change type: string enum: - BUSINESS_RULE - SECURITY_EVENT - USER_ACTION - OTHER FDXPartyType: title: Party Type description: Identifies the type of a party type: string enum: - DATA_ACCESS_PLATFORM - DATA_PROVIDER - DATA_RECIPIENT - INDIVIDUAL - MERCHANT - VENDOR FDXPartyRegistry: title: Party Registry description: The registry containing the party's registration with name and id type: string enum: - FDX - GLEIF - ICANN - PRIVATE FDXParty: title: Party entity description: FDX Participant - an entity or person that is a part of a FDX API transaction type: object required: - name - type properties: name: description: Human recognizable common name type: string type: $ref: '#/components/schemas/FDXPartyType' homeUri: description: URI for party, where an end user could learn more about the company or application involved in the data sharing chain type: string format: uri logoUri: description: URI for a logo asset to be displayed to the end user type: string format: uri registry: $ref: '#/components/schemas/FDXPartyRegistry' registeredEntityName: description: Registered name of party type: string registeredEntityId: description: Registered id of party type: string FDXNotificationPayloadIdType: type: string title: Notification Payload Id Type enum: - ACCOUNT - CUSTOMER - PARTY - MAINTENANCE - CONSENT description: Type of entity causing origination of a notification FDXInitiatorFiAttribute: title: Initiator Fi Attribute description: Initiator Fi Attribute type: object properties: name: type: string value: type: string FDXFiAttribute: title: FI Attribute entity description: Financial Institution provider-specific attribute type: object additionalProperties: false properties: name: type: string description: Name of attribute value: type: string description: Value of attribute required: - name - value FDXNotificationPayload: title: Notification Payload entity type: object description: Custom key-value pairs payload for a notification properties: id: type: string description: ID for the origination entity related to the notification idType: $ref: '#/components/schemas/FDXNotificationPayloadIdType' event: $ref: '#/components/schemas/FDXLifecycleEvent' FDXHateoasLinkAction: type: string enum: - GET - POST - PATCH - DELETE - PUT description: HTTP Method to use for the request FDXHateoasLink: title: HATEOAS Link description: REST application constraint (Hypermedia As The Engine Of Application State) required: - href type: object properties: href: type: string format: uri-reference description: URL to invoke the action on the resource example: https://api.fi.com/fdx/v4/accounts/12345 action: $ref: '#/components/schemas/FDXHateoasLinkAction' rel: description: Relation of this link to its containing entity, as defined by and with many example relation values at [IETF RFC5988](https://datatracker.ietf.org/doc/html/rfc5988) type: string types: type: array items: $ref: '#/components/schemas/FDXContentTypes' description: Content-types that can be used in the Accept header FDXContentTypes: title: Content Types description: Types of document formats. (Suggested values) type: string enum: - application/pdf - image/gif - image/jpeg - image/tiff - image/png - application/json FDXNotification: title: FDX Notification entity type: object description: Provides the base fields of a notification. Clients will read the `type` property to determine the expected notification payload. properties: notificationId: type: string description: Id of notification type: $ref: '#/components/schemas/FDXNotificationType' subtype: type: string description: An optional initiator-defined event subtype code or description if the event type needs to be further categorized or described. sentOn: $ref: '#/components/schemas/FDXTimestamp' category: $ref: '#/components/schemas/FDXNotificationCategory' severity: $ref: '#/components/schemas/FDXNotificationSeverity' priority: $ref: '#/components/schemas/FDXNotificationPriority' publisher: $ref: '#/components/schemas/FDXParty' subscriber: $ref: '#/components/schemas/FDXParty' notificationPayload: $ref: '#/components/schemas/FDXNotificationPayload' url: $ref: '#/components/schemas/FDXHateoasLink' required: - notificationId - type - sentOn - category - notificationPayload FDXLifecycleEvent: title: FDX Lifecycle Event entity description: Details of consent or payment network identifier or other entity's revocation request or other lifecycle status change event type: object properties: status: $ref: '#/components/schemas/FDXEventStatus' reason: $ref: '#/components/schemas/FDXUpdateReason' otherReason: description: Additional information or description of an `OTHER` reason type: string initiator: $ref: '#/components/schemas/FDXPartyType' updatedTime: $ref: '#/components/schemas/FDXTimestamp' SignalEvaluateRequest: title: SignalEvaluateRequest description: SignalEvaluateRequest defines the request schema for `/signal/evaluate` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: |- The Plaid `account_id` of the account that is the funding source for the proposed transaction. The `account_id` is returned in the `/accounts/get` endpoint as well as the [`onSuccess`](https://plaid.com/docs/link/ios/#link-ios-onsuccess-linkSuccess-metadata-accounts-id) callback metadata. 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. 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: type: number format: double description: The transaction amount, in USD (e.g. `102.05`) user_present: type: boolean description: '`true` if the end user is present while initiating the ACH transfer and the endpoint is being called; `false` otherwise (for example, when the ACH transfer is scheduled and the end user is not present, or you call this endpoint after the ACH transfer but before submitting the Nacha file for ACH processing). When using a Balance-only ruleset, this field is ignored. This field is not currently used as part of Signal Transaction Score evaluations, but may be used in the future.' nullable: true deprecated: true x-hidden-from-docs: true client_user_id: type: string description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. is_recurring: type: boolean description: Use `true` if the ACH transaction is a part of recurring schedule (for example, a monthly repayment); `false` otherwise. When using a Balance-only ruleset, this field is ignored. nullable: true default_payment_method: type: string description: |- The default ACH payment method to complete the transaction. When using a Balance-only ruleset, this field is ignored. `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. Possible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS` nullable: true user: $ref: '#/components/schemas/SignalUser' device: $ref: '#/components/schemas/SignalDevice' risk_profile_key: deprecated: true x-hidden-from-docs: true type: string description: Specifying `risk_profile_key` is deprecated. Please provide `ruleset` instead. nullable: true ruleset_key: type: string description: The key of the ruleset to use for evaluating this transaction. You can create a ruleset using the Plaid Dashboard, under [Signal->Rules](https://dashboard.plaid.com/signal/risk-profiles). If not provided, for all new customers as of October 15, 2025, the `default` ruleset will be used. For existing Signal Transaction Scores customers as of October 15, 2025, by default, no ruleset will be used if the `ruleset_key` is not provided. For more information, or to opt out of using rulesets, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/). nullable: true required: - access_token - account_id - client_transaction_id - amount SignalEvaluateResponse: title: SignalEvaluateResponse description: SignalEvaluateResponse defines the response schema for `/signal/evaluate` type: object additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' scores: $ref: '#/components/schemas/SignalScores' core_attributes: $ref: '#/components/schemas/SignalEvaluateCoreAttributes' risk_profile: $ref: '#/components/schemas/RiskProfile' ruleset: $ref: '#/components/schemas/Ruleset' warnings: type: array description: If bank information was not available to be used in the Signal Transaction Scores model, this array contains warnings describing why bank data is missing. If you want to receive an API error instead of results in the case of missing bank data, file a support ticket or contact your Plaid account manager. items: $ref: '#/components/schemas/SignalWarning' required: - request_id - scores - warnings SignalScheduleRequest: title: SignalScheduleRequest description: SignalScheduleRequest defines the request schema for `/signal/schedule` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' account_id: type: string description: |- The Plaid `account_id` of the account that is the funding source for the proposed transaction. The `account_id` is returned in the `/accounts/get` endpoint as well as the [`onSuccess`](https://plaid.com/docs/link/ios/#link-ios-onsuccess-linkSuccess-metadata-accounts-id) callback metadata. 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 transaction. For your convenience mapping your internal data, you could use your internal ID/identifier for this transaction. The max length for this field is 36 characters. minLength: 1 maxLength: 36 amount: type: number format: double description: The transaction amount, in USD (e.g. `102.05`) default_payment_method: $ref: '#/components/schemas/SignalScheduleDefaultPaymentMethod' required: - access_token - account_id - client_transaction_id - amount SignalScheduleResponse: title: SignalScheduleResponse description: SignalScheduleResponse defines the response schema for `/signal/schedule` type: object additionalProperties: true properties: optimal_date: type: string format: date description: |- The recommended optimal date to submit the debit entry, formatted in ISO 8601 "YYYY-MM-DD" (e.g., "2024-03-30"). The `optimal_date` is derived from the date with rank = 1 in the following recommendations array. NOTE: The `default_payment_method` field specified in the request will affect the recommendation, since we're accounting for debit settlement time. The debit scheduling evaluation starts from the day the /signal/schedule request is submitted (Day 0) or the next banking day if the submission day is not a banking day, and extends through the following five banking days (Day 1 to Day 5). If no date within this period is considered likely to result in a successful debit attempt, `null` will be returned for the `optimal_date`. nullable: true recommendations: type: array description: This array provides a date-by-date evaluation of debit submission recommendations within the five banking day evaluation period. Each object in the array represents a retry recommendation for a specific date. items: $ref: '#/components/schemas/SignalScheduleRecommendation' warnings: type: array description: If bank information was not available to be used in the Signal Transaction Scores model, this array contains warnings describing why bank data is missing. If you want to receive an API error instead of scores in the case of missing bank data, file a support ticket or contact your Plaid account manager. items: $ref: '#/components/schemas/SignalWarning' request_id: $ref: '#/components/schemas/RequestID' required: - optimal_date - recommendations - warnings - request_id SignalDecisionReportRequest: title: SignalDecisionReportRequest description: SignalDecisionReportRequest defines the request schema for `/signal/decision/report` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_transaction_id: type: string description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate` minLength: 1 maxLength: 36 initiated: type: boolean description: |- `true` if the ACH transaction was initiated, `false` otherwise. This field must be returned as a boolean. If formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error. days_funds_on_hold: type: integer description: |- The actual number of days (hold time) since the ACH debit transaction that you wait before making funds available to your customers. The holding time could affect the ACH return rate. For example, use 0 if you make funds available to your customers instantly or the same day following the debit transaction, or 1 if you make funds available the next day following the debit initialization. minimum: 0 nullable: true decision_outcome: $ref: '#/components/schemas/SignalDecisionOutcome' payment_method: $ref: '#/components/schemas/SignalPaymentMethod' amount_instantly_available: type: number format: double description: 'The amount (in USD) made available to your customers instantly following the debit transaction. It could be a partial amount of the requested transaction (example: 102.05).' nullable: true submitted_at: x-hidden-from-docs: true type: string format: date-time description: 'The date the ACH debit was submitted to the bank for processing (in ISO 8601 format: `YYYY-MM-DDTHH:mm:ssZ`). This field should correspond to the attempt initiated after the `/signal/schedule` call.' required: - client_transaction_id - initiated SignalDecisionReportResponse: title: SignalDecisionReportResponse description: SignalDecisionReportResponse defines the response schema for `/signal/decision/report` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SignalReturnReportRequest: title: SignalReturnReportRequest description: SignalReturnReportRequest defines the request schema for `/signal/return/report` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' client_transaction_id: type: string description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`. minLength: 1 maxLength: 36 return_code: type: string description: |- Must be a valid ACH return code (e.g. "R01") If formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error. returned_at: type: string format: date-time description: Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`). nullable: true required: - client_transaction_id - return_code SignalReturnReportResponse: title: SignalReturnReportResponse description: SignalReturnReportResponse defines the response schema for `/signal/return/report` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SignalPrepareRequest: title: SignalPrepareRequest description: SignalPrepareRequest defines the request schema for `/signal/prepare` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' access_token: $ref: '#/components/schemas/AccessToken' required: - access_token SignalPrepareResponse: title: SignalPrepareResponse description: SignalPrepareResponse defines the response schema for `/signal/prepare` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorSignalEvaluateRequest: title: ProcessorSignalEvaluateRequest description: ProcessorSignalEvaluateRequest defines the request schema for `/processor/signal/evaluate` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' client_transaction_id: type: string description: The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal data, you could use your internal ID/identifier for this transaction. The max length for this field is 36 characters. minLength: 1 maxLength: 36 amount: type: number format: double description: The transaction amount, in USD (e.g. `102.05`) user_present: type: boolean description: '`true` if the end user is present while initiating the ACH transfer and the endpoint is being called; `false` otherwise (for example, when the ACH transfer is scheduled and the end user is not present, or you call this endpoint after the ACH transfer but before submitting the Nacha file for ACH processing).' nullable: true client_user_id: type: string description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. is_recurring: type: boolean description: '**true** if the ACH transaction is a recurring transaction; **false** otherwise.' nullable: true default_payment_method: type: string description: |- 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. Possible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS` nullable: true user: $ref: '#/components/schemas/SignalUser' device: $ref: '#/components/schemas/SignalDevice' ruleset_key: type: string description: The key of the ruleset to use for this transaction. You can configure a ruleset using the Plaid Dashboard, under [Signal->Rules](https://dashboard.plaid.com/signal/risk-profiles). If not provided, for customers who began using Signal Transaction Scores before October 15, 2025, by default, no ruleset will be used; for customers who began using Signal Transaction Scores after that date, or for Balance customers, the `default` ruleset will be used. For more details, or to opt out of using a ruleset, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/). nullable: true required: - processor_token - client_transaction_id - amount ProcessorSignalEvaluateResponse: title: ProcessorSignalEvaluateResponse description: ProcessorSignalEvaluateResponse defines the response schema for `/processor/signal/evaluate` type: object additionalProperties: true properties: request_id: $ref: '#/components/schemas/RequestID' scores: $ref: '#/components/schemas/SignalScores' core_attributes: $ref: '#/components/schemas/SignalEvaluateCoreAttributes' ruleset: $ref: '#/components/schemas/Ruleset' warnings: type: array description: If bank information was not available to be used in the Signal Transaction Scores model, this array contains warnings describing why bank data is missing. If you want to receive an API error instead of scores in the case of missing bank data, file a support ticket or contact your Plaid account manager. items: $ref: '#/components/schemas/SignalWarning' required: - request_id - scores ProcessorSignalDecisionReportRequest: title: ProcessorSignalDecisionReportRequest description: ProcessorSignalDecisionReportRequest defines the request schema for `/processor/signal/decision/report` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' client_transaction_id: type: string description: Must be the same as the `client_transaction_id` supplied when calling `/processor/signal/evaluate` minLength: 1 maxLength: 36 initiated: type: boolean description: |- `true` if the ACH transaction was initiated, `false` otherwise. This field must be returned as a boolean. If formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error. days_funds_on_hold: type: integer description: |- The actual number of days (hold time) since the ACH debit transaction that you wait before making funds available to your customers. The holding time could affect the ACH return rate. For example, use 0 if you make funds available to your customers instantly or the same day following the debit transaction, or 1 if you make funds available the next day following the debit initialization. minimum: 0 nullable: true decision_outcome: $ref: '#/components/schemas/SignalDecisionOutcome' payment_method: $ref: '#/components/schemas/SignalPaymentMethod' amount_instantly_available: type: number format: double description: 'The amount (in USD) made available to your customers instantly following the debit transaction. It could be a partial amount of the requested transaction (example: 102.05).' nullable: true required: - processor_token - client_transaction_id - initiated ProcessorSignalDecisionReportResponse: title: ProcessorSignalDecisionReportResponse description: ProcessorSignalDecisionReportResponse defines the response schema for `/processor/signal/decision/report` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorSignalReturnReportRequest: title: ProcessorSignalReturnReportRequest description: ProcessorSignalReturnReportRequest defines the request schema for `/processor/signal/return/report` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' client_transaction_id: type: string description: Must be the same as the `client_transaction_id` supplied when calling `/processor/signal/evaluate` minLength: 1 maxLength: 36 return_code: type: string description: |- Must be a valid ACH return code (e.g. "R01") If formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error. returned_at: type: string format: date-time description: Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`). nullable: true required: - processor_token - client_transaction_id - return_code ProcessorSignalReturnReportResponse: title: ProcessorSignalReturnReportResponse description: ProcessorSignalReturnReportResponse defines the response schema for `/processor/signal/return/report` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProcessorSignalPrepareRequest: title: ProcessorSignalPrepareRequest description: ProcessorSignalPrepareRequest defines the request schema for `/processor/signal/prepare` type: object properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' processor_token: $ref: '#/components/schemas/ProcessorToken' required: - processor_token ProcessorSignalPrepareResponse: title: ProcessorSignalPrepareResponse description: ProcessorSignalPrepareResponse defines the response schema for `/processor/signal/prepare` additionalProperties: true type: object properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id SignalScores: title: SignalEvaluateScores description: Risk scoring details broken down by risk category. When using a Balance-only ruleset, this object will not be returned. type: object additionalProperties: true nullable: true properties: customer_initiated_return_risk: $ref: '#/components/schemas/CustomerInitiatedReturnRisk' bank_initiated_return_risk: $ref: '#/components/schemas/BankInitiatedReturnRisk' SignalScore: description: 'A score from 1-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood.' type: integer minimum: 1 maximum: 99 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, customers of financial institutions can dispute a transaction as unauthorized.' properties: score: $ref: '#/components/schemas/SignalScore' risk_tier: $ref: '#/components/schemas/CustomerInitiatedRiskTier' required: - risk_tier - score CustomerInitiatedRiskTier: x-hidden-from-docs: true deprecated: true description: | DEPRECATED. Use Signal Rules instead to transform the `score` into a useful action. A tier corresponding to the projected likelihood that the transaction, if initiated, will be subject to a return. In the `customer_initiated_return_risk` object, there are five risk tiers corresponding to the scores: 1: Predicted customer-initiated return incidence rate between 0.00% - 0.02% 2: Predicted customer-initiated return incidence rate between 0.02% - 0.05% 3: Predicted customer-initiated return incidence rate between 0.05% - 0.1% 4: Predicted customer-initiated return incidence rate between 0.1% - 0.5% 5: Predicted customer-initiated return incidence rate greater than 0.5% type: integer minimum: 1 maximum: 5 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.' properties: score: $ref: '#/components/schemas/SignalScore' risk_tier: $ref: '#/components/schemas/BankInitiatedRiskTier' required: - risk_tier - score BankInitiatedRiskTier: x-hidden-from-docs: true deprecated: true description: | DEPRECATED. Use Signal Rules instead to transform the `score` into a useful action. In the `bank_initiated_return_risk` object, there are eight risk tiers corresponding to the scores: 1: Predicted bank-initiated return incidence rate between 0.0% - 0.5% 2: Predicted bank-initiated return incidence rate between 0.5% - 1.5% 3: Predicted bank-initiated return incidence rate between 1.5% - 3% 4: Predicted bank-initiated return incidence rate between 3% - 5% 5: Predicted bank-initiated return incidence rate between 5% - 10% 6: Predicted bank-initiated return incidence rate between 10% - 15% 7: Predicted bank-initiated return incidence rate between 15% and 50% 8: Predicted bank-initiated return incidence rate greater than 50% type: integer minimum: 1 maximum: 8 SignalScheduleDefaultPaymentMethod: title: SignalScheduleDefaultPaymentMethod type: string enum: - SAME_DAY_ACH - STANDARD_ACH - MULTIPLE_PAYMENT_METHODS description: |- The payment method specified in the `default_payment_method` field directly impacts the timing recommendations provided by the API for submitting the debit entry to your processor or ODFI. If unspecified, defaults to `STANDARD_ACH`. `SAME_DAY_ACH`: Same Day ACH (as defined by Nacha). The API assumes the settlement will occur on the same business day if the `/signal/schedule` request is submitted by 6:00 PM UTC. Note: The actual cutoff time can vary depending on your payment processor or ODFI. Nacha has established three processing windows for Same Day ACH (Eastern Time): 10:30 AM, 2:45 PM, and 4:45 PM. `STANDARD_ACH`: Standard ACH (as defined by Nacha), typically settled one to three business days after submission. `MULTIPLE_PAYMENT_METHODS`: Indicates that there is no default debit rail or multiple payment methods are available, and the transaction could use any of them based on customer policy or availability. RecommendationString: title: RecommendationString type: string enum: - RECOMMENDED - NOT_RECOMMENDED - UNKNOWN description: The recommendation result for that date. SignalScheduleRecommendation: title: SignalScheduleRecommendation type: object additionalProperties: true description: Conveys information on if a retry is recommended on a given date properties: date: type: string format: date description: The specific date for submitting the debit entry, formatted in ISO 8601 (e.g., "2025-01-17"). recommendation: $ref: '#/components/schemas/RecommendationString' rank: type: integer description: The rank of the recommendation based on the likelihood of debit success, with 1 representing the most optimal date. Dates with `NOT_RECOMMENDED` or `UNKNOWN` will have rank `null`. nullable: true SignalWarning: title: SignalWarning type: object description: Conveys information about the errors causing missing or stale bank data used to construct the `/signal/evaluate` scores and response properties: warning_type: type: string description: A broad categorization of the warning. Safe for programmatic use. warning_code: type: string description: The warning code identifies a specific kind of warning that pertains to the error causing bank data to be missing. Safe for programmatic use. For more details on warning codes, please refer to Plaid standard error codes documentation. If you receive the `ITEM_LOGIN_REQUIRED` warning, we recommend re-authenticating your user by implementing Link's update mode. This will guide your user to fix their credentials, allowing Plaid to start fetching data again for future requests. warning_message: type: string description: A developer-friendly representation of the warning type. This may change over time and is not safe for programmatic use. SignalUser: title: SignalUser type: object description: Details about the end user initiating the transaction (i.e., the account holder). These fields are optional, but strongly recommended to increase the accuracy of results when using Signal Transaction Scores. When using a Balance-only ruleset, if the Signal Addendum has been signed, these fields are ignored; if the Addendum has not been signed, using these fields will result in an error. properties: name: $ref: '#/components/schemas/SignalPersonName' phone_number: type: string description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567"' nullable: true email_address: type: string description: The user's email address. nullable: true address: $ref: '#/components/schemas/SignalAddressData' SignalPersonName: title: SignalPersonName type: object description: The user's legal name nullable: true properties: prefix: type: string description: The user's name prefix (e.g. "Mr.") nullable: true given_name: type: string description: The user's given name. If the user has a one-word name, it should be provided in this field. nullable: true middle_name: type: string description: The user's middle name nullable: true family_name: type: string description: The user's family name / surname nullable: true suffix: type: string description: The user's name suffix (e.g. "II") nullable: true SignalAddressData: title: AddressData type: object nullable: true additionalProperties: true description: Data about the components comprising an address. properties: city: type: string description: The full city name region: type: string description: |- The region or state Example: `"NC"` nullable: true street: type: string description: |- The full street address Example: `"564 Main Street, APT 15"` postal_code: type: string description: The postal code nullable: true country: type: string description: The ISO 3166-1 alpha-2 country code nullable: true SignalDevice: title: SignalEvaluateDevice type: object description: Details about the end user's device. These fields are optional, but strongly recommended to increase the accuracy of results when using Signal Transaction Scores. When using a Balance-only Ruleset, these fields are ignored if the Signal Addendum has been signed; if it has not been signed, using these fields will result in an error. properties: ip_address: type: string description: The IP address of the device that initiated the transaction nullable: true user_agent: type: string description: The user agent of the device that initiated the transaction (e.g. "Mozilla/5.0") nullable: true RiskProfile: deprecated: true x-hidden-from-docs: true title: SignalEvaluateRiskProfile type: object description: RiskProfile is deprecated, use `ruleset` instead. nullable: true properties: key: type: string description: The key of the risk profile used for this transaction. outcome: type: string description: Legacy method of inspecting the result of the ruleset. New integrations should simply use the "result" property instead. This value will be omitted if you do not have a live existing integration with rules using this field. Ruleset: title: SignalEvaluateRuleset type: object description: Details about the transaction result after evaluation by the requested Ruleset. If a `ruleset_key` is not provided, for customers who began using Signal Transaction Scores before October 15, 2025, by default, this field will be omitted. To learn more, see [Signal Rules](https://plaid.com/docs/signal/signal-rules/). nullable: true additionalProperties: true properties: ruleset_key: type: string description: The key of the Ruleset used for this transaction. result: $ref: '#/components/schemas/RuleResult' triggered_rule_details: $ref: '#/components/schemas/RuleDetails' outcome: deprecated: true type: string description: The evaluated outcome for this transaction. This field is deprecated, use `result` or `triggered_rule_details.custom_action_key` instead. x-hidden-from-docs: true required: - result RuleDetails: title: RuleDetails type: object description: Rules are run in numerical order. The first rule with a logic match is triggered. These are the details of that rule. nullable: true additionalProperties: true properties: internal_note: type: string description: An optional message attached to the triggered rule, defined within the Dashboard, for your internal use. Useful for debugging, such as "Account appears to be closed." custom_action_key: type: string description: A string key, defined within the Dashboard, used to trigger programmatic behavior for a certain result. For instance, you could optionally choose to define a "3-day-hold" `custom_action_key` for an ACCEPT result. RuleResult: type: string enum: - ACCEPT - REROUTE - REVIEW description: |- The result of the rule that was triggered for this transaction. `ACCEPT`: Accept the transaction for processing. `REROUTE`: Reroute the transaction to a different payment method, as this transaction is too risky. `REVIEW`: Review the transaction before proceeding. SignalDecisionOutcome: type: string enum: - APPROVE - REVIEW - REJECT - TAKE_OTHER_RISK_MEASURES - NOT_EVALUATED description: | The payment decision from the risk assessment. `APPROVE`: approve the transaction without requiring further actions from your customers. For example, use this field if you are placing a standard hold for all the approved transactions before making funds available to your customers. You should also use this field if you decide to accelerate the fund availability for your customers. `REVIEW`: the transaction requires manual review `REJECT`: reject the transaction `TAKE_OTHER_RISK_MEASURES`: for example, placing a longer hold on funds than those approved transactions or introducing customer frictions such as step-up verification/authentication `NOT_EVALUATED`: if only logging the results without using them nullable: true SignalPaymentMethod: type: string enum: - SAME_DAY_ACH - NEXT_DAY_ACH - STANDARD_ACH - MULTIPLE_PAYMENT_METHODS - null x-override-enum-values-shown: - SAME_DAY_ACH - STANDARD_ACH - MULTIPLE_PAYMENT_METHODS description: | The payment method to complete the transaction after the risk assessment. It may be different from the default payment method. `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. nullable: true SignalEvaluateCoreAttributes: title: SignalEvaluateCoreAttributes type: object description: |- The core attributes object contains additional data that can be used to assess the ACH return risk. If using a Balance-only ruleset, only `available_balance` and `current_balance` will be returned as core attributes. If using a Signal Transaction Scores ruleset, over 80 core attributes will be returned. Examples of attributes include: `available_balance` and `current_balance`: The balance in the ACH transaction funding account `days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid `plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days `plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days `total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid `is_savings_or_money_market_account`: Indicates whether the ACH transaction funding account is a savings/money market account For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact sales or your Plaid account manager. properties: unauthorized_transactions_count_7d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 7 days from the account that will be debited. nullable: true unauthorized_transactions_count_30d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 30 days from the account that will be debited. nullable: true unauthorized_transactions_count_60d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 60 days from the account that will be debited. nullable: true unauthorized_transactions_count_90d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 90 days from the account that will be debited. nullable: true nsf_overdraft_transactions_count_7d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 7 days from the account that will be debited. nullable: true nsf_overdraft_transactions_count_30d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 30 days from the account that will be debited. nullable: true nsf_overdraft_transactions_count_60d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 60 days from the account that will be debited. nullable: true nsf_overdraft_transactions_count_90d: type: integer description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 90 days from the account that will be debited. nullable: true days_since_first_plaid_connection: type: integer description: The number of days since the first time the Item was connected to an application via Plaid nullable: true plaid_connections_count_7d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 7 days nullable: true plaid_connections_count_30d: type: integer description: The number of times the Item has been connected to applications via Plaid over the past 30 days nullable: true total_plaid_connections_count: type: integer description: The total number of times the Item has been connected to applications via Plaid nullable: true is_savings_or_money_market_account: type: boolean description: Indicates if the ACH transaction funding account is a savings/money market account nullable: true total_credit_transactions_amount_10d: type: number format: double description: The total credit (inflow) transaction amount over the past 10 days from the account that will be debited nullable: true total_debit_transactions_amount_10d: type: number format: double description: The total debit (outflow) transaction amount over the past 10 days from the account that will be debited nullable: true p50_credit_transactions_amount_28d: type: number format: double description: The 50th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited nullable: true p50_debit_transactions_amount_28d: type: number format: double description: The 50th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited nullable: true p95_credit_transactions_amount_28d: type: number format: double description: The 95th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited nullable: true p95_debit_transactions_amount_28d: type: number format: double description: The 95th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited nullable: true days_with_negative_balance_count_90d: type: integer description: The number of days within the past 90 days when the account that will be debited had a negative end-of-day available balance nullable: true p90_eod_balance_30d: type: number format: double description: The 90th percentile of the end-of-day available balance over the past 30 days of the account that will be debited nullable: true p90_eod_balance_60d: type: number format: double description: The 90th percentile of the end-of-day available balance over the past 60 days of the account that will be debited nullable: true p90_eod_balance_90d: type: number format: double description: The 90th percentile of the end-of-day available balance over the past 90 days of the account that will be debited nullable: true p10_eod_balance_30d: type: number format: double description: The 10th percentile of the end-of-day available balance over the past 30 days of the account that will be debited nullable: true p10_eod_balance_60d: type: number format: double description: The 10th percentile of the end-of-day available balance over the past 60 days of the account that will be debited nullable: true p10_eod_balance_90d: type: number format: double description: The 10th percentile of the end-of-day available balance over the past 90 days of the account that will be debited nullable: true available_balance: type: number format: double description: Available balance, as of the `balance_last_updated` time. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account. nullable: true current_balance: type: number format: double description: Current balance, as of the `balance_last_updated` time. The current balance is the total amount of funds in the account. nullable: true balance_last_updated: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the balance for the given account has been updated. nullable: true phone_change_count_28d: type: integer description: The number of times the account's phone numbers on file have changed over the past 28 days nullable: true phone_change_count_90d: type: integer description: The number of times the account's phone numbers on file have changed over the past 90 days nullable: true email_change_count_28d: type: integer description: The number of times the account's email addresses on file have changed over the past 28 days nullable: true email_change_count_90d: type: integer description: The number of times the account's email addresses on file have changed over the past 90 days nullable: true address_change_count_28d: type: integer description: The number of times the account's addresses on file have changed over the past 28 days nullable: true address_change_count_90d: type: integer description: The number of times the account's addresses on file have changed over the past 90 days nullable: true plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_3d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_7d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days nullable: true failed_plaid_non_oauth_authentication_attempts_count_30d: type: integer description: The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days nullable: true debit_transactions_count_10d: type: integer description: The total number of debit (outflow) transactions over the past 10 days from the account that will be debited nullable: true credit_transactions_count_10d: type: integer description: The total number of credit (inflow) transactions over the past 10 days from the account that will be debited nullable: true debit_transactions_count_30d: type: integer description: The total number of debit (outflow) transactions over the past 30 days from the account that will be debited nullable: true credit_transactions_count_30d: type: integer description: The total number of credit (inflow) transactions over the past 30 days from the account that will be debited nullable: true debit_transactions_count_60d: type: integer description: The total number of debit (outflow) transactions over the past 60 days from the account that will be debited nullable: true credit_transactions_count_60d: type: integer description: The total number of credit (inflow) transactions over the past 60 days from the account that will be debited nullable: true debit_transactions_count_90d: type: integer description: The total number of debit (outflow) transactions over the past 90 days from the account that will be debited nullable: true credit_transactions_count_90d: type: integer description: The total number of credit (inflow) transactions over the past 90 days from the account that will be debited nullable: true total_debit_transactions_amount_30d: type: number format: double description: The total debit (outflow) transaction amount over the past 30 days from the account that will be debited nullable: true total_credit_transactions_amount_30d: type: number format: double description: The total credit (inflow) transaction amount over the past 30 days from the account that will be debited nullable: true total_debit_transactions_amount_60d: type: number format: double description: The total debit (outflow) transaction amount over the past 60 days from the account that will be debited nullable: true total_credit_transactions_amount_60d: type: number format: double description: The total credit (inflow) transaction amount over the past 60 days from the account that will be debited nullable: true total_debit_transactions_amount_90d: type: number format: double description: The total debit (outflow) transaction amount over the past 90 days from the account that will be debited nullable: true total_credit_transactions_amount_90d: type: number format: double description: The total credit (inflow) transaction amount over the past 90 days from the account that will be debited nullable: true p50_eod_balance_30d: type: number format: double description: The 50th percentile of the end-of-day available balance over the past 30 days of the account that will be debited nullable: true p50_eod_balance_60d: type: number format: double description: The 50th percentile of the end-of-day available balance over the past 60 days of the account that will be debited nullable: true p50_eod_balance_90d: type: number format: double description: The 50th percentile of the end-of-day available balance over the past 90 days of the account that will be debited nullable: true p50_eod_balance_31d_to_60d: type: number format: double description: The 50th percentile of the end-of-day available balance between day 31 and day 60 over the past 60 days of the account that will be debited nullable: true 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 90 days of the account that will be debited nullable: true p90_eod_balance_31d_to_60d: type: number format: double description: The 90th percentile of the end-of-day available balance between day 31 and day 60 over the past 60 days of the account that will be debited nullable: true 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 90 days of the account that will be debited nullable: true p10_eod_balance_31d_to_60d: type: number format: double description: The 10th percentile of the end-of-day available balance between day 31 and day 60 over the past 60 days of the account that will be debited nullable: true 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 90 days of the account that will be debited nullable: true transactions_last_updated: type: string format: date-time description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the transactions for the given account have been updated. nullable: true is_account_closed: type: boolean description: Indicates if the account that will be debited is closed nullable: true is_account_frozen_or_restricted: type: boolean description: Indicates if the account that will be debited is either frozen or restricted nullable: true distinct_ip_addresses_count_3d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days nullable: true distinct_ip_addresses_count_7d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days nullable: true distinct_ip_addresses_count_30d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 30 days (max 100) nullable: true distinct_ip_addresses_count_90d: type: integer description: The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 90 days (max 100) nullable: true distinct_user_agents_count_3d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days nullable: true distinct_user_agents_count_7d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days nullable: true distinct_user_agents_count_30d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days nullable: true distinct_user_agents_count_90d: type: integer description: The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days nullable: true distinct_ssl_tls_connection_sessions_count_3d: type: integer description: The number of distinct SSL/TLS connection sessions linked to the same bank account during Plaid authentication in the last 3 days nullable: true distinct_ssl_tls_connection_sessions_count_7d: type: integer description: The number of distinct SSL/TLS connection sessions linked to the same bank account during Plaid authentication in the last 7 days nullable: true distinct_ssl_tls_connection_sessions_count_30d: type: integer description: The number of distinct SSL/TLS connection sessions linked to the same bank account during Plaid authentication in the last 30 days nullable: true distinct_ssl_tls_connection_sessions_count_90d: type: integer description: The number of distinct SSL/TLS connection sessions linked to the same bank account during Plaid authentication in the last 90 days nullable: true days_since_account_opening: type: integer description: The number of days since the bank account was opened, as reported by the financial institution nullable: true balance_to_transaction_amount_ratio: type: number format: double description: Taking `available_or_current_balance` and dividing it by the transaction amount. Useful to say "10% buffer", for example. This is a convenience function to build Signal Rules upon. nullable: true StatementsListRequest: title: StatementsListRequest type: object description: StatementsListRequest defines the request schema for `/statements/list` properties: access_token: $ref: '#/components/schemas/AccessToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' required: - access_token StatementsListResponse: title: StatementsListResponse type: object additionalProperties: true description: StatementsListResponse defines the response schema for `/statements/list` properties: accounts: type: array items: $ref: '#/components/schemas/StatementsAccount' institution_id: description: The Plaid Institution ID associated with the Item. type: string institution_name: description: The name of the institution associated with the Item. type: string item_id: description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive. type: string request_id: $ref: '#/components/schemas/RequestID' required: - accounts - institution_id - institution_name - item_id - request_id StatementsAccount: title: StatementsAccount type: object additionalProperties: true description: Account associated with the Item. properties: account_id: description: Plaid's unique identifier for the account. type: string account_mask: 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. type: string account_name: description: The name of the account, either assigned by the user or by the financial institution itself. type: string account_official_name: description: The official name of the account as given by the financial institution. type: string account_subtype: description: The subtype of the account. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). type: string account_type: description: The type of account. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema). type: string statements: description: The list of statements' metadata associated with this account. type: array items: $ref: '#/components/schemas/StatementsStatement' required: - account_id - account_name - account_official_name - account_subtype - account_type - account_mask - statements StatementsStatement: title: StatementsStatement type: object additionalProperties: true description: A statement's metadata associated with an account properties: statement_id: description: Plaid's unique identifier for the statement. type: string date_posted: description: Date when the statement was posted by the FI, if known type: string format: date nullable: true month: description: 'Month of the year. Possible values: 1 through 12 (January through December).' type: integer year: description: The year of the statement, e.g. 2024. type: integer minimum: 2010 required: - statement_id - month - year StatementsDownloadRequest: title: StatementsDownloadRequest type: object description: StatementsDownloadRequest defines the request schema for `/statements/download` properties: access_token: $ref: '#/components/schemas/AccessToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' statement_id: description: Plaid's unique identifier for the statement. type: string required: - access_token - statement_id StatementsDownloadResponse: title: StatementsDownloadResponse format: binary type: string description: StatementsDownloadResponse defines the response schema for `/statements/download`. The response will contain a `Plaid-Content-Hash` header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system. StatementsRefreshRequest: title: StatementsRefreshRequest type: object description: StatementsRefreshRequest defines the request schema for `/statements/refresh` properties: access_token: $ref: '#/components/schemas/AccessToken' client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' start_date: description: The start date for statements, in "YYYY-MM-DD" format, e.g. "2023-08-30". To determine whether a statement falls within the specified date range, Plaid will use the statement posted date. The statement posted date is typically either the last day of the statement period, or the following day. type: string format: date end_date: description: The end date for statements, in "YYYY-MM-DD" format, e.g. "2023-10-30". You can request up to two years of data. To determine whether a statement falls within the specified date range, Plaid will use the statement posted date. The statement posted date is typically either the last day of the statement period, or the following day. type: string format: date required: - access_token - start_date - end_date StatementsRefreshResponse: title: StatementsRefreshResponse type: object additionalProperties: true description: StatementsRefreshResponse defines the response schema for `/statements/refresh` properties: request_id: $ref: '#/components/schemas/RequestID' required: - request_id ProtectComputeRequest: type: object description: Request object for /protect/compute properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' model: type: string maxLength: 128 description: 'The name of the Trust Index model to use for scoring, with a major.minor version suffix. Examples: `ti-link-session-2.0` (link-session fraud), `ti-identity-2.0` (identity fraud), `cash-advance-onboarding-1.0` (first cash advance), and `cash-advance-ongoing-1.0` (subsequent cash advances). The model specified may require certain fields within `model_inputs`; for example, `ti-link-session-2.0` requires the `link` field. Cash-advance models do not use `model_inputs`.' user: $ref: '#/components/schemas/ProtectUser' model_inputs: $ref: '#/components/schemas/ProtectModelInputs' required: - model - user ProtectModelInputs: type: object nullable: true description: Inputs required by certain Trust Index models. The `link` field is required for link-session models. Other model families (including cash-advance) are identified by `user` alone and do not use this object. properties: link: $ref: '#/components/schemas/ProtectLinkModelInputs' sdk: $ref: '#/components/schemas/ProtectSDKModelInputs' ProtectLinkModelInputs: type: object nullable: true description: Inputs for link session Trust Index models. properties: link_session_id: type: string maxLength: 128 description: A unique identifier for the Link session, used to compute a Trust Index score and fraud attributes. require_extracted_data: type: boolean description: Controls whether transaction extraction must be complete before scoring. If `false` (default), returns a score whether or not transaction extraction is complete, as long as the link session is finished; if data has been extracted it will still be included in the score computation. If `true`, returns HTTP 400 with `error_type` = `INVALID_REQUEST` and `error_code` = `FAILED_PRECONDITION` if extraction is still in progress; once data is ready a score will be returned normally. required: - link_session_id ProtectSDKModelInputs: type: object nullable: true description: Inputs for Protect SDK Trust Index models. properties: sdk_session_id: type: string maxLength: 128 description: A unique identifier for the Protect SDK session, used to compute a Trust Index score and fraud attributes. required: - sdk_session_id ProtectComputeResponse: type: object additionalProperties: true description: Response object for /protect/compute properties: score: type: integer nullable: true description: The Trust Index score, on a 0-100 scale where higher values indicate lower risk. model: type: string description: The versioned name of the Trust Index model used for scoring. attributes: $ref: '#/components/schemas/FraudAttributes' subscores: $ref: '#/components/schemas/ProtectComputeSubscores' 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: - request_id ProtectComputeSubscores: type: object nullable: true additionalProperties: true description: Per-bucket subscores returned alongside the overall Trust Index score. For cash-advance models, each key maps to an amount-bucket subscore (0-100); higher values indicate lower fraud risk. Only buckets that were scored are included in the response. properties: cash_advance_bucket_0_25: type: integer nullable: true description: Subscore for cash advance amounts in the range $0-$25. cash_advance_bucket_25_50: type: integer nullable: true description: Subscore for cash advance amounts in the range $25-$50. cash_advance_bucket_50_100: type: integer nullable: true description: Subscore for cash advance amounts in the range $50-$100. cash_advance_bucket_100_200: type: integer nullable: true description: Subscore for cash advance amounts in the range $100-$200. cash_advance_bucket_200_300: type: integer nullable: true description: Subscore for cash advance amounts in the range $200-$300. cash_advance_bucket_300_400: type: integer nullable: true description: Subscore for cash advance amounts in the range $300-$400. cash_advance_bucket_400_500: type: integer nullable: true description: Subscore for cash advance amounts in the range $400-$500. ProtectAPIToken: title: ProtectAPIToken type: string description: The customer's Plaid Protect API Token. The `protect_api_token` is required and may be provided either in the `PROTECT-API-TOKEN` header or as part of a request body. ProtectClientSessionStartData: title: ProtectClientSessionStartData type: string description: The initial data collected by the Protect SDK when a Protect client session is started. ProtectReportCreateRequest: type: object description: |- Request object for `/protect/report/create`. You must provide either `user_id`, or an `incident_event` with at least one supported identifier: `link_session_id`, `idv_session_id`, `protect_event_id`, `signal_client_transaction_id`, or `access_token`. Context fields such as `internal_reference`, `time`, `amount`, and `bank_account` do not satisfy this identifier requirement. properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: type: string description: The Plaid User ID associated with the report. incident_event: $ref: '#/components/schemas/ProtectIncidentEvent' report_confidence: $ref: '#/components/schemas/ProtectReportConfidence' report_type: $ref: '#/components/schemas/ProtectReportType' report_source: $ref: '#/components/schemas/ProtectReportSource' bank_account: $ref: '#/components/schemas/ProtectBankAccount' ach_return_code: type: string nullable: true description: Must be a valid ACH return code (e.g. `R01`), required if `report_type` is `ACH_RETURN`. notes: type: string nullable: true description: Additional context or details about the report, required if `report_type` is `OTHER`. required: - report_confidence - report_type - report_source ProtectReportCreateResponse: type: object additionalProperties: true description: Response object for /protect/report/create properties: report_id: type: string description: A unique identifier representing the submitted report. request_id: $ref: '#/components/schemas/RequestID' required: - report_id - request_id ProtectUser: type: object additionalProperties: true description: Represents an end user for `/protect/compute` requests. properties: user_id: type: string description: The Plaid User ID returned from a previous call to `/user/create`. This or `client_user_id` can be provided, not both. client_user_id: type: string description: A unique ID representing the end user, previously passed to `/user/create`. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. TrustIndex: type: object nullable: true additionalProperties: true description: Represents a calculated Trust Index Score. properties: score: type: integer description: The overall trust index score. model: type: string description: The versioned name of the Trust Index model used for scoring. subscores: $ref: '#/components/schemas/TrustIndexSubscores' required: - score - model - subscores TrustIndexSubscores: type: object nullable: true additionalProperties: true description: Contains sub-score metadata. properties: device_and_connection: $ref: '#/components/schemas/TrustIndexSubscore' bank_account_insights: $ref: '#/components/schemas/TrustIndexSubscore' TrustIndexSubscore: type: object nullable: true additionalProperties: true description: Represents Trust Index Subscore. properties: score: type: integer description: The subscore score. required: - score ProtectUserInsightsGetRequest: type: object description: Request object for /protect/user/insights/get properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' user_id: type: string description: The Plaid User ID. Either `user_id` or `client_user_id` must be provided. client_user_id: type: string description: A unique ID representing the end user. Either `user_id` or `client_user_id` must be provided. ProtectReport: type: object additionalProperties: true description: A Protect report associated with a user. Contains details about documented incidents, which may include fraud, investigation outcomes, or other risk events. properties: report_id: type: string description: A unique identifier representing the submitted report. incident_event: $ref: '#/components/schemas/ProtectIncidentEventResponse' report_confidence: $ref: '#/components/schemas/ProtectReportConfidence' report_type: $ref: '#/components/schemas/ProtectReportType' report_source: $ref: '#/components/schemas/ProtectReportSource' bank_account: $ref: '#/components/schemas/ProtectBankAccount' ach_return_code: type: string nullable: true description: ACH return code if the report type is `ACH_RETURN` (e.g. `R01`). notes: type: string nullable: true description: Additional context or details about the report. created_at: type: string format: date-time description: The timestamp when the report was created, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z'). required: - report_id - incident_event - report_confidence - report_type - report_source - bank_account - ach_return_code - notes - created_at ProtectUserInsightsGetResponse: type: object additionalProperties: true description: Response object for /protect/user/insights/get properties: user_id: type: string description: The Plaid User ID. If a `client_user_id` was provided in the request instead of a `user_id`, a new `user_id` will be generated if one doesn't already exist for that `client_user_id`. latest_scored_event: $ref: '#/components/schemas/LatestScoredEvent' reports: type: array description: List of Protect reports associated with this user, limited to the most recent 100 reports in reverse chronological order (newest first). items: $ref: '#/components/schemas/ProtectReport' request_id: $ref: '#/components/schemas/RequestID' required: - user_id - latest_scored_event - request_id ProtectEventSendRequest: type: object description: Request object for /protect/event/send properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' timestamp: type: string format: date-time description: Timestamp of the event. Might be the current moment or a time in the past. In [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` event: $ref: '#/components/schemas/ProtectEvent' protect_session_id: type: string description: Protect Session ID should be provided for any event correlated with a frontend user session started via the Protect SDK. request_trust_index: type: boolean description: Whether this event should be scored with Trust Index. The default is false. required: - event ProtectEventSendResponse: type: object additionalProperties: true description: Response object for /protect/event/send properties: event_id: type: string description: The id of the recorded event. trust_index: $ref: '#/components/schemas/TrustIndex' fraud_attributes: $ref: '#/components/schemas/FraudAttributes' request_id: $ref: '#/components/schemas/RequestID' required: - event_id - request_id ProtectEventGetRequest: type: object description: Request object for /protect/event/get properties: client_id: $ref: '#/components/schemas/APIClientID' secret: $ref: '#/components/schemas/APISecret' event_id: type: string description: The event ID to retrieve information for. required: - event_id ProtectEventGetResponse: type: object additionalProperties: true description: Response object for /protect/event/get properties: event_id: type: string description: The event ID. timestamp: type: string format: date-time description: The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` trust_index: $ref: '#/components/schemas/TrustIndex' fraud_attributes: $ref: '#/components/schemas/FraudAttributes' request_id: $ref: '#/components/schemas/RequestID' required: - event_id - timestamp - request_id LatestScoredEvent: type: object nullable: true additionalProperties: true description: The latest scored event for a user. properties: event_id: type: string description: The event ID. timestamp: type: string format: date-time description: The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"` event_type: type: string description: The type of event. trust_index: $ref: '#/components/schemas/TrustIndex' fraud_attributes: $ref: '#/components/schemas/FraudAttributes' required: - event_id - timestamp - trust_index - fraud_attributes ProtectEvent: type: object nullable: true additionalProperties: true description: Event data for Protect events. properties: timestamp: type: string format: date-time 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 Protect SDK. app_visit: $ref: '#/components/schemas/ProtectAppVisitEvent' user_sign_in: $ref: '#/components/schemas/ProtectUserSignInEvent' user_sign_up: $ref: '#/components/schemas/ProtectUserSignUpEvent' required: - timestamp ProtectAppVisitEvent: type: object nullable: true additionalProperties: true description: This event type represents a user visiting the client application. ProtectUserSignInEvent: type: object nullable: true additionalProperties: true description: This event type represents a user signing in to the application. ProtectUserSignUpEvent: type: object nullable: true additionalProperties: true description: This event type represents a user signing up for the application. FraudAttributes: type: object nullable: true additionalProperties: true description: Event fraud attributes as an arbitrary set of key-value pairs. The set of attributes returned varies by model. ProtectIncidentEvent: nullable: true type: object additionalProperties: true description: Details about the incident event. properties: protect_event_id: type: string nullable: true description: A globally unique identifier representing a Protect event that may be associated with this incident. link_session_id: type: string nullable: true description: A unique identifier for a Link session that may be associated with this incident. idv_session_id: type: string nullable: true description: A unique identifier for an Identity Verification session that may be associated with this incident. signal_client_transaction_id: type: string nullable: true description: The unique ID used to refer to a Signal transaction evaluation that may be associated with this incident. internal_reference: type: string nullable: true description: A unique ID representing the incident in your system. Personally identifiable information, such as an email address or phone number, should not be used in this field. time: type: string format: date-time nullable: true description: The timestamp when the incident occurred, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z'). amount: $ref: '#/components/schemas/ProtectIncidentAmount' access_token: description: An access token associated with the Item related to this incident. allOf: - $ref: '#/components/schemas/AccessTokenNullable' item_id: type: string nullable: true description: An `item_id` associated with the Item related to this incident. To identify an Item when creating a report, provide `access_token`. ProtectIncidentEventResponse: nullable: true type: object additionalProperties: true description: Details about the incident event. properties: protect_event_id: type: string nullable: true description: A globally unique identifier representing a Protect event that may be associated with this incident. link_session_id: type: string nullable: true description: A unique identifier for a Link session that may be associated with this incident. idv_session_id: type: string nullable: true description: A unique identifier for an Identity Verification session that may be associated with this incident. signal_client_transaction_id: type: string nullable: true description: The unique ID used to refer to a Signal transaction evaluation that may be associated with this incident. internal_reference: type: string nullable: true description: A unique ID representing the incident in your system. Personally identifiable information, such as an email address or phone number, should not be used in this field. time: type: string format: date-time nullable: true description: The timestamp when the incident occurred, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z'). amount: $ref: '#/components/schemas/ProtectIncidentAmount' item_id: type: string nullable: true description: The `item_id` associated with the Item related to this incident. ProtectIncidentAmount: type: object nullable: true additionalProperties: true description: The monetary amount associated with the incident. properties: iso_currency_code: type: string nullable: true default: USD description: The ISO-4217 currency code of the incident amount. Defaults to `USD` if not specified. value: type: number format: double description: The monetary value of the incident amount. required: - value ProtectReportConfidence: type: string enum: - CONFIRMED - SUSPECTED description: |- The confidence level of the incident report. `CONFIRMED` indicates the incident has been verified and definitively occurred. `SUSPECTED` indicates the incident is believed to have occurred but has not been fully verified. ProtectReportType: type: string enum: - USER_ACCOUNT_TAKEOVER - FALSE_IDENTITY - STOLEN_IDENTITY - SYNTHETIC_IDENTITY - MULTIPLE_USER_ACCOUNTS - SCAM_VICTIM - BANK_ACCOUNT_TAKEOVER - BANK_CONNECTION_REVOKED - CARD_TESTING - UNAUTHORIZED_TRANSACTION - CARD_CHARGEBACK - ACH_RETURN - DISPUTE - FIRST_PARTY_FRAUD - MISSED_PAYMENT - LOAN_STACKING - MONEY_LAUNDERING - NO_FRAUD - OTHER description: |- The type of incident being reported. `USER_ACCOUNT_TAKEOVER` - Indicates that a legitimate user's account was accessed or controlled by an unauthorized party. `FALSE_IDENTITY` - Indicates that a user created an account using stolen or fabricated identity information. `STOLEN_IDENTITY` - Indicates that a user created an account using identity information belonging to a real individual without their consent. `SYNTHETIC_IDENTITY` - Indicates that a user created an account using a fake or partially fabricated identity (e.g., combining real and fake information to form a new persona). `MULTIPLE_USER_ACCOUNTS` - Indicates that the same individual is operating multiple accounts in violation of policy. `SCAM_VICTIM` - Indicates that the user was tricked into authorizing or sending funds as part of a scam. `BANK_ACCOUNT_TAKEOVER` - Indicates that a user's linked bank account was accessed or misused by an unauthorized party. `BANK_CONNECTION_REVOKED` - Indicates that a linked bank account connection was revoked by the financial institution, often due to suspected misuse, fraud, or security concerns. `CARD_TESTING` - Indicates that a card was used in small or repeated transactions to test its validity. `UNAUTHORIZED_TRANSACTION` - Indicates that a transaction was made without the user's consent or authorization. `CARD_CHARGEBACK` - Indicates that a card transaction was reversed via a chargeback claim. `ACH_RETURN` - Indicates that an ACH transaction was returned or reversed by the bank. `DISPUTE` - Indicates that a user filed a dispute regarding a transaction or account activity. `FIRST_PARTY_FRAUD` - Indicates that a user intentionally misrepresented themselves or their actions for financial gain. `MISSED_PAYMENT` - Indicates that a user failed to make a required payment on time. `LOAN_STACKING` - Indicates that a user applied for or took out multiple loans simultaneously beyond their ability to repay. `MONEY_LAUNDERING` - Indicates that funds are being moved through accounts to obscure their illicit origin. `NO_FRAUD` - Indicates that an investigation determined no fraudulent activity occurred on user/event (positive label). `OTHER` - Indicates that the case involves fraud or financial risk not covered by other report types. Requires notes describing the report. ProtectReportSource: type: string enum: - INTERNAL_REVIEW - USER_SELF_REPORTED - BANK_FEEDBACK - NETWORK_FEEDBACK - AUTOMATED_SYSTEM - THIRD_PARTY_ALERT - OTHER description: |- The source that identified or reported the incident. `INTERNAL_REVIEW` - Incident was identified through internal fraud investigations or review processes. `USER_SELF_REPORTED` - Incident was reported directly by the affected user. `BANK_FEEDBACK` - Incident was identified through bank feedback, including ACH returns and connection revocations. `NETWORK_FEEDBACK` - Incident was identified through card network alerts or chargebacks. `AUTOMATED_SYSTEM` - Incident was detected by automated systems such as fraud models or rule engines. `THIRD_PARTY_ALERT` - Incident was identified through external vendor or consortium alerts. `OTHER` - Incident was identified through a source not covered by other categories. ProtectBankAccount: type: object nullable: true additionalProperties: true description: Bank account information associated with the incident. properties: account_id: type: string nullable: true description: Plaid's unique identifier for the account. account_number: type: string nullable: true description: Full account number of the bank account. routing_number: type: string nullable: true description: Routing number of the bank account. Must be present if `account_number` is present.