{ "components": { "parameters": { "PlaidNewUserApiEnabledHeader": { "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.", "in": "header", "name": "Plaid-New-User-API-Enabled", "required": false, "schema": { "default": false, "type": "boolean" }, "x-hidden-from-docs": true } }, "schemas": { "AAMVAAnalysis": { "additionalProperties": true, "description": "Analyzed AAMVA data for the associated hit.\n\nNote: This field is only available for U.S. driver's licenses issued by participating states.", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "date_of_birth": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "eye_color": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "first_name": { "$ref": "#/components/schemas/AAMVADetailedMatchResult" }, "gender": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "height": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "id_expiration_date": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "id_issue_date": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "id_number": { "$ref": "#/components/schemas/AAMVAMatchResult" }, "is_verified": { "description": "The overall outcome of checking the associated hit against the issuing state database.", "example": true, "type": "boolean" }, "last_name": { "$ref": "#/components/schemas/AAMVADetailedMatchResult" }, "middle_name": { "$ref": "#/components/schemas/AAMVADetailedMatchResult" }, "postal_code": { "$ref": "#/components/schemas/AAMVADetailedMatchResult" }, "street": { "$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" ], "type": "object" }, "AAMVADetailedMatchResult": { "description": "The outcome of checking the associated hit against state databases.\n\n\n`match` - The field is an exact match with the state database.\n\n`partial_match` - The field is a partial match with the state database.\n\n`no_match` - The field is not an exact match with the state database.\n\n`no_data` - The field was unable to be checked against state databases.", "enum": [ "match", "partial_match", "no_match", "no_data" ], "type": "string" }, "AAMVAMatchResult": { "description": "The outcome of checking the particular field against state databases.\n\n\n`match` - The field is an exact match with the state database.\n\n`no_match` - The field is not an exact match with the state database.\n\n`no_data` - The field was unable to be checked against state databases.", "enum": [ "match", "no_match", "no_data" ], "type": "string" }, "ACHClass": { "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).\n\nCodes supported for credits: `ccd`, `ppd`\nCodes supported for debits: `ccd`, `ppd`, `tel`, `web`\n\n`\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts\n\n`\"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.\n\n`\"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.\n\n`\"tel\"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call.", "enum": [ "ccd", "ppd", "tel", "web" ], "title": "ACHClass", "type": "string" }, "APIClientID": { "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.", "title": "ClientID", "type": "string" }, "APISecret": { "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.", "title": "APISecret", "type": "string" }, "APR": { "additionalProperties": true, "description": "Information about the APR on the account.", "properties": { "apr_percentage": { "description": "Annual Percentage Rate applied.\n", "format": "double", "type": "number" }, "apr_type": { "description": "The type of balance to which the APR applies.", "enum": [ "balance_transfer_apr", "cash_apr", "purchase_apr", "special" ], "type": "string" }, "balance_subject_to_apr": { "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.", "format": "double", "nullable": true, "type": "number" }, "interest_charge_amount": { "description": "Amount of money charged due to interest from last statement.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "apr_percentage", "apr_type", "balance_subject_to_apr", "interest_charge_amount" ], "title": "APR", "type": "object" }, "AccessToken": { "description": "The access token associated with the Item for which data is being requested.", "title": "AccessToken", "type": "string" }, "AccessTokenNullable": { "description": "The access token associated with the Item for which data is being requested.", "nullable": true, "type": "string" }, "AccountAccess": { "description": "Allow or disallow product access by account. Unlisted (e.g. missing) accounts will be considered `new_accounts`.", "properties": { "account_product_access": { "$ref": "#/components/schemas/AccountProductAccessNullable" }, "authorized": { "default": true, "description": "Allow the application to see this account (and associated details, including balance) in the list of accounts. If unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "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" } }, "required": [ "unique_id" ], "type": "object" }, "AccountAssets": { "additionalProperties": true, "description": "Asset information about an account", "properties": { "account_id": { "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.\n\nThe `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`.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "account_insights": { "$ref": "#/components/schemas/AccountInsights" }, "balances": { "$ref": "#/components/schemas/AssetReportAccountBalance" }, "days_available": { "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.", "type": "number" }, "historical_balances": { "description": "Calculated data about the historical balances on the account.\n\nAvailable for `credit` and `depository` type accounts.", "items": { "$ref": "#/components/schemas/HistoricalBalance" }, "type": "array" }, "investments": { "$ref": "#/components/schemas/AssetReportInvestments" }, "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.", "nullable": true, "type": "string" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution", "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "ownership_type": { "$ref": "#/components/schemas/OwnershipType" }, "persistent_account_id": { "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.", "type": "string" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "transactions": { "description": "Transaction history associated with the account.", "items": { "$ref": "#/components/schemas/AssetReportTransaction" }, "type": "array" }, "type": { "$ref": "#/components/schemas/AccountType" }, "verification_status": { "description": "The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only.\n\n`pending_automatic_verification`: The Item is pending automatic verification.\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the micro-deposit.\n\n`automatically_verified`: The Item has successfully been automatically verified.\n\n`manually_verified`: The Item has successfully been manually verified.\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\n\n`database_matched`: The Item has successfully been verified using Plaid's data sources. Note: Database Match is currently a beta feature, please contact your account manager for more information.", "enum": [ "automatically_verified", "pending_automatic_verification", "pending_manual_verification", "manually_verified", "verification_expired", "verification_failed", "database_matched" ], "type": "string" } }, "required": [ "account_id", "balances", "mask", "name", "official_name", "type", "subtype", "days_available", "transactions", "owners", "historical_balances" ], "title": "AccountAssets", "type": "object" }, "AccountBalance": { "additionalProperties": true, "description": "A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by `/accounts/balance/get` or `/signal/evaluate` (using a Balance-only ruleset).", "properties": { "available": { "description": "The amount of funds available to be withdrawn from the account, as determined by the financial institution.\n\nFor `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nAvailable 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.\n\nIf `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.", "format": "double", "nullable": true, "type": "number" }, "current": { "description": "The total amount of funds in or owed by the account.\n\nFor `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nWhen 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.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "last_updated_datetime": { "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.\n\nThis field is returned only when the institution is `ins_128026` (Capital One).", "format": "date-time", "nullable": true, "type": "string" }, "limit": { "description": "For `credit`-type accounts, this represents the credit limit.\n\nFor `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe.\n\nIn North America, this field is typically only available for `credit`-type accounts.", "format": "double", "nullable": true, "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "available", "current", "limit", "iso_currency_code", "unofficial_currency_code" ], "title": "AccountBalance", "type": "object" }, "AccountBase": { "additionalProperties": true, "description": "A single account at a financial institution.", "properties": { "account_id": { "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.\n\nThe `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`.\n\nIf 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.\n\nWhen 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "balances": { "$ref": "#/components/schemas/AccountBalance" }, "holder_category": { "$ref": "#/components/schemas/AccountHolderCategory" }, "mask": { "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.", "nullable": true, "type": "string" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution", "nullable": true, "type": "string" }, "persistent_account_id": { "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.", "type": "string" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "type": { "$ref": "#/components/schemas/AccountType" }, "verification_insights": { "$ref": "#/components/schemas/AccountVerificationInsights" }, "verification_name": { "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.", "type": "string" }, "verification_status": { "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:\n\n`pending_automatic_verification`: The Item is pending automatic verification.\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.\n\n`automatically_verified`: The Item has successfully been automatically verified.\n\n`manually_verified`: The Item has successfully been manually verified.\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\n\n`unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.\n\n`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.\n\n`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.\n\n`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.\n\n`database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.\n\n`null` or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.", "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" ], "type": "string" } }, "required": [ "account_id", "balances", "mask", "name", "official_name", "type", "subtype" ], "title": "Account", "type": "object", "x-examples": { "example-1": {} } }, "AccountBaseNullable": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "nullable": true, "type": "object" } ], "description": "A single account at a financial institution.", "nullable": true, "title": "AccountNullable", "type": "object" }, "AccountFilter": { "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": { "credit": { "$ref": "#/components/schemas/AccountFilterSubtypes" }, "depository": { "$ref": "#/components/schemas/AccountFilterSubtypes" }, "investment": { "$ref": "#/components/schemas/AccountFilterSubtypes" }, "loan": { "$ref": "#/components/schemas/AccountFilterSubtypes" } }, "type": "object" }, "AccountFilterSubtypes": { "description": "A list of account subtypes to be filtered.", "items": { "description": "List of account subtypes.", "type": "string" }, "type": "array" }, "AccountFiltersResponse": { "additionalProperties": true, "description": "The `account_filters` specified in the original call to `/link/token/create`.\n", "properties": { "credit": { "$ref": "#/components/schemas/CreditFilter" }, "depository": { "$ref": "#/components/schemas/DepositoryFilter" }, "investment": { "$ref": "#/components/schemas/InvestmentFilter" }, "loan": { "$ref": "#/components/schemas/LoanFilter" } }, "title": "AccountFiltersResponse", "type": "object" }, "AccountHolderCategory": { "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" ], "nullable": true, "title": "HolderCategory", "type": "string" }, "AccountIdentity": { "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "additionalProperties": true, "properties": { "mask": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "official_name": { "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "verification_name": { "type": "string" } }, "required": [ "owners" ], "type": "object" } ], "description": "Identity information about an account", "title": "AccountIdentity" }, "AccountIdentityDocumentUpload": { "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "additionalProperties": true, "properties": { "documents": { "description": "Data about the documents that were uploaded as proof of account ownership.", "items": { "$ref": "#/components/schemas/IdentityDocumentUpload" }, "nullable": true, "type": "array" }, "owners": { "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" }, "type": "array" } }, "required": [ "owners" ], "type": "object" } ], "description": "Identity information about an account", "title": "AccountIdentityDocumentUpload" }, "AccountIdentityMatchScore": { "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "additionalProperties": true, "properties": { "address": { "$ref": "#/components/schemas/AddressMatchScore" }, "email_address": { "$ref": "#/components/schemas/EmailAddressMatchScore" }, "legal_name": { "$ref": "#/components/schemas/NameMatchScore" }, "mask": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "official_name": { "nullable": true, "type": "string" }, "phone_number": { "$ref": "#/components/schemas/PhoneNumberMatchScore" }, "verification_name": { "type": "string" } }, "type": "object" } ], "description": "Identity match scores for an account", "title": "AccountIdentityMatchScore" }, "AccountIdsWithUpdatedAuth": { "additionalProperties": { "items": { "$ref": "#/components/schemas/AuthUpdateTypes" }, "type": "array" }, "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.\n\nExample: `{ \"XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58\": [\"ACCOUNT_NUMBER\"] }`\n", "title": "AccountIdsWithUpdatedAuth", "type": "object" }, "AccountIdsWithUpdatedIdentity": { "additionalProperties": { "items": { "$ref": "#/components/schemas/IdentityUpdateTypes" }, "type": "array" }, "description": "An object with keys of `account_id`'s that are mapped to their respective identity attributes that changed.\n\nExample: `{ \"XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58\": [\"PHONES\"] }`\n", "title": "AccountIdsWithUpdatedIdentity", "type": "object" }, "AccountInsights": { "additionalProperties": true, "description": "This is a container object for all lending-related insights. This field will be returned only for European customers.", "nullable": true, "properties": { "affordability": { "$ref": "#/components/schemas/AffordabilityInsights" }, "risk": { "$ref": "#/components/schemas/RiskIndicators" } }, "title": "AccountInsights", "type": "object" }, "AccountMask": { "description": "The last 2-4 numeric characters of this account's account number.", "example": "4000", "type": "string" }, "AccountProductAccess": { "description": "Allow the application to access specific products on this account", "properties": { "account_data": { "default": true, "description": "Allow the application to access account data. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "statements": { "default": true, "description": "Allow the application to access bank statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "tax_documents": { "default": true, "description": "Allow the application to access tax documents. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" } }, "type": "object" }, "AccountProductAccessNullable": { "allOf": [ { "$ref": "#/components/schemas/AccountProductAccess" }, { "additionalProperties": true, "type": "object" } ], "description": "Allow the application to access specific products on this account", "nullable": true }, "AccountSelectionCardinality": { "description": "The application requires that accounts be limited to a specific cardinality.\n`MULTI_SELECT`: indicates that the user should be allowed to pick multiple accounts.\n`SINGLE_SELECT`: indicates that the user should be allowed to pick only a single account.\n`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" ], "type": "string" }, "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" ], "nullable": true, "title": "AccountSubtype", "type": "string" }, "AccountSubtypes": { "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" }, "title": "AccountSubtypes", "type": "array" }, "AccountType": { "description": "`investment:` Investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage` instead.\n\n`credit:` Credit card\n\n`depository:` Depository account\n\n`loan:` Loan account\n\n`other:` Non-specified account type\n\nSee the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.", "enum": [ "investment", "credit", "depository", "loan", "brokerage", "other" ], "title": "AccountType", "type": "string" }, "AccountVerificationInsights": { "additionalProperties": true, "description": "Insights from performing database verification for the account. Only returned for Auth Items using Database Auth.", "properties": { "account_number_format": { "$ref": "#/components/schemas/AccountVerificationInsightsAccountNumberFormat" }, "name_match_score": { "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.", "nullable": true, "type": "integer" }, "network_status": { "$ref": "#/components/schemas/AccountVerificationInsightsNetworkStatus" }, "previous_returns": { "$ref": "#/components/schemas/AccountVerificationInsightsPreviousReturns" } }, "required": [ "network_status", "account_number_format" ], "title": "VerificationInsights", "type": "object" }, "AccountVerificationInsightsAccountNumberFormat": { "description": "Indicator of account number format validity for institution.\n\n`valid`: indicates that the account number has a correct format for the institution.\n\n`invalid`: indicates that the account number has an incorrect format for the institution.\n\n`unknown`: indicates that there was not enough information to determine whether the format is correct for the institution.", "enum": [ "valid", "invalid", "unknown" ], "title": "VerificationInsightsAccountNumberFormat", "type": "string" }, "AccountVerificationInsightsNetworkStatus": { "additionalProperties": true, "description": "Status information about the account and routing number in the Plaid network.", "properties": { "has_numbers_match": { "description": "Indicates whether we found at least one matching account for the ACH account and routing number.", "type": "boolean" }, "is_numbers_match_verified": { "description": "Indicates if at least one matching account for the ACH account and routing number is already verified.", "type": "boolean" } }, "required": [ "has_numbers_match", "is_numbers_match_verified" ], "title": "VerificationInsightsNetworkStatus", "type": "object" }, "AccountVerificationInsightsPreviousReturns": { "additionalProperties": true, "description": "Information about known ACH returns for the account and routing number.", "properties": { "has_previous_administrative_return": { "description": "Indicates whether Plaid's data sources include a known administrative ACH return for this account and routing number.", "type": "boolean" } }, "required": [ "has_previous_administrative_return" ], "title": "VerificationInsightsNetworkStatus", "type": "object" }, "AccountsBalanceGetRequest": { "description": "AccountsBalanceGetRequest defines the request schema for `/accounts/balance/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/AccountsBalanceGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "AccountsBalanceGetRequestOptions": { "description": "Optional parameters to `/accounts/balance/get`.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item. The default value is `null`.\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" }, "min_last_updated_datetime": { "$ref": "#/components/schemas/MinLastUpdatedDatetime" } }, "type": "object" }, "AccountsGetRequest": { "description": "AccountsGetRequest defines the request schema for `/accounts/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/AccountsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object", "x-examples": { "example-1": {} } }, "AccountsGetRequestOptions": { "description": "An optional object to filter `/accounts/get` results.", "properties": { "account_ids": { "description": "An array of `account_ids` to retrieve for the Account.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "AccountsGetResponse": { "additionalProperties": true, "description": "AccountsGetResponse defines the response schema for `/accounts/get` and `/accounts/balance/get`.", "properties": { "accounts": { "description": "An array of financial institution accounts associated with the Item.\nIf `/accounts/balance/get` was called, each account will include real-time balance information.", "items": { "$ref": "#/components/schemas/AccountBase" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "item", "request_id" ], "type": "object" }, "ActionState": { "description": "Enum representing the state of the action/activity.", "enum": [ "UNKNOWN", "ATTEMPT", "SUCCESS", "FAILURE", "SKIPPED" ], "type": "string" }, "Activity": { "description": "Describes a consent activity.", "properties": { "activity": { "$ref": "#/components/schemas/ActivityType" }, "authentication": { "$ref": "#/components/schemas/ItemCreateAuthentication" }, "id": { "description": "A unique identifier for the activity", "type": "string" }, "initiated_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", "format": "date", "type": "string" }, "initiator": { "description": "Application ID of the client who initiated the activity.", "type": "string" }, "scopes": { "$ref": "#/components/schemas/ScopesNullable" }, "state": { "$ref": "#/components/schemas/ActionState" }, "target_application_id": { "$ref": "#/components/schemas/ApplicationID" } }, "required": [ "activity", "initiated_date", "id", "initiator", "state" ], "type": "object" }, "ActivityType": { "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" ], "type": "string" }, "Address": { "additionalProperties": true, "description": "A physical mailing address.", "properties": { "data": { "$ref": "#/components/schemas/AddressData" }, "primary": { "description": "When `true`, identifies the address as the primary address on an account.", "type": "boolean" } }, "required": [ "data" ], "title": "Address", "type": "object" }, "AddressData": { "additionalProperties": true, "description": "Data about the components comprising an address.", "properties": { "city": { "description": "The full city name", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.", "nullable": true, "type": "string" }, "region": { "description": "The region or state. In API versions 2018-05-22 and earlier, this field is called `state`.\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "required": [ "city", "region", "street", "postal_code", "country" ], "title": "AddressData", "type": "object" }, "AddressDataNotRequired": { "additionalProperties": true, "description": "Data about the components comprising an address.", "properties": { "city": { "description": "The full city name", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.", "nullable": true, "type": "string" }, "region": { "description": "The region or state. In API versions 2018-05-22 and earlier, this field is called `state`.\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "title": "AddressData", "type": "object" }, "AddressDataNullable": { "allOf": [ { "$ref": "#/components/schemas/AddressData" }, { "additionalProperties": true, "type": "object" } ], "description": "Data about the components comprising an address.", "nullable": true }, "AddressDataNullableNoRequiredFields": { "allOf": [ { "$ref": "#/components/schemas/AddressDataNotRequired" }, { "additionalProperties": true, "type": "object" } ], "description": "Data about the components comprising an address.", "nullable": true }, "AddressMatchScore": { "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.", "nullable": true, "properties": { "is_postal_code_match": { "description": "postal code was provided for both and was a match", "nullable": true, "type": "boolean" }, "score": { "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.", "nullable": true, "type": "integer" } }, "title": "AddressMatchScore", "type": "object" }, "AddressNullable": { "allOf": [ { "$ref": "#/components/schemas/Address" }, { "additionalProperties": true, "type": "object" } ], "description": "A physical mailing address.", "nullable": true }, "AddressPurposeLabel": { "description": "Field describing whether the associated address is being used for commercial or residential purposes.\n\nNote: This value will be `no_data` when Plaid does not have sufficient data to determine the address's use.", "enum": [ "residential", "commercial", "no_data" ], "example": "residential", "type": "string" }, "AffordabilityInsights": { "additionalProperties": true, "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.", "nullable": true, "properties": { "expenditure": { "$ref": "#/components/schemas/ExpenditureInsights" }, "income": { "$ref": "#/components/schemas/IncomeInsights" } }, "title": "AffordabilityInsights", "type": "object" }, "AmountWithCurrency": { "additionalProperties": true, "description": "A monetary amount with its associated currency information, supporting both official and unofficial currency codes.", "nullable": true, "properties": { "amount": { "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.\n\nIf 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.\n\nIf the parent object is `minimum_balance`, the `amount` represents the lowest balance of the account during the given time window.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "AmountWithCurrency", "type": "object" }, "AmountWithCurrencyWithMonthlyAverage": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/AmountWithCurrency" }, { "$ref": "#/components/schemas/MonthlyAverage" } ], "description": "Represents an amount and a monthly average", "nullable": true, "type": "object" }, "Application": { "description": "Metadata about the application", "properties": { "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "application_url": { "description": "The URL for the application's website", "nullable": true, "type": "string" }, "city": { "description": "A string representing the city of the client's headquarters.", "nullable": true, "type": "string" }, "company_legal_name": { "description": "A string representing the name of client's legal entity.", "nullable": true, "type": "string" }, "country_code": { "description": "A string representing the country code of the client's headquarters.", "nullable": true, "type": "string" }, "display_name": { "description": "A human-readable name of the application for display purposes", "nullable": true, "type": "string" }, "join_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.", "format": "date", "type": "string" }, "logo_url": { "description": "A URL that links to the application logo image.", "nullable": true, "type": "string" }, "name": { "description": "The name of the application", "type": "string" }, "postal_code": { "description": "A string representing the postal code of the client's headquarters.", "nullable": true, "type": "string" }, "reason_for_access": { "description": "A string provided by the connected app stating why they use their respective enabled products.", "nullable": true, "type": "string" }, "region": { "description": "A string representing the region of the client's headquarters.", "nullable": true, "type": "string" }, "use_case": { "description": "A string representing client's broad use case as assessed by Plaid.", "nullable": true, "type": "string" } }, "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" ], "type": "object" }, "ApplicationGetRequest": { "description": "ApplicationGetRequest defines the schema for `/application/get`", "properties": { "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_id", "secret", "application_id" ], "type": "object" }, "ApplicationGetResponse": { "additionalProperties": true, "description": "ApplicationGetResponse defines the response schema for `/application/get`", "properties": { "application": { "$ref": "#/components/schemas/Application" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "application" ], "type": "object" }, "ApplicationID": { "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.", "title": "ApplicationID", "type": "string" }, "Asset": { "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_HOLDER": { "$ref": "#/components/schemas/AssetHolder" }, "ASSET_OWNERS": { "$ref": "#/components/schemas/AssetOwners" }, "ASSET_TRANSACTIONS": { "$ref": "#/components/schemas/AssetTransactions" }, "VALIDATION_SOURCES": { "$ref": "#/components/schemas/ValidationSources" } }, "required": [ "ASSET_DETAIL", "ASSET_OWNERS", "ASSET_HOLDER", "ASSET_TRANSACTIONS", "VALIDATION_SOURCES" ], "title": "Asset", "type": "object" }, "AssetDetail": { "additionalProperties": true, "description": "Details about an asset.", "properties": { "AssetAccountIdentifier": { "description": "A unique alphanumeric string identifying an asset.", "type": "string" }, "AssetAsOfDate": { "description": "Account Report As of Date / Create Date. Format YYYY-MM-DD", "type": "string" }, "AssetAvailableBalanceAmount": { "description": "Asset Account Available Balance.", "format": "double", "type": "number" }, "AssetAvailableCashBalanceAmount": { "description": "amount available for cash withdrawal", "format": "double", "nullable": true, "type": "number" }, "AssetBondsBalanceAmount": { "description": "Total market value of all bonds held (non-restricted, vested)", "format": "double", "nullable": true, "type": "number" }, "AssetCashBalanceAmount": { "description": "cash balance of the account", "format": "double", "nullable": true, "type": "number" }, "AssetCryptoBalanceAmount": { "description": "Total balance of all cryptocurrency held (non-restricted, vested)", "format": "double", "nullable": true, "type": "number" }, "AssetCurrentBalanceAmount": { "description": "Asset Account Current Balance.", "format": "double", "type": "number" }, "AssetDaysRequestedCount": { "description": "The Number of days requested made to the Financial Institution. Example When looking for 3 months of data from the FI, pass in 90 days.", "type": "integer" }, "AssetDescription": { "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.", "nullable": true, "type": "string" }, "AssetEmployerSponsoredIndicator": { "description": "Whether the account is employer sponsored retirement account or not (e.g., 401K, 403b, 457, thrift savings plan)", "enum": [ true, false ], "nullable": true, "type": "string" }, "AssetHoldingBalanceAmount": { "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')", "format": "double", "nullable": true, "type": "number" }, "AssetHoldingBalanceNetMarginAmount": { "description": "HoldingsBalance net MarginAmount", "format": "double", "nullable": true, "type": "number" }, "AssetMarginAmountBalance": { "description": "loan balance (amount owed by account owner)", "format": "double", "nullable": true, "type": "number" }, "AssetOtherBalanceAmount": { "description": "Total balance of all other holding types (non-restricted, vested)", "format": "double", "nullable": true, "type": "number" }, "AssetOwnershipType": { "description": "Ownership type of the asset account.", "nullable": true, "type": "string" }, "AssetRetirementIndicator": { "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)", "enum": [ true, false ], "nullable": true, "type": "string" }, "AssetStocksBalanceAmount": { "description": "Total market value of all stocks held (non-restricted, vested, not employer sponsored stock plan)", "format": "double", "nullable": true, "type": "number" }, "AssetType": { "$ref": "#/components/schemas/AssetType" }, "AssetTypeAdditionalDescription": { "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.", "nullable": true, "type": "string" }, "AssetUniqueIdentifier": { "description": "A vendor created unique Identifier.", "type": "string" } }, "required": [ "AssetUniqueIdentifier", "AssetAccountIdentifier", "AssetAsOfDate", "AssetDescription", "AssetAvailableBalanceAmount", "AssetCurrentBalanceAmount", "AssetType", "AssetTypeAdditionalDescription", "AssetDaysRequestedCount", "AssetOwnershipType" ], "title": "AssetDetail", "type": "object" }, "AssetHolder": { "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" ], "title": "AssetHolder", "type": "object" }, "AssetHolderName": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "FullName": { "description": "The unparsed name of either an individual or a legal entity.", "type": "string" } }, "required": [ "FullName" ], "title": "NAME", "type": "object" }, "AssetHolding": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "AssetHoldingCurrentPriceAmount": { "description": "current price of investment holding", "nullable": true, "type": "number" }, "AssetHoldingDescription": { "description": "Description of holding", "nullable": true, "type": "string" }, "AssetHoldingID": { "description": "Unique id of investment position", "nullable": true, "type": "string" }, "AssetHoldingMarketValueAmount": { "description": "market value of investment position", "nullable": true, "type": "number" }, "AssetHoldingRestrictedIndicator": { "description": "Whether or not the stock is restricted, i.e. \"Restricted\" or \"Not Restricted\"", "enum": [ true, false ], "nullable": true, "type": "string" }, "AssetHoldingSecurityName": { "description": "Security name of investment holding", "nullable": true, "type": "string" }, "AssetHoldingSymbol": { "description": "Investment position's market ticker symbol", "nullable": true, "type": "string" }, "AssetHoldingType": { "description": "Type of holding (e.g. bond, stock, crypto, other)", "enum": [ "Bond", "Stock", "Crypto", "Other" ], "nullable": true, "type": "string" }, "AssetHoldingUnits": { "description": "Number of units of holding", "nullable": true, "type": "number" }, "AssetHoldingVestedAmount": { "description": "Amount of holding vested", "nullable": true, "type": "number" }, "Currency": { "description": "US Dollar", "nullable": true, "type": "string" } }, "required": [ "AssetHoldingID", "Currency", "AssetHoldingDescription", "AssetHoldingSymbol", "AssetHoldingSecurityName", "AssetHoldingUnits", "AssetHoldingMarketValueAmount", "AssetHoldingCurrentPriceAmount", "AssetHoldingType", "AssetHoldingRestrictedIndicator", "AssetHoldingVestedAmount" ], "title": "AssetHolding", "type": "object" }, "AssetHoldings": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET_HOLDING": { "items": { "$ref": "#/components/schemas/AssetHolding" }, "type": "array" } }, "required": [ "ASSET_HOLDING" ], "title": "AssetHoldings", "type": "object" }, "AssetInvestmentTransactionType": { "description": "Asset Investment Transaction Type Enumerated derived by Vendor.", "enum": [ "Buy", "Sell", "Dividends", "Interest", "Transfers", "Reinvestments", "FundsReceived", "Other" ], "nullable": true, "title": "AssetInvestmentTransactionType", "type": "string" }, "AssetOwner": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "AssetOwnerText": { "description": "Account Owner Full Name.", "nullable": true, "type": "string" } }, "required": [ "AssetOwnerText" ], "title": "AssetOwner", "type": "object" }, "AssetOwners": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET_OWNER": { "description": "A list of up to 4 account owners' full names.", "items": { "$ref": "#/components/schemas/AssetOwner" }, "type": "array" } }, "required": [ "ASSET_OWNER" ], "title": "AssetOwners", "type": "object" }, "AssetReport": { "additionalProperties": true, "description": "An object representing an Asset Report", "properties": { "asset_report_id": { "$ref": "#/components/schemas/AssetReportId" }, "client_report_id": { "description": "An identifier you determine and submit for the Asset Report.", "nullable": true, "type": "string" }, "date_generated": { "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\").", "format": "date-time", "type": "string" }, "days_requested": { "description": "The duration of transaction history you requested", "type": "number" }, "insights": { "$ref": "#/components/schemas/AccountInsights" }, "items": { "description": "Data returned by Plaid about each of the Items included in the Asset Report.", "items": { "$ref": "#/components/schemas/AssetReportItem" }, "type": "array" }, "user": { "$ref": "#/components/schemas/AssetReportUser" } }, "required": [ "asset_report_id", "client_report_id", "date_generated", "days_requested", "user", "items" ], "title": "AssetReport", "type": "object" }, "AssetReportAccountBalance": { "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": { "description": "The amount of funds available to be withdrawn from the account, as determined by the financial institution.\n\nFor `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nAvailable 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`.\n\nIf `current` is `null` this field is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "current": { "description": "The total amount of funds in or owed by the account.\n\nFor `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nWhen returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "last_updated_datetime": { "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`.\n\nThis 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.\n\nIf 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.", "format": "date-time", "nullable": true, "type": "string" }, "limit": { "description": "For `credit`-type accounts, this represents the credit limit.\n\nFor `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe.\n\nIn North America, this field is typically only available for `credit`-type accounts.", "format": "double", "nullable": true, "type": "number" }, "margin_loan_amount": { "description": "The total amount of borrowed funds in the account, as determined by the financial institution.\nFor investment-type accounts, the margin balance is the total value of borrowed assets in the account, as presented by the institution.\nThis is commonly referred to as margin or a loan.", "format": "double", "nullable": true, "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "available", "current", "limit", "margin_loan_amount", "iso_currency_code", "unofficial_currency_code" ], "title": "AssetReportAccountBalance", "type": "object" }, "AssetReportAddOns": { "description": "Add-ons that should be included in the Asset Report.\n\n`investments`: The Investments add-on\n`fast_assets`: The Fast Assets add-on", "enum": [ "investments", "fast_assets" ], "title": "AssetReportAddOns", "type": "string" }, "AssetReportAuditCopyCreateRequest": { "description": "AssetReportAuditCopyCreateRequest defines the request schema for `/asset_report/audit_copy/get`", "properties": { "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "auditor_id": { "description": "The `auditor_id` of the third party with whom you would like to share the Asset Report.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "asset_report_token" ], "type": "object" }, "AssetReportAuditCopyCreateResponse": { "additionalProperties": true, "description": "AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/get`", "properties": { "audit_copy_token": { "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.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "audit_copy_token", "request_id" ], "type": "object" }, "AssetReportAuditCopyGetRequest": { "description": "AssetReportAuditCopyGetRequest defines the request schema for `/asset_report/audit_copy/get`", "properties": { "audit_copy_token": { "description": "The `audit_copy_token` granting access to the Audit Copy you would like to get.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "title": "AssetReportAuditCopyGetRequest", "type": "object" }, "AssetReportAuditCopyPdfGetRequest": { "description": "AssetReportAuditCopyPDFGetRequest defines the request schema for `/asset_report/audit_copy/pdf/get`", "properties": { "audit_copy_token": { "description": "The `audit_copy_token` granting access to the Audit Copy you would like to get as a PDF.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/AssetReportPDFGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "type": "object" }, "AssetReportAuditCopyPdfGetResponse": { "description": "AssetReportAuditCopyPDFGetResponse defines the response schema for `/asset_report/audit_copy/pdf/get`", "format": "binary", "type": "string" }, "AssetReportAuditCopyRemoveRequest": { "description": "AssetReportAuditCopyRemoveRequest defines the request schema for `/asset_report/audit_copy/remove`", "properties": { "audit_copy_token": { "description": "The `audit_copy_token` granting access to the Audit Copy you would like to revoke.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "type": "object" }, "AssetReportAuditCopyRemoveResponse": { "additionalProperties": true, "description": "AssetReportAuditCopyRemoveResponse defines the response schema for `/asset_report/audit_copy/remove`", "properties": { "removed": { "description": "`true` if the Audit Copy was successfully removed.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "removed", "request_id" ], "type": "object" }, "AssetReportCreateRequest": { "description": "AssetReportCreateRequest defines the request schema for `/asset_report/create`", "properties": { "access_tokens": { "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" }, "maxItems": 99, "minItems": 1, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "days_requested": { "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.\n\nAn Asset Report requested with \"Additional History\" (that is, with more than 61 days of transaction history) will incur an Additional History fee.", "maximum": 731, "minimum": 0, "type": "integer" }, "options": { "$ref": "#/components/schemas/AssetReportCreateRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "days_requested" ], "type": "object" }, "AssetReportCreateRequestOptions": { "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": { "add_ons": { "description": "A list of add-ons that should be included in the Asset Report.\n\nWhen 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.\n\nWhen Investments is requested, `investments` must be specified in the `optional_products` array when initializing Link.", "items": { "$ref": "#/components/schemas/AssetReportAddOns" }, "type": "array" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "include_fast_report": { "deprecated": true, "description": "true to return balance and identity earlier as a fast report. Defaults to false if omitted.", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "products": { "deprecated": true, "description": "Additional information that can be included in the asset report. Possible values: `\"investments\"`", "items": { "type": "string" }, "type": "array", "x-hidden-from-docs": true }, "require_all_items": { "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.", "nullable": true, "type": "boolean" }, "user": { "$ref": "#/components/schemas/AssetReportUser" }, "webhook": { "description": "URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.", "format": "url", "nullable": true, "type": "string" } }, "type": "object" }, "AssetReportCreateResponse": { "additionalProperties": true, "description": "AssetReportCreateResponse defines the response schema for `/asset_report/create`", "properties": { "asset_report_id": { "$ref": "#/components/schemas/AssetReportId" }, "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "asset_report_token", "asset_report_id", "request_id" ], "type": "object" }, "AssetReportFilterRequest": { "description": "AssetReportFilterRequest defines the request schema for `/asset_report/filter`", "properties": { "account_ids_to_exclude": { "description": "The accounts to exclude from the Asset Report, identified by `account_id`.", "items": { "type": "string" }, "type": "array" }, "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "asset_report_token", "account_ids_to_exclude" ], "type": "object" }, "AssetReportFilterResponse": { "additionalProperties": true, "description": "AssetReportFilterResponse defines the response schema for `/asset_report/filter`", "properties": { "asset_report_id": { "$ref": "#/components/schemas/AssetReportId" }, "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "asset_report_token", "asset_report_id", "request_id" ], "type": "object" }, "AssetReportFreddie": { "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" ], "title": "AssetReportFreddie", "type": "object" }, "AssetReportFreddieGetRequest": { "additionalProperties": true, "description": "AssetReportFreddieGetRequest defines the request schema for `/credit/asset_report/freddie_mac/get`", "properties": { "audit_copy_token": { "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.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "title": "AssetReportFreddieGetRequest", "type": "object" }, "AssetReportFreddieGetResponse": { "additionalProperties": true, "description": "AssetReportFreddieGetResponse defines the response schema for `/credit/asset_report/freddie_mac/get`", "properties": { "DEAL": { "$ref": "#/components/schemas/AssetReportFreddie" }, "SchemaVersion": { "description": "The Verification Of Assets (aka VOA or Freddie Mac Schema) schema version.", "type": "number" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "DEAL", "request_id", "SchemaVersion" ], "title": "AssetReportFreddieGetResponse", "type": "object" }, "AssetReportGetRequest": { "description": "AssetReportGetRequest defines the request schema for `/asset_report/get`", "properties": { "asset_report_token": { "$ref": "#/components/schemas/AssetReportTokenNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "fast_report": { "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\"]`.", "type": "boolean" }, "include_insights": { "default": false, "description": "`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.", "type": "boolean" }, "options": { "$ref": "#/components/schemas/AssetReportGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_token": { "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", "type": "string", "x-hidden-from-docs": true } }, "type": "object" }, "AssetReportGetRequestOptions": { "description": "An optional object to filter or add data to `/asset_report/get` results. If provided, must be non-`null`.", "properties": { "days_to_include": { "description": "The maximum number of days of history to include in the Asset Report.", "maximum": 731, "minimum": 0, "nullable": true, "type": "integer" } }, "type": "object" }, "AssetReportGetResponse": { "additionalProperties": true, "description": "AssetReportGetResponse defines the response schema for `/asset_report/get`", "properties": { "report": { "$ref": "#/components/schemas/AssetReport" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "warnings": { "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" }, "type": "array" } }, "required": [ "report", "warnings", "request_id" ], "type": "object" }, "AssetReportId": { "description": "A unique ID identifying an Asset Report. Like all Plaid identifiers, this ID is case sensitive.", "title": "AssetReportId", "type": "string" }, "AssetReportInvestmentHolding": { "additionalProperties": true, "description": "A securities holding at an institution.", "properties": { "account_id": { "description": "The Plaid `account_id` associated with the holding.", "type": "string" }, "cost_basis": { "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.", "format": "double", "nullable": true, "type": "number" }, "institution_price": { "description": "The last price given by the institution for this security.", "format": "double", "type": "number" }, "institution_price_as_of": { "description": "The date at which `institution_price` was current.", "format": "date", "nullable": true, "type": "string" }, "institution_value": { "description": "The value of the holding, as reported by the institution.", "format": "double", "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "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.", "format": "double", "type": "number" }, "security_id": { "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.", "type": "string" }, "ticker_symbol": { "description": "The holding's trading symbol for publicly traded holdings, and otherwise a short identifier if available.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.\n", "nullable": true, "type": "string" } }, "required": [ "account_id", "security_id", "ticker_symbol", "institution_price", "institution_value", "cost_basis", "quantity", "iso_currency_code", "unofficial_currency_code" ], "title": "AssetReportInvestmentHolding", "type": "object" }, "AssetReportInvestmentSecurity": { "additionalProperties": true, "description": "Investment security associated with the account.", "properties": { "name": { "description": "A descriptive name for the security, suitable for display.", "nullable": true, "type": "string" }, "security_id": { "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.", "type": "string" }, "ticker_symbol": { "description": "The security's trading symbol for publicly traded securities, and otherwise a short identifier if available.", "nullable": true, "type": "string" }, "type": { "description": "The security type of the holding. Valid security types are:\n\n`cash`: Cash, currency, and money market funds\n\n`cryptocurrency`: Digital or virtual currencies\n\n`derivative`: Options, warrants, and other derivative instruments\n\n`equity`: Domestic and foreign equities\n\n`etf`: Multi-asset exchange-traded investment funds\n\n`fixed income`: Bonds and certificates of deposit (CDs)\n\n`loan`: Loans and loan receivables\n\n`mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors\n\n`other`: Unknown or other investment types", "nullable": true, "type": "string" } }, "required": [ "security_id", "name", "ticker_symbol", "type" ], "title": "AssetReportInvestmentSecurity", "type": "object" }, "AssetReportInvestmentTransaction": { "additionalProperties": true, "description": "A transaction within an investment account.", "properties": { "account_id": { "description": "The `account_id` of the account against which this transaction posted.", "type": "string" }, "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.", "format": "double", "type": "number" }, "date": { "description": "The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction.", "format": "date", "type": "string" }, "fees": { "description": "The combined value of all fees applied to this transaction", "format": "double", "nullable": true, "type": "number" }, "investment_transaction_id": { "description": "The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "name": { "description": "The institution's description of the transaction.", "type": "string" }, "price": { "description": "The price of the security at which this transaction occurred.", "format": "double", "type": "number" }, "quantity": { "description": "The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions.", "format": "double", "type": "number" }, "security_id": { "description": "The `security_id` to which this transaction is related.", "nullable": true, "type": "string" }, "subtype": { "$ref": "#/components/schemas/InvestmentTransactionSubtype" }, "type": { "$ref": "#/components/schemas/InvestmentTransactionType" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "vested_quantity": { "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).", "format": "double", "type": "number" }, "vested_value": { "description": "The value of the vested holdings as reported by the institution.", "format": "double", "type": "number" } }, "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" ], "title": "AssetReportInvestmentTransaction", "type": "object" }, "AssetReportInvestments": { "additionalProperties": true, "description": "A set of fields describing the investments data on an account.", "properties": { "holdings": { "description": "Quantities and values of securities held in the investment account. Map to the `securities` array for security details.", "items": { "$ref": "#/components/schemas/AssetReportInvestmentHolding" }, "type": "array" }, "securities": { "description": "Details of specific securities held in on the investment account.", "items": { "$ref": "#/components/schemas/AssetReportInvestmentSecurity" }, "type": "array" }, "transactions": { "description": "Transaction history on the investment account.", "items": { "$ref": "#/components/schemas/AssetReportInvestmentTransaction" }, "type": "array" } }, "title": "AssetReportInvestments", "type": "object" }, "AssetReportItem": { "additionalProperties": true, "description": "A representation of an Item within an Asset Report.", "properties": { "accounts": { "description": "Data about each of the accounts open on the Item.", "items": { "$ref": "#/components/schemas/AccountAssets" }, "type": "array" }, "date_last_updated": { "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.", "format": "date-time", "type": "string" }, "institution_id": { "description": "The id of the financial institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The full financial institution name associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" } }, "required": [ "item_id", "institution_name", "institution_id", "date_last_updated", "accounts" ], "title": "AssetReportItem", "type": "object" }, "AssetReportPDFGetRequest": { "description": "AssetReportPDFGetRequest defines the request schema for `/asset_report/pdf/get`", "properties": { "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/AssetReportPDFGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "asset_report_token" ], "type": "object" }, "AssetReportPDFGetRequestOptions": { "description": "An optional object to filter or add data to `/asset_report/get` results. If provided, must be non-`null`.", "properties": { "days_to_include": { "description": "The maximum integer number of days of history to include in the Asset Report.", "maximum": 731, "minimum": 0, "nullable": true, "type": "integer" } }, "type": "object" }, "AssetReportPDFGetResponse": { "description": "AssetReportPDFGetResponse defines the response schema for `/asset_report/pdf/get`", "format": "binary", "type": "string" }, "AssetReportRefreshAssetReportToken": { "description": "The `asset_report_token` returned by the original call to `/asset_report/create`", "title": "AssetReportRefreshAssetReportToken", "type": "string" }, "AssetReportRefreshRequest": { "description": "AssetReportRefreshRequest defines the request schema for `/asset_report/refresh`", "properties": { "asset_report_token": { "$ref": "#/components/schemas/AssetReportRefreshAssetReportToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "days_requested": { "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.", "maximum": 731, "minimum": 0, "nullable": true, "type": "integer" }, "options": { "$ref": "#/components/schemas/AssetReportRefreshRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "asset_report_token" ], "type": "object" }, "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.", "properties": { "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "user": { "$ref": "#/components/schemas/AssetReportUser" }, "webhook": { "description": "URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.", "format": "url", "nullable": true, "type": "string" } }, "type": "object" }, "AssetReportRefreshResponse": { "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" ], "type": "object" }, "AssetReportRemoveRequest": { "description": "AssetReportRemoveRequest defines the request schema for `/asset_report/remove`", "properties": { "asset_report_token": { "$ref": "#/components/schemas/AssetReportToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "asset_report_token" ], "type": "object" }, "AssetReportRemoveResponse": { "additionalProperties": true, "description": "AssetReportRemoveResponse defines the response schema for `/asset_report/remove`", "properties": { "removed": { "description": "`true` if the Asset Report was successfully removed.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "removed", "request_id" ], "type": "object" }, "AssetReportToken": { "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.", "title": "AssetReportToken", "type": "string" }, "AssetReportTokenNullable": { "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.", "title": "AssetReportTokenNullable", "type": "string" }, "AssetReportTransaction": { "additionalProperties": true, "description": "A transaction on the asset report", "properties": { "account_id": { "description": "The ID of the account in which this transaction occurred.", "type": "string" }, "account_owner": { "description": "The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts.", "nullable": true, "type": "string" }, "amount": { "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.", "format": "double", "type": "number" }, "category": { "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).\n\nThis field will only appear in an Asset Report with Insights.", "items": { "type": "string" }, "nullable": true, "type": "array" }, "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).\n\nThis field will only appear in an Asset Report with Insights.", "nullable": true, "type": "string" }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "credit_category": { "$ref": "#/components/schemas/CreditCategory" }, "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` ).", "format": "date", "type": "string" }, "date_transacted": { "description": "The date on which the transaction took place, in IS0 8601 format.", "nullable": true, "type": "string" }, "income_source_id": { "description": "A unique identifier for an income source.", "type": "string", "x-hidden-from-docs": true }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "location": { "$ref": "#/components/schemas/Location" }, "merchant_name": { "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, "type": "string" }, "name": { "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.\n\nThis field will only appear in an Asset Report with Insights.", "type": "string" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "nullable": true, "type": "string" }, "payment_meta": { "$ref": "#/components/schemas/PaymentMeta" }, "pending": { "description": "When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.", "type": "boolean" }, "pending_transaction_id": { "description": "The ID of a posted transaction's associated pending transaction, where applicable.", "nullable": true, "type": "string" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "transaction_type": { "$ref": "#/components/schemas/AssetReportTransactionType" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "transaction_id", "pending", "date", "unofficial_currency_code", "iso_currency_code", "amount", "account_id", "original_description" ], "title": "AssetReportTransaction", "type": "object" }, "AssetReportTransactionType": { "description": "`digital:` transactions that took place online.\n\n`place:` transactions that were made at a physical location.\n\n`special:` transactions that relate to banks, e.g. fees or deposits.\n\n`unresolved:` transactions that do not fit into the other three types.\n", "enum": [ "digital", "place", "special", "unresolved" ], "title": "AssetReportTransactionType", "type": "string" }, "AssetReportType": { "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" ], "type": "string" }, "AssetReportUser": { "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\u2122 program.", "properties": { "client_user_id": { "description": "An identifier you determine and submit for the user.", "nullable": true, "type": "string" }, "email": { "description": "The user's email address.", "nullable": true, "type": "string" }, "first_name": { "description": "The user's first name. Required for the Fannie Mae Day 1 Certainty\u2122 program.", "nullable": true, "type": "string" }, "last_name": { "description": "The user's last name. Required for the Fannie Mae Day 1 Certainty\u2122 program.", "nullable": true, "type": "string" }, "middle_name": { "description": "The user's middle name", "nullable": true, "type": "string" }, "phone_number": { "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.", "nullable": true, "type": "string" }, "ssn": { "description": "The user's Social Security Number. Required for the Fannie Mae Day 1 Certainty\u2122 program.\n\nFormat: \"ddd-dd-dddd\"", "nullable": true, "type": "string" } }, "title": "AssetReportUser", "type": "object" }, "AssetTransaction": { "additionalProperties": true, "description": "An object representing...", "properties": { "ASSET_TRANSACTION_DESCRIPTON": { "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.", "items": { "$ref": "#/components/schemas/AssetTransactionDescription" }, "type": "array" }, "ASSET_TRANSACTION_DETAIL": { "$ref": "#/components/schemas/AssetTransactionDetail" } }, "required": [ "ASSET_TRANSACTION_DETAIL", "ASSET_TRANSACTION_DESCRIPTON" ], "title": "AssetTransaction", "type": "object" }, "AssetTransactionCategoryType": { "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" ], "nullable": true, "title": "AssetTransactionCategoryType", "type": "string" }, "AssetTransactionDescription": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "AssetTransactionDescription": { "description": "Asset Transaction Description String up to 3 occurrences 1 required.", "type": "string" } }, "required": [ "AssetTransactionDescription" ], "title": "AssetTransactionDescription", "type": "object" }, "AssetTransactionDetail": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "AssetInvestmentTransactionType": { "$ref": "#/components/schemas/AssetInvestmentTransactionType" }, "AssetInvestmentTransactionTypeDescription": { "description": "Asset Investment Transaction Type Description.", "nullable": true, "type": "string" }, "AssetTransactionAmount": { "description": "Asset Transaction Amount.", "type": "number" }, "AssetTransactionCategoryType": { "$ref": "#/components/schemas/AssetTransactionCategoryType" }, "AssetTransactionDate": { "description": "Asset Transaction Date.", "format": "date", "type": "string" }, "AssetTransactionPaidByName": { "description": "Populate with who did the transaction.", "nullable": true, "type": "string" }, "AssetTransactionPaidToName": { "description": "Populate with for whom the transaction is done", "nullable": true, "type": "string" }, "AssetTransactionPostDate": { "description": "Asset Transaction Post Date.", "format": "date", "type": "string" }, "AssetTransactionType": { "$ref": "#/components/schemas/AssetTransactionType" }, "AssetTransactionTypeAdditionalDescription": { "description": "FI Provided - examples are atm, cash, check, credit, debit, deposit, directDebit, directDeposit, dividend, fee, interest, other, payment, pointOfSale, repeatPayment, serviceCharge, transfer.", "nullable": true, "type": "string" }, "AssetTransactionUniqueIdentifier": { "description": "A vendor created unique Identifier.", "type": "string" }, "FinancialInstitutionTransactionIdentifier": { "description": "FI provided Transaction Identifier.", "nullable": true, "type": "string" } }, "required": [ "AssetTransactionUniqueIdentifier", "AssetTransactionAmount", "AssetTransactionDate", "AssetTransactionPostDate", "AssetTransactionType", "AssetTransactionPaidByName", "AssetTransactionTypeAdditionalDescription", "AssetInvestmentTransactionTypeDescription", "AssetTransactionCategoryType", "FinancialInstitutionTransactionIdentifier" ], "title": "AssetTransactionDetail", "type": "object" }, "AssetTransactionType": { "description": "Asset Transaction Type.", "enum": [ "Credit", "Debit" ], "title": "AssetTransactionType", "type": "string" }, "AssetTransactions": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET_TRANSACTION": { "items": { "$ref": "#/components/schemas/AssetTransaction" }, "type": "array" } }, "required": [ "ASSET_TRANSACTION" ], "title": "AssetTransactions", "type": "object" }, "AssetType": { "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" ], "title": "AssetType", "type": "string" }, "Assets": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "items": { "$ref": "#/components/schemas/Asset" }, "type": "array" } }, "required": [ "ASSET" ], "title": "Assets", "type": "object" }, "AssetsErrorWebhook": { "additionalProperties": true, "description": "Fired when Asset Report generation has failed. The resulting `error` will have an `error_type` of `ASSET_REPORT_ERROR`.", "properties": { "asset_report_id": { "description": "The ID associated with the Asset Report.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "user_id": { "description": "The `user_id` corresponding to the User ID the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`ERROR`", "type": "string" }, "webhook_type": { "description": "`ASSETS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "error", "asset_report_id", "environment" ], "title": "AssetsErrorWebhook", "type": "object", "x-examples": { "example-1": { "asset_report_id": "47dfc92b-bba3-4583-809e-ce871b321f05", "environment": "production", "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" }, "webhook_code": "ERROR", "webhook_type": "ASSETS" } } }, "AssetsProductReadyWebhook": { "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": { "asset_report_id": { "description": "The `asset_report_id` corresponding to the Asset Report the webhook has fired for.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "report_type": { "$ref": "#/components/schemas/AssetReportType" }, "user_id": { "description": "The `user_id` corresponding to the User ID the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`PRODUCT_READY`", "type": "string" }, "webhook_type": { "description": "`ASSETS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "asset_report_id", "environment" ], "title": "AssetsProductReadyWebhook", "type": "object", "x-examples": { "example-1": { "asset_report_id": "47dfc92b-bba3-4583-809e-ce871b321f05", "environment": "production", "report_type": "FULL", "webhook_code": "PRODUCT_READY", "webhook_type": "ASSETS" } } }, "AuthDefaultUpdateWebhook": { "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": { "account_ids_with_new_auth": { "description": "An array of `account_id`'s for accounts that contain new auth.", "items": { "type": "string" }, "type": "array" }, "account_ids_with_updated_auth": { "$ref": "#/components/schemas/AccountIdsWithUpdatedAuth" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "error", "account_ids_with_new_auth", "account_ids_with_updated_auth", "environment" ], "title": "AuthDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_ids_with_new_auth": [], "account_ids_with_updated_auth": { "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp": [ "ACCOUNT_NUMBER" ] }, "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "DEFAULT_UPDATE", "webhook_type": "AUTH" } } }, "AuthGetNumbers": { "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": { "description": "An array of ACH numbers identifying accounts.", "items": { "$ref": "#/components/schemas/NumbersACH" }, "type": "array" }, "bacs": { "description": "An array of Bacs numbers identifying accounts.", "items": { "$ref": "#/components/schemas/NumbersBACS" }, "type": "array" }, "eft": { "description": "An array of EFT numbers identifying accounts.", "items": { "$ref": "#/components/schemas/NumbersEFT" }, "type": "array" }, "international": { "description": "An array of IBAN numbers identifying accounts.", "items": { "$ref": "#/components/schemas/NumbersInternational" }, "type": "array" } }, "required": [ "ach", "eft", "international", "bacs" ], "type": "object" }, "AuthGetRequest": { "description": "AuthGetRequest defines the request schema for `/auth/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/AuthGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "AuthGetRequestOptions": { "description": "An optional object to filter `/auth/get` results.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item.\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "AuthGetResponse": { "additionalProperties": true, "description": "AuthGetResponse defines the response schema for `/auth/get`", "properties": { "accounts": { "description": "The `accounts` for which numbers are being retrieved.", "items": { "$ref": "#/components/schemas/AccountBase" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "numbers": { "$ref": "#/components/schemas/AuthGetNumbers" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "numbers", "item", "request_id" ], "type": "object" }, "AuthMetadata": { "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" ], "title": "AuthMetadata", "type": "object" }, "AuthSupportedMethods": { "additionalProperties": true, "description": "Metadata specifically related to which auth methods an institution supports.", "nullable": true, "properties": { "automated_micro_deposits": { "description": "Indicates if automated micro-deposits are supported.", "type": "boolean" }, "instant_auth": { "description": "Indicates if instant auth is supported.", "type": "boolean" }, "instant_match": { "description": "Indicates if instant match is supported.", "type": "boolean" }, "instant_micro_deposits": { "description": "Indicates if instant micro-deposits are supported.", "type": "boolean" } }, "required": [ "instant_auth", "instant_match", "automated_micro_deposits", "instant_micro_deposits" ], "title": "AuthSupportedMethods", "type": "object" }, "AuthUpdateTypes": { "description": "The possible types of auth data that may have changed.", "enum": [ "ACCOUNT_NUMBER", "ROUTING_NUMBER" ], "type": "string" }, "AuthVerifyNumbersACH": { "description": "ACH numbers for verification via Database Auth", "properties": { "account": { "description": "Account's account number", "type": "string" }, "routing": { "description": "Account's routing number", "type": "string" } }, "required": [ "account", "routing" ], "type": "object" }, "AuthVerifyRequest": { "description": "AuthVerifyRequest defines the request schema for `/auth/verify`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "legal_name": { "description": "Account owner's legal name", "nullable": true, "type": "string" }, "numbers": { "$ref": "#/components/schemas/AuthVerifyRequestNumbers" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "numbers" ], "type": "object" }, "AuthVerifyRequestNumbers": { "description": "An object containing identifying account numbers for verification via Database Auth", "properties": { "ach": { "$ref": "#/components/schemas/AuthVerifyNumbersACH" } }, "required": [ "ach" ], "type": "object" }, "AuthVerifyResponse": { "additionalProperties": true, "description": "AuthVerifyResponse defines the response schema for `/auth/verify`", "properties": { "item_id": { "description": "The `item_id` value of the Item created for verification. If numbers data provided is invalid, an Item may not be created.", "nullable": true, "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "verification_insights": { "$ref": "#/components/schemas/AccountVerificationInsights" }, "verification_status": { "description": "Indicates the Item's database verification status. Possible values are:\n\n`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.\n\n`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.\n\n`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.\n", "type": "string" } }, "required": [ "request_id", "verification_status", "verification_insights" ], "type": "object" }, "AuthorizationGuaranteeDetails": { "additionalProperties": true, "description": "Adaptive guarantee details for a transfer authorization, including the guarantee outcome and settlement schedule. Omitted when no guarantee was attempted.", "nullable": true, "properties": { "outcome": { "$ref": "#/components/schemas/TransferGuaranteeOutcome" }, "schedule": { "description": "The adaptive guarantee settlement schedule for this authorization.", "items": { "$ref": "#/components/schemas/AuthorizationGuaranteeScheduleItem" }, "type": "array" } }, "required": [ "outcome", "schedule" ], "title": "AuthorizationGuaranteeDetails", "type": "object" }, "AuthorizationGuaranteeScheduleItem": { "additionalProperties": true, "description": "A single entry in an authorization's adaptive guarantee settlement schedule, describing one tranche of guaranteed funds.", "properties": { "amount": { "description": "The guaranteed amount for this schedule entry (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "observation_window_business_days": { "description": "The number of business days in the observation window for this tranche. `0` when the tranche is not subject to an observation window.", "type": "integer" } }, "required": [ "amount", "observation_window_business_days" ], "title": "AuthorizationGuaranteeScheduleItem", "type": "object" }, "AutomaticallyVerifiedWebhook": { "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": { "account_id": { "description": "The `account_id` of the account associated with the webhook", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`AUTOMATICALLY_VERIFIED`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "item_id", "environment" ], "title": "AutomaticallyVerifiedWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "webhook_code": "AUTOMATICALLY_VERIFIED", "webhook_type": "AUTH" } } }, "BankIncomeCompleteResult": { "description": "The result of the bank income report generation\n\n`SUCCESS`: The bank income report was successfully generated and can be retrieved via `/credit/bank_income/get`.\n\n`FAILURE`: The bank income report failed to be generated", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "BankIncomeCompleteWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "result": { "$ref": "#/components/schemas/BankIncomeCompleteResult" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`BANK_INCOME_COMPLETE`", "type": "string" }, "webhook_type": { "description": "`INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "result", "environment" ], "title": "BankIncomeCompleteWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "result": "SUCCESS", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "BANK_INCOME_COMPLETE", "webhook_type": "INCOME" } } }, "BankIncomeRefreshCompleteResult": { "description": "The result of the bank income refresh report generation\n\n`SUCCESS`: The refreshed report was successfully generated and can be retrieved via `/credit/bank_income/get`.\n\n`FAILURE`: The refreshed report failed to be generated", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "BankIncomeRefreshCompleteWebhook": { "additionalProperties": true, "description": "Fired when a refreshed bank income report has finished generating or failed to generate. The `/credit/bank_income/refresh` endpoint that previously triggered this webhook is deprecated; to refresh Bank Income data, send the user through Link's update mode, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To get this webhook, subscribe via the [Dashboard](https://dashboard.plaid.com/developers/webhooks).", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "result": { "$ref": "#/components/schemas/BankIncomeRefreshCompleteResult" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`BANK_INCOME_REFRESH_COMPLETE`", "type": "string" }, "webhook_type": { "description": "`INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "result", "environment" ], "title": "BankIncomeRefreshCompleteWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "result": "SUCCESS", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "BANK_INCOME_REFRESH_COMPLETE", "webhook_type": "INCOME" } } }, "BankIncomeRefreshUpdateWebhook": { "additionalProperties": true, "description": "Fired when a change to the user's income is detected. The `/credit/bank_income/refresh` endpoint that previously served this refresh is deprecated; to get updated income data, send the user through Link's update mode so they can confirm their income sources, or migrate to CRA Income Insights and call `/cra/check_report/create` for a backend refresh. To receive this webhook, subscribe in the [Dashboard](https://dashboard.plaid.com/developers/webhooks).", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`BANK_INCOME_REFRESH_UPDATE`", "type": "string" }, "webhook_type": { "description": "`INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "BankIncomeRefreshUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "BANK_INCOME_REFRESH_UPDATE", "webhook_type": "INCOME" } } }, "BankInitiatedReturnRisk": { "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": { "risk_tier": { "$ref": "#/components/schemas/BankInitiatedRiskTier" }, "score": { "$ref": "#/components/schemas/SignalScore" } }, "required": [ "risk_tier", "score" ], "title": "BankInitiatedReturnRisk", "type": "object" }, "BankInitiatedRiskTier": { "deprecated": true, "description": "DEPRECATED. Use Signal Rules instead to transform the `score` into a useful action.\n\nIn the `bank_initiated_return_risk` object, there are eight risk tiers corresponding to the scores:\n 1: Predicted bank-initiated return incidence rate between 0.0% - 0.5%\n 2: Predicted bank-initiated return incidence rate between 0.5% - 1.5%\n 3: Predicted bank-initiated return incidence rate between 1.5% - 3%\n 4: Predicted bank-initiated return incidence rate between 3% - 5%\n 5: Predicted bank-initiated return incidence rate between 5% - 10%\n 6: Predicted bank-initiated return incidence rate between 10% - 15%\n 7: Predicted bank-initiated return incidence rate between 15% and 50%\n 8: Predicted bank-initiated return incidence rate greater than 50%\n", "maximum": 8, "minimum": 1, "type": "integer", "x-hidden-from-docs": true }, "BankPenaltiesIndicators": { "additionalProperties": true, "description": "Insights into bank penalties and fees, including overdraft fees, NSF fees, and other bank-imposed charges.", "nullable": true, "properties": { "amount": { "description": "The total value of outflow transactions categorized as `BANK_PENALTIES`, across all the accounts in the report within the requested time window.", "format": "double", "nullable": true, "type": "number" }, "category_details": { "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" }, "type": "array" }, "days_since_last_occurrence": { "description": "The number of days since the last transaction that falls into the `BANK_PENALTIES` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "monthly_summaries": { "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" }, "type": "array" }, "percentage_of_income": { "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.\nIf there's no available income for the given time period, this field value will be `-1`.", "format": "double", "nullable": true, "type": "number" }, "transactions_count": { "description": "The total number of transactions that fall into the `BANK_PENALTIES` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "BankPenaltiesIndicators", "type": "object" }, "BankTransfer": { "additionalProperties": true, "description": "Represents a bank transfer within the Bank Transfers API.", "properties": { "account_id": { "description": "The account ID that should be credited/debited for this bank transfer.", "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/BankTransferAmount" }, "cancellable": { "description": "When `true`, you can still cancel this bank transfer.", "type": "boolean" }, "created": { "description": "The datetime when this bank transfer was created. This will be of the form `2006-01-02T15:04:05Z`", "format": "date-time", "type": "string" }, "custom_tag": { "description": "A string containing the custom tag provided by the client in the create request. Will be null if not provided.", "nullable": true, "type": "string" }, "description": { "description": "The description of the transfer.", "type": "string" }, "direction": { "$ref": "#/components/schemas/BankTransferDirection" }, "failure_reason": { "$ref": "#/components/schemas/BankTransferFailure" }, "id": { "$ref": "#/components/schemas/BankTransferID" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "metadata": { "$ref": "#/components/schemas/BankTransferMetadata" }, "network": { "$ref": "#/components/schemas/BankTransferNetwork" }, "origination_account_id": { "description": "Plaid's unique identifier for the origination account that was used for this transfer.", "type": "string" }, "status": { "$ref": "#/components/schemas/BankTransferStatus" }, "type": { "$ref": "#/components/schemas/BankTransferType" }, "user": { "$ref": "#/components/schemas/BankTransferUser" } }, "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" ], "title": "BankTransfer", "type": "object" }, "BankTransferAccessToken": { "description": "The Plaid `access_token` for the account that will be debited or credited.", "type": "string" }, "BankTransferAmount": { "description": "The amount of the bank transfer (decimal string with two digits of precision e.g. \"10.00\").", "title": "BankTransferAmount", "type": "string" }, "BankTransferBalance": { "additionalProperties": true, "description": "Information about the balance of a bank transfer", "properties": { "available": { "description": "The total available balance - the sum of all successful debit transfer amounts minus all credit transfer amounts.", "type": "string" }, "transactable": { "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.", "type": "string" } }, "required": [ "available", "transactable" ], "title": "BankTransferBalance", "type": "object" }, "BankTransferBalanceGetRequest": { "description": "Defines the request schema for `/bank_transfer/balance/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "origination_account_id": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "BankTransferBalanceGetRequest", "type": "object" }, "BankTransferBalanceGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/balance/get`", "properties": { "balance": { "$ref": "#/components/schemas/BankTransferBalance" }, "origination_account_id": { "description": "The ID of the origination account that this balance belongs to.", "nullable": true, "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "balance", "origination_account_id", "request_id" ], "title": "BankTransferBalanceGetResponse", "type": "object" }, "BankTransferCancelRequest": { "description": "Defines the request schema for `/bank_transfer/cancel`", "properties": { "bank_transfer_id": { "$ref": "#/components/schemas/BankTransferID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "bank_transfer_id" ], "title": "BankTransferCancelRequest", "type": "object" }, "BankTransferCancelResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/cancel`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "BankTransferCancelResponse", "type": "object" }, "BankTransferCreateRequest": { "description": "Defines the request schema for `/bank_transfer/create`", "properties": { "access_token": { "$ref": "#/components/schemas/BankTransferAccessToken" }, "account_id": { "description": "The Plaid `account_id` for the account that will be debited or credited.", "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/BankTransferAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "custom_tag": { "description": "An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.", "maxLength": 100, "nullable": true, "type": "string" }, "description": { "description": "The transfer description. Maximum of 10 characters.", "maxLength": 10, "type": "string" }, "idempotency_key": { "$ref": "#/components/schemas/BankTransferIdempotencyKey" }, "iso_currency_code": { "description": "The currency of the transfer amount - should be set to \"USD\".", "type": "string" }, "metadata": { "$ref": "#/components/schemas/BankTransferMetadata" }, "network": { "$ref": "#/components/schemas/BankTransferNetwork" }, "origination_account_id": { "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.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "type": { "$ref": "#/components/schemas/BankTransferType" }, "user": { "$ref": "#/components/schemas/BankTransferUser" } }, "required": [ "idempotency_key", "access_token", "account_id", "type", "network", "amount", "iso_currency_code", "description", "user" ], "title": "BankTransferCreateRequest", "type": "object" }, "BankTransferCreateResponse": { "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" ], "title": "BankTransferCreateResponse", "type": "object" }, "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 ], "nullable": true, "title": "BankTransferDirection", "type": "string" }, "BankTransferEvent": { "additionalProperties": true, "description": "Represents an event in the Bank Transfers API.", "properties": { "account_id": { "description": "The account ID associated with the bank transfer.", "type": "string" }, "bank_transfer_amount": { "description": "The bank transfer amount.", "type": "string" }, "bank_transfer_id": { "$ref": "#/components/schemas/BankTransferID" }, "bank_transfer_iso_currency_code": { "description": "The currency of the bank transfer amount.", "type": "string" }, "bank_transfer_type": { "$ref": "#/components/schemas/BankTransferType" }, "direction": { "$ref": "#/components/schemas/BankTransferDirection" }, "event_id": { "description": "Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers.", "minimum": 0, "type": "integer" }, "event_type": { "$ref": "#/components/schemas/BankTransferEventType" }, "failure_reason": { "$ref": "#/components/schemas/BankTransferFailure" }, "origination_account_id": { "description": "The ID of the origination account that this balance belongs to.", "nullable": true, "type": "string" }, "timestamp": { "description": "The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.", "format": "date-time", "type": "string" } }, "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" ], "title": "BankTransferEvent", "type": "object" }, "BankTransferEventListBankTransferType": { "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 ], "nullable": true, "title": "BankTransferType", "type": "string" }, "BankTransferEventListDirection": { "description": "Indicates the direction of the transfer: `outbound`: for API-initiated transfers\n`inbound`: for payments received by the FBO account.", "enum": [ "inbound", "outbound", null ], "nullable": true, "title": "BankTransferDirection", "type": "string" }, "BankTransferEventListRequest": { "description": "Defines the request schema for `/bank_transfer/event/list`", "properties": { "account_id": { "description": "The account ID to get events for all transactions to/from an account.", "nullable": true, "type": "string" }, "bank_transfer_id": { "description": "Plaid's unique identifier for a bank transfer.", "nullable": true, "title": "BankTransferID", "type": "string" }, "bank_transfer_type": { "$ref": "#/components/schemas/BankTransferEventListBankTransferType" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "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.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "direction": { "$ref": "#/components/schemas/BankTransferEventListDirection" }, "end_date": { "description": "The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "event_types": { "description": "Filter events by event type.", "items": { "$ref": "#/components/schemas/BankTransferEventType" }, "type": "array" }, "offset": { "default": 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.", "minimum": 0, "nullable": true, "type": "integer" }, "origination_account_id": { "description": "The origination account ID to get events for transfers from a specific origination account.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "BankTransferEventListRequest", "type": "object" }, "BankTransferEventListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/event/list`", "properties": { "bank_transfer_events": { "items": { "$ref": "#/components/schemas/BankTransferEvent" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "bank_transfer_events", "request_id" ], "title": "BankTransferEventListResponse", "type": "object" }, "BankTransferEventSyncRequest": { "description": "Defines the request schema for `/bank_transfer/event/sync`", "properties": { "after_id": { "description": "The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.", "minimum": 0, "type": "integer" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of bank transfer events to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "after_id" ], "title": "BankTransferEventSyncRequest", "type": "object" }, "BankTransferEventSyncResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/event/sync`", "properties": { "bank_transfer_events": { "items": { "$ref": "#/components/schemas/BankTransferEvent" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "bank_transfer_events", "request_id" ], "title": "BankTransferEventSyncResponse", "type": "object" }, "BankTransferEventType": { "description": "The type of event that this bank transfer represents.\n\n`pending`: A new transfer was created; it is in the pending state.\n\n`cancelled`: The transfer was cancelled by the client.\n\n`failed`: The transfer failed, no funds were moved.\n\n`posted`: The transfer has been successfully submitted to the payment network.\n\n`reversed`: A posted transfer was reversed.", "enum": [ "pending", "cancelled", "failed", "posted", "reversed" ], "title": "BankTransferEventType", "type": "string" }, "BankTransferFailure": { "additionalProperties": true, "description": "The failure reason if the type of this transfer is `\"failed\"` or `\"reversed\"`. Null value otherwise.", "nullable": true, "properties": { "ach_return_code": { "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).", "nullable": true, "type": "string" }, "description": { "description": "A human-readable description of the reason for the failure or reversal.", "type": "string" } }, "title": "BankTransferFailure", "type": "object" }, "BankTransferGetRequest": { "description": "Defines the request schema for `/bank_transfer/get`", "properties": { "bank_transfer_id": { "$ref": "#/components/schemas/BankTransferID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "bank_transfer_id" ], "title": "BankTransferGetRequest", "type": "object" }, "BankTransferGetResponse": { "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" ], "title": "BankTransferGetResponse", "type": "object" }, "BankTransferID": { "description": "Plaid's unique identifier for a bank transfer.", "title": "BankTransferID", "type": "string" }, "BankTransferIdempotencyKey": { "description": "A random key provided by the client, per unique bank transfer. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "BankTransferIdempotencyKey", "type": "string" }, "BankTransferListRequest": { "description": "Defines the request schema for `/bank_transfer/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of bank transfers to return.", "maximum": 25, "minimum": 1, "type": "integer" }, "direction": { "$ref": "#/components/schemas/BankTransferDirection" }, "end_date": { "description": "The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of bank transfers to skip before returning results.", "minimum": 0, "type": "integer" }, "origination_account_id": { "description": "Filter bank transfers to only those originated through the specified origination account.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "BankTransferListRequest", "type": "object" }, "BankTransferListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/list`", "properties": { "bank_transfers": { "items": { "$ref": "#/components/schemas/BankTransfer" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "bank_transfers", "request_id" ], "title": "BankTransferListResponse", "type": "object" }, "BankTransferMetadata": { "additionalProperties": { "type": "string" }, "description": "The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:\nThe JSON values must be Strings (no nested JSON objects allowed)\nOnly ASCII characters may be used\nMaximum of 50 key/value pairs\nMaximum key length of 40 characters\nMaximum value length of 500 characters\n", "maxProperties": 50, "nullable": true, "title": "BankTransferMetadata", "type": "object" }, "BankTransferMigrateAccountRequest": { "description": "Defines the request schema for `/bank_transfer/migrate_account`", "properties": { "account_number": { "description": "The user's account number.", "type": "string" }, "account_type": { "description": "The type of the bank account (`checking` or `savings`).", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "routing_number": { "description": "The user's routing number.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wire_routing_number": { "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`.", "type": "string" } }, "required": [ "account_number", "routing_number", "account_type" ], "title": "BankTransferMigrateAccountRequest", "type": "object" }, "BankTransferMigrateAccountResponse": { "additionalProperties": true, "description": "Defines the response schema for `/bank_transfer/migrate_account`", "properties": { "access_token": { "description": "The Plaid `access_token` for the newly created Item.", "type": "string" }, "account_id": { "description": "The Plaid `account_id` for the newly created Item.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "access_token", "account_id", "request_id" ], "title": "BankTransferMigrateAccountResponse", "type": "object" }, "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" ], "title": "BankTransferNetwork", "type": "string" }, "BankTransferStatus": { "description": "The status of the transfer.", "enum": [ "pending", "posted", "cancelled", "failed", "reversed" ], "title": "BankTransferStatus", "type": "string" }, "BankTransferSweep": { "additionalProperties": true, "description": "BankTransferSweep describes a sweep transfer.", "properties": { "amount": { "description": "The amount of the sweep.", "type": "string" }, "created_at": { "description": "The datetime when the sweep occurred, in RFC 3339 format.", "format": "date-time", "type": "string" }, "id": { "description": "Identifier of the sweep.", "type": "string" }, "iso_currency_code": { "description": "The currency of the sweep, e.g. \"USD\".", "type": "string" } }, "required": [ "id", "created_at", "amount", "iso_currency_code" ], "title": "BankTransferSweep", "type": "object" }, "BankTransferSweepGetRequest": { "description": "Defines the request schema for `/bank_transfer/sweep/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "sweep_id": { "description": "Identifier of the sweep.", "type": "string" } }, "required": [ "sweep_id" ], "title": "BankTransferSweepGetRequest", "type": "object" }, "BankTransferSweepGetResponse": { "additionalProperties": true, "description": "BankTransferSweepGetResponse defines the response schema for `/bank_transfer/sweep/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweep": { "$ref": "#/components/schemas/BankTransferSweep" } }, "required": [ "sweep", "request_id" ], "title": "BankTransferSweepGetResponse", "type": "object" }, "BankTransferSweepListRequest": { "description": "BankTransferSweepListRequest defines the request schema for `/bank_transfer/sweep/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of sweeps to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_time": { "description": "The end `created` datetime of sweeps to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" }, "origination_account_id": { "description": "If multiple origination accounts are available, `origination_account_id` must be used to specify the account that the sweeps belong to.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_time": { "description": "The start `created` datetime of sweeps to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" } }, "title": "BankTransferSweepListRequest", "type": "object" }, "BankTransferSweepListResponse": { "additionalProperties": true, "description": "BankTransferSweepListResponse defines the response schema for `/bank_transfer/sweep/list`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweeps": { "items": { "$ref": "#/components/schemas/BankTransferSweep" }, "type": "array" } }, "required": [ "sweeps", "request_id" ], "title": "BankTransferSweepListResponse", "type": "object" }, "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" ], "title": "BankTransferType", "type": "string" }, "BankTransferUser": { "additionalProperties": true, "description": "The legal name and other information for the account holder.", "properties": { "email_address": { "description": "The account holder's email.", "nullable": true, "type": "string" }, "legal_name": { "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.", "type": "string" }, "routing_number": { "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, "type": "string" } }, "required": [ "legal_name" ], "title": "BankTransferUser", "type": "object" }, "BankTransfersEventsUpdateWebhook": { "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`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`BANK_TRANSFERS_EVENTS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`BANK_TRANSFERS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "environment" ], "title": "BankTransfersEventsUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "webhook_code": "BANK_TRANSFERS_EVENTS_UPDATE", "webhook_type": "BANK_TRANSFERS" } } }, "BankTransfersEventsUpdateWebhookForAuth": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`BANK_TRANSFERS_EVENTS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`BANK_TRANSFERS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "environment" ], "title": "BankTransfersEventsUpdateWebhookForAuth", "type": "object", "x-examples": { "example-1": { "environment": "production", "webhook_code": "BANK_TRANSFERS_EVENTS_UPDATE", "webhook_type": "BANK_TRANSFERS" } } }, "BaseReport": { "additionalProperties": true, "description": "An object representing a Base Report", "properties": { "attributes": { "$ref": "#/components/schemas/BaseReportUserAttributes" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "date_generated": { "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\").", "format": "date-time", "type": "string" }, "days_requested": { "description": "The number of days of transaction history requested.", "type": "number" }, "items": { "description": "Data returned by Plaid about each of the Items included in the Base Report.", "items": { "$ref": "#/components/schemas/BaseReportItem" }, "type": "array" }, "report_id": { "$ref": "#/components/schemas/BaseReportId" } }, "required": [ "report_id", "date_generated", "days_requested", "items" ], "title": "BaseReport", "type": "object" }, "BaseReportAccount": { "additionalProperties": true, "description": "Base Report information about an account", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "account_insights": { "$ref": "#/components/schemas/BaseReportAccountInsights" }, "attributes": { "$ref": "#/components/schemas/BaseReportAttributes" }, "balances": { "$ref": "#/components/schemas/BaseReportAccountBalances" }, "consumer_disputes": { "description": "The information about previously submitted valid dispute statements by the consumer", "items": { "$ref": "#/components/schemas/ConsumerDispute" }, "type": "array" }, "days_available": { "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.", "type": "number" }, "historical_balances": { "description": "Calculated data about the historical balances on the account. Currently not supported by `brokerage` or `investment` accounts.", "items": { "$ref": "#/components/schemas/BaseReportHistoricalBalance" }, "type": "array", "x-hidden-from-docs": true }, "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.", "nullable": true, "type": "string" }, "metadata": { "$ref": "#/components/schemas/BaseReportAccountMetadata" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution", "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "ownership_type": { "$ref": "#/components/schemas/OwnershipType" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "transactions": { "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" }, "type": "array" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "required": [ "account_id", "balances", "consumer_disputes", "mask", "metadata", "name", "official_name", "type", "subtype", "days_available", "transactions", "owners", "ownership_type" ], "title": "BaseReportAccount", "type": "object" }, "BaseReportAccountBalances": { "description": "Information about an account's balances.", "properties": { "available": { "description": "The amount of funds available to be withdrawn from the account, as determined by the financial institution.\n\nFor `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nAvailable 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`.\n\nIf `current` is `null` this field is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "average_balance": { "description": "The average historical balance for the entire report", "format": "double", "nullable": true, "type": "number" }, "average_monthly_balances": { "description": "The average historical balance of each calendar month", "items": { "$ref": "#/components/schemas/BaseReportAverageMonthlyBalances" }, "type": "array" }, "current": { "description": "The total amount of funds in or owed by the account.\n\nFor `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nWhen returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "last_updated_datetime": { "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`.\n\nThis 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.\n\nIf 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.", "format": "date-time", "nullable": true, "type": "string" }, "limit": { "description": "For `credit`-type accounts, this represents the credit limit.\n\nFor `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe.\n\nIn North America, this field is typically only available for `credit`-type accounts.", "format": "double", "nullable": true, "type": "number" }, "most_recent_thirty_day_average_balance": { "description": "The average historical balance from the most recent 30 days", "format": "double", "nullable": true, "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "available", "current", "limit", "iso_currency_code", "unofficial_currency_code" ], "title": "BaseReportAccountBalances", "type": "object" }, "BaseReportAccountInsights": { "additionalProperties": true, "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.", "properties": { "average_days_between_transactions": { "description": "Average number of days between sequential transactions", "type": "number" }, "average_inflow_amounts": { "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" }, "type": "array" }, "average_outflow_amounts": { "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" }, "type": "array" }, "days_available": { "description": "Number of days available for the account.", "type": "integer" }, "longest_gaps_between_transactions": { "description": "Longest gap between sequential transactions in a time period. This array can include multiple time periods.", "items": { "$ref": "#/components/schemas/BaseReportLongestGapInsights" }, "type": "array" }, "most_recent_transaction_date": { "description": "Date of the most recent transaction for the account.", "format": "date", "nullable": true, "type": "string" }, "number_of_days_no_transactions": { "description": "Number of days with no transactions", "type": "integer" }, "number_of_inflows": { "description": "The number of debits into the account. This array will be empty for non-depository accounts.", "items": { "$ref": "#/components/schemas/BaseReportNumberFlowInsights" }, "type": "array" }, "number_of_outflows": { "description": "The number of outflows from the account. This array will be empty for non-depository accounts.", "items": { "$ref": "#/components/schemas/BaseReportNumberFlowInsights" }, "type": "array" }, "oldest_transaction_date": { "description": "Date of the earliest transaction for the account.", "format": "date", "nullable": true, "type": "string" } }, "title": "BaseReportAccountInsights", "type": "object" }, "BaseReportAccountMetadata": { "description": "Metadata about the extracted account.", "properties": { "end_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\").", "format": "date", "nullable": true, "type": "string" }, "start_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\").", "format": "date", "nullable": true, "type": "string" } }, "required": [ "start_date", "end_date" ], "title": "BaseReportAccountMetadata", "type": "object" }, "BaseReportAttributes": { "additionalProperties": true, "description": "Calculated attributes derived from transaction-level data.", "properties": { "is_primary_account": { "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, "type": "boolean" }, "nsf_overdraft_transactions_count": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_30d": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_60d": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_90d": { "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).", "type": "integer" }, "primary_account_score": { "description": "Value ranging from 0-1. The higher the score, the more confident we are of the account being the primary account.", "nullable": true, "type": "number" }, "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" } }, "title": "BaseReportAttributes", "type": "object" }, "BaseReportAverageFlowInsights": { "additionalProperties": true, "description": "Average dollar amount of credit or debit transactions out of the account. This field will only be included for depository accounts.", "properties": { "end_date": { "description": "The end date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "start_date": { "description": "The start date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amount": { "$ref": "#/components/schemas/CreditAmountWithCurrency" } }, "required": [ "start_date", "end_date", "total_amount" ], "title": "BaseReportAverageFlowInsights", "type": "object", "x-hidden-from-docs": true }, "BaseReportAverageMonthlyBalances": { "additionalProperties": true, "description": "Average balance in dollar amount per month", "properties": { "average_balance": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "end_date": { "description": "The end date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "type": "string" }, "start_date": { "description": "The start date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "type": "string" } }, "required": [ "start_date", "end_date", "average_balance" ], "title": "BaseReportAverageMonthlyBalances", "type": "object", "x-hidden-from-docs": true }, "BaseReportHistoricalBalance": { "additionalProperties": true, "description": "An object representing a balance held by an account in the past", "properties": { "current": { "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.\n\nIf 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.", "format": "double", "type": "number" }, "date": { "description": "The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD)", "format": "date", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "required": [ "date", "current", "iso_currency_code", "unofficial_currency_code" ], "title": "BaseReportHistoricalBalance", "type": "object" }, "BaseReportId": { "description": "A unique ID identifying a Base Report. Like all Plaid identifiers, this ID is case sensitive.", "title": "BaseReportId", "type": "string" }, "BaseReportInvestmentHolding": { "additionalProperties": true, "description": "A securities holding at an institution.", "properties": { "account_id": { "description": "The Plaid `account_id` associated with the holding.", "type": "string" }, "cost_basis": { "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.", "format": "double", "nullable": true, "type": "number" }, "institution_price": { "description": "The last price given by the institution for this security.", "format": "double", "type": "number" }, "institution_price_as_of": { "description": "The date at which `institution_price` was current.", "format": "date", "nullable": true, "type": "string" }, "institution_value": { "description": "The value of the holding, as reported by the institution.", "format": "double", "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "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.", "format": "double", "type": "number" }, "security_id": { "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.", "type": "string" }, "unofficial_currency_code": { "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.\n\nSee the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.\n", "nullable": true, "type": "string" } }, "required": [ "account_id", "security_id", "institution_price", "institution_value", "cost_basis", "quantity", "iso_currency_code", "unofficial_currency_code" ], "title": "BaseReportInvestmentHolding", "type": "object" }, "BaseReportInvestmentSecurity": { "additionalProperties": true, "description": "Investment security associated with the account.", "properties": { "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 start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform).", "nullable": true, "type": "string" }, "institution_id": { "description": "If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs.", "nullable": true, "type": "string" }, "institution_security_id": { "description": "An identifier given to the security by the institution.", "nullable": true, "type": "string" }, "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 start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform).", "nullable": true, "type": "string" }, "name": { "description": "A descriptive name for the security, suitable for display.", "nullable": true, "type": "string" }, "security_id": { "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.", "type": "string" }, "ticker_symbol": { "description": "The security's trading symbol for publicly traded securities, and otherwise a short identifier if available.", "nullable": true, "type": "string" }, "type": { "description": "The security type of the holding. Valid security types are:\n\n`cash`: Cash, currency, and money market funds\n\n`cryptocurrency`: Digital or virtual currencies\n\n`derivative`: Options, warrants, and other derivative instruments\n\n`equity`: Domestic and foreign equities\n\n`etf`: Multi-asset exchange-traded investment funds\n\n`fixed income`: Bonds and certificates of deposit (CDs)\n\n`loan`: Loans and loan receivables\n\n`mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors\n\n`other`: Unknown or other investment types", "nullable": true, "type": "string" } }, "required": [ "security_id", "name", "isin", "cusip", "institution_security_id", "institution_id", "ticker_symbol", "type" ], "title": "BaseReportInvestmentSecurity", "type": "object" }, "BaseReportInvestmentTransaction": { "additionalProperties": true, "description": "A transaction within an investment account.", "properties": { "account_id": { "description": "The `account_id` of the account against which this transaction posted.", "type": "string" }, "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.", "format": "double", "type": "number" }, "date": { "description": "The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction.", "format": "date", "type": "string" }, "fees": { "description": "The combined value of all fees applied to this transaction", "format": "double", "nullable": true, "type": "number" }, "investment_transaction_id": { "description": "The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "name": { "description": "The institution's description of the transaction.", "type": "string" }, "price": { "description": "The price of the security at which this transaction occurred.", "format": "double", "type": "number" }, "quantity": { "description": "The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions.", "format": "double", "type": "number" }, "security_id": { "description": "The `security_id` to which this transaction is related.", "nullable": true, "type": "string" }, "subtype": { "$ref": "#/components/schemas/InvestmentTransactionSubtype" }, "type": { "$ref": "#/components/schemas/InvestmentTransactionType" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "investment_transaction_id", "account_id", "security_id", "date", "name", "quantity", "amount", "price", "fees", "type", "subtype", "iso_currency_code", "unofficial_currency_code" ], "title": "BaseReportInvestmentTransaction", "type": "object" }, "BaseReportInvestments": { "additionalProperties": true, "description": "A set of fields describing the investments data on an account.", "nullable": true, "properties": { "holdings": { "description": "Quantities and values of securities held in the investment account. Map to the `securities` array for security details.", "items": { "$ref": "#/components/schemas/BaseReportInvestmentHolding" }, "type": "array" }, "investment_transactions": { "description": "Transaction history on the investment account.", "items": { "$ref": "#/components/schemas/BaseReportInvestmentTransaction" }, "type": "array" }, "securities": { "description": "Details of specific securities held in the investment account.", "items": { "$ref": "#/components/schemas/BaseReportInvestmentSecurity" }, "type": "array" } }, "required": [ "holdings", "securities", "investment_transactions" ], "title": "BaseReportInvestments", "type": "object" }, "BaseReportItem": { "additionalProperties": true, "description": "A representation of an Item within a Base Report.", "properties": { "accounts": { "description": "Data about each of the accounts open on the Item.", "items": { "$ref": "#/components/schemas/BaseReportAccount" }, "type": "array" }, "date_last_updated": { "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.", "format": "date-time", "type": "string" }, "institution_id": { "description": "The id of the financial institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The full financial institution name associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" } }, "required": [ "institution_name", "institution_id", "item_id", "date_last_updated", "accounts" ], "title": "BaseReportItem", "type": "object" }, "BaseReportLongestGapInsights": { "additionalProperties": true, "description": "Largest number of days between sequential transactions per calendar month", "properties": { "days": { "description": "Largest number of days between sequential transactions for this time period.", "nullable": true, "type": "integer" }, "end_date": { "description": "The end date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "start_date": { "description": "The start date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" } }, "title": "BaseReportLongestGapInsights", "type": "object", "x-hidden-from-docs": true }, "BaseReportNumberFlowInsights": { "additionalProperties": true, "description": "The number of credits or debits out of the account. This field will only be included for depository accounts.", "properties": { "count": { "description": "The number of credits or debits out of the account for this time period.", "type": "integer" }, "end_date": { "description": "The end date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "start_date": { "description": "The start date of this time period.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" } }, "required": [ "start_date", "end_date", "count" ], "title": "BaseReportNumberFlowInsights", "type": "object", "x-hidden-from-docs": true }, "BaseReportTransaction": { "additionalProperties": true, "description": "A transaction on the Base Report", "properties": { "account_id": { "description": "The ID of the account in which this transaction occurred.", "type": "string" }, "account_owner": { "description": "The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts.", "nullable": true, "type": "string" }, "amount": { "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.", "format": "double", "type": "number" }, "category": { "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" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "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).", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "credit_category": { "$ref": "#/components/schemas/CreditCategory" }, "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` ).", "format": "date", "type": "string" }, "date_transacted": { "description": "The date on which the transaction took place, in IS0 8601 format.", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "location": { "$ref": "#/components/schemas/Location" }, "merchant_name": { "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, "type": "string" }, "name": { "deprecated": true, "description": "The merchant name or transaction description.\n\nNote: This is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "nullable": true, "type": "string" }, "pending": { "description": "When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.", "type": "boolean" }, "personal_finance_category": { "allOf": [ { "$ref": "#/components/schemas/PersonalFinanceCategory" } ], "x-hidden-from-docs": true }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "transaction_type": { "$ref": "#/components/schemas/BaseReportTransactionType" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "transaction_id", "pending", "date", "unofficial_currency_code", "iso_currency_code", "amount", "account_id", "original_description" ], "title": "BaseReportTransaction", "type": "object" }, "BaseReportTransactionType": { "description": "`digital:` transactions that took place online.\n\n`place:` transactions that were made at a physical location.\n\n`special:` transactions that relate to banks, e.g. fees or deposits.\n\n`unresolved:` transactions that do not fit into the other types.\n", "enum": [ "digital", "place", "special", "unresolved" ], "nullable": true, "title": "BaseReportTransactionType", "type": "string", "x-hidden-from-docs": true }, "BaseReportUserAttributes": { "additionalProperties": true, "description": "Calculated attributes derived from transaction-level data, aggregated across accounts.", "properties": { "nsf_overdraft_transactions_count": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_30d": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_60d": { "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).", "type": "integer" }, "nsf_overdraft_transactions_count_90d": { "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).", "type": "integer" }, "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" } }, "title": "BaseReportUserAttributes", "type": "object" }, "BaseReportWarning": { "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": { "cause": { "$ref": "#/components/schemas/Cause" }, "warning_code": { "$ref": "#/components/schemas/BaseReportWarningCode" }, "warning_type": { "description": "The warning type, which will always be `BASE_REPORT_WARNING`", "type": "string" } }, "required": [ "warning_type", "warning_code", "cause" ], "title": "BaseReportWarning", "type": "object" }, "BaseReportWarningCode": { "description": "The warning code identifies a specific kind of warning.\n`IDENTITY_UNAVAILABLE`: Account-owner information is not available.\n`TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable.\n`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" ], "type": "string" }, "BaseReportsErrorWebhook": { "additionalProperties": true, "description": "Fired when Base Report generation has failed. The resulting `error` will have an `error_type` of `BASE_REPORT_ERROR`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "user_id": { "description": "The `user_id` corresponding to the User ID the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`ERROR`", "type": "string" }, "webhook_type": { "description": "`BASE_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "error", "user_id", "environment" ], "title": "BaseReportsErrorWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "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" }, "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "ERROR", "webhook_type": "BASE_REPORT" } }, "x-hidden-from-docs": true }, "BeaconAccountRiskAttributes": { "additionalProperties": true, "description": "The attributes object contains data that can be used to assess account risk. Examples of data include:\n`days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid\n`plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days\n`plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days\n`total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid\nFor 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": { "address_change_count_28d": { "description": "The number of times the account's addresses on file have changed over the past 28 days", "example": 1, "nullable": true, "type": "integer" }, "address_change_count_90d": { "description": "The number of times the account's addresses on file have changed over the past 90 days", "example": 3, "nullable": true, "type": "integer" }, "days_since_account_opening": { "description": "The number of days since the bank account was opened, as reported by the financial institution", "example": 365, "nullable": true, "type": "integer" }, "days_since_first_observed_transaction": { "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", "example": 180, "nullable": true, "type": "integer" }, "days_since_first_plaid_connection": { "description": "The number of days since the first time the Item was connected to an application via Plaid", "example": 1, "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_30d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 30 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_3d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_7d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_90d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 90 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_user_agents_count_30d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_user_agents_count_3d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_user_agents_count_7d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days", "example": 1, "nullable": true, "type": "integer" }, "distinct_user_agents_count_90d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days", "example": 1, "nullable": true, "type": "integer" }, "email_change_count_28d": { "description": "The number of times the account's email addresses on file have changed over the past 28 days", "example": 2, "nullable": true, "type": "integer" }, "email_change_count_90d": { "description": "The number of times the account's email addresses on file have changed over the past 90 days", "example": 4, "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "example": 1, "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "example": 1, "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "example": 1, "nullable": true, "type": "integer" }, "is_account_closed": { "description": "Indicates if the account has been closed by the financial institution or the consumer, or is at risk of being closed", "example": false, "nullable": true, "type": "boolean" }, "is_account_frozen_or_restricted": { "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", "example": false, "nullable": true, "type": "boolean" }, "phone_change_count_28d": { "description": "The number of times the account's phone numbers on file have changed over the past 28 days", "example": 1, "nullable": true, "type": "integer" }, "phone_change_count_90d": { "description": "The number of times the account's phone numbers on file have changed over the past 90 days", "example": 2, "nullable": true, "type": "integer" }, "plaid_connections_count_30d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 30 days", "example": 1, "nullable": true, "type": "integer" }, "plaid_connections_count_7d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 7 days", "example": 1, "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "example": 1, "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "example": 1, "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "example": 1, "nullable": true, "type": "integer" }, "total_plaid_connections_count": { "description": "The total number of times the Item has been connected to applications via Plaid", "example": 1, "nullable": true, "type": "integer" } }, "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" ], "title": "BeaconAccountRiskAttributes", "type": "object" }, "BeaconAccountRiskEvaluateAccount": { "description": "An account in the `/beacon/account_risk/v1/evaluate` response.", "properties": { "account_id": { "description": "The account ID.", "type": "string" }, "attributes": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateAccountAttributes" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "title": "BeaconAccountRiskEvaluateAccount", "type": "object" }, "BeaconAccountRiskEvaluateAccountAttributes": { "description": "The attributes object contains data that can be used to assess account risk. Examples of data include:\n`days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid\n`plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days\n`plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days\n`total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid\nFor 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": { "address_change_count_28d": { "description": "The number of times the account's addresses on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "address_change_count_90d": { "description": "The number of times the account's addresses on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "days_since_account_opening": { "description": "The number of days since the bank account was opened, as reported by the financial institution", "nullable": true, "type": "integer" }, "days_since_first_observed_transaction": { "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, "type": "integer" }, "days_since_first_plaid_connection": { "description": "The number of days since the first time the Item was connected to an application via Plaid", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_30d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 30 days", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_3d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_7d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_90d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 90 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_30d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_3d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_7d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_90d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days", "nullable": true, "type": "integer" }, "email_change_count_28d": { "description": "The number of times the account's email addresses on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "email_change_count_90d": { "description": "The number of times the account's email addresses on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "nullable": true, "type": "integer" }, "is_account_closed": { "description": "Indicates if the account has been closed by the financial institution or the consumer, or is at risk of being closed", "nullable": true, "type": "boolean" }, "is_account_frozen_or_restricted": { "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, "type": "boolean" }, "phone_change_count_28d": { "description": "The number of times the account's phone numbers on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "phone_change_count_90d": { "description": "The number of times the account's phone numbers on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "plaid_connections_count_30d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 30 days", "nullable": true, "type": "integer" }, "plaid_connections_count_7d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 7 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "nullable": true, "type": "integer" }, "total_plaid_connections_count": { "description": "The total number of times the item has been connected to applications via Plaid", "nullable": true, "type": "integer" } }, "title": "BeaconAccountRiskEvaluateAccountAttributes", "type": "object" }, "BeaconAccountRiskEvaluateEvaluationReason": { "description": "Description of the reason you want to evaluate risk.\n`ONBOARDING`: user links a first bank account as part of the onboarding flow of your platform.\n`NEW_ACCOUNT`: user links another bank account or replaces the currently linked bank account on your platform.\n`INFORMATION_CHANGE`: user changes their information on your platform, e.g., updating their phone number.\n`DORMANT_USER`: you decide to re-evaluate a user that becomes active after a period of inactivity.\n`OTHER`: any other reasons not listed here\nPossible values: `ONBOARDING`, `NEW_ACCOUNT`, `INFORMATION_CHANGE`, `DORMANT_USER`, `OTHER`\n", "enum": [ "ONBOARDING", "NEW_ACCOUNT", "INFORMATION_CHANGE", "DORMANT_USER", "OTHER" ], "type": "string", "x-hidden-from-docs": true }, "BeaconAccountRiskEvaluateRequest": { "description": "BeaconAccountRiskEvaluateRequest defines the request schema for `/beacon/account_risk/v1/evaluate`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_evaluation_id": { "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.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "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`.", "maxLength": 36, "minLength": 1, "type": "string" }, "device": { "$ref": "#/components/schemas/SignalDevice" }, "evaluate_time": { "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).", "type": "string" }, "evaluation_reason": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateEvaluationReason" }, "options": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "BeaconAccountRiskEvaluateRequest", "type": "object", "x-hidden-from-docs": true }, "BeaconAccountRiskEvaluateRequestOptions": { "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": { "description": "An array of `account_ids` for the specific accounts to evaluate.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "BeaconAccountRiskEvaluateResponse": { "additionalProperties": true, "description": "BeaconAccountRiskEvaluateResponse defines the response schema for `/beacon/account_risk/v1/evaluate`", "properties": { "accounts": { "description": "The accounts for which a risk evaluation has been requested.", "items": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateAccount" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "accounts" ], "title": "BeaconAccountRiskEvaluateResponse", "type": "object", "x-hidden-from-docs": true }, "BeaconAuditTrail": { "additionalProperties": true, "description": "Information about the last change made to the parent object specifying what caused the change as well as when it occurred.", "properties": { "dashboard_user_id": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "source": { "$ref": "#/components/schemas/BeaconAuditTrailSource" }, "timestamp": { "$ref": "#/components/schemas/Timestamp" } }, "required": [ "source", "dashboard_user_id", "timestamp" ], "title": "BeaconAuditTrail", "type": "object" }, "BeaconAuditTrailSource": { "description": "A type indicating what caused a resource to be changed or updated.\n\n\n`dashboard` - The resource was created or updated by a member of your team via the Plaid dashboard.\n\n`api` - The resource was created or updated via the Plaid API.\n\n`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`.\n\n`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`.", "enum": [ "dashboard", "api", "system", "bulk_import" ], "type": "string" }, "BeaconBankAccountInsights": { "additionalProperties": true, "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": { "description": "The Plaid `account_id`", "example": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo", "type": "string" }, "attributes": { "$ref": "#/components/schemas/BeaconAccountRiskAttributes" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "required": [ "account_id", "type", "subtype", "attributes" ], "title": "BeaconBankAccountInsights", "type": "object" }, "BeaconBankAccounts": { "additionalProperties": true, "description": "A collection of Bank Accounts linked to an Item that is associated with this Beacon User.", "properties": { "accounts": { "items": { "$ref": "#/components/schemas/BeaconBankAccountInsights" }, "type": "array" }, "item_id": { "description": "The Plaid Item ID the Bank Accounts belong to.", "example": "515cd85321d3649aecddc015", "type": "string" } }, "required": [ "item_id", "accounts" ], "title": "BeaconBankAccounts", "type": "object" }, "BeaconDuplicateDetectedWebhook": { "additionalProperties": true, "description": "Fired when a Beacon User created within your organization matches one of your existing users.", "properties": { "beacon_duplicate_id": { "description": "The ID of the associated Beacon Duplicate.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`DUPLICATE_DETECTED`", "type": "string" }, "webhook_type": { "description": "`BEACON`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "beacon_duplicate_id", "environment" ], "title": "BeaconDuplicateDetectedWebhook", "type": "object", "x-examples": { "example-1": { "beacon_duplicate_id": "becdup_erJcFn97r9sugZ", "environment": "production", "webhook_code": "DUPLICATE_DETECTED", "webhook_type": "BEACON" } } }, "BeaconDuplicateGetRequest": { "description": "Request input for getting a Beacon Duplicate", "properties": { "beacon_duplicate_id": { "$ref": "#/components/schemas/BeaconDuplicateID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_duplicate_id" ], "type": "object" }, "BeaconDuplicateGetResponse": { "additionalProperties": true, "description": "A Beacon Duplicate represents a pair of matching Beacon Users and an analysis of the fields they matched on.", "properties": { "analysis": { "$ref": "#/components/schemas/BeaconMatchSummaryAnalysis" }, "beacon_user1": { "$ref": "#/components/schemas/BeaconUserRevision" }, "beacon_user2": { "$ref": "#/components/schemas/BeaconUserRevision" }, "id": { "$ref": "#/components/schemas/BeaconDuplicateID" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "id", "beacon_user1", "beacon_user2", "analysis", "request_id" ], "type": "object" }, "BeaconDuplicateID": { "description": "ID of the associated Beacon Duplicate.", "example": "becdup_11111111111111", "title": "BeaconDuplicateID", "type": "string" }, "BeaconMatchSummaryAnalysis": { "additionalProperties": true, "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" }, "id_number": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "ip_address": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "name": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "phone_number": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" } }, "required": [ "address", "date_of_birth", "email_address", "name", "id_number", "ip_address", "phone_number" ], "title": "BeaconMatchSummaryAnalysis", "type": "object" }, "BeaconMatchSummaryCode": { "description": "An enum indicating the match type between two Beacon Users.\n\n\n`match` indicates that the provided input data was a strong match against the other Beacon User.\n\n`partial_match` indicates the data approximately matched the other Beacon User. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.\n\n`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.\n\n`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.", "enum": [ "match", "partial_match", "no_match", "no_data" ], "example": "match", "title": "BeaconMatchSummaryCode", "type": "string" }, "BeaconProgramID": { "description": "ID of the associated Beacon Program.", "example": "becprg_11111111111111", "title": "BeaconProgramID", "type": "string" }, "BeaconReport": { "additionalProperties": true, "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.\n\nThis 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.\nOther companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud.\n\nYou can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "event_date": { "$ref": "#/components/schemas/ISO8601Date" }, "fraud_amount": { "$ref": "#/components/schemas/FraudAmount" }, "fraud_date": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "id": { "$ref": "#/components/schemas/BeaconReportID" }, "type": { "$ref": "#/components/schemas/BeaconReportType" } }, "required": [ "id", "beacon_user_id", "created_at", "type", "fraud_date", "event_date", "fraud_amount", "audit_trail" ], "title": "BeaconReport", "type": "object" }, "BeaconReportCreateRequest": { "description": "Request input for creating a Beacon Report", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "fraud_amount": { "$ref": "#/components/schemas/FraudAmount" }, "fraud_date": { "$ref": "#/components/schemas/ISO8601Date" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "type": { "$ref": "#/components/schemas/BeaconReportCreateType" } }, "required": [ "beacon_user_id", "type", "fraud_date" ], "type": "object" }, "BeaconReportCreateResponse": { "additionalProperties": true, "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.\n\nThis 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.\nOther companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud.\n\nYou can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "event_date": { "$ref": "#/components/schemas/ISO8601Date" }, "fraud_amount": { "$ref": "#/components/schemas/FraudAmount" }, "fraud_date": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "id": { "$ref": "#/components/schemas/BeaconReportID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "type": { "$ref": "#/components/schemas/BeaconReportType" } }, "required": [ "id", "beacon_user_id", "created_at", "type", "fraud_date", "event_date", "fraud_amount", "audit_trail", "request_id" ], "type": "object" }, "BeaconReportCreateType": { "description": "The type of Beacon Report.\n\n`first_party`: If this is the same individual as the one who submitted the KYC.\n\n`stolen`: If this is a different individual from the one who submitted the KYC.\n\n`synthetic`: If this is an individual using fabricated information.\n\n`account_takeover`: If this individual's account was compromised.\n\n`unknown`: If you aren't sure who committed the fraud.", "enum": [ "first_party", "stolen", "synthetic", "account_takeover", "data_breach", "unknown" ], "title": "BeaconReportCreateType", "type": "string", "x-override-enum-values-shown": [ "first_party", "stolen", "synthetic", "account_takeover", "unknown" ] }, "BeaconReportCreatedWebhook": { "additionalProperties": true, "description": "Fired when one of your Beacon Users is first reported to the Beacon network.", "properties": { "beacon_report_id": { "description": "The ID of the associated Beacon Report.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`REPORT_CREATED`", "type": "string" }, "webhook_type": { "description": "`BEACON`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "beacon_report_id", "environment" ], "title": "BeaconReportCreatedWebhook", "type": "object", "x-examples": { "example-1": { "beacon_report_id": "becrpt_2zugxV6hWQZG91", "environment": "production", "webhook_code": "REPORT_CREATED", "webhook_type": "BEACON" } } }, "BeaconReportGetRequest": { "description": "Request input for getting a Beacon Report", "properties": { "beacon_report_id": { "$ref": "#/components/schemas/BeaconReportID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_report_id" ], "type": "object" }, "BeaconReportGetResponse": { "additionalProperties": true, "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.\n\nThis 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.\nOther companies will not receive any new identity information, just what matched, plus information such as industry, type of fraud, and date of fraud.\n\nYou can manage your fraud reports by adding, deleting, or editing reports as you get additional information on fraudulent users.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "event_date": { "$ref": "#/components/schemas/ISO8601Date" }, "fraud_amount": { "$ref": "#/components/schemas/FraudAmount" }, "fraud_date": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "id": { "$ref": "#/components/schemas/BeaconReportID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "type": { "$ref": "#/components/schemas/BeaconReportType" } }, "required": [ "id", "beacon_user_id", "created_at", "type", "fraud_date", "event_date", "fraud_amount", "audit_trail", "request_id" ], "type": "object" }, "BeaconReportID": { "description": "ID of the associated Beacon Report.", "example": "becrpt_11111111111111", "title": "BeaconReportID", "type": "string" }, "BeaconReportIDNullable": { "description": "ID of the associated Beacon Report.", "example": "becrpt_11111111111111", "nullable": true, "title": "BeaconReportID", "type": "string" }, "BeaconReportListRequest": { "description": "Request input for listing Beacon Reports", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_user_id" ], "type": "object" }, "BeaconReportListResponse": { "additionalProperties": true, "description": "The response schema for `/beacon/report/list`", "properties": { "beacon_reports": { "items": { "$ref": "#/components/schemas/BeaconReport" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "beacon_reports", "next_cursor", "request_id" ], "type": "object" }, "BeaconReportSyndication": { "additionalProperties": true, "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.\n\nThe `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.\n\nThe `report` field in the response contains a subset of information from the original report.", "properties": { "analysis": { "$ref": "#/components/schemas/BeaconReportSyndicationAnalysis" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "id": { "$ref": "#/components/schemas/BeaconReportSyndicationID" }, "report": { "$ref": "#/components/schemas/BeaconReportSyndicationOriginalReport" } }, "required": [ "id", "report", "analysis", "beacon_user_id" ], "title": "BeaconReportSyndication", "type": "object" }, "BeaconReportSyndicationAnalysis": { "additionalProperties": true, "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" }, "depository_accounts": { "items": { "$ref": "#/components/schemas/BeaconSyndicatedReportDepositoryAccountMatchAnalysis" }, "type": "array" }, "email_address": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "id_number": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "ip_address": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "name": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "phone_number": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" } }, "required": [ "address", "date_of_birth", "email_address", "name", "id_number", "ip_address", "phone_number", "depository_accounts" ], "title": "BeaconReportSyndicationAnalysis", "type": "object" }, "BeaconReportSyndicationCreatedWebhook": { "additionalProperties": true, "description": "Fired when a report created on the Beacon Network matches with one of your Beacon Users.", "properties": { "beacon_report_syndication_id": { "description": "The ID of the associated Beacon Report Syndication.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`REPORT_SYNDICATION_CREATED`", "type": "string" }, "webhook_type": { "description": "`BEACON`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "beacon_report_syndication_id", "environment" ], "title": "BeaconReportSyndicationCreatedWebhook", "type": "object", "x-examples": { "example-1": { "beacon_report_syndication_id": "becrsn_eZPgiiv3JH8rfT", "environment": "production", "webhook_code": "REPORT_SYNDICATION_CREATED", "webhook_type": "BEACON" } } }, "BeaconReportSyndicationGetRequest": { "description": "Request input for getting a Beacon Report Syndication", "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" ], "type": "object" }, "BeaconReportSyndicationGetResponse": { "additionalProperties": true, "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.\n\nThe `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.\n\nThe `report` field in the response contains a subset of information from the original report.", "properties": { "analysis": { "$ref": "#/components/schemas/BeaconReportSyndicationAnalysis" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "id": { "$ref": "#/components/schemas/BeaconReportSyndicationID" }, "report": { "$ref": "#/components/schemas/BeaconReportSyndicationOriginalReport" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "id", "report", "analysis", "beacon_user_id", "request_id" ], "type": "object" }, "BeaconReportSyndicationID": { "description": "ID of the associated Beacon Report Syndication.", "example": "becrsn_11111111111111", "title": "BeaconReportSyndicationID", "type": "string" }, "BeaconReportSyndicationListRequest": { "description": "Request input for listing Beacon Report Syndications", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_user_id" ], "type": "object" }, "BeaconReportSyndicationListResponse": { "additionalProperties": true, "description": "The response schema for `/beacon/report_syndication/list`", "properties": { "beacon_report_syndications": { "items": { "$ref": "#/components/schemas/BeaconReportSyndication" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "beacon_report_syndications", "next_cursor", "request_id" ], "type": "object" }, "BeaconReportSyndicationOriginalReport": { "additionalProperties": true, "description": "A subset of information from a Beacon Report that has been syndicated to a matching Beacon User in your program.\n\nThe `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": { "created_at": { "$ref": "#/components/schemas/Timestamp" }, "event_date": { "$ref": "#/components/schemas/ISO8601Date" }, "fraud_date": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "id": { "$ref": "#/components/schemas/BeaconReportIDNullable" }, "type": { "$ref": "#/components/schemas/BeaconReportType" } }, "required": [ "id", "created_at", "type", "fraud_date", "event_date" ], "title": "BeaconReportSyndicationOriginalReport", "type": "object" }, "BeaconReportType": { "description": "The type of Beacon Report.\n\n`first_party`: If this is the same individual as the one who submitted the KYC.\n\n`stolen`: If this is a different individual from the one who submitted the KYC.\n\n`synthetic`: If this is an individual using fabricated information.\n\n`account_takeover`: If this individual's account was compromised.\n\n`data_breach`: If this individual's data was compromised in a breach.\n\n`unknown`: If you aren't sure who committed the fraud.", "enum": [ "first_party", "stolen", "synthetic", "account_takeover", "data_breach", "unknown" ], "title": "BeaconReportType", "type": "string" }, "BeaconReportUpdatedWebhook": { "additionalProperties": true, "description": "Fired when one of your existing Beacon Reports has been modified or removed from the Beacon Network.", "properties": { "beacon_report_id": { "description": "The ID of the associated Beacon Report.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`REPORT_UPDATED`", "type": "string" }, "webhook_type": { "description": "`BEACON`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "beacon_report_id", "environment" ], "title": "BeaconReportUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "beacon_report_id": "becrpt_2zugxV6hWQZG91", "environment": "production", "webhook_code": "REPORT_UPDATED", "webhook_type": "BEACON" } } }, "BeaconSyndicatedReportDepositoryAccountMatchAnalysis": { "additionalProperties": true, "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" }, "match_status": { "$ref": "#/components/schemas/BeaconMatchSummaryCode" }, "routing_number": { "$ref": "#/components/schemas/RoutingNumber" } }, "required": [ "account_mask", "routing_number", "match_status" ], "title": "BeaconSyndicatedReportDepositoryAccountMatchAnalysis", "type": "object" }, "BeaconUser": { "additionalProperties": true, "description": "A Beacon User represents an end user that has been scanned against the Beacon Network.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/BeaconUserID" }, "item_ids": { "description": "An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User.", "example": [ "515cd85321d3649aecddc015" ], "items": { "example": "515cd85321d3649aecddc015", "type": "string" }, "type": "array", "uniqueItems": true }, "program_id": { "$ref": "#/components/schemas/BeaconProgramID" }, "status": { "$ref": "#/components/schemas/BeaconUserStatus" }, "updated_at": { "$ref": "#/components/schemas/UpdatedAtTimestamp" }, "user": { "$ref": "#/components/schemas/BeaconUserData" }, "version": { "description": "The `version` field begins with 1 and increments each time the user is updated.", "example": 1, "type": "integer" } }, "required": [ "id", "version", "created_at", "updated_at", "status", "program_id", "client_user_id", "user", "audit_trail", "item_ids" ], "title": "BeaconUser", "type": "object" }, "BeaconUserAccountInsightsGetRequest": { "description": "Request input for fetching the risk insights for a Beacon User's Bank Accounts", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_user_id", "access_token" ], "type": "object" }, "BeaconUserAccountInsightsGetResponse": { "additionalProperties": true, "description": "The response schema for `/beacon/user/account_insights/get`", "properties": { "bank_account_insights": { "$ref": "#/components/schemas/BeaconBankAccounts" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "updated_at": { "$ref": "#/components/schemas/UpdatedAtTimestamp" } }, "required": [ "beacon_user_id", "created_at", "updated_at", "bank_account_insights", "request_id" ], "type": "object" }, "BeaconUserAddress": { "additionalProperties": true, "description": "Even if an address has been collected, some fields may be null depending on the region's addressing system. For example:\n\n\nAddresses from the United Kingdom will not include a region\n\n\nAddresses from Hong Kong will not include a postal code", "properties": { "city": { "$ref": "#/components/schemas/City" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/Street" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "street2", "city", "region", "postal_code", "country" ], "title": "BeaconUserAddress", "type": "object" }, "BeaconUserCreateRequest": { "description": "Request input for creating a Beacon User.\n\nThe primary use for this endpoint is to add a new end user to Beacon for fraud and duplicate scanning.\n\nSome fields are optional, but it is recommended to provide as much information as possible to improve\nthe accuracy of the fraud and duplicate scanning.", "properties": { "access_tokens": { "description": "Send this array of access tokens to link accounts to the Beacon User and have them evaluated for Account Insights.\nA maximum of 50 accounts total can be added to a single Beacon User.", "items": { "$ref": "#/components/schemas/AccessToken" }, "nullable": true, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "program_id": { "$ref": "#/components/schemas/BeaconProgramID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/BeaconUserRequestData" } }, "required": [ "program_id", "client_user_id", "user" ], "type": "object" }, "BeaconUserCreateResponse": { "additionalProperties": true, "description": "A Beacon User represents an end user that has been scanned against the Beacon Network.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/BeaconUserID" }, "item_ids": { "description": "An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User.", "example": [ "515cd85321d3649aecddc015" ], "items": { "example": "515cd85321d3649aecddc015", "type": "string" }, "type": "array", "uniqueItems": true }, "program_id": { "$ref": "#/components/schemas/BeaconProgramID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/BeaconUserStatus" }, "updated_at": { "$ref": "#/components/schemas/UpdatedAtTimestamp" }, "user": { "$ref": "#/components/schemas/BeaconUserData" }, "version": { "description": "The `version` field begins with 1 and increments each time the user is updated.", "example": 1, "type": "integer" } }, "required": [ "id", "version", "created_at", "updated_at", "status", "program_id", "client_user_id", "user", "audit_trail", "item_ids", "request_id" ], "type": "object" }, "BeaconUserData": { "additionalProperties": true, "description": "A Beacon User's data and resulting analysis when checked against duplicate records and the Beacon Fraud Network.", "properties": { "address": { "$ref": "#/components/schemas/BeaconUserAddress" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "depository_accounts": { "items": { "$ref": "#/components/schemas/BeaconUserDepositoryAccount" }, "type": "array" }, "email_address": { "$ref": "#/components/schemas/EmailAddressNullable" }, "id_number": { "$ref": "#/components/schemas/BeaconUserIDNumber" }, "ip_address": { "$ref": "#/components/schemas/IPAddress" }, "name": { "$ref": "#/components/schemas/BeaconUserName" }, "phone_number": { "$ref": "#/components/schemas/BeaconUserPhoneNumber" } }, "required": [ "date_of_birth", "name", "address", "email_address", "phone_number", "id_number", "ip_address", "depository_accounts" ], "title": "BeaconUserData", "type": "object" }, "BeaconUserDepositoryAccount": { "additionalProperties": true, "description": "Depository account information for the associated user.", "properties": { "account_mask": { "$ref": "#/components/schemas/AccountMask" }, "added_at": { "$ref": "#/components/schemas/Timestamp" }, "routing_number": { "$ref": "#/components/schemas/RoutingNumber" } }, "required": [ "account_mask", "routing_number", "added_at" ], "title": "BeaconUserDepositoryAccount", "type": "object" }, "BeaconUserGetRequest": { "description": "Request input for fetching a Beacon User", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_user_id" ], "type": "object" }, "BeaconUserGetResponse": { "additionalProperties": true, "description": "A Beacon User represents an end user that has been scanned against the Beacon Network.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/BeaconUserID" }, "item_ids": { "description": "An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User.", "example": [ "515cd85321d3649aecddc015" ], "items": { "example": "515cd85321d3649aecddc015", "type": "string" }, "type": "array", "uniqueItems": true }, "program_id": { "$ref": "#/components/schemas/BeaconProgramID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/BeaconUserStatus" }, "updated_at": { "$ref": "#/components/schemas/UpdatedAtTimestamp" }, "user": { "$ref": "#/components/schemas/BeaconUserData" }, "version": { "description": "The `version` field begins with 1 and increments each time the user is updated.", "example": 1, "type": "integer" } }, "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", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "beacon_user_id" ], "type": "object" }, "BeaconUserHistoryListResponse": { "additionalProperties": true, "description": "The response schema for `/beacon/user/history/list`", "properties": { "beacon_users": { "items": { "$ref": "#/components/schemas/BeaconUser" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "beacon_users", "next_cursor", "request_id" ], "type": "object" }, "BeaconUserID": { "description": "ID of the associated Beacon User.", "example": "becusr_42cF1MNo42r9Xj", "title": "BeaconUserID", "type": "string" }, "BeaconUserIDNullable": { "description": "ID of the associated Beacon User.", "example": "becusr_42cF1MNo42r9Xj", "nullable": true, "title": "BeaconUserID", "type": "string" }, "BeaconUserIDNumber": { "additionalProperties": true, "description": "The ID number associated with a Beacon User.", "nullable": true, "properties": { "type": { "$ref": "#/components/schemas/IDNumberType" }, "value": { "$ref": "#/components/schemas/IDNumberValue" } }, "required": [ "value", "type" ], "title": "BeaconUserIDNumber", "type": "object" }, "BeaconUserName": { "additionalProperties": true, "description": "The full name for a given Beacon User.", "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "title": "BeaconUserName", "type": "object" }, "BeaconUserNameNullable": { "additionalProperties": true, "description": "The full name for a given Beacon User.", "nullable": true, "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "title": "BeaconUserName", "type": "object" }, "BeaconUserPhoneNumber": { "description": "A phone number in E.164 format.", "example": "+19876543212", "nullable": true, "title": "BeaconUserPhoneNumber", "type": "string" }, "BeaconUserRequestAddress": { "additionalProperties": true, "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).", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/City" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/Street" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "city", "country" ], "title": "BeaconUserRequestAddress", "type": "object" }, "BeaconUserRequestAddressNullable": { "additionalProperties": true, "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).", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/City" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/Street" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "city", "country" ], "title": "BeaconUserRequestAddress", "type": "object" }, "BeaconUserRequestData": { "additionalProperties": true, "description": "A Beacon User's data which is used to check against duplicate records and the Beacon Fraud Network.\n\nIn 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": { "address": { "$ref": "#/components/schemas/BeaconUserRequestAddress" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "depository_accounts": { "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.\n\nNote: These accounts will not have Bank Account Insights. To receive Bank Account Insights please supply `access_tokens`.", "items": { "$ref": "#/components/schemas/BeaconUserRequestDepositoryAccount" }, "type": "array" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id_number": { "$ref": "#/components/schemas/BeaconUserIDNumber" }, "ip_address": { "$ref": "#/components/schemas/IPAddress" }, "name": { "$ref": "#/components/schemas/BeaconUserName" }, "phone_number": { "$ref": "#/components/schemas/BeaconUserPhoneNumber" } }, "required": [ "name" ], "title": "BeaconUserRequestData", "type": "object" }, "BeaconUserRequestDepositoryAccount": { "additionalProperties": true, "description": "Depository account information for the associated user.", "properties": { "account_number": { "description": "Must be a valid US Bank Account Number", "example": "1234567890", "type": "string" }, "routing_number": { "$ref": "#/components/schemas/RoutingNumber" } }, "required": [ "account_number", "routing_number" ], "title": "BeaconUserRequestDepositoryAccount", "type": "object" }, "BeaconUserReviewRequest": { "description": "Request input for updating the status of a Beacon User", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "$ref": "#/components/schemas/BeaconUserStatus" } }, "required": [ "beacon_user_id", "status" ], "type": "object" }, "BeaconUserRevision": { "additionalProperties": true, "description": "A Beacon User Revision identifies a Beacon User at some point in its revision history.", "properties": { "id": { "$ref": "#/components/schemas/BeaconUserID" }, "version": { "description": "The `version` field begins with 1 and increments with each subsequent revision.", "example": 1, "type": "integer" } }, "required": [ "id", "version" ], "title": "BeaconUserRevision", "type": "object" }, "BeaconUserStatus": { "description": "A status of a Beacon User.\n\n`rejected`: The Beacon User has been rejected for fraud. Users can be automatically or manually rejected.\n\n`pending_review`: The Beacon User has been marked for review.\n\n`cleared`: The Beacon User has been cleared of fraud.", "enum": [ "rejected", "pending_review", "cleared" ], "example": "cleared", "title": "BeaconUserStatus", "type": "string" }, "BeaconUserStatusUpdatedWebhook": { "additionalProperties": 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.", "properties": { "beacon_user_id": { "description": "The ID of the associated Beacon user.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`USER_STATUS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`BEACON`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "beacon_user_id", "environment" ], "title": "BeaconUserStatusUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "beacon_user_id": "becusr_4WciCrtbxF76T8", "environment": "production", "webhook_code": "USER_STATUS_UPDATED", "webhook_type": "BEACON" } } }, "BeaconUserUpdateRequest": { "description": "Request input for updating the identity data of a Beacon User.", "properties": { "access_tokens": { "description": "Send this array of access tokens to add accounts to this user for evaluation.\nThis will add accounts to this Beacon User. If left null only existing accounts will be returned in response.\nA maximum of 50 accounts total can be added to a Beacon User.", "items": { "$ref": "#/components/schemas/AccessToken" }, "nullable": true, "type": "array" }, "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/BeaconUserUpdateRequestData" } }, "required": [ "beacon_user_id" ], "type": "object" }, "BeaconUserUpdateRequestData": { "additionalProperties": true, "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.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/BeaconUserRequestAddressNullable" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "depository_accounts": { "items": { "$ref": "#/components/schemas/BeaconUserRequestDepositoryAccount" }, "type": "array" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id_number": { "$ref": "#/components/schemas/BeaconUserIDNumber" }, "ip_address": { "$ref": "#/components/schemas/IPAddress" }, "name": { "$ref": "#/components/schemas/BeaconUserNameNullable" }, "phone_number": { "$ref": "#/components/schemas/BeaconUserPhoneNumber" } }, "title": "BeaconUserUpdateRequestData", "type": "object" }, "BeaconUserUpdateResponse": { "additionalProperties": true, "description": "A Beacon User represents an end user that has been scanned against the Beacon Network.", "properties": { "audit_trail": { "$ref": "#/components/schemas/BeaconAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/BeaconUserID" }, "item_ids": { "description": "An array of Plaid Item IDs corresponding to the Accounts associated with this Beacon User.", "example": [ "515cd85321d3649aecddc015" ], "items": { "example": "515cd85321d3649aecddc015", "type": "string" }, "type": "array", "uniqueItems": true }, "program_id": { "$ref": "#/components/schemas/BeaconProgramID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/BeaconUserStatus" }, "updated_at": { "$ref": "#/components/schemas/UpdatedAtTimestamp" }, "user": { "$ref": "#/components/schemas/BeaconUserData" }, "version": { "description": "The `version` field begins with 1 and increments each time the user is updated.", "example": 1, "type": "integer" } }, "required": [ "id", "version", "created_at", "updated_at", "status", "program_id", "client_user_id", "user", "audit_trail", "item_ids", "request_id" ], "type": "object" }, "BetaEwaReportV1GetRequest": { "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" ], "type": "object", "x-hidden-from-docs": true }, "BetaEwaReportV1GetResponse": { "additionalProperties": true, "description": "BetaEwaReportV1GetResponse defines the response schema for `/beta/ewa_report/v1/get`", "properties": { "ewa_attributes": { "$ref": "#/components/schemas/EwaAttributes" }, "ewa_report_id": { "description": "Unique identifier for the generated EWA score group.", "type": "string" }, "ewa_scores": { "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" }, "type": "array" }, "generation_time": { "description": "The date and time when `ewa_scores` was generated, in ISO 8601 format (e.g. \"2018-04-12T03:32:11Z\").", "format": "date-time", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object", "x-hidden-from-docs": true }, "BetaPartnerCustomerV1CreateRequest": { "description": "Request schema for `/beta/partner/customer/v1/create`.", "properties": { "address": { "$ref": "#/components/schemas/PartnerEndCustomerAddress" }, "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" }, "bank_addendum_acceptance": { "$ref": "#/components/schemas/PartnerEndCustomerBankAddendumAcceptance" }, "billing_contact": { "$ref": "#/components/schemas/PartnerEndCustomerBillingContact" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "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" }, "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.\n\nImportant: 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" }, "customer_support_info": { "$ref": "#/components/schemas/PartnerEndCustomerCustomerSupportInfo" }, "is_diligence_attested": { "description": "Denotes whether or not the partner has completed attestation of diligence for the end customer to be created.", "type": "boolean" }, "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" }, "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" }, "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.", "items": { "$ref": "#/components/schemas/Products" }, "type": "array" }, "questionnaires": { "$ref": "#/components/schemas/PartnerEndCustomerQuestionnaires" }, "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.", "items": { "type": "string" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "technical_contact": { "$ref": "#/components/schemas/PartnerEndCustomerTechnicalContact" }, "website": { "description": "The end customer's website.", "type": "string" } }, "required": [ "company_name", "website", "application_name", "address", "customer_support_info" ] }, "BetaPartnerCustomerV1CreateResponse": { "additionalProperties": true, "description": "Response schema for `/beta/partner/customer/v1/create`.", "properties": { "end_customer": { "$ref": "#/components/schemas/BetaPartnerEndCustomerWithSecrets" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "BetaPartnerCustomerV1EnableRequest": { "additionalProperties": true, "description": "Request schema for `/beta/partner/customer/v1/enable`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "products": { "items": { "$ref": "#/components/schemas/Products" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ], "type": "object" }, "BetaPartnerCustomerV1EnableResponse": { "additionalProperties": true, "description": "Response schema for `/beta/partner/customer/v1/enable`.", "properties": { "end_customer_client_id": { "type": "string" }, "product_statuses": { "$ref": "#/components/schemas/PartnerEndCustomerProductStatuses" }, "production_secret": { "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/PartnerEndCustomerStatus" } }, "type": "object" }, "BetaPartnerCustomerV1GetRequest": { "description": "Request schema for `/beta/partner/customer/v1/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ] }, "BetaPartnerCustomerV1GetResponse": { "additionalProperties": true, "description": "Response schema for `/beta/partner/customer/v1/get`.", "properties": { "end_customer": { "$ref": "#/components/schemas/BetaPartnerEndCustomer" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "BetaPartnerCustomerV1UpdateRequest": { "additionalProperties": true, "description": "Request schema for `/beta/partner/customer/v1/update`.", "properties": { "bank_addendum_acceptance": { "$ref": "#/components/schemas/PartnerEndCustomerBankAddendumAcceptance" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "legal_entity_name": { "type": "string" }, "questionnaires": { "$ref": "#/components/schemas/PartnerEndCustomerQuestionnaires" }, "redirect_uris": { "items": { "type": "string" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ], "type": "object" }, "BetaPartnerCustomerV1UpdateResponse": { "additionalProperties": true, "description": "Response schema for `/beta/partner/customer/v1/update`.", "properties": { "end_customer": { "$ref": "#/components/schemas/BetaPartnerEndCustomer" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "BetaPartnerEndCustomer": { "additionalProperties": true, "description": "The details for an end customer.", "properties": { "client_id": { "description": "The `client_id` of the end customer.", "type": "string" }, "company_name": { "description": "The company name associated with the end customer.", "type": "string" }, "product_statuses": { "$ref": "#/components/schemas/PartnerEndCustomerProductStatuses" }, "requirements_due": { "$ref": "#/components/schemas/PartnerEndCustomerRequirementsDue" }, "status": { "$ref": "#/components/schemas/PartnerEndCustomerStatus" } }, "type": "object" }, "BetaPartnerEndCustomerWithSecrets": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/BetaPartnerEndCustomer" }, { "properties": { "secrets": { "$ref": "#/components/schemas/PartnerEndCustomerSecrets" } }, "type": "object" } ], "description": "The details for the newly created end customer, including secrets for non-Production environments.", "type": "object" }, "BusinessAccount": { "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "additionalProperties": true, "properties": { "mask": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "official_name": { "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "verification_name": { "type": "string" } }, "type": "object" } ], "description": "Business identity information about an account", "title": "BusinessAccount" }, "BusinessCheckBooleanStatus": { "description": "Tri-state boolean status, where `no_data` indicates the check could not determine a value.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "BusinessDigitalPresenceCheck": { "additionalProperties": true, "description": "Results from the digital presence check.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "email_address": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "phone_number": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "score": { "description": "A score from 0 to 100 indicating digital presence confidence.", "example": 55, "type": "integer" }, "status": { "$ref": "#/components/schemas/BusinessVerificationStatus__WebPresenceCheck" }, "website": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "website_analysis": { "$ref": "#/components/schemas/BusinessWebsiteAnalysis" } }, "required": [ "status", "score", "address", "phone_number", "email_address", "website", "website_analysis" ], "type": "object" }, "BusinessEmailAddress": { "additionalProperties": true, "description": "Email address associated with a business", "properties": { "email_address": { "description": "Email address of the business", "example": "business@example.com", "format": "email", "nullable": true, "type": "string" } }, "required": [ "email_address" ], "type": "object" }, "BusinessEntityType": { "description": "The legal structure or type of business entity", "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", "nullable": true, "title": "BusinessEntityType", "type": "string" }, "BusinessFieldMatchSummary": { "additionalProperties": true, "description": "Summary of how a specific business field matched against data provider results", "properties": { "summary": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "summary" ], "type": "object" }, "BusinessFinanceCategory": { "additionalProperties": true, "description": "Information describing the intent of the transaction. Most relevant for business finance use cases, but not limited to such use cases.", "nullable": true, "properties": { "confidence_level": { "description": "A description of how confident we are that the provided categories accurately describe the transaction intent.\n\n`VERY_HIGH`: We are more than 98% confident that this category reflects the intent of the transaction.\n`HIGH`: We are more than 90% confident that this category reflects the intent of the transaction.\n`MEDIUM`: We are moderately confident that this category reflects the intent of the transaction.\n`LOW`: This category may reflect the intent, but there may be other categories that are more accurate.\n`UNKNOWN`: We don't know the confidence level for this category.", "nullable": true, "type": "string" }, "detailed": { "description": "A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category.", "type": "string" }, "primary": { "description": "A high level category that communicates the broad category of the transaction.", "type": "string" } }, "required": [ "primary", "detailed" ], "title": "BusinessFinanceCategory", "type": "object", "x-hidden-from-docs": true }, "BusinessIndustryPrediction": { "additionalProperties": true, "description": "The predicted industry classification for the business, based on digital presence assessments.", "properties": { "code": { "description": "NAICS code for the predicted business industry.", "example": 518210, "type": "integer" }, "title": { "description": "The business industry classification of the predicted NAICS code.", "example": "Data Processing, Hosting, and Related Services", "type": "string" } }, "required": [ "code", "title" ], "type": "object" }, "BusinessIndustryPredictionNullable": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/BusinessIndustryPrediction" }, { "nullable": true, "type": "object" } ], "description": "Nullable industry prediction details.", "nullable": true, "type": "object" }, "BusinessKYBCheck": { "additionalProperties": true, "description": "Results from the KYB (Know Your Business) identity verification check", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "match_details": { "$ref": "#/components/schemas/BusinessKYBMatchDetails" }, "name": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" }, "score": { "description": "A score from 0 to 100 indicating the confidence in KYB (Know Your Business) identity assessment for the business", "example": 85, "type": "integer" }, "status": { "$ref": "#/components/schemas/BusinessVerificationStatus__KYBCheck" }, "website": { "$ref": "#/components/schemas/BusinessFieldMatchSummary" } }, "required": [ "status", "score", "name", "address", "website", "match_details" ], "type": "object" }, "BusinessKYBMatchDetails": { "additionalProperties": true, "description": "Detailed information about the business from data provider results", "nullable": true, "properties": { "addresses": { "description": "Addresses associated with the business", "items": { "$ref": "#/components/schemas/ProviderBusinessAddress" }, "type": "array" }, "email_addresses": { "description": "Email addresses associated with the business", "items": { "$ref": "#/components/schemas/BusinessEmailAddress" }, "type": "array" }, "entity_type": { "$ref": "#/components/schemas/BusinessEntityType" }, "formation_date": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "names": { "description": "Names associated with the business.", "items": { "$ref": "#/components/schemas/ProviderBusinessName" }, "type": "array" }, "phone_numbers": { "description": "Phone numbers associated with the business", "items": { "$ref": "#/components/schemas/BusinessPhoneNumber" }, "type": "array" }, "websites": { "description": "Websites associated with the business", "items": { "$ref": "#/components/schemas/BusinessWebsite" }, "type": "array" } }, "required": [ "names", "entity_type", "addresses", "phone_numbers", "email_addresses", "websites", "formation_date" ], "type": "object" }, "BusinessName": { "description": "The name of the business. Must have at least one character and a maximum length of 500 characters.", "example": "Acme Corporation", "title": "BusinessName", "type": "string" }, "BusinessNameNullable": { "description": "The name of the business. Must have at least one character and a maximum length of 500 characters.", "example": "Acme Corporation", "nullable": true, "title": "BusinessName", "type": "string" }, "BusinessPhoneNumber": { "additionalProperties": true, "description": "Phone number associated with a business", "properties": { "number": { "description": "Phone number in E.164 format", "example": "+12345678909", "nullable": true, "type": "string" } }, "required": [ "number" ], "type": "object" }, "BusinessRiskCheck": { "additionalProperties": true, "description": "Results from the business risk assessment check", "nullable": true, "properties": { "industry_prediction": { "$ref": "#/components/schemas/BusinessIndustryPredictionNullable" }, "score": { "description": "A score from 0 to 100 indicating the risk assessment for the business", "example": 92, "type": "integer" }, "status": { "$ref": "#/components/schemas/BusinessVerificationStatus__RiskCheck" } }, "required": [ "status", "score", "industry_prediction" ], "type": "object" }, "BusinessSearchTerms": { "additionalProperties": true, "description": "The business information that was used to perform the verification search", "properties": { "address": { "$ref": "#/components/schemas/ResponseBusinessAddress" }, "alternative_names": { "description": "Alternative business names that were submitted as search inputs.", "items": { "$ref": "#/components/schemas/BusinessName" }, "type": "array" }, "email_address": { "$ref": "#/components/schemas/EmailAddressNullable" }, "name": { "$ref": "#/components/schemas/BusinessNameNullable" }, "phone_number": { "$ref": "#/components/schemas/BusinessVerificationPhoneNumberNullable" }, "website": { "$ref": "#/components/schemas/URLNullable" } }, "required": [ "name", "alternative_names", "address", "website", "phone_number", "email_address" ], "type": "object" }, "BusinessVerificationCreateRequest": { "description": "Request input for creating a business verification", "properties": { "business": { "$ref": "#/components/schemas/BusinessVerificationCreateRequestBusiness" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_user_id" ], "type": "object" }, "BusinessVerificationCreateRequestBusiness": { "additionalProperties": true, "description": "Business information provided in the verification request", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/RequestBusinessAddress" }, "alternative_name": { "$ref": "#/components/schemas/BusinessNameNullable" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "name": { "$ref": "#/components/schemas/BusinessName" }, "phone_number": { "$ref": "#/components/schemas/BusinessVerificationPhoneNumber" }, "website": { "$ref": "#/components/schemas/URL" } }, "type": "object" }, "BusinessVerificationCreateResponse": { "additionalProperties": true, "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.", "properties": { "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "digital_presence_check": { "$ref": "#/components/schemas/BusinessDigitalPresenceCheck" }, "id": { "$ref": "#/components/schemas/BusinessVerificationID" }, "kyb_check": { "$ref": "#/components/schemas/BusinessKYBCheck" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_check": { "$ref": "#/components/schemas/BusinessRiskCheck" }, "search_terms": { "$ref": "#/components/schemas/BusinessSearchTerms" }, "shareable_url": { "$ref": "#/components/schemas/BusinessVerificationShareableURL" }, "status": { "$ref": "#/components/schemas/BusinessVerificationStatus__Overall" } }, "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", "properties": { "business_verification_id": { "$ref": "#/components/schemas/BusinessVerificationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "business_verification_id" ], "type": "object" }, "BusinessVerificationGetResponse": { "additionalProperties": true, "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.", "properties": { "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "digital_presence_check": { "$ref": "#/components/schemas/BusinessDigitalPresenceCheck" }, "id": { "$ref": "#/components/schemas/BusinessVerificationID" }, "kyb_check": { "$ref": "#/components/schemas/BusinessKYBCheck" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_check": { "$ref": "#/components/schemas/BusinessRiskCheck" }, "search_terms": { "$ref": "#/components/schemas/BusinessSearchTerms" }, "shareable_url": { "$ref": "#/components/schemas/BusinessVerificationShareableURL" }, "status": { "$ref": "#/components/schemas/BusinessVerificationStatus__Overall" } }, "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": { "description": "ID of the associated business verification.", "example": "busver_52xR9LKo77r1Np", "format": "cognito_id", "title": "BusinessVerificationID", "type": "string" }, "BusinessVerificationPhoneNumber": { "description": "A phone number in E.164 format.", "example": "+14025671234", "title": "BusinessVerificationPhoneNumber", "type": "string" }, "BusinessVerificationPhoneNumberNullable": { "description": "A phone number in E.164 format.", "example": "+14025671234", "nullable": true, "title": "BusinessVerificationPhoneNumber", "type": "string" }, "BusinessVerificationShareableURL": { "description": "A shareable URL that can be sent directly to the user to complete verification", "example": "https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "nullable": true, "type": "string" }, "BusinessVerificationStatus__KYBCheck": { "description": "Status of the KYB (Know Your Business) identity assessment check", "enum": [ "active", "success", "failed" ], "example": "success", "title": "BusinessVerificationStatus", "type": "string" }, "BusinessVerificationStatus__Overall": { "description": "Status of the overall business verification", "enum": [ "active", "success", "failed" ], "example": "success", "title": "BusinessVerificationStatus", "type": "string" }, "BusinessVerificationStatus__RiskCheck": { "description": "Status of the business risk assessment check", "enum": [ "active", "success", "failed" ], "example": "success", "title": "BusinessVerificationStatus", "type": "string" }, "BusinessVerificationStatus__WebPresenceCheck": { "description": "Status of the digital presence check", "enum": [ "active", "success", "failed", "not_applicable" ], "example": "success", "title": "BusinessVerificationStatus", "type": "string" }, "BusinessWebsite": { "additionalProperties": true, "description": "Website associated with a business", "properties": { "url": { "description": "URL of the business website", "example": "https://example.com", "format": "uri", "nullable": true, "type": "string" } }, "required": [ "url" ], "type": "object" }, "BusinessWebsiteAnalysis": { "additionalProperties": true, "description": "Website analysis details if a website is found for the provided website in the search terms.", "nullable": true, "properties": { "email_is_deliverable": { "$ref": "#/components/schemas/BusinessCheckBooleanStatus" }, "is_parked": { "$ref": "#/components/schemas/BusinessCheckBooleanStatus" }, "ssl": { "$ref": "#/components/schemas/BusinessWebsiteSSL" }, "website_build_status": { "$ref": "#/components/schemas/BusinessWebsiteBuildStatus" }, "whois_record": { "$ref": "#/components/schemas/BusinessWhoisRecord" } }, "required": [ "is_parked", "email_is_deliverable", "website_build_status", "whois_record", "ssl" ], "type": "object" }, "BusinessWebsiteBuildStatus": { "description": "Build status of the business website.", "enum": [ "coming_soon", "active", "inactive" ], "example": "active", "type": "string" }, "BusinessWebsiteSSL": { "additionalProperties": true, "description": "SSL status for the business website.", "properties": { "is_valid": { "$ref": "#/components/schemas/BusinessCheckBooleanStatus" } }, "required": [ "is_valid" ], "type": "object" }, "BusinessWhoisRecord": { "additionalProperties": true, "description": "WHOIS metadata for the business website domain.", "properties": { "domain_created_at": { "$ref": "#/components/schemas/TimestampNullable" }, "domain_expires_at": { "$ref": "#/components/schemas/TimestampNullable" }, "domain_updated_at": { "$ref": "#/components/schemas/TimestampNullable" }, "registrar": { "description": "Domain registrar.", "example": "GANDI SAS", "nullable": true, "type": "string" } }, "required": [ "domain_created_at", "domain_updated_at", "domain_expires_at", "registrar" ], "type": "object" }, "CRALoansRegisterRequest": { "description": "CraLoansRegisterRequest defines the request schema for `/cra/loans/register`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "loans": { "description": "A list of loans to register.", "items": { "$ref": "#/components/schemas/CraLoanRegister" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "loans" ], "type": "object" }, "CashFlowInsight": { "description": "An insight that can be detected by the Cash Flow Updates product", "enum": [ "LARGE_DEPOSIT_DETECTED", "LOW_BALANCE_DETECTED", "NEW_LOAN_PAYMENT_DETECTED", "NSF_OVERDRAFT_DETECTED" ], "title": "CashFlowInsight", "type": "string" }, "CashFlowUpdatesEventWebhookCodes": { "description": "Webhook code for a Cash Flow Updates event.", "enum": [ "LARGE_DEPOSIT_DETECTED", "LOW_BALANCE_DETECTED", "NEW_LOAN_PAYMENT_DETECTED", "NSF_OVERDRAFT_DETECTED" ], "type": "string" }, "CashFlowUpdatesExpectedDepositMissedWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`EXPECTED_DEPOSIT_MISSED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesExpectedDepositMissedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "EXPECTED_DEPOSIT_MISSED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesInsightsV2Webhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "insights": { "description": "Array containing the insights detected within the generated report, if any. Possible values include:\n `LARGE_DEPOSIT_DETECTED`: signaling a deposit over $5,000\n `LOW_BALANCE_DETECTED`: signaling a balance below $100\n `NEW_LOAN_PAYMENT_DETECTED`: signaling a new loan payment\n `NSF_OVERDRAFT_DETECTED`: signaling an NSF overdraft", "items": { "$ref": "#/components/schemas/CashFlowInsight" }, "type": "array" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`.", "type": "string" }, "webhook_code": { "description": "`CASH_FLOW_INSIGHTS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "insights", "environment" ], "title": "CashFlowUpdatesInsightsV2Webhook", "type": "object", "x-examples": { "example-1": { "environment": "sandbox", "insights": [ "LARGE_DEPOSIT_DETECTED", "LOW_BALANCE_DETECTED", "NEW_LOAN_PAYMENT_DETECTED", "NSF_OVERDRAFT_DETECTED" ], "status": "AVAILABLE", "user_id": "usr_6009db6e", "webhook_code": "CASH_FLOW_INSIGHTS_UPDATED", "webhook_type": "CASH_FLOW_UPDATES" }, "example-2": { "environment": "sandbox", "insights": [], "status": "FAILED", "user_id": "usr_6009db6e", "webhook_code": "CASH_FLOW_INSIGHTS_UPDATED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesInsightsWebhook": { "additionalProperties": true, "deprecated": 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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`INSIGHTS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesInsightsWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "INSIGHTS_UPDATED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesLargeDepositWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`LARGE_DEPOSIT_DETECTED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesLargeDepositWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "LARGE_DEPOSIT_DETECTED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesLowBalanceWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`LOW_BALANCE_DETECTED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesLowBalanceWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "LOW_BALANCE_DETECTED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesNSFWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`NSF_OVERDRAFT_DETECTED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesNSFWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "NSF_OVERDRAFT_DETECTED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesNewIncomeStreamWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`NEW_INCOME_STREAM_DETECTED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesNewIncomeStreamWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "NEW_INCOME_STREAM_DETECTED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashFlowUpdatesNewLoanPaymentWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsStatus" }, "user_id": { "description": "The `user_id` that the report is associated with", "type": "string" }, "webhook_code": { "description": "`NEW_LOAN_PAYMENT_DETECTED`", "type": "string" }, "webhook_type": { "description": "`CASH_FLOW_UPDATES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "user_id", "environment" ], "title": "CashFlowUpdatesNewLoanPaymentWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "status": "AVAILABLE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "NEW_LOAN_PAYMENT_DETECTED", "webhook_type": "CASH_FLOW_UPDATES" } } }, "CashflowAttributesSchema": { "description": "A map of cash flow attributes, where the key is a string, and the value is a 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.", "title": "CashflowAttributes", "type": "object" }, "CashflowAttributesVersion": { "description": "The version of cashflow attributes. Required if using Cash Flow Insights.", "enum": [ "v1.0", "v2.0", "CFI1" ], "nullable": true, "type": "string", "x-override-enum-values-shown": [ "CFI1" ] }, "CashflowIsoCurrencyCode": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`", "nullable": true, "type": "string" }, "CashflowReportAccountInsights": { "additionalProperties": true, "description": "Insights on the account level. These are only returned for Credit and Depository type accounts.", "properties": { "historical_balances": { "description": "Calculated data about the historical balances on the account.\n\nAvailable for `credit` and `depository` type accounts.", "items": { "$ref": "#/components/schemas/CashflowReportHistoricalBalance" }, "type": "array" }, "monthly_summaries": { "description": "Monthly summary statistics derived from transaction-level data.", "items": { "$ref": "#/components/schemas/CashflowReportMonthlySummary" }, "type": "array" } }, "required": [ "historical_balances", "monthly_summaries" ], "title": "CashflowAccountInsights", "type": "object" }, "CashflowReportGetRequest": { "description": "CashflowReportGetRequest defines the request schema for `/cashflow_report/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 100, "description": "Number of transactions to fetch per call", "maximum": 500, "minimum": 1, "type": "integer" }, "cursor": { "description": "The cursor value represents the last update requested. Pass in the empty string \"\" in the first call.", "type": "string" }, "days_requested": { "description": "Number of days to retrieve transactions data for (1 to 730)", "maximum": 730, "minimum": 1, "type": "integer" }, "options": { "$ref": "#/components/schemas/CashflowReportGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "days_requested" ], "type": "object", "x-hidden-from-docs": true }, "CashflowReportGetRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "CashflowReportGetResponse": { "additionalProperties": true, "description": "CashflowReportGetResponse defines the response schema for `/cashflow_report/get`", "properties": { "accounts": { "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" }, "type": "array" }, "has_more": { "description": "Represents if more than requested count of transactions exists to be fetched", "type": "boolean" }, "item": { "$ref": "#/components/schemas/Item" }, "last_successful_update_time": { "description": "The last successful update time in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` )", "format": "date-time", "type": "string" }, "next_cursor": { "description": "Cursor used for fetching any future updates after the latest update provided in this response.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "total_transactions": { "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.", "type": "integer" }, "transactions": { "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" }, "type": "array" } }, "required": [ "accounts", "transactions", "total_transactions", "item", "next_cursor", "has_more", "last_successful_update_time", "request_id" ], "type": "object" }, "CashflowReportHistoricalBalance": { "additionalProperties": true, "description": "An object representing a balance held by an account in the past", "properties": { "amount": { "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.\n\nIf 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.", "format": "double", "type": "number" }, "date": { "description": "The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD)", "format": "date", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "required": [ "date", "amount", "iso_currency_code", "unofficial_currency_code" ], "title": "CashflowReportHistoricalBalance", "type": "object" }, "CashflowReportInsightsGetRequest": { "description": "CashflowReportInsightsGetRequest defines the request schema for `/cashflow_report/insights/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "CashflowReportInsightsGetResponse": { "additionalProperties": true, "description": "CashflowReportInsightsGetResponse defines the response schema for `/cashflow_report/insights/get`", "properties": { "account_insights": { "$ref": "#/components/schemas/CashflowReportAccountInsights" }, "accounts": { "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" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "last_generated_time": { "description": "Datetime of last Cashflow Report generation in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` )", "format": "date-time", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "item", "accounts", "account_insights", "last_generated_time", "request_id" ], "type": "object" }, "CashflowReportMonthlySummary": { "additionalProperties": true, "description": "Monthly summary statistics derived from transaction-level data.", "properties": { "average_daily_ending_balance": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryAverageDailyEndingBalance" }, "average_daily_inflow_amount": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryAverageDailyInflowAmount" }, "average_daily_inflow_transaction_count": { "description": "The average count of the number of daily inflow transactions. Rounded to 2 decimal places.", "type": "number" }, "average_daily_net_cashflow_amount": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryAverageDailyNetCashflowAmount" }, "average_daily_outflow_amount": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryAverageDailyOutflowAmount" }, "average_daily_outflow_transaction_count": { "description": "The average count of the number of daily outflow transactions. Rounded to 2 decimal places.", "type": "number" }, "end_date": { "description": "The end date of the period included in this monthly summary.\n\nThis 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.\n\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "ending_balance": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryEndingBalance" }, "negative_ending_balance_day_count": { "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].", "type": "integer" }, "nsf_transaction_count": { "description": "The total number of all NSF transactions during this month.", "type": "integer" }, "overdraft_transaction_count": { "description": "The total number of all overdraft transactions during this month.", "type": "integer" }, "start_date": { "description": "The start date of the period covered in this monthly summary.\n\nThis 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.\n\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "starting_balance": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryStartingBalance" }, "total_loan_payment": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryTotalLoanPayment" }, "total_payroll": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryTotalPayroll" }, "total_revenue": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryTotalRevenue" }, "total_variable_expense": { "$ref": "#/components/schemas/CashflowReportMonthlySummaryTotalVariableExpense" } }, "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" ], "title": "CashflowReportMonthlySummary", "type": "object" }, "CashflowReportMonthlySummaryAverageDailyEndingBalance": { "description": "Calendar-day average of the ending balance.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryAverageDailyInflowAmount": { "description": "The average daily sum of inflow transactions, calculated over the month. Always represented as a positive monetary amount.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryAverageDailyNetCashflowAmount": { "description": "The average daily net cash flow amount, calculated as total daily inflows less total daily outflows.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryAverageDailyOutflowAmount": { "description": "The average daily sum of outflow transactions, calculated over the month. Always represented as a positive monetary amount.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryEndingBalance": { "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": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryStartingBalance": { "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": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryTotalLoanPayment": { "description": "The total amount of all loan payment transactions during this month.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryTotalPayroll": { "description": "The total amount of all payroll transactions during this month.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryTotalRevenue": { "description": "The total amount of all revenue transactions during this month.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportMonthlySummaryTotalVariableExpense": { "description": "The total amount of all variable expense transactions during this month.", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CashflowIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CashflowUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CashflowReportPaymentMeta": { "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": { "by_order_of": { "description": "The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer.", "nullable": true, "type": "string" }, "payee": { "description": "For transfers, the party that is receiving the transaction.", "nullable": true, "type": "string" }, "payer": { "description": "For transfers, the party that is paying the transaction.", "nullable": true, "type": "string" }, "payment_method": { "description": "The type of transfer, e.g. 'ACH'", "nullable": true, "type": "string" }, "payment_processor": { "description": "The name of the payment processor", "nullable": true, "type": "string" }, "ppd_id": { "description": "The ACH PPD ID for the payer.", "nullable": true, "type": "string" }, "reason": { "description": "The payer-supplied description of the transfer.", "nullable": true, "type": "string" }, "reference_number": { "description": "The transaction reference number supplied by the financial institution.", "nullable": true, "type": "string" } }, "required": [ "reference_number", "ppd_id", "payee", "by_order_of", "payer", "payment_method", "payment_processor", "reason" ], "title": "CashflowReportPaymentMeta", "type": "object" }, "CashflowReportRefreshRequest": { "description": "CashflowReportRefreshRequest defines the request schema for `/cashflow_report/refresh`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "days_requested": { "default": 365, "description": "Number of days to retrieve transactions data for (1 to 730)", "maximum": 730, "minimum": 1, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "days_requested" ], "type": "object", "x-hidden-from-docs": true }, "CashflowReportRefreshResponse": { "additionalProperties": true, "description": "CashflowReportRefreshResponse defines the response schema for `/cashflow_report/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object", "x-hidden-from-docs": true }, "CashflowReportTransaction": { "additionalProperties": true, "description": "A representation of a transaction returned from Cashflow Report", "properties": { "account_id": { "description": "The ID of the account in which this transaction occurred.", "type": "string" }, "account_owner": { "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, "type": "string" }, "amount": { "description": "The settled value of the transaction, denominated in the transactions's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.", "format": "double", "nullable": true, "type": "number" }, "authorized_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` ).", "format": "date", "nullable": true, "type": "string" }, "authorized_datetime": { "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.\n\nThis 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.", "format": "date-time", "nullable": true, "type": "string" }, "business_finance_category": { "$ref": "#/components/schemas/BusinessFinanceCategory" }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "counterparties": { "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" }, "type": "array" }, "credit_category": { "$ref": "#/components/schemas/CreditCategory" }, "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.", "format": "date", "type": "string" }, "datetime": { "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.\n\nThis 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.", "format": "date-time", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "location": { "$ref": "#/components/schemas/Location" }, "logo_url": { "description": "The URL of a logo associated with this transaction, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "merchant_entity_id": { "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, "type": "string" }, "merchant_name": { "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, "type": "string" }, "name": { "description": "The merchant name or transaction description.\n\nNote: This is a legacy field that is not actively maintained. Use `merchant_name` instead for the merchant name.\n\nIf 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.", "nullable": true, "type": "string" }, "original_description": { "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, "type": "string" }, "payment_channel": { "$ref": "#/components/schemas/PaymentChannel" }, "payment_meta": { "$ref": "#/components/schemas/CashflowReportPaymentMeta" }, "pending": { "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.", "nullable": true, "type": "boolean" }, "pending_transaction_id": { "description": "The ID of a posted transaction's associated pending transaction, where applicable. Not all institutions provide pending transactions.", "nullable": true, "type": "string" }, "personal_finance_category": { "$ref": "#/components/schemas/PersonalFinanceCategory" }, "personal_finance_category_icon_url": { "description": "The URL of an icon associated with the primary personal finance category. The icon will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "transaction_code": { "$ref": "#/components/schemas/TransactionCode" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "website": { "description": "The website associated with this transaction, if available.", "nullable": true, "type": "string" } }, "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" ], "title": "CashflowReportTransaction", "type": "object", "x-examples": {} }, "CashflowReportTransactionsGetRequest": { "description": "CashflowReportTransactionsGetRequest defines the request schema for `/cashflow_report/transactions/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 100, "description": "Number of transactions to fetch per call", "maximum": 500, "minimum": 1, "type": "integer" }, "cursor": { "description": "The cursor value represents the last update requested. Pass in the empty string \"\" in the first call.", "type": "string" }, "options": { "$ref": "#/components/schemas/CashflowReportTransactionsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object", "x-hidden-from-docs": true }, "CashflowReportTransactionsGetRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "CashflowReportTransactionsGetResponse": { "additionalProperties": true, "description": "CashflowReportTransactionsGetResponse defines the response schema for `/cashflow_report/transactions/get`", "properties": { "accounts": { "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" }, "type": "array" }, "has_more": { "description": "Represents if more than requested count of transactions exists to be fetched", "type": "boolean" }, "item": { "$ref": "#/components/schemas/Item" }, "next_cursor": { "description": "Cursor used for fetching any future updates after the latest update provided in this response.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "total_transactions": { "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.", "type": "integer" }, "transactions": { "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" }, "type": "array" } }, "required": [ "accounts", "transactions", "total_transactions", "item", "next_cursor", "has_more", "request_id" ], "type": "object" }, "CashflowUnofficialCurrencyCode": { "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, "type": "string" }, "CategoriesGetRequest": { "description": "CategoriesGetRequest defines the request schema for `/categories/get`", "type": "object" }, "CategoriesGetResponse": { "additionalProperties": true, "description": "CategoriesGetResponse defines the response schema for `/categories/get`", "properties": { "categories": { "description": "An array of all of the transaction categories used by Plaid.", "items": { "$ref": "#/components/schemas/Category" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "categories", "request_id" ], "type": "object" }, "Category": { "additionalProperties": true, "description": "Information describing a transaction category", "properties": { "category_id": { "description": "An identifying number for the category. `category_id` is a Plaid-specific identifier and does not necessarily correspond to merchant category codes.", "type": "string" }, "group": { "description": "`place` for physical transactions or `special` for other transactions such as bank charges.", "type": "string" }, "hierarchy": { "description": "A hierarchical array of the categories to which this `category_id` belongs.", "items": { "type": "string" }, "type": "array" } }, "required": [ "category_id", "group", "hierarchy" ], "title": "Category", "type": "object" }, "CategoryExpenses": { "additionalProperties": true, "description": "Detailed expense information for a specific credit category, including transaction count and total amount spent.", "nullable": true, "properties": { "amount": { "description": "The total value for all the transactions that fall into this category within the given time window.", "format": "double", "nullable": true, "type": "number" }, "id": { "description": "The ID of the credit category.\n\nSee the [category taxonomy](https://plaid.com/documents/credit-category-taxonomy.csv) for a full listing of category IDs.", "nullable": false, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "transactions_count": { "description": "The total number of transactions that fall into this credit category within the given time window.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "CategoryExpenses", "type": "object" }, "CategoryInsightDetails": { "additionalProperties": true, "description": "Insights object for categories.", "properties": { "name": { "description": "Category name.", "type": "string" }, "top_counterparties": { "description": "The most common counterparties associated with this category sorted by outflow.", "items": { "type": "string" }, "type": "array" }, "total_inflows": { "description": "Sum of inflow amounts.", "format": "double", "type": "number" }, "total_outflows": { "description": "Sum of outflow amounts.", "format": "double", "type": "number" }, "transaction_count": { "description": "The number of transactions associated with this category.", "type": "integer" } }, "required": [ "name", "transaction_count", "total_outflows", "total_inflows" ], "type": "object" }, "CategoryInsights": { "additionalProperties": true, "description": "Insights on a user's top personal finance categories.", "properties": { "detailed_category_insights": { "description": "List of insights of top detailed personal finance categories ranked by outflow.", "items": { "$ref": "#/components/schemas/CategoryInsightDetails" }, "type": "array" }, "primary_category_insights": { "description": "List of insights of top primary personal finance categories ranked by outflow.", "items": { "$ref": "#/components/schemas/CategoryInsightDetails" }, "type": "array" } }, "type": "object" }, "Cause": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/PlaidError" }, { "properties": { "item_id": { "$ref": "#/components/schemas/ItemId" } }, "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.", "nullable": true, "required": [ "item_id", "error_type", "error_code", "error_message", "display_message" ], "title": "Cause", "type": "object" }, "CheckReportWarning": { "additionalProperties": true, "description": "It is possible for a Check Report product to be returned with missing information. In such cases, the product will contain warning data in the response, indicating why obtaining the owner information failed.", "properties": { "cause": { "$ref": "#/components/schemas/Cause" }, "warning_code": { "$ref": "#/components/schemas/CheckReportWarningCode" }, "warning_type": { "description": "The warning type, which will always be `CHECK_REPORT_WARNING`", "type": "string" } }, "required": [ "warning_type", "warning_code", "cause" ], "title": "CraReportWarning", "type": "object" }, "CheckReportWarningCode": { "description": "The warning code identifies a specific kind of warning.\n`IDENTITY_UNAVAILABLE`: Account-owner information is not available.\n`TRANSACTIONS_UNAVAILABLE`: Transactions information associated with Credit and Depository accounts are unavailable.\n`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" ], "type": "string" }, "City": { "description": "City from the address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters.", "example": "Pawnee", "title": "CityName", "type": "string" }, "CityNullable": { "description": "City from the address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters.", "example": "Pawnee", "nullable": true, "title": "CityName", "type": "string" }, "ClientCustomization": { "additionalProperties": true, "description": "Custom client fields", "nullable": true, "properties": { "custom_entity_id": { "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.", "type": "string" } }, "title": "ClientCustomization", "type": "object", "x-hidden-from-docs": true }, "ClientProvidedEnhancedTransaction": { "additionalProperties": true, "description": "A client-provided transaction that Plaid has enhanced.", "properties": { "amount": { "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.", "format": "double", "type": "number" }, "description": { "description": "The raw description of the transaction.", "type": "string" }, "enhancements": { "$ref": "#/components/schemas/Enhancements" }, "id": { "description": "Unique transaction identifier to tie transactions back to clients' systems.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction.", "type": "string" } }, "required": [ "id", "description", "amount", "iso_currency_code", "enhancements" ], "title": "ClientProvidedEnhancedTransaction", "type": "object", "x-examples": {} }, "ClientProvidedEnrichedTransaction": { "additionalProperties": true, "description": "A client-provided transaction that Plaid has enriched.", "properties": { "account_subtype": { "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).", "type": "string", "x-hidden-from-docs": true }, "account_type": { "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).", "type": "string", "x-hidden-from-docs": true }, "amount": { "description": "The absolute value of the transaction (>= 0)", "format": "double", "type": "number" }, "client_account_id": { "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`.", "type": "string", "x-hidden-from-docs": true }, "client_customization": { "$ref": "#/components/schemas/ClientCustomization" }, "client_user_id": { "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`.", "type": "string", "x-hidden-from-docs": true }, "description": { "description": "The raw description of the transaction.", "type": "string" }, "direction": { "$ref": "#/components/schemas/EnrichTransactionDirection" }, "enrichments": { "$ref": "#/components/schemas/Enrichments" }, "id": { "description": "The unique ID for the transaction as provided by you in the request.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction e.g. USD.", "type": "string" } }, "required": [ "id", "description", "amount", "iso_currency_code", "enrichments" ], "title": "ClientProvidedEnrichedTransaction", "type": "object", "x-examples": {} }, "ClientProvidedRawTransaction": { "additionalProperties": true, "description": "A client-provided transaction for Plaid to enhance.", "properties": { "amount": { "description": "The value of the transaction with direction. (NOTE: this will affect enrichment results, so directions are important):.\n Negative (-) for credits (e.g., incoming transfers, refunds)\n Positive (+) for debits (e.g., purchases, fees, outgoing transfers)", "format": "double", "type": "number" }, "description": { "description": "The raw description of the transaction.", "type": "string" }, "id": { "description": "A unique ID for the transaction used to help you tie data back to your systems.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction e.g. USD.", "type": "string" } }, "required": [ "id", "description", "amount", "iso_currency_code" ], "title": "ClientProvidedRawTransaction", "type": "object" }, "ClientProvidedTransaction": { "additionalProperties": true, "description": "A client-provided transaction for Plaid to enrich.", "properties": { "account_subtype": { "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).", "type": "string", "x-hidden-from-docs": true }, "account_type": { "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).", "type": "string", "x-hidden-from-docs": true }, "amount": { "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.", "format": "double", "type": "number" }, "client_account_id": { "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`.", "type": "string", "x-hidden-from-docs": true }, "client_user_id": { "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`.", "type": "string", "x-hidden-from-docs": true }, "date_posted": { "description": "The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.", "format": "date", "type": "string" }, "description": { "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.", "type": "string" }, "direction": { "$ref": "#/components/schemas/EnrichTransactionDirection" }, "id": { "description": "A unique ID for the transaction used to help you tie data back to your systems.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction e.g. USD.", "type": "string" }, "location": { "$ref": "#/components/schemas/ClientProvidedTransactionLocation" }, "mcc": { "description": "Merchant category codes (MCCs) are four-digit numbers that describe a merchant's primary business activities.", "type": "string" }, "user_id": { "description": "The Plaid generated ID that identifies the end user for whom you would like to enrich transactions.", "type": "string", "x-hidden-from-docs": true } }, "required": [ "id", "description", "amount", "direction", "iso_currency_code" ], "title": "ClientProvidedTransaction", "type": "object" }, "ClientProvidedTransactionLocation": { "additionalProperties": true, "description": "A representation of where a transaction took place.\n\nUse 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.", "properties": { "address": { "description": "The street address where the transaction occurred.", "type": "string" }, "city": { "description": "The city where the transaction occurred.", "type": "string" }, "country": { "description": "The country where the transaction occurred, formatted as an ISO 3166-1 alpha-2 country code (\"US\" or \"CA\").", "type": "string" }, "postal_code": { "description": "The postal code where the transaction occurred.", "type": "string" }, "region": { "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\".", "type": "string" } }, "title": "ClientProvidedTransactionLocation", "type": "object" }, "ClientUserID": { "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`.", "example": "your-db-id-3b24110", "title": "ClientUserID", "type": "string" }, "ClientUserIDNullable": { "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`.", "example": "your-db-id-3b24110", "nullable": true, "title": "ClientUserID", "type": "string" }, "ClientUserIdentity": { "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.", "nullable": true, "properties": { "addresses": { "description": "The user's addresses.", "items": { "$ref": "#/components/schemas/ClientUserIdentityAddress" }, "type": "array" }, "date_of_birth": { "description": "The user's date of birth, to be provided in the format \"yyyy-mm-dd\".", "format": "date", "nullable": true, "type": "string" }, "emails": { "description": "The user's emails.", "items": { "$ref": "#/components/schemas/ClientUserIdentityEmail" }, "type": "array" }, "id_numbers": { "description": "The user's ID numbers.", "items": { "$ref": "#/components/schemas/UserIDNumber" }, "type": "array" }, "name": { "$ref": "#/components/schemas/ClientUserIdentityName" }, "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.", "items": { "$ref": "#/components/schemas/ClientUserIdentityPhoneNumber" }, "type": "array" } }, "type": "object" }, "ClientUserIdentityAddress": { "description": "User address information.", "properties": { "city": { "description": "City name.", "nullable": true, "type": "string" }, "country": { "description": "Country code.", "type": "string" }, "postal_code": { "description": "Postal or ZIP code.", "nullable": true, "type": "string" }, "primary": { "description": "Indicates whether this is the primary address for the User.", "type": "boolean" }, "region": { "description": "State, province or region.", "nullable": true, "type": "string" }, "street_1": { "description": "First line of street address.", "nullable": true, "type": "string" }, "street_2": { "description": "Second line of street address.", "nullable": true, "type": "string" } }, "required": [ "country", "primary" ], "type": "object" }, "ClientUserIdentityEmail": { "description": "User email information.", "properties": { "data": { "description": "User's email.", "type": "string" }, "primary": { "description": "Indicates whether this is the primary email for the User.", "type": "boolean" } }, "required": [ "data", "primary" ], "type": "object" }, "ClientUserIdentityName": { "description": "User name information.", "nullable": true, "properties": { "family_name": { "description": "User's family name.", "type": "string" }, "given_name": { "description": "User's given name.", "type": "string" } }, "required": [ "given_name", "family_name" ], "type": "object" }, "ClientUserIdentityPhoneNumber": { "description": "User phone number information.", "properties": { "data": { "description": "User's phone number.", "type": "string" }, "primary": { "description": "Indicates whether this is the primary phone number for the User.", "type": "boolean" } }, "required": [ "data", "primary" ], "type": "object" }, "ConnectedApplication": { "description": "Describes the connected application for a particular end user.", "properties": { "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "application_url": { "description": "The URL for the application's website", "nullable": true, "type": "string" }, "created_at": { "description": "The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC.", "example": "2020-01-01", "format": "date-time", "type": "string" }, "display_name": { "description": "A human-readable name of the application for display purposes", "nullable": true, "type": "string" }, "logo_url": { "description": "A URL that links to the application logo image.", "nullable": true, "type": "string" }, "name": { "description": "The name of the application", "type": "string" }, "reason_for_access": { "description": "A string provided by the connected app stating why they use their respective enabled products.", "nullable": true, "type": "string" }, "scopes": { "$ref": "#/components/schemas/ScopesNullable" } }, "required": [ "application_id", "name", "created_at" ], "type": "object" }, "ConsentEvent": { "additionalProperties": true, "description": "Describes a consent event.", "properties": { "consented_accounts": { "description": "An array containing the accounts associated with the Item for which authorizations are granted.", "items": { "$ref": "#/components/schemas/ConsentedAccount" }, "type": "array" }, "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.", "items": { "type": "string" }, "type": "array" }, "consented_use_cases": { "description": "A list of strings containing the full list of use cases the end user has consented to for the Item.\n\nSee the [full list](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/#updating-link-customizations) of use cases.", "items": { "type": "string" }, "type": "array" }, "created_at": { "description": "The date and time when the consent event occurred, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" }, "event_code": { "$ref": "#/components/schemas/ConsentEventCode" }, "event_type": { "$ref": "#/components/schemas/ConsentEventType" }, "initiator": { "$ref": "#/components/schemas/ConsentEventInitiator" }, "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" }, "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" } }, "type": "object" }, "ConsentEventCode": { "description": "Codes describing the object of a consent event.", "enum": [ "USER_AGREEMENT", "USE_CASES", "DATA_SCOPES", "ACCOUNT_SCOPES", "REVOCATION" ], "type": "string" }, "ConsentEventInitiator": { "description": "The entity that initiated collection of consent.", "enum": [ "PLAID", "DATA_PROVIDER", "CUSTOMER", "END_USER" ], "type": "string" }, "ConsentEventType": { "description": "A broad categorization of the consent event.", "enum": [ "CONSENT_GRANTED", "CONSENT_REVOKED", "CONSENT_UPDATED" ], "type": "string" }, "ConsentEventsGetRequest": { "description": "Request to list a historical log of item consent events.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "ConsentEventsGetResponse": { "additionalProperties": true, "description": "Describes a historical log of item consent events.", "properties": { "consent_events": { "description": "A list of consent events.", "items": { "$ref": "#/components/schemas/ConsentEvent" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "consent_events", "request_id" ], "type": "object" }, "ConsentPaymentIdempotencyKey": { "description": "A random key provided by the client, per unique consent payment. Maximum of 128 characters.\n\nThe 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.", "maxLength": 128, "minLength": 1, "title": "ConsentPaymentIdempotencyKey", "type": "string" }, "ConsentedAccount": { "additionalProperties": true, "description": "A financial institution account.", "properties": { "account_id": { "description": "Plaid's unique identifier for the account. Like all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number", "type": "string" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution", "type": "string" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "type": "object" }, "ConsumerDispute": { "additionalProperties": true, "description": "The information about a previously submitted valid dispute statement by the consumer", "properties": { "category": { "$ref": "#/components/schemas/ConsumerDisputeCategory" }, "consumer_dispute_id": { "deprecated": true, "description": "(Deprecated) A unique identifier (UUID) of the consumer dispute that can be used for troubleshooting", "type": "string" }, "dispute_field_create_date": { "description": "Date of the disputed field (e.g. transaction date), in an ISO 8601 format (YYYY-MM-DD)", "format": "date", "type": "string" }, "statement": { "description": "Text content of dispute", "type": "string" } }, "required": [ "consumer_dispute_id", "dispute_field_create_date", "category", "statement" ], "title": "ConsumerDispute", "type": "object", "x-hidden-from-docs": true }, "ConsumerDisputeCategory": { "description": "Type of data being disputed by the consumer", "enum": [ "TRANSACTION", "BALANCE", "IDENTITY", "OTHER" ], "title": "ConsumerReportCategory", "type": "string" }, "ConsumerReportPDFGetRequest": { "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" ], "type": "object" }, "ConsumerReportPDFGetResponse": { "description": "ConsumerReportPDFGetResponse defines the response schema for `/consumer_report/pdf/get`", "format": "binary", "type": "string" }, "ConsumerReportPermissiblePurpose": { "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.\n\n`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).\n\n`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).\n\n`EXTENSION_OF_CREDIT`: In connection with a credit transaction initiated by and involving the consumer pursuant to FCRA Section 604(a)(3)(A).\n\n`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).\n\n`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).\n\n`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.\n\n`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.\n\n`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).", "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" ], "title": "ConsumerReportPermissiblePurpose", "type": "string" }, "ConsumerReportUserIdentity": { "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).\nTo 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.", "nullable": true, "properties": { "date_of_birth": { "description": "To be provided in the format \"yyyy-mm-dd\".\nThis field is required for all Plaid Check customers.", "format": "date", "nullable": true, "type": "string" }, "emails": { "description": "The user's emails", "items": { "type": "string" }, "type": "array" }, "first_name": { "description": "The user's first name", "type": "string" }, "last_name": { "description": "The user's last name", "type": "string" }, "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.", "items": { "type": "string" }, "type": "array" }, "primary_address": { "$ref": "#/components/schemas/AddressData" }, "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.\n\nFormat: \"ddd-dd-dddd\"", "nullable": true, "type": "string" }, "ssn_last_4": { "description": "The last 4 digits of the user's Social Security number.", "maxLength": 4, "minLength": 4, "nullable": true, "type": "string" } }, "required": [ "first_name", "last_name", "phone_numbers", "emails", "date_of_birth", "primary_address" ], "type": "object" }, "Counterparty": { "additionalProperties": true, "description": "The counterparty, such as the merchant or financial institution, is extracted by Plaid from the raw description.", "properties": { "account_numbers": { "$ref": "#/components/schemas/CounterpartyNumbers" }, "confidence_level": { "description": "A description of how confident we are that the provided counterparty is involved in the transaction.\n\n`VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction.\n`HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction.\n`MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records.\n`LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description.\n`UNKNOWN`: We don't know the confidence level for this counterparty.", "nullable": true, "type": "string" }, "entity_id": { "description": "A unique, stable, Plaid-generated ID that maps to the counterparty.", "nullable": true, "type": "string" }, "logo_url": { "description": "The URL of a logo associated with the counterparty, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "name": { "description": "The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.", "type": "string" }, "phone_number": { "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, "type": "string" }, "type": { "$ref": "#/components/schemas/CounterpartyType" }, "website": { "description": "The website associated with the counterparty.", "nullable": true, "type": "string" } }, "required": [ "name", "type", "logo_url", "website", "phone_number" ], "title": "Counterparty", "type": "object" }, "CounterpartyInsights": { "additionalProperties": true, "description": "Insights around a user's counterparties", "properties": { "financial_institution_insights": { "description": "Insights related to a user's transactions with other financial institutions, including detected account types.", "items": { "$ref": "#/components/schemas/FinancialInstitutionInsights" }, "type": "array" }, "merchant_insights": { "description": "Insights about a user's top merchants, ranked by spend.", "items": { "$ref": "#/components/schemas/MerchantInsights" }, "type": "array" } }, "type": "object" }, "CounterpartyNumbers": { "additionalProperties": true, "description": "Account numbers associated with the counterparty, when available.\nThis 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" } }, "title": "CounterpartyNumbers", "type": "object" }, "CounterpartyNumbersBACS": { "description": "Identifying information for a UK bank account via Bacs.", "nullable": true, "properties": { "account": { "description": "The Bacs account number for the account.", "nullable": true, "type": "string" }, "sort_code": { "description": "The Bacs sort code for the account.", "nullable": true, "type": "string" } }, "title": "CounterpartyNumbersBACS", "type": "object" }, "CounterpartyNumbersInternational": { "description": "Account numbers using the International Bank Account Number and BIC/SWIFT code format.", "nullable": true, "properties": { "bic": { "description": "Business Identifier Code (BIC) for this counterparty.", "maxLength": 11, "minLength": 8, "nullable": true, "type": "string" }, "iban": { "$ref": "#/components/schemas/NumbersIBANNullable" } }, "title": "CounterpartyNumbersInternational", "type": "object" }, "CounterpartyType": { "description": "The counterparty type.\n\n`merchant`: a provider of goods or services for purchase\n`financial_institution`: a financial entity (bank, credit union, BNPL, fintech)\n`payment_app`: a transfer or P2P app (e.g. Zelle)\n`marketplace`: a marketplace (e.g. DoorDash, Google Play Store)\n`payment_terminal`: a point-of-sale payment terminal (e.g. Square, Toast)\n`income_source`: the payer in an income transaction (e.g., an employer, client, or government agency)", "enum": [ "merchant", "financial_institution", "payment_app", "marketplace", "payment_terminal", "income_source" ], "title": "CounterpartyType", "type": "string" }, "CountryCode": { "description": "ISO-3166-1 alpha-2 country code standard.", "enum": [ "US", "GB", "ES", "NL", "FR", "IE", "CA", "DE", "IT", "PL", "DK", "NO", "SE", "EE", "LT", "LV", "PT", "BE", "AT", "FI" ], "title": "CountryCode", "type": "string" }, "CraAnnualIncomeValues": { "additionalProperties": true, "description": "Modeled estimate of the annual income.", "properties": { "gross_income": { "description": "Gross Income modeled from trends of observed transactions.", "type": "number" }, "net_income": { "description": "Net Income estimated from observed transactions.", "type": "number" } }, "required": [ "gross_income", "net_income" ], "title": "CraAnnualIncomeValues", "type": "object" }, "CraBankIncomeAccount": { "description": "The Item's bank accounts that have the selected data.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.\nNote 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, "type": "string" }, "metadata": { "$ref": "#/components/schemas/CraBankIncomeAccountMetadata" }, "name": { "description": "The name of the bank account.", "type": "string" }, "official_name": { "description": "The official name of the bank account.", "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array", "x-hidden-from-docs": true }, "subtype": { "$ref": "#/components/schemas/DepositoryAccountSubtype" }, "type": { "$ref": "#/components/schemas/CreditBankIncomeAccountType" } }, "required": [ "mask", "metadata", "name", "official_name", "subtype", "type", "owners" ], "type": "object" }, "CraBankIncomeAccountMetadata": { "description": "An object containing metadata about the extracted account.", "properties": { "end_date": { "description": "The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "start_date": { "description": "The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" } }, "required": [ "start_date", "end_date" ], "title": "CraBankIncomeAccountMetadata", "type": "object" }, "CraBankIncomeBonusType": { "description": "The type of bonus that this transaction represents, if it is a bonus.\n`BONUS_INCLUDED`: Bonus is included in this transaction along with the normal pay\n`BONUS_ONLY`: This transaction is a standalone bonus", "enum": [ "BONUS_INCLUDED", "BONUS_ONLY", null ], "nullable": true, "type": "string", "x-hidden-from-docs": true }, "CraBankIncomeCause": { "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": { "display_message": { "description": "A user-friendly representation of the error code. null if the error is not related to user action.\nThis may change over time and is not safe for programmatic use.", "type": "string" }, "error_code": { "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.", "type": "string" }, "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" }, "error_type": { "$ref": "#/components/schemas/CreditBankIncomeErrorType" } }, "required": [ "error_type", "error_code", "error_message", "display_message" ], "type": "object" }, "CraBankIncomeCompleteResult": { "description": "The result of the bank income report generation\n\n`SUCCESS`: The bank income report was successfully generated and can be retrieved via `/credit/bank_income/get`.\n\n`FAILURE`: The bank income report failed to be generated", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "CraBankIncomeCompleteWebhook": { "additionalProperties": true, "description": "Fired when a bank income report has finished generating or failed to generate, triggered by calling `/credit/bank_income/get`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "result": { "$ref": "#/components/schemas/CraBankIncomeCompleteResult" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`BANK_INCOME_COMPLETE`", "type": "string" }, "webhook_type": { "description": "`CRA_INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraBankIncomeCompleteWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "BANK_INCOME_COMPLETE", "webhook_type": "CRA_INCOME" } } }, "CraBankIncomeEmployer": { "additionalProperties": true, "description": "The object containing employer data.", "properties": { "name": { "description": "The name of the employer.", "nullable": true, "type": "string" } }, "required": [ "name" ], "type": "object", "x-hidden-from-docs": true }, "CraBankIncomeErrorWebhook": { "additionalProperties": true, "description": "Fired when a bank income report has failed to generate", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`ERROR`", "type": "string" }, "webhook_type": { "description": "`CRA_INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraBankIncomeErrorWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "ERROR", "webhook_type": "CRA_INCOME" } } }, "CraBankIncomeHistoricalSummary": { "additionalProperties": true, "description": "The end user's monthly summary for the income source(s).", "properties": { "end_date": { "description": "The end date of the period included in this monthly summary.\nThis 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.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "start_date": { "description": "The start date of the period covered in this monthly summary.\nThis 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.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amounts": { "description": "Total amount of earnings for the income source(s) of the user for the month in the summary.\nThis can contain multiple amounts, with each amount denominated in one unique currency.", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" }, "transactions": { "items": { "$ref": "#/components/schemas/CraBankIncomeTransaction" }, "type": "array" } }, "type": "object", "x-hidden-from-docs": true }, "CraBankIncomeIncomeProvider": { "additionalProperties": true, "description": "The object containing data about the income provider.", "nullable": true, "properties": { "is_normalized": { "description": "Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.", "type": "boolean" }, "name": { "description": "The name of the income provider.", "type": "string" } }, "required": [ "name", "is_normalized" ], "type": "object" }, "CraBankIncomeItem": { "description": "The details and metadata for an end user's Item.", "properties": { "accounts": { "description": "The Item's accounts that have bank income data.", "items": { "$ref": "#/components/schemas/CraBankIncomeAccount" }, "type": "array" }, "bank_income_accounts": { "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" }, "type": "array", "x-hidden-from-docs": true }, "bank_income_sources": { "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" }, "type": "array", "x-hidden-from-docs": true }, "institution_id": { "description": "The unique identifier of the institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The name of the institution associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "last_updated_time": { "description": "The time when this Item's data was last retrieved from the financial institution.", "format": "date-time", "type": "string" } }, "required": [ "bank_income_sources", "bank_income_accounts" ], "type": "object" }, "CraBankIncomeSource": { "additionalProperties": true, "description": "Detailed information for the income source.", "properties": { "account_id": { "description": "The account ID with which this income source is associated.", "type": "string" }, "employer": { "$ref": "#/components/schemas/CraBankIncomeEmployer" }, "end_date": { "description": "Maximum of all dates within the specific income sources in the user's bank account for days requested by the client.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "forecasted_average_monthly_income": { "description": "The predicted average monthly net income amount for the income source(s).", "nullable": true, "type": "number" }, "forecasted_average_monthly_income_prediction_intervals": { "description": "The prediction interval(s) for the forecasted average monthly income.", "items": { "$ref": "#/components/schemas/CraPredictionInterval" }, "type": "array" }, "historical_average_monthly_gross_income": { "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, "type": "number" }, "historical_average_monthly_income": { "description": "The average monthly net income amount estimated based on the historical data for the income source(s).", "nullable": true, "type": "number" }, "historical_summary": { "items": { "$ref": "#/components/schemas/CraBankIncomeHistoricalSummary" }, "type": "array" }, "income_category": { "$ref": "#/components/schemas/CreditBankIncomeCategory" }, "income_description": { "description": "The most common name or original description for the underlying income transactions.", "type": "string" }, "income_provider": { "$ref": "#/components/schemas/CraBankIncomeIncomeProvider" }, "income_source_id": { "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.", "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "next_payment_date": { "description": "The expected date of the end user's next paycheck for the income source.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "pay_frequency": { "$ref": "#/components/schemas/CreditBankIncomePayFrequency" }, "start_date": { "description": "Minimum of all dates within the specific income sources in the user's bank account for days requested by the client.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "status": { "$ref": "#/components/schemas/CraBankIncomeStatus" }, "total_amount": { "description": "Total amount of earnings in the user's bank account for the specific income source for days requested by the client.", "type": "number" }, "transaction_count": { "description": "Number of transactions for the income source within the start and end date.", "type": "integer" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "forecasted_average_monthly_income_prediction_intervals", "income_provider" ], "type": "object", "x-hidden-from-docs": true }, "CraBankIncomeStatus": { "description": "The status of the income sources.\n`ACTIVE`: The income source is active.\n`INACTIVE`: The income source is inactive.\n`UNKNOWN`: The income source status is unknown.", "enum": [ "ACTIVE", "INACTIVE", "UNKNOWN" ], "type": "string" }, "CraBankIncomeSummary": { "additionalProperties": true, "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).", "properties": { "end_date": { "description": "The latest date in which all income sources identified by Plaid appear in the user's account.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "forecasted_annual_income": { "description": "The predicted average annual income amount for the income source(s).", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" }, "forecasted_average_monthly_income": { "description": "The predicted average monthly income amount for the income source(s).", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" }, "historical_annual_gross_income": { "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" }, "type": "array" }, "historical_annual_income": { "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" }, "type": "array" }, "historical_average_monthly_gross_income": { "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" }, "type": "array" }, "historical_average_monthly_income": { "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" }, "type": "array" }, "historical_summary": { "items": { "$ref": "#/components/schemas/CraBankIncomeHistoricalSummary" }, "type": "array" }, "income_categories_count": { "description": "Number of income categories per end user.", "type": "integer" }, "income_sources_count": { "description": "Number of income sources per end user.", "type": "integer" }, "income_transactions_count": { "description": "Number of income transactions per end user.", "type": "integer" }, "start_date": { "description": "The earliest date within the days requested in which all income sources identified by Plaid appear in a user's account.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amounts": { "description": "Total amount of earnings across all the income sources in the end user's Items for the days requested by the client.\nThis can contain multiple amounts, with each amount denominated in one unique currency.", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" } }, "type": "object", "x-hidden-from-docs": true }, "CraBankIncomeTransaction": { "additionalProperties": true, "description": "The transactions data for the end user's income source(s).", "properties": { "amount": { "description": "The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`.\nPositive values when money moves out of the account; negative values when money moves in.\nFor example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.", "type": "number" }, "bonus_type": { "$ref": "#/components/schemas/CraBankIncomeBonusType" }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "date": { "description": "For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted.\nBoth dates are returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "name": { "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.", "type": "string" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "nullable": true, "type": "string" }, "pending": { "description": "When true, identifies the transaction as pending or unsettled.\nPending transaction details (name, type, amount, category ID) may change before they are settled.", "type": "boolean" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "transaction_id", "pending", "date", "unofficial_currency_code", "iso_currency_code", "amount", "original_description" ], "type": "object", "x-hidden-from-docs": true }, "CraBankIncomeWarning": { "additionalProperties": true, "description": "The warning associated with the data that was unavailable.", "properties": { "cause": { "$ref": "#/components/schemas/CraBankIncomeCause" }, "warning_code": { "$ref": "#/components/schemas/CraBankIncomeWarningCode" }, "warning_type": { "$ref": "#/components/schemas/CreditBankIncomeWarningType" } }, "type": "object" }, "CraBankIncomeWarningCode": { "description": "The warning code identifies a specific kind of warning.\n`IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item\n`TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item\n`REPORT_DELETED`: Report deleted due to customer or consumer request\n`DATA_UNAVAILABLE`: No relevant data was found for the Item", "enum": [ "IDENTITY_UNAVAILABLE", "TRANSACTIONS_UNAVAILABLE", "REPORT_DELETED", "DATA_UNAVAILABLE" ], "type": "string" }, "CraCashflowInsightsReport": { "additionalProperties": true, "description": "Contains data for the CRA Cashflow Insights Report.", "properties": { "attributes": { "$ref": "#/components/schemas/CashflowAttributesSchema" }, "generated_time": { "description": "The time when the report was generated.", "format": "date-time", "type": "string" }, "report_id": { "description": "The unique identifier associated with the report object.", "type": "string" } }, "required": [ "report_id", "generated_time" ], "type": "object" }, "CraCheckReportBaseReportGetRequest": { "description": "BaseReportGetRequest defines the request schema for `/cra/check_report/base_report/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_ids": { "description": "The Item IDs to include in the Base Report. If not provided, all Items associated with the user will be included.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_tier": { "$ref": "#/components/schemas/CraUserTier" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportBaseReportGetRequest", "type": "object" }, "CraCheckReportBaseReportGetResponse": { "additionalProperties": true, "description": "CraCheckReportBaseReportGetResponse defines the response schema for `/cra/check_report/base_report/get`", "properties": { "report": { "$ref": "#/components/schemas/BaseReport" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "warnings": { "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" }, "type": "array" } }, "required": [ "report", "request_id", "warnings" ], "title": "CraCheckReportBaseReportGetResponse", "type": "object" }, "CraCheckReportCashflowInsightsGetOptions": { "description": "Defines configuration options to generate Cashflow Insights", "nullable": true, "properties": { "attributes_version": { "$ref": "#/components/schemas/CashflowAttributesVersion" } }, "title": "CraCheckReportCashflowInsightsGetOptions", "type": "object" }, "CraCheckReportCashflowInsightsGetRequest": { "description": "CraCheckReportCashflowInsightsGetRequest defines the request schema for `/cra/check_report/cashflow_insights/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CraCheckReportCashflowInsightsGetOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportCashflowInsightsGetRequest", "type": "object" }, "CraCheckReportCashflowInsightsGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "report", "request_id" ], "title": "CraCheckReportCashflowInsightsGetResponse", "type": "object" }, "CraCheckReportCreateBaseReportOptions": { "description": "Defines configuration options to generate a Base Report", "nullable": true, "properties": { "client_report_id": { "deprecated": 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.", "nullable": true, "type": "string" }, "gse_options": { "$ref": "#/components/schemas/CraCheckReportGSEOptions" }, "home_lending_report_options": { "$ref": "#/components/schemas/CraCheckReportHomeLendingReportOptions" }, "require_identity": { "description": "Indicates that the report must include identity information. If identity information is not available, the report will fail.", "nullable": true, "type": "boolean" } }, "title": "CraCheckReportCreateBaseReportOptions", "type": "object" }, "CraCheckReportCreatePartnerInsightsOptions": { "description": "Defines configuration to generate Partner Insights.", "nullable": true, "properties": { "fico": { "$ref": "#/components/schemas/CraPartnerInsightsFicoInput" }, "prism_versions": { "$ref": "#/components/schemas/PrismVersions" } }, "title": "CraCheckReportCreatePartnerInsightsOptions", "type": "object" }, "CraCheckReportCreateRequest": { "description": "CraCheckReportCreateRequest defines the request schema for `/cra/check_report/create`.", "properties": { "base_report": { "$ref": "#/components/schemas/CraCheckReportCreateBaseReportOptions" }, "cashflow_insights": { "$ref": "#/components/schemas/CraCheckReportCashflowInsightsGetOptions" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "consumer_report_permissible_purpose": { "$ref": "#/components/schemas/ConsumerReportPermissiblePurpose" }, "days_requested": { "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, "type": "integer" }, "days_required": { "description": "The minimum number of days of data required for the report to be successfully generated.", "maximum": 184, "type": "integer" }, "include_investments": { "description": "Indicates that investment data should be extracted from the linked account(s).", "nullable": true, "type": "boolean" }, "income_insights": { "$ref": "#/components/schemas/CraCheckReportIncomeInsightsGetOptions" }, "lend_score": { "$ref": "#/components/schemas/CraCheckReportLendScoreGetOptions" }, "network_insights": { "$ref": "#/components/schemas/CraCheckReportNetworkInsightsGetOptions" }, "partner_insights": { "$ref": "#/components/schemas/CraCheckReportCreatePartnerInsightsOptions" }, "products": { "description": "Specifies a list of products that will be eagerly generated when creating the report (in addition to the Base Report, which is always eagerly generated). These products will be made available before a success webhook is sent. Use this option to minimize response latency for product `/get` endpoints. Note that specifying `cra_partner_insights` in this field will trigger a billable event. Other products are not billed until the respective reports are fetched via product-specific `/get` endpoints.", "items": { "$ref": "#/components/schemas/Products" }, "minItems": 1, "nullable": true, "type": "array", "x-override-enum-values-shown": [ "cra_income_insights", "cra_cashflow_insights", "cra_partner_insights", "cra_network_insights", "cra_lend_score" ] }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" }, "webhook": { "description": "The destination URL to which webhooks will be sent\n", "format": "url", "type": "string" } }, "required": [ "webhook", "consumer_report_permissible_purpose", "days_requested" ], "title": "CraCheckReportCreateRequest", "type": "object" }, "CraCheckReportCreateResponse": { "additionalProperties": true, "description": "CraCheckReportCreateResponse defines the response schema for `/cra/check_report/create`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "title": "CraCheckReportCreateResponse", "type": "object" }, "CraCheckReportFailedWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_ids": { "description": "A list of `item_ids` included in the Check Report. Access to this field is in closed beta.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`CHECK_REPORT_FAILED`", "type": "string" }, "webhook_type": { "description": "`CHECK_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraCheckReportFailedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "CHECK_REPORT_FAILED", "webhook_type": "CHECK_REPORT" } } }, "CraCheckReportFreddieMacGetRequest": { "description": "CraCheckReportFreddieMacGetRequest defines the request schema for `/cra/check_report/freddie_mac/get`", "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" ], "title": "CraCheckReportFreddieMacGetRequest", "type": "object" }, "CraCheckReportFreddieMacGetResponse": { "additionalProperties": true, "description": "CraCheckReportFreddieMacGetResponse defines the response schema for `/cra/check_report/freddie_mac/get`", "properties": { "DEAL": { "$ref": "#/components/schemas/CraCheckReportFreddieMacVerificationOfAssetsDeal" }, "SchemaVersion": { "description": "The Verification Of Assets (VOA) schema version.", "type": "number" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "DEAL", "SchemaVersion" ], "title": "CraCheckReportFreddieMacGetResponse", "type": "object" }, "CraCheckReportFreddieMacVerificationOfAssetsDeal": { "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" ], "title": "CraCheckReportFreddieMacVerificationOfAssetsDeal", "type": "object" }, "CraCheckReportGSEOptions": { "description": "Specifies options for creating reports that can be shared with GSEs for mortgage verification.", "nullable": true, "properties": { "report_types": { "description": "Specifies which types of reports should be made available to GSEs.", "items": { "$ref": "#/components/schemas/GSEReportType" }, "type": "array" } }, "required": [ "report_types" ], "title": "CraCheckReportGSEOptions", "type": "object" }, "CraCheckReportHomeLendingReportOptions": { "description": "Options for configuring Home Lending Report (Verification Report) generation.", "nullable": true, "properties": { "employment_refresh_options": { "$ref": "#/components/schemas/CraCheckReportVerificationGetEmploymentRefreshOptions" }, "reports_requested": { "description": "Specifies which types of home lending reports to generate.", "items": { "$ref": "#/components/schemas/CraCheckReportVerificationGetReportType" }, "type": "array" } }, "required": [ "reports_requested" ], "title": "CraCheckReportHomeLendingReportOptions", "type": "object", "x-hidden-from-docs": true }, "CraCheckReportIncomeInsightsGetOptions": { "description": "Defines configuration options to generate Income Insights.", "nullable": true, "properties": { "income_insights_filter": { "$ref": "#/components/schemas/IncomeInsightsFilter" }, "income_insights_version": { "$ref": "#/components/schemas/IncomeInsightsVersion" } }, "required": [ "income_insights_version" ], "title": "CraCheckReportIncomeInsightsGetOptions", "type": "object" }, "CraCheckReportIncomeInsightsGetRequest": { "description": "Defines the request schema for `/cra/check_report/income_insights/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CraCheckReportIncomeInsightsGetOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportIncomeInsightsGetRequest", "type": "object" }, "CraCheckReportIncomeInsightsGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "request_id" ], "title": "CraCheckReportIncomeInsightsGetResponse", "type": "object" }, "CraCheckReportLendScoreGetOptions": { "description": "Defines configuration options to generate the LendScore", "nullable": true, "properties": { "lend_score_version": { "$ref": "#/components/schemas/PlaidLendScoreVersion" } }, "title": "CraCheckReportLendScoreGetOptions", "type": "object" }, "CraCheckReportLendScoreGetRequest": { "description": "CraCheckReportLendScoreGetRequest defines the request schema for `/cra/check_report/lend_score/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CraCheckReportLendScoreGetOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportLendScoreGetRequest", "type": "object" }, "CraCheckReportLendScoreGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "report", "request_id" ], "title": "CraCheckReportLendScoreGetResponse", "type": "object" }, "CraCheckReportNetworkInsightsGetOptions": { "description": "Defines configuration options to generate Network Insights", "nullable": true, "properties": { "network_insights_version": { "$ref": "#/components/schemas/NetworkInsightsVersion" } }, "title": "CraCheckReportNetworkInsightsGetOptions", "type": "object" }, "CraCheckReportNetworkInsightsGetRequest": { "description": "CraCheckReportNetworkInsightsGetRequest defines the request schema for `/cra/check_report/network_insights/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CraCheckReportNetworkInsightsGetOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportNetworkInsightsGetRequest", "type": "object" }, "CraCheckReportNetworkInsightsGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "report", "request_id" ], "title": "CraCheckReportNetworkInsightsGetResponse", "type": "object" }, "CraCheckReportPDFGetRequest": { "description": "CraCheckReportPDFGetRequest defines the request schema for `/cra/check_report/pdf/get`.", "properties": { "add_ons": { "description": "Use this field to include other reports in the PDF.", "items": { "$ref": "#/components/schemas/CraPDFAddOns" }, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportPDFGetRequest", "type": "object" }, "CraCheckReportPDFGetResponse": { "description": "CraCheckReportPDFGetResponse defines the response schema for `/cra/check_report/pdf/get`", "format": "binary", "type": "string" }, "CraCheckReportPartnerInsightsGetOptions": { "deprecated": true, "description": "Deprecated, specify `partner_insights.prism_versions` instead.", "nullable": true, "properties": { "prism_versions": { "$ref": "#/components/schemas/PrismVersionsDeprecated" } }, "title": "CraCheckReportPartnerInsightsGetOptions", "type": "object", "x-hidden-from-docs": true }, "CraCheckReportPartnerInsightsGetPartnerInsights": { "description": "Defines configuration to generate Partner Insights.", "properties": { "fico": { "$ref": "#/components/schemas/CraPartnerInsightsFicoInput" }, "prism_versions": { "$ref": "#/components/schemas/PrismVersions" } }, "title": "CraCheckReportPartnerInsightsGetPartnerInsights", "type": "object" }, "CraCheckReportPartnerInsightsGetRequest": { "description": "CraCheckReportPartnerInsightsGetRequest defines the request schema for `/cra/check_report/partner_insights/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CraCheckReportPartnerInsightsGetOptions" }, "partner_insights": { "$ref": "#/components/schemas/CraCheckReportPartnerInsightsGetPartnerInsights" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_tier": { "$ref": "#/components/schemas/CraUserTier" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportPartnerInsightsGetRequest", "type": "object" }, "CraCheckReportPartnerInsightsGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "request_id" ], "title": "CraCheckReportPartnerInsightsGetResponse", "type": "object" }, "CraCheckReportReadyWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "failed_products": { "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" }, "nullable": true, "type": "array", "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": { "description": "A list of `item_ids` included in the Check Report. Access to this field is in closed beta.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "successful_products": { "description": "Specifies a list of products that have successfully been generated for the report.", "items": { "$ref": "#/components/schemas/Products" }, "nullable": true, "type": "array", "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" ] }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`CHECK_REPORT_READY`", "type": "string" }, "webhook_type": { "description": "`CHECK_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraCheckReportReadyWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "successful_products": [ "cra_base_report" ], "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "CHECK_REPORT_READY", "webhook_type": "CHECK_REPORT" } } }, "CraCheckReportVerificationGetEmploymentRefreshOptions": { "description": "Defines configuration options for the Employment Refresh Report.", "nullable": true, "properties": { "days_requested": { "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, "type": "integer" } }, "required": [ "days_requested" ], "title": "CraCheckReportVerificationGetEmploymentRefreshOptions", "type": "object" }, "CraCheckReportVerificationGetReportType": { "description": "Type of home lending report.", "enum": [ "VOA", "EMPLOYMENT_REFRESH", "INCOME" ], "title": "CraCheckReportVerificationGetReportType", "type": "string" }, "CraCheckReportVerificationGetRequest": { "description": "CraCheckReportVerificationGetRequest defines the request schema for `/cra/check_report/verification/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "employment_refresh_options": { "$ref": "#/components/schemas/CraCheckReportVerificationGetEmploymentRefreshOptions" }, "reports_requested": { "description": "Specifies which types of home lending reports are expected in the response", "items": { "$ref": "#/components/schemas/CraCheckReportVerificationGetReportType" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "reports_requested" ], "title": "CraCheckReportVerificationGetRequest", "type": "object" }, "CraCheckReportVerificationGetResponse": { "additionalProperties": true, "description": "CraCheckReportVerificationGetResponse defines the response schema for `/cra/check_report/verification/get`.", "properties": { "report": { "$ref": "#/components/schemas/CraVerificationReport" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "warnings": { "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" }, "type": "array" } }, "required": [ "report", "request_id", "warnings" ], "title": "CraCheckReportVerificationGetResponse", "type": "object" }, "CraCheckReportVerificationPdfGetRequest": { "description": "CraCheckReportVerificationPdfGetRequest defines the request schema for `/cra/check_report/verification/pdf/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "report_requested": { "allOf": [ { "$ref": "#/components/schemas/CraCheckReportVerificationPdfReportType" }, { "description": "Deprecated. Use `reports_requested` instead." } ], "deprecated": true }, "reports_requested": { "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.\n", "items": { "$ref": "#/components/schemas/CraCheckReportVerificationPdfReportType" }, "minItems": 1, "type": "array", "uniqueItems": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_user_token": { "$ref": "#/components/schemas/ThirdPartyUserToken" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CraCheckReportVerificationPdfGetRequest", "type": "object" }, "CraCheckReportVerificationPdfGetResponse": { "description": "CraCheckReportVerificationPdfGetResponse defines the response schema for `/cra/check_report/verification/pdf/get`", "format": "binary", "type": "string" }, "CraCheckReportVerificationPdfReportType": { "description": "The type of verification PDF report to fetch.", "enum": [ "voa", "employment_refresh", "income" ], "type": "string" }, "CraCreditProfileCashflowAttributesSchema": { "additionalProperties": true, "description": "A map of cash flow attributes, where the key is a string, and the value is a 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.", "nullable": true, "title": "CraCreditProfileCashflowAttributes", "type": "object" }, "CraCreditProfileInquiryType": { "description": "The inquiry type of credit profile report.", "enum": [ "SOFT_INQUIRY", "STANDARD_INQUIRY" ], "type": "string" }, "CraCreditProfileLendScore": { "additionalProperties": true, "description": "An individual LendScore result within a credit profile report.", "nullable": true, "properties": { "error_reason": { "description": "Human-readable description of why the LendScore could not be computed.", "nullable": true, "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes.", "items": { "type": "string" }, "type": "array" }, "score": { "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, "type": "integer" }, "variant": { "description": "The variant identifier for this LendScore result.", "type": "string" } }, "required": [ "score", "reason_codes", "variant", "error_reason" ], "type": "object" }, "CraCreditProfileNetworkInsightsSchema": { "additionalProperties": true, "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.", "nullable": true, "title": "CraCreditProfileNetworkInsights", "type": "object" }, "CraCreditProfileReport": { "additionalProperties": true, "description": "Contains data for the CRA Credit Profile Report.", "properties": { "cashflow_insights_attributes": { "$ref": "#/components/schemas/CraCreditProfileCashflowAttributesSchema" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "type": "string" }, "date_retrieved": { "description": "The time when the report was retrieved.", "format": "date-time", "type": "string" }, "inquiry_type": { "$ref": "#/components/schemas/CraCreditProfileInquiryType" }, "lend_scores": { "description": "The LendScore results for the credit profile report.", "items": { "$ref": "#/components/schemas/CraCreditProfileLendScore" }, "type": "array" }, "metadata": { "$ref": "#/components/schemas/CraCreditProfileReportMetadata" }, "network_insights_attributes": { "$ref": "#/components/schemas/CraCreditProfileNetworkInsightsSchema" } }, "required": [ "date_retrieved", "inquiry_type", "client_report_id", "lend_scores", "cashflow_insights_attributes", "network_insights_attributes", "metadata" ], "type": "object" }, "CraCreditProfileReportGetRequest": { "description": "CraCreditProfileReportGetRequest defines the request schema for `/cra/credit_profile/report/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "type": "string" }, "consumer_report_permissible_purpose": { "$ref": "#/components/schemas/ConsumerReportPermissiblePurpose" }, "inquiry_type": { "$ref": "#/components/schemas/CraCreditProfileInquiryType" }, "report_type": { "$ref": "#/components/schemas/CraCreditProfileReportType" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "version": { "$ref": "#/components/schemas/CraCreditProfileReportVersion" } }, "required": [ "user_id", "consumer_report_permissible_purpose", "client_report_id", "report_type", "inquiry_type", "version" ], "title": "CraCreditProfileReportGetRequest", "type": "object" }, "CraCreditProfileReportGetResponse": { "additionalProperties": true, "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": { "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" }, "type": "array" } }, "required": [ "report", "request_id", "warnings" ], "title": "CraCreditProfileReportGetResponse", "type": "object" }, "CraCreditProfileReportMetadata": { "additionalProperties": true, "description": "Metadata about the CRA Credit Profile Report.", "nullable": true, "properties": { "account_count": { "description": "The total number of accounts in the report.", "type": "integer" }, "credit_account_type_count": { "description": "The number of credit accounts in the report.", "type": "integer" }, "depository_account_type_count": { "description": "The number of depository accounts in the report.", "type": "integer" }, "generated_at": { "description": "The time when the report was generated.", "format": "date-time", "type": "string" }, "institution_ids": { "description": "The institution IDs associated with the report.", "items": { "type": "string" }, "type": "array" }, "item_count": { "description": "The number of items used to calculate the report.", "type": "integer" }, "most_recent_transaction_date": { "description": "The date of the most recent transaction in the report.", "format": "date", "type": "string" }, "multiple_owner_account_count": { "description": "The number of accounts with multiple owners in the report.", "type": "integer" }, "oldest_transaction_date": { "description": "The date of the oldest transaction in the report.", "format": "date", "type": "string" }, "other_account_type_count": { "description": "The number of other accounts in the report.", "type": "integer" }, "primary_account_count": { "description": "The number of primary accounts in the report.", "type": "integer" } }, "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" ], "type": "object" }, "CraCreditProfileReportType": { "description": "The product type for the credit profile report request.", "enum": [ "QUALIFY" ], "type": "string" }, "CraCreditProfileReportVersion": { "description": "The version of the credit profile report to retrieve.", "enum": [ "v1" ], "type": "string" }, "CraCurrentModeledIncome": { "additionalProperties": true, "description": "Modeled estimate of current income based on recently observed income transactions.", "nullable": true, "properties": { "annual": { "$ref": "#/components/schemas/CraAnnualIncomeValues" }, "monthly": { "$ref": "#/components/schemas/CraMonthlyIncomeValues" } }, "required": [ "monthly", "annual" ], "title": "CraCurrentModeledIncome", "type": "object" }, "CraEmploymentRefreshReport": { "additionalProperties": true, "description": "An object representing an Employment Refresh Report.", "nullable": true, "properties": { "days_requested": { "description": "The number of days of transaction history that the Employment Refresh Report covers.", "type": "number" }, "generated_time": { "description": "The date and time when the Employment Refresh Report was created, in ISO 8601 format (e.g. \"2018-04-12T03:32:11Z\").", "format": "date-time", "type": "string" }, "items": { "description": "Data returned by Plaid about each of the Items included in the Employment Refresh Report.", "items": { "$ref": "#/components/schemas/CraEmploymentRefreshReportItem" }, "type": "array" } }, "required": [ "generated_time", "days_requested", "items" ], "title": "CraEmploymentRefreshReport", "type": "object" }, "CraEmploymentRefreshReportAccount": { "additionalProperties": true, "description": "Employment Refresh Report information about an account.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself.", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution.", "nullable": true, "type": "string" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "transactions": { "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" }, "type": "array" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "required": [ "account_id", "name", "official_name", "type", "subtype", "transactions" ], "title": "CraEmploymentRefreshReportAccount", "type": "object" }, "CraEmploymentRefreshReportItem": { "additionalProperties": true, "description": "A representation of an Item within an Employment Refresh Report.", "properties": { "accounts": { "description": "Data about each of the accounts open on the Item.", "items": { "$ref": "#/components/schemas/CraEmploymentRefreshReportAccount" }, "type": "array" }, "institution_id": { "description": "The id of the financial institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The full financial institution name associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "last_update_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.", "format": "date-time", "type": "string" } }, "required": [ "accounts", "institution_name", "institution_id", "item_id", "last_update_time" ], "title": "CraEmploymentRefreshReportItem", "type": "object" }, "CraEmploymentRefreshReportTransaction": { "additionalProperties": true, "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.", "properties": { "account_id": { "description": "The ID of the account in which this transaction occurred.", "type": "string" }, "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` ).", "format": "date", "type": "string" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "type": "string" }, "pending": { "description": "When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.", "type": "boolean" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" } }, "required": [ "account_id", "original_description", "date", "pending", "transaction_id" ], "title": "CraEmploymentRefreshReportTransaction", "type": "object" }, "CraIncomeCategory": { "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.\n\nSee the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories.", "properties": { "primary": { "description": "A high level category that communicates the broad category of the stream.", "type": "string" }, "secondary": { "description": "A granular category conveying the stream's intent.", "type": "string" } }, "required": [ "primary", "secondary" ], "title": "CraIncomeCategory", "type": "object" }, "CraIncomeInsights": { "additionalProperties": true, "description": "The Check Income Insights Report for an end user.", "properties": { "bank_income_summary": { "$ref": "#/components/schemas/CraBankIncomeSummary" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "days_requested": { "description": "The number of days requested by the customer for the Check Income Insights Report.", "type": "integer" }, "generated_time": { "description": "The time when the Check Income Insights Report was generated.", "format": "date-time", "type": "string" }, "income_streams": { "description": "The list of income streams for this user.", "items": { "$ref": "#/components/schemas/CraIncomeStream" }, "type": "array" }, "items": { "description": "The list of Items in the report along with the associated metadata about the Item.", "items": { "$ref": "#/components/schemas/CraBankIncomeItem" }, "type": "array" }, "report_id": { "description": "The unique identifier associated with the Check Income Insights Report.", "type": "string" }, "user_summary": { "$ref": "#/components/schemas/CraIncomeInsightsUserSummary" }, "warnings": { "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" }, "type": "array", "x-hidden-from-docs": true } }, "required": [ "income_streams" ], "type": "object" }, "CraIncomeInsightsUserSummary": { "additionalProperties": true, "description": "Aggregated summary of all income streams for this user.", "nullable": true, "properties": { "income_metrics": { "description": "List of a user's aggregated income metrics for each currency.", "items": { "$ref": "#/components/schemas/CraIncomeMetrics" }, "type": "array" } }, "required": [ "income_metrics" ], "title": "CraIncomeInsightsUserSummary", "type": "object" }, "CraIncomeMetrics": { "additionalProperties": true, "description": "Modeled income metrics for a given income stream or user summary.", "properties": { "current": { "$ref": "#/components/schemas/CraCurrentModeledIncome" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "projected": { "$ref": "#/components/schemas/CraProjectedModeledIncome" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "current", "projected", "iso_currency_code", "unofficial_currency_code" ], "title": "CraIncomeMetrics", "type": "object" }, "CraIncomeNextPayment": { "additionalProperties": true, "description": "Metadata of the income stream's next payment.", "nullable": true, "properties": { "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).", "format": "date", "type": "string" } }, "required": [ "date" ], "title": "CraIncomeNextPayment", "type": "object" }, "CraIncomeStream": { "additionalProperties": true, "description": "An income stream detected for the user.", "properties": { "description": { "description": "The most common name or original description for the underlying income transactions.", "type": "string" }, "end_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).", "format": "date", "type": "string" }, "income_metrics": { "$ref": "#/components/schemas/CraIncomeMetrics" }, "income_stream_id": { "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.", "type": "string" }, "insights": { "$ref": "#/components/schemas/CraIncomeStreamInsights" }, "start_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).", "format": "date", "type": "string" }, "transactions": { "description": "The transactions data for the income stream ordered by ascending date.", "items": { "$ref": "#/components/schemas/CraIncomeTransaction" }, "type": "array" } }, "required": [ "income_stream_id", "start_date", "end_date", "description", "insights", "income_metrics", "transactions" ], "title": "CraIncomeStream", "type": "object" }, "CraIncomeStreamInsights": { "additionalProperties": true, "description": "Modeled insights for a given income stream.", "properties": { "income_category": { "$ref": "#/components/schemas/CraIncomeCategory" }, "income_provider": { "$ref": "#/components/schemas/CraBankIncomeIncomeProvider" }, "next_payment": { "$ref": "#/components/schemas/CraIncomeNextPayment" }, "pay_frequency": { "$ref": "#/components/schemas/CreditBankIncomePayFrequency" }, "status": { "$ref": "#/components/schemas/CraBankIncomeStatus" } }, "required": [ "income_category", "pay_frequency", "income_provider", "status", "next_payment" ], "title": "CraIncomeStreamInsights", "type": "object" }, "CraIncomeTransaction": { "additionalProperties": true, "description": "The transaction data for an income stream.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "amount": { "description": "The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`.\nPositive values when money moves out of the account; negative values when money moves in.\nFor example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.", "type": "number" }, "date": { "description": "For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted.\nBoth dates are returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "type": "string" }, "outlier": { "$ref": "#/components/schemas/CraIncomeTransactionOutlier" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "transaction_id", "item_id", "account_id", "amount", "date", "original_description", "iso_currency_code", "unofficial_currency_code", "outlier" ], "title": "CraIncomeTransaction", "type": "object" }, "CraIncomeTransactionOutlier": { "additionalProperties": true, "description": "Metadata on whether this income transaction is an outlier.", "properties": { "amount": { "description": "The amount that the transaction differs from the stream average transaction amount.", "nullable": true, "type": "number" }, "is_outlier": { "description": "Indicates whether an income transaction amount is unusually high compared to the amounts for that stream.", "type": "boolean" } }, "required": [ "is_outlier" ], "title": "CraIncomeTransactionOutlier", "type": "object" }, "CraLendScoreReport": { "additionalProperties": true, "description": "Contains data for the CRA LendScore Report.", "properties": { "generated_time": { "description": "The time when the report was generated.", "format": "date-time", "type": "string" }, "lend_score": { "$ref": "#/components/schemas/LendScore" }, "report_id": { "description": "The unique identifier associated with the report object.", "type": "string" } }, "required": [ "report_id", "generated_time" ], "type": "object" }, "CraLoanApplication": { "additionalProperties": true, "description": "Contains loan application data.", "properties": { "application_date": { "description": "The date the user applied for the loan. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "application_id": { "$ref": "#/components/schemas/CraLoanApplicationID" }, "decision": { "$ref": "#/components/schemas/CraLoanApplicationDecision" }, "decision_date": { "description": "The date when the loan application's decision was made. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "type": { "$ref": "#/components/schemas/CraLoanType" }, "user_token": { "$ref": "#/components/schemas/CraLoanUserToken" } }, "required": [ "user_token", "application_id", "type", "decision" ], "type": "object" }, "CraLoanApplicationDecision": { "description": "The decision of the loan application.", "enum": [ "APPROVED", "DECLINED", "OTHER" ], "type": "string" }, "CraLoanApplicationID": { "description": "A unique identifier for the loan application.\nPersonally identifiable information, such as an email address or phone number, should not be used in the `application_id`.", "type": "string" }, "CraLoanClosedStatus": { "additionalProperties": true, "description": "Contains the status and date information of the loan when unregistering.", "properties": { "date": { "$ref": "#/components/schemas/CraLoanStatusEffectiveDate" }, "status": { "$ref": "#/components/schemas/CraLoanStatus" } }, "required": [ "status", "date" ], "type": "object" }, "CraLoanID": { "description": "A unique identifier for the loan.\nPersonally identifiable information, such as an email address or phone number, should not be used in the `loan_id`.", "type": "string" }, "CraLoanOpenedStatus": { "additionalProperties": true, "description": "Contains the status and date information of the loan when registering.", "properties": { "date": { "$ref": "#/components/schemas/CraLoanStatusEffectiveDate" }, "status": { "$ref": "#/components/schemas/CraLoanStatus" } }, "required": [ "status", "date" ], "type": "object" }, "CraLoanPaymentHistory": { "additionalProperties": true, "description": "Contains the payment information for a loan payment period.", "properties": { "amount_past_due": { "description": "The amount past due or the charge-off amount of the loan at the end of the payment period.", "type": "number" }, "balance_remaining": { "description": "The balance remaining on the loan at the end of the payment period.", "type": "number" }, "days_past_due": { "description": "The number of days the loan was delinquent at the end of the pay period.\nIf specified, should be greater than or equal to 0.", "type": "integer" }, "due_date": { "description": "The payment due date or end date of the payment period. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "period": { "description": "The index to identify the loan's payment period, starting from 1.\nFor example:\n 1 means the period between the loan's opening date and the 1st payment due date.\n 2 means the period between the loan's 1st payment due date and 2nd payment due date.", "type": "integer" } }, "required": [ "period", "due_date", "days_past_due" ], "type": "object" }, "CraLoanPaymentSchedule": { "description": "The frequency of a loan's payment schedule.\n`BIWEEKLY` represents one payment every two weeks.", "enum": [ "DAILY", "WEEKLY", "BIWEEKLY", "MONTHLY", "QUARTERLY", "ANNUALLY", "OTHER" ], "type": "string" }, "CraLoanRegister": { "additionalProperties": true, "description": "Contains loan data to register.", "properties": { "application": { "$ref": "#/components/schemas/CraLoanRegisterApplication" }, "loan_amount": { "description": "The total amount of the approved loan.", "type": "number" }, "loan_id": { "$ref": "#/components/schemas/CraLoanID" }, "opened_date": { "description": "The date the loan account was opened. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "opened_with_status": { "$ref": "#/components/schemas/CraLoanOpenedStatus" }, "payment_schedule": { "$ref": "#/components/schemas/CraLoanPaymentSchedule" }, "type": { "$ref": "#/components/schemas/CraLoanType" }, "user_token": { "$ref": "#/components/schemas/CraLoanUserToken" } }, "required": [ "user_token", "loan_id", "type", "opened_date", "payment_schedule", "opened_with_status" ], "type": "object" }, "CraLoanRegisterApplication": { "additionalProperties": true, "description": "Contains loan application data to register.", "properties": { "application_date": { "description": "The date the user applied for the loan. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "application_id": { "$ref": "#/components/schemas/CraLoanApplicationID" } }, "type": "object" }, "CraLoanStatus": { "description": "The status of the loan.", "enum": [ "APPROVED", "DECLINED", "BOOKED", "CURRENT", "DELINQUENT", "DEFAULT", "CHARGED_OFF", "TRANSFERRED", "PAID_OFF", "OTHER" ], "type": "string" }, "CraLoanStatusEffectiveDate": { "description": "The effective date for the status of the loan. The date should be in ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "CraLoanStatusHistoryUpdate": { "additionalProperties": true, "description": "Contains the status and date of an update to the loan.", "properties": { "date": { "$ref": "#/components/schemas/CraLoanStatusEffectiveDate" }, "status": { "$ref": "#/components/schemas/CraLoanStatus" } }, "required": [ "status", "date" ], "type": "object" }, "CraLoanType": { "description": "The type of loan the user applied for.", "enum": [ "PERSONAL", "CREDIT_CARD", "BUSINESS", "MORTGAGE", "AUTO", "PAYDAY", "STUDENT", "HOME_EQUITY", "OTHER" ], "type": "string" }, "CraLoanUnregister": { "additionalProperties": true, "description": "Contains loan data for the loan being unregistered.", "properties": { "closed_with_status": { "$ref": "#/components/schemas/CraLoanClosedStatus" }, "loan_id": { "$ref": "#/components/schemas/CraLoanID" } }, "required": [ "loan_id", "closed_with_status" ], "type": "object" }, "CraLoanUnregisterResponse": { "additionalProperties": true, "description": "CraLoanUnregisterResponse defines the response schema for `/cra/loans/unregister`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CraLoanUnregisterResponse", "type": "object" }, "CraLoanUpdate": { "additionalProperties": true, "description": "Contains loan data to update.", "properties": { "loan_id": { "$ref": "#/components/schemas/CraLoanID" }, "payment_history": { "description": "The updates to the payment history for the loan.", "items": { "$ref": "#/components/schemas/CraLoanPaymentHistory" }, "type": "array" }, "status_history": { "description": "A list of status update history of the loan.", "items": { "$ref": "#/components/schemas/CraLoanStatusHistoryUpdate" }, "type": "array" } }, "type": "object" }, "CraLoanUserToken": { "description": "The user token for the user associated with the loan.", "type": "string" }, "CraLoansApplicationsRegisterRequest": { "description": "CraLoansApplicationsRegisterRequest defines the request schema for `/cra/loans/applications/register`.", "properties": { "applications": { "description": "A list of loan applications to register.", "items": { "$ref": "#/components/schemas/CraLoanApplication" }, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "applications" ], "type": "object" }, "CraLoansApplicationsRegisterResponse": { "additionalProperties": true, "description": "CraLoansApplicationsRegisterResponse defines the response schema for `/cra/loans/applications/register`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CraLoansApplicationsRegisterResponse", "type": "object" }, "CraLoansRegisterResponse": { "additionalProperties": true, "description": "CraLoansRegisterResponse defines the response schema for `/cra/loans/register`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CraLoansRegisterResponse", "type": "object" }, "CraLoansUnregisterRequest": { "description": "CraLoansUnregisterRequest defines the request schema for `/cra/loans/unregister`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "loans": { "description": "A list of loans to unregister.", "items": { "$ref": "#/components/schemas/CraLoanUnregister" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "loans" ], "type": "object" }, "CraLoansUpdateRequest": { "description": "CraLoansUpdateRequest defines the request schema for `/cra/loans/update`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "loans": { "description": "A list of loans to update.", "items": { "$ref": "#/components/schemas/CraLoanUpdate" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "loans" ], "type": "object" }, "CraLoansUpdateResponse": { "additionalProperties": true, "description": "CraLoansUpdateResponse defines the response schema for `/cra/loans/update`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CraLoansUpdateResponse", "type": "object" }, "CraMonitoringInsightsGetRequest": { "description": "CraMonitoringInsightsGetRequest defines the request schema for `/cra/monitoring_insights/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consumer_report_permissible_purpose": { "$ref": "#/components/schemas/MonitoringConsumerReportPermissiblePurpose" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "consumer_report_permissible_purpose" ], "type": "object" }, "CraMonitoringInsightsGetResponse": { "additionalProperties": true, "description": "CraMonitoringInsightsGetResponse defines the response schema for `cra/monitoring_insights/get`", "properties": { "items": { "description": "An array of Monitoring Insights Items associated with the user.", "items": { "$ref": "#/components/schemas/CraMonitoringInsightsItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "user_insights_id": { "$ref": "#/components/schemas/UserInsightsId" } }, "required": [ "request_id", "user_insights_id", "items" ], "type": "object" }, "CraMonitoringInsightsItem": { "additionalProperties": true, "description": "An object representing a Monitoring Insights Item", "properties": { "accounts": { "description": "Data about each of the accounts open on the Item.", "items": { "$ref": "#/components/schemas/BaseReportAccount" }, "type": "array" }, "date_generated": { "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\").", "format": "date-time", "type": "string" }, "insights": { "$ref": "#/components/schemas/MonitoringInsights" }, "institution_id": { "description": "The id of the financial institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The full financial institution name associated with the Item.", "type": "string" }, "item_id": { "description": "The `item_id` of the Item associated with the insights", "type": "string" }, "status": { "$ref": "#/components/schemas/MonitoringInsightsItemStatus" } }, "required": [ "date_generated", "item_id", "institution_id", "institution_name", "status", "insights" ], "title": "CraMonitoringInsightsItem", "type": "object" }, "CraMonitoringInsightsSubscribeRequest": { "description": "CraMonitoringInsightsSubscribeRequest defines the request schema for `/cra/monitoring_insights/subscribe`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "income_categories": { "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, "type": "array" }, "item_id": { "description": "The Item ID to subscribe for Cash Flow Updates.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" }, "webhook": { "description": "URL to which Plaid will send Cash Flow Updates webhooks, for example when the requested Cash Flow Updates report is ready.", "format": "url", "type": "string" } }, "required": [ "webhook" ], "type": "object" }, "CraMonitoringInsightsSubscribeResponse": { "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" ], "type": "object" }, "CraMonitoringInsightsSubscriptionID": { "description": "A unique identifier for the subscription.", "title": "CraMonitoringInsightsSubscriptionId", "type": "string" }, "CraMonitoringInsightsUnsubscribeRequest": { "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" ], "type": "object" }, "CraMonitoringInsightsUnsubscribeResponse": { "additionalProperties": true, "description": "CraMonitoringInsightsUnsubscribeResponse defines the response schema for `cra/monitoring_insights/unsubscribe`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "CraMonthlyIncomeValues": { "additionalProperties": true, "description": "Modeled estimate of the monthly income.", "properties": { "gross_income": { "description": "Gross Income modeled from trends of observed transactions.", "type": "number" }, "net_income": { "description": "Net Income estimated from observed transactions.", "type": "number" } }, "required": [ "gross_income", "net_income" ], "title": "CraMonthlyIncomeValues", "type": "object" }, "CraNetworkInsightsItem": { "description": "Contains data about the connected Item.", "properties": { "institution_id": { "description": "The ID for the institution the user linked.", "type": "string" }, "institution_name": { "description": "The name of the institution the user linked.", "type": "string" }, "item_id": { "description": "The identifier for the Item.", "type": "string" } }, "required": [ "institution_id", "institution_name", "item_id" ], "type": "object" }, "CraNetworkInsightsReport": { "additionalProperties": true, "description": "Contains data for the CRA Network Attributes Report.", "properties": { "generated_time": { "description": "The time when the report was generated.", "format": "date-time", "type": "string" }, "items": { "description": "The Items the end user connected in Link.", "items": { "$ref": "#/components/schemas/CraNetworkInsightsItem" }, "type": "array" }, "network_attributes": { "$ref": "#/components/schemas/NetworkInsightsSchema" }, "report_id": { "description": "The unique identifier associated with the report object.", "type": "string" } }, "required": [ "report_id", "generated_time", "network_attributes", "items" ], "type": "object" }, "CraPDFAddOns": { "description": "A list of add-ons that can be included in the PDF.\n\n`cra_income_insights`: Include Income Insights report in the PDF.\n`cra_partner_insights`: Include Partner Insights report in the PDF.", "enum": [ "cra_income_insights", "cra_partner_insights" ], "title": "CraPDFAddOns", "type": "string" }, "CraPartnerInsights": { "additionalProperties": true, "description": "The Partner Insights report of the bank data for an end user.", "properties": { "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "fico": { "$ref": "#/components/schemas/CraPartnerInsightsFicoResults" }, "generated_time": { "description": "The time when the Partner Insights report was generated.", "format": "date-time", "type": "string" }, "items": { "description": "The list of Items used in the report along with the associated metadata about the Item.", "items": { "$ref": "#/components/schemas/CraPartnerInsightsItem" }, "type": "array" }, "prism": { "$ref": "#/components/schemas/CraPartnerInsightsPrism" }, "report_id": { "description": "A unique identifier associated with the Partner Insights object.", "type": "string" } }, "type": "object" }, "CraPartnerInsightsBaseFicoScore": { "description": "Details about the base FICO score associated with an UltraFICO\u00ae scoring request.", "properties": { "base_fico_score_version": { "$ref": "#/components/schemas/CraPartnerInsightsBaseFicoScoreVersion" }, "bureau": { "$ref": "#/components/schemas/CraPartnerInsightsBureau" }, "did_inquiries_adversely_affect_score": { "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.", "nullable": true, "type": "boolean" }, "reason_code_1": { "deprecated": true, "description": "Deprecated. Use `reason_codes` instead. The first reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_2": { "deprecated": true, "description": "Deprecated. Use `reason_codes` instead. The second reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_3": { "deprecated": true, "description": "Deprecated. Use `reason_codes` instead. The third reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_4": { "deprecated": true, "description": "Deprecated. Use `reason_codes` instead. The fourth reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_codes": { "description": "Reason codes associated with the score, in priority order. May contain up to 4 items.", "items": { "type": "string" }, "maxItems": 4, "type": "array" }, "score": { "description": "Numeric value of the base FICO score.", "type": "integer" } }, "required": [ "bureau", "score", "base_fico_score_version" ], "title": "CraPartnerInsightsBaseFicoScore", "type": "object" }, "CraPartnerInsightsBaseFicoScoreVersion": { "description": "The version of the base FICO score model.", "enum": [ "8", "9", "10", "10T" ], "type": "string" }, "CraPartnerInsightsBureau": { "description": "The credit bureau that provided the base FICO score.", "enum": [ "EQUIFAX", "EXPERIAN", "TRANSUNION" ], "type": "string" }, "CraPartnerInsightsCompleteWebhook": { "additionalProperties": true, "description": "Fired when a partner insights report has finished generating and results are available", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`PARTNER_INSIGHTS_COMPLETE`", "type": "string" }, "webhook_type": { "description": "`CRA_INSIGHTS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraPartnerInsightsCompleteWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "PARTNER_INSIGHTS_COMPLETE", "webhook_type": "CRA_INSIGHTS" } } }, "CraPartnerInsightsErrorWebhook": { "additionalProperties": true, "description": "Fired when a partner insights report has failed to generate", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`PARTNER_INSIGHTS_ERROR`", "type": "string" }, "webhook_type": { "description": "`CRA_INSIGHTS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraPartnerInsightsErrorWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "PARTNER_INSIGHTS_ERROR", "webhook_type": "CRA_INSIGHTS" } } }, "CraPartnerInsightsFicoInput": { "description": "Configuration for the FICO products used in the Partner Insights product.", "nullable": true, "properties": { "fico_lender_id": { "description": "ID provided by FICO that uniquely identifies the lender. Required for UltraFICO\u00ae score generation. Sometimes referred to as Lender Org ID.", "type": "string" }, "lender_application_id": { "description": "Client-generated identifier that uniquely identifies the FICO Application across FICO systems.", "type": "string" }, "ultrafico_score_requests": { "description": "A list of UltraFICO\u00ae scoring requests. Each request contains all configuration required to generate an UltraFICO score.", "items": { "$ref": "#/components/schemas/CraPartnerInsightsUltraFicoScoreRequest" }, "type": "array" } }, "required": [ "fico_lender_id", "lender_application_id", "ultrafico_score_requests" ], "title": "CraPartnerInsightsFicoInput", "type": "object" }, "CraPartnerInsightsFicoReportCharacteristics": { "description": "Report characteristics returned by FICO describing the banking data used to generate the UltraFICO\u00ae score.", "nullable": true, "properties": { "avg_daily_balance_over_12_months": { "description": "Average daily balance over the past 12 months.", "format": "double", "nullable": true, "type": "number" }, "avg_daily_balance_over_1_month": { "description": "Average daily balance over the past 1 month.", "format": "double", "nullable": true, "type": "number" }, "avg_daily_balance_over_3_months": { "description": "Average daily balance over the past 3 months.", "format": "double", "nullable": true, "type": "number" }, "avg_daily_balance_over_6_months": { "description": "Average daily balance over the past 6 months.", "format": "double", "nullable": true, "type": "number" }, "days_since_earliest_tx": { "description": "Number of days since the earliest transaction in the report.", "nullable": true, "type": "integer" }, "days_since_most_recent_insufficient_funds_fee_debit_tx": { "description": "Number of days since the most recent insufficient funds fee debit transaction.", "nullable": true, "type": "integer" }, "days_since_most_recent_negative_ending_balance": { "description": "Number of days since the most recent day with a negative ending balance.", "nullable": true, "type": "integer" }, "days_since_most_recent_tx": { "description": "Number of days since the most recent transaction.", "nullable": true, "type": "integer" }, "days_with_tx_over_12_months": { "description": "Number of days with at least one transaction over the past 12 months.", "nullable": true, "type": "integer" }, "days_with_tx_over_1_month": { "description": "Number of days with at least one transaction over the past 1 month.", "nullable": true, "type": "integer" }, "days_with_tx_over_3_months": { "description": "Number of days with at least one transaction over the past 3 months.", "nullable": true, "type": "integer" }, "days_with_tx_over_6_months": { "description": "Number of days with at least one transaction over the past 6 months.", "nullable": true, "type": "integer" }, "num_accounts": { "description": "Total number of accounts included in the report. Limited to checking, savings, and money market accounts.", "nullable": true, "type": "integer" }, "num_checking_accounts": { "description": "Number of checking accounts included in the report.", "nullable": true, "type": "integer" }, "num_money_market_accounts": { "description": "Number of money market accounts included in the report.", "nullable": true, "type": "integer" }, "num_savings_accounts": { "description": "Number of savings accounts included in the report.", "nullable": true, "type": "integer" }, "tot_current_balances": { "description": "Sum of current balances across all accounts in the report.", "format": "double", "nullable": true, "type": "number" }, "tot_number_days_with_negative_balance_over_12_months": { "description": "Total number of days with a negative balance over the past 12 months.", "nullable": true, "type": "integer" }, "tot_number_days_with_negative_balance_over_1_month": { "description": "Total number of days with a negative balance over the past 1 month.", "nullable": true, "type": "integer" }, "tot_number_days_with_negative_balance_over_3_months": { "description": "Total number of days with a negative balance over the past 3 months.", "nullable": true, "type": "integer" }, "tot_number_days_with_negative_balance_over_6_months": { "description": "Total number of days with a negative balance over the past 6 months.", "nullable": true, "type": "integer" } }, "title": "CraPartnerInsightsFicoReportCharacteristics", "type": "object" }, "CraPartnerInsightsFicoResults": { "description": "The calculated UltraFICO\u00ae scores returned as part of the Partner Insights report.", "nullable": true, "properties": { "lender_application_id": { "description": "Client-generated identifier that uniquely identifies the FICO Application across FICO systems.", "type": "string" }, "report_characteristics": { "$ref": "#/components/schemas/CraPartnerInsightsFicoReportCharacteristics" }, "ultrafico_score_results": { "description": "UltraFICO\u00ae scoring results, one per provided UltraFICO scoring request.", "items": { "$ref": "#/components/schemas/CraPartnerInsightsUltraFicoScoreResult" }, "type": "array" } }, "required": [ "lender_application_id", "ultrafico_score_results" ], "title": "CraPartnerInsightsFicoResults", "type": "object" }, "CraPartnerInsightsGetRequest": { "description": "CraPartnerInsightsGetRequest defines the request schema for `/cra/partner_insights/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_tier": { "$ref": "#/components/schemas/CraUserTier" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token" ], "title": "CraPartnerInsightsGetRequest", "type": "object" }, "CraPartnerInsightsGetResponse": { "additionalProperties": true, "description": "CraPartnerInsightsGetResponse defines the response schema for `/cra/partner_insights/get`.", "properties": { "report": { "items": { "$ref": "#/components/schemas/CraPartnerInsights" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CraPartnerInsightsGetResponse", "type": "object" }, "CraPartnerInsightsItem": { "additionalProperties": true, "description": "The details and metadata for an end user's Item.", "properties": { "accounts": { "description": "A list of accounts in the Item.", "items": { "$ref": "#/components/schemas/CraPartnerInsightsItemAccount" }, "type": "array" }, "institution_id": { "description": "The ID for the institution that the user linked.", "type": "string" }, "institution_name": { "description": "The name of the institution the user linked.", "type": "string" }, "item_id": { "description": "The identifier for the Item.", "type": "string" } }, "type": "object" }, "CraPartnerInsightsItemAccount": { "additionalProperties": true, "description": "Account data corresponding to the Item from which Partner Insights were generated.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.\nNote 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, "type": "string" }, "metadata": { "$ref": "#/components/schemas/CraPartnerInsightsItemAccountMetadata" }, "name": { "description": "The name of the account", "type": "string" }, "official_name": { "description": "The official name of the bank account.", "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "subtype": { "$ref": "#/components/schemas/DepositoryAccountSubtype" }, "type": { "$ref": "#/components/schemas/CreditBankIncomeAccountType" } }, "required": [ "mask", "metadata", "name", "official_name", "subtype", "type", "owners" ], "type": "object" }, "CraPartnerInsightsItemAccountMetadata": { "description": "An object containing metadata about the extracted account.", "properties": { "end_date": { "description": "The date of the most recent extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "start_date": { "description": "The date of the earliest extracted transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" } }, "required": [ "start_date", "end_date" ], "title": "CraPartnerInsightsItemAccountMetadata", "type": "object" }, "CraPartnerInsightsPrism": { "additionalProperties": true, "description": "The Prism Data insights for the user.", "nullable": true, "properties": { "cash_score": { "$ref": "#/components/schemas/PrismCashScore" }, "detect": { "$ref": "#/components/schemas/PrismDetect" }, "extend": { "$ref": "#/components/schemas/PrismExtend" }, "first_detect": { "$ref": "#/components/schemas/PrismFirstDetect" }, "insights": { "$ref": "#/components/schemas/PrismInsights" }, "status": { "description": "Details on whether the Prism Data attributes succeeded or failed to be generated.", "type": "string" } }, "required": [ "status" ], "type": "object" }, "CraPartnerInsightsUltraFicoScore": { "description": "The calculated UltraFICO\u00ae score.", "nullable": true, "properties": { "did_inquiries_adversely_affect_score": { "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.", "nullable": true, "type": "boolean" }, "negative_reason_codes": { "description": "Negative reason codes associated with the score (reasons the score moved downward), in priority order. May contain up to 4 items.", "items": { "type": "string" }, "maxItems": 4, "type": "array" }, "positive_reason_code_1": { "deprecated": true, "description": "Deprecated. Use `positive_reason_codes` instead. The first positive reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "positive_reason_code_2": { "deprecated": true, "description": "Deprecated. Use `positive_reason_codes` instead. The second positive reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "positive_reason_code_3": { "deprecated": true, "description": "Deprecated. Use `positive_reason_codes` instead. The third positive reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "positive_reason_code_4": { "deprecated": true, "description": "Deprecated. Use `positive_reason_codes` instead. The fourth positive reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "positive_reason_codes": { "description": "Positive reason codes associated with the score (reasons the score moved upward), in priority order. May contain up to 4 items.", "items": { "type": "string" }, "maxItems": 4, "type": "array" }, "reason_code_1": { "deprecated": true, "description": "Deprecated. Use `negative_reason_codes` instead. The first reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_2": { "deprecated": true, "description": "Deprecated. Use `negative_reason_codes` instead. The second reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_3": { "deprecated": true, "description": "Deprecated. Use `negative_reason_codes` instead. The third reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code_4": { "deprecated": true, "description": "Deprecated. Use `negative_reason_codes` instead. The fourth reason code associated with the score.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "score": { "description": "Numeric value of the UltraFICO\u00ae score.", "type": "integer" }, "ultrafico_score_version": { "$ref": "#/components/schemas/CraPartnerInsightsUltraFicoScoreVersion" } }, "required": [ "ultrafico_score_version", "score" ], "title": "CraPartnerInsightsUltraFicoScore", "type": "object" }, "CraPartnerInsightsUltraFicoScoreRequest": { "description": "Configuration required to generate a single UltraFICO\u00ae score.", "properties": { "base_fico_score": { "$ref": "#/components/schemas/CraPartnerInsightsBaseFicoScore" }, "fico_scoring_request_id": { "description": "FICO identifier for a particular scoring request. Should only be provided by FICO as part of the FICO-led flow.", "type": "string", "x-hidden-from-docs": true }, "request_correlation_id": { "description": "Client-generated identifier that can be used to correlate scoring requests with their scoring results.", "type": "string" }, "ultrafico_score_version": { "$ref": "#/components/schemas/CraPartnerInsightsUltraFicoScoreVersion" } }, "required": [ "ultrafico_score_version", "base_fico_score" ], "title": "CraPartnerInsightsUltraFicoScoreRequest", "type": "object" }, "CraPartnerInsightsUltraFicoScoreResult": { "description": "The result of a single UltraFICO\u00ae score generation request.", "properties": { "error_reason": { "description": "Human-readable description of why the UltraFICO\u00ae score could not be computed.", "type": "string" }, "fico_scoring_request_id": { "description": "FICO-provided identifier that uniquely identifies this score generation request.", "type": "string" }, "request_correlation_id": { "description": "Client-generated identifier that can be used to correlate scoring requests with their scoring results.", "type": "string" }, "ultrafico_score": { "$ref": "#/components/schemas/CraPartnerInsightsUltraFicoScore" } }, "title": "CraPartnerInsightsUltraFicoScoreResult", "type": "object" }, "CraPartnerInsightsUltraFicoScoreVersion": { "description": "The version of the UltraFICO\u00ae score.", "enum": [ "1.0" ], "type": "string" }, "CraPredictionInterval": { "additionalProperties": true, "description": "The object containing prediction interval data.", "properties": { "lower_bound": { "description": "The lower bound of the predicted attribute for the given probability.", "nullable": true, "type": "number" }, "probability": { "description": "The probability of the actual value of the attribute falling within the upper and lower bound.\nThis is a percentage represented as a value between 0 and 1.", "nullable": true, "type": "number" }, "upper_bound": { "description": "The upper bound of the predicted attribute for the given probability.", "nullable": true, "type": "number" } }, "type": "object", "x-hidden-from-docs": true }, "CraProjectedModeledIncome": { "additionalProperties": true, "description": "Forward-looking modeled estimate of income based on recent income transactions and trends in active streams.", "nullable": true, "properties": { "annual": { "$ref": "#/components/schemas/CraAnnualIncomeValues" }, "monthly": { "$ref": "#/components/schemas/CraMonthlyIncomeValues" } }, "required": [ "monthly", "annual" ], "title": "CraProjectedModeledIncome", "type": "object" }, "CraUpgradeFailedWebhook": { "additionalProperties": true, "description": "Fired when a Check Report upgrade attempt has failed", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_ids": { "description": "An array of `item_id`s for items that failed to be upgraded by a Check Report upgrade attempt.", "items": { "$ref": "#/components/schemas/ItemId" }, "type": "array" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`UPGRADE_FAILED`", "type": "string" }, "webhook_type": { "description": "`CHECK_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "item_ids", "environment" ], "title": "CraUpgradeFailedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_ids": [ "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6" ], "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "UPGRADE_FAILED", "webhook_type": "CHECK_REPORT" } }, "x-hidden-from-docs": true }, "CraUserCheckReportFailedWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_ids": { "description": "A list of `item_ids` included in the Check Report. Access to this field is in closed beta.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "user_id": { "description": "The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`.", "type": "string" }, "webhook_code": { "description": "`USER_CHECK_REPORT_FAILED`", "type": "string" }, "webhook_type": { "description": "`CHECK_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraUserCheckReportFailedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "usr_8c3ZbDBYjaqUXZ", "webhook_code": "USER_CHECK_REPORT_FAILED", "webhook_type": "CHECK_REPORT" } } }, "CraUserCheckReportReadyWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "failed_products": { "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" }, "type": "array", "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": { "description": "A list of `item_ids` included in the Check Report. Access to this field is in closed beta.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "successful_products": { "description": "Specifies a list of products that have successfully been generated for the report.", "items": { "$ref": "#/components/schemas/Products" }, "type": "array", "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" ] }, "user_id": { "description": "The `user_id` associated with the user whose data is being requested. This is received by calling `/user/create`.", "type": "string" }, "webhook_code": { "description": "`USER_CHECK_REPORT_READY`", "type": "string" }, "webhook_type": { "description": "`CHECK_REPORT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "CraUserCheckReportReadyWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "successful_products": [ "cra_base_report" ], "user_id": "usr_8c3ZbDBYjaqUXZ", "webhook_code": "USER_CHECK_REPORT_READY", "webhook_type": "CHECK_REPORT" } } }, "CraUserTier": { "description": "The tier of the user.", "enum": [ "free", "paid", null ], "nullable": true, "type": "string", "x-hidden-from-docs": true }, "CraVerificationIncomeAccount": { "additionalProperties": true, "description": "Account information within the Home Lending Income Report.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.\nNote 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, "type": "string" }, "metadata": { "$ref": "#/components/schemas/CraBankIncomeAccountMetadata" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself.", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution.", "nullable": true, "type": "string" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "required": [ "account_id", "mask", "metadata", "name", "official_name", "subtype", "type" ], "title": "CraVerificationIncomeAccount", "type": "object" }, "CraVerificationIncomeCategory": { "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.\n\nSee the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv) for a full list of income categories.", "properties": { "primary": { "description": "A high level category that communicates the broad category of the stream.", "type": "string" }, "secondary": { "description": "A granular category conveying the stream's intent.", "type": "string" } }, "required": [ "primary", "secondary" ], "title": "CraVerificationIncomeCategory", "type": "object" }, "CraVerificationIncomeItem": { "additionalProperties": true, "description": "The details and metadata for an end user's Item within the Home Lending Income Report.", "properties": { "accounts": { "description": "The Item's accounts that have bank income data.", "items": { "$ref": "#/components/schemas/CraVerificationIncomeAccount" }, "type": "array" }, "institution_id": { "description": "The unique identifier of the institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The name of the institution associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "last_updated_time": { "description": "The time when this Item's data was last retrieved from the financial institution.", "format": "date-time", "type": "string" } }, "required": [ "item_id", "accounts", "last_updated_time", "institution_id", "institution_name" ], "title": "CraVerificationIncomeItem", "type": "object" }, "CraVerificationIncomeMetrics": { "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" ], "title": "CraVerificationIncomeMetrics", "type": "object" }, "CraVerificationIncomeNextPayment": { "additionalProperties": true, "description": "Metadata of the income stream's next payment.", "nullable": true, "properties": { "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).", "format": "date", "type": "string" } }, "required": [ "date" ], "title": "CraVerificationIncomeNextPayment", "type": "object" }, "CraVerificationIncomePayFrequency": { "description": "The income pay frequency.\n`WEEKLY`: Weekly pay frequency.\n`BIWEEKLY`: Biweekly pay frequency.\n`SEMI_MONTHLY`: Semi-monthly pay frequency.\n`MONTHLY`: Monthly pay frequency.\n`DAILY`: Daily pay frequency.\n`UNKNOWN`: Pay frequency is unknown.", "enum": [ "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY", "DAILY", "UNKNOWN" ], "title": "CraVerificationIncomePayFrequency", "type": "string" }, "CraVerificationIncomeProvider": { "additionalProperties": true, "description": "The object containing data about the income provider.", "nullable": true, "properties": { "is_normalized": { "description": "Indicates whether the income provider name is normalized by comparing it against a canonical set of known providers.", "type": "boolean" }, "name": { "description": "The name of the income provider.", "type": "string" } }, "required": [ "name", "is_normalized" ], "title": "CraVerificationIncomeProvider", "type": "object" }, "CraVerificationIncomeReport": { "additionalProperties": true, "description": "An object representing an Income Report within the Home Lending Report.", "nullable": true, "properties": { "days_requested": { "description": "The number of days requested by the customer for the Home Lending Income Report.", "type": "integer" }, "generated_time": { "description": "The time when the Home Lending Income Report was generated.", "format": "date-time", "type": "string" }, "income_streams": { "description": "The list of income streams for this user.", "items": { "$ref": "#/components/schemas/CraVerificationIncomeStream" }, "type": "array" }, "items": { "description": "The list of Items in the report along with the associated metadata about the Item.", "items": { "$ref": "#/components/schemas/CraVerificationIncomeItem" }, "type": "array" }, "user_summary": { "$ref": "#/components/schemas/CraVerificationIncomeUserSummary" } }, "required": [ "generated_time", "days_requested", "user_summary", "income_streams", "items" ], "title": "CraVerificationIncomeReport", "type": "object" }, "CraVerificationIncomeStatus": { "description": "The status of the income source.\n`ACTIVE`: The income source is active.\n`INACTIVE`: The income source is inactive.\n`UNKNOWN`: The income source status is unknown.", "enum": [ "ACTIVE", "INACTIVE", "UNKNOWN" ], "title": "CraVerificationIncomeStatus", "type": "string" }, "CraVerificationIncomeStream": { "additionalProperties": true, "description": "An income stream detected for the user.", "properties": { "description": { "description": "The most common name or original description for the underlying income transactions.", "type": "string" }, "end_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).", "format": "date", "type": "string" }, "income_metrics": { "$ref": "#/components/schemas/CraVerificationIncomeMetrics" }, "income_stream_id": { "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.", "type": "string" }, "insights": { "$ref": "#/components/schemas/CraVerificationIncomeStreamInsights" }, "start_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).", "format": "date", "type": "string" }, "transactions": { "description": "The transactions data for the income stream ordered by ascending date.", "items": { "$ref": "#/components/schemas/CraVerificationIncomeTransaction" }, "type": "array" } }, "required": [ "income_stream_id", "start_date", "end_date", "description", "insights", "income_metrics", "transactions" ], "title": "CraVerificationIncomeStream", "type": "object" }, "CraVerificationIncomeStreamInsights": { "additionalProperties": true, "description": "Modeled insights for a given income stream.", "properties": { "income_category": { "$ref": "#/components/schemas/CraVerificationIncomeCategory" }, "income_provider": { "$ref": "#/components/schemas/CraVerificationIncomeProvider" }, "next_payment": { "$ref": "#/components/schemas/CraVerificationIncomeNextPayment" }, "pay_frequency": { "$ref": "#/components/schemas/CraVerificationIncomePayFrequency" }, "status": { "$ref": "#/components/schemas/CraVerificationIncomeStatus" } }, "required": [ "income_category", "pay_frequency", "income_provider", "status", "next_payment" ], "title": "CraVerificationIncomeStreamInsights", "type": "object" }, "CraVerificationIncomeTransaction": { "additionalProperties": true, "description": "The transaction data for an income stream.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "amount": { "description": "The settled value of the transaction, denominated in the transaction's currency as stated in `iso_currency_code` or `unofficial_currency_code`.\nPositive values when money moves out of the account; negative values when money moves in.\nFor example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.", "format": "double", "type": "number" }, "date": { "description": "For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted.\nBoth dates are returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "type": "string" }, "outlier": { "$ref": "#/components/schemas/CraVerificationIncomeTransactionOutlier" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "transaction_id", "item_id", "account_id", "amount", "date", "original_description", "iso_currency_code", "unofficial_currency_code", "outlier" ], "title": "CraVerificationIncomeTransaction", "type": "object" }, "CraVerificationIncomeTransactionOutlier": { "additionalProperties": true, "description": "Metadata on whether this income transaction is an outlier.", "properties": { "amount": { "description": "The amount that the transaction differs from the stream average transaction amount.", "format": "double", "nullable": true, "type": "number" }, "is_outlier": { "description": "Indicates whether an income transaction amount is unusually high compared to the amounts for that stream.", "type": "boolean" } }, "required": [ "is_outlier" ], "title": "CraVerificationIncomeTransactionOutlier", "type": "object" }, "CraVerificationIncomeUserSummary": { "additionalProperties": true, "description": "Aggregated summary of all income streams for this user.", "nullable": true, "properties": { "income_metrics": { "description": "List of a user's aggregated income metrics for each currency.", "items": { "$ref": "#/components/schemas/CraVerificationIncomeMetrics" }, "type": "array" } }, "required": [ "income_metrics" ], "title": "CraVerificationIncomeUserSummary", "type": "object" }, "CraVerificationIncomeValues": { "additionalProperties": true, "description": "Modeled income values for a given time period.", "properties": { "gross_income": { "description": "Gross Income modeled from trends of observed transactions.", "format": "double", "type": "number" }, "net_income": { "description": "Net Income estimated from observed transactions.", "format": "double", "type": "number" } }, "required": [ "gross_income", "net_income" ], "title": "CraVerificationIncomeValues", "type": "object" }, "CraVerificationModeledIncome": { "additionalProperties": true, "description": "Modeled estimate of current income based on recently observed income transactions.", "nullable": true, "properties": { "annual": { "$ref": "#/components/schemas/CraVerificationIncomeValues" }, "monthly": { "$ref": "#/components/schemas/CraVerificationIncomeValues" } }, "required": [ "monthly", "annual" ], "title": "CraVerificationModeledIncome", "type": "object" }, "CraVerificationReport": { "additionalProperties": true, "description": "Contains data for the CRA Home Lending Report.", "properties": { "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "employment_refresh": { "$ref": "#/components/schemas/CraEmploymentRefreshReport" }, "gse_reference_id": { "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.", "type": "string" }, "income": { "$ref": "#/components/schemas/CraVerificationIncomeReport" }, "report_id": { "description": "The unique identifier associated with the Home Lending Report object. This ID will be the same as the Base Report ID.", "type": "string" }, "voa": { "$ref": "#/components/schemas/CraVoaReport" } }, "required": [ "report_id" ], "title": "CraVerificationReport", "type": "object" }, "CraVoaReport": { "additionalProperties": true, "description": "An object representing a VOA report.", "nullable": true, "properties": { "attributes": { "$ref": "#/components/schemas/CraVoaReportAttributes" }, "days_requested": { "description": "The number of days of transaction history that the VOA report covers.", "type": "number" }, "generated_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\").", "format": "date-time", "type": "string" }, "items": { "description": "Data returned by Plaid about each of the Items included in the Base Report.", "items": { "$ref": "#/components/schemas/CraVoaReportItem" }, "type": "array" } }, "required": [ "generated_time", "days_requested", "items", "attributes" ], "title": "CraVoaReport", "type": "object" }, "CraVoaReportAccount": { "additionalProperties": true, "description": "VOA Report information about an account.", "properties": { "account_id": { "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.\n\nIf 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.\n\nLike all Plaid identifiers, the `account_id` is case sensitive.", "type": "string" }, "balances": { "$ref": "#/components/schemas/CraVoaReportAccountBalances" }, "consumer_disputes": { "description": "The information about previously submitted valid dispute statements by the consumer", "items": { "$ref": "#/components/schemas/ConsumerDispute" }, "type": "array" }, "days_available": { "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.", "type": "number" }, "investments": { "$ref": "#/components/schemas/BaseReportInvestments" }, "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.", "nullable": true, "type": "string" }, "name": { "description": "The name of the account, either assigned by the user or by the financial institution itself.", "type": "string" }, "official_name": { "description": "The official name of the account as given by the financial institution.", "nullable": true, "type": "string" }, "owners": { "description": "Data returned by the financial institution about the account owner or owners.", "items": { "$ref": "#/components/schemas/Owner" }, "type": "array" }, "ownership_type": { "$ref": "#/components/schemas/OwnershipType" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "transactions_insights": { "$ref": "#/components/schemas/CraVoaReportTransactionsInsights" }, "type": { "$ref": "#/components/schemas/AccountType" } }, "required": [ "account_id", "balances", "consumer_disputes", "mask", "name", "official_name", "type", "subtype", "days_available", "transactions_insights", "owners", "ownership_type" ], "title": "CraVoaReportAccount", "type": "object" }, "CraVoaReportAccountBalances": { "additionalProperties": true, "description": "VOA Report information about an account's balances.", "properties": { "available": { "description": "The amount of funds available to be withdrawn from the account, as determined by the financial institution.\n\nFor `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nAvailable 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`.\n\nIf `current` is `null` this field is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "average_balance_30_days": { "description": "The average balance in the account over the last 30 days. Calculated using the derived historical balances.", "format": "double", "nullable": true, "type": "number" }, "average_balance_60_days": { "description": "The average balance in the account over the last 60 days. Calculated using the derived historical balances.", "format": "double", "nullable": true, "type": "number" }, "current": { "description": "The total amount of funds in or owed by the account.\n\nFor `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.\n\nFor `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.\n\nFor `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.\n\nNote 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`.\n\nWhen returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`.", "format": "double", "nullable": true, "type": "number" }, "historical_balances": { "description": "Calculated data about the historical balances on the account.\n\nAvailable for `credit` and `depository` type accounts.", "items": { "$ref": "#/components/schemas/CraVoaReportAccountHistoricalBalance" }, "type": "array" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "nsf_overdraft_transactions_count": { "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).", "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "available", "current", "iso_currency_code", "unofficial_currency_code", "historical_balances", "average_balance_30_days", "average_balance_60_days", "nsf_overdraft_transactions_count" ], "title": "CraVoaReportAccountBalances", "type": "object" }, "CraVoaReportAccountHistoricalBalance": { "additionalProperties": true, "description": "An object representing a balance held by an account in the past.", "properties": { "current": { "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.", "format": "double", "type": "number" }, "date": { "description": "The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "required": [ "current", "date", "iso_currency_code", "unofficial_currency_code" ], "title": "CraVoaReportAccountHistoricalBalance", "type": "object" }, "CraVoaReportAttributes": { "additionalProperties": true, "description": "Attributes for the VOA report.", "properties": { "total_inflow_amount": { "$ref": "#/components/schemas/TotalReportInflowAmount" }, "total_outflow_amount": { "$ref": "#/components/schemas/TotalReportOutflowAmount" } }, "required": [ "total_inflow_amount", "total_outflow_amount" ], "title": "CraVoaReportAttributes", "type": "object" }, "CraVoaReportItem": { "additionalProperties": true, "description": "A representation of an Item within a VOA report.", "properties": { "accounts": { "description": "Data about each of the accounts open on the Item.", "items": { "$ref": "#/components/schemas/CraVoaReportAccount" }, "type": "array" }, "institution_id": { "description": "The id of the financial institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The full financial institution name associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "last_update_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.", "format": "date-time", "type": "string" } }, "required": [ "accounts", "institution_name", "institution_id", "item_id", "last_update_time" ], "title": "CraVoaReportItem", "type": "object" }, "CraVoaReportTransactionsInsights": { "additionalProperties": true, "description": "Transaction data associated with the account.", "properties": { "all_transactions": { "description": "Transaction history associated with the account.", "items": { "$ref": "#/components/schemas/BaseReportTransaction" }, "type": "array" }, "end_date": { "description": "The latest timeframe provided by the FI, in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "start_date": { "description": "The earliest timeframe provided by the FI, in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" } }, "required": [ "all_transactions", "end_date", "start_date" ], "title": "CraVoaReportTransactionsInsights", "type": "object" }, "Credit1099": { "additionalProperties": true, "description": "An object representing an end user's 1099 tax form", "properties": { "april_amount": { "description": "Amount reported for April.", "format": "double", "nullable": true, "type": "number" }, "august_amount": { "description": "Amount reported for August.", "format": "double", "nullable": true, "type": "number" }, "card_not_present_transaction": { "description": "Amount in card not present transactions.", "format": "double", "nullable": true, "type": "number" }, "crop_insurance_proceeds": { "description": "Amount of crop insurance proceeds.", "format": "double", "nullable": true, "type": "number" }, "december_amount": { "description": "Amount reported for December.", "format": "double", "nullable": true, "type": "number" }, "document_id": { "description": "An identifier of the document referenced by the document metadata.", "nullable": true, "type": "string" }, "document_metadata": { "$ref": "#/components/schemas/CreditDocumentMetadata" }, "excess_golden_parachute_payments": { "description": "Amount of golden parachute payments made by payer.", "format": "double", "nullable": true, "type": "number" }, "february_amount": { "description": "Amount reported for February.", "format": "double", "nullable": true, "type": "number" }, "federal_income_tax_withheld": { "description": "Amount of federal income tax withheld from payer.", "format": "double", "nullable": true, "type": "number" }, "filer": { "$ref": "#/components/schemas/Credit1099Filer" }, "fishing_boat_proceeds": { "description": "Amount of fishing boat proceeds from payer.", "format": "double", "nullable": true, "type": "number" }, "form_1099_type": { "$ref": "#/components/schemas/Form1099Type" }, "gross_amount": { "description": "Gross amount reported.", "format": "double", "nullable": true, "type": "number" }, "gross_proceeds_paid_to_an_attorney": { "description": "Amount of gross proceeds paid to an attorney by payer.", "format": "double", "nullable": true, "type": "number" }, "january_amount": { "description": "Amount reported for January.", "format": "double", "nullable": true, "type": "number" }, "july_amount": { "description": "Amount reported for July.", "format": "double", "nullable": true, "type": "number" }, "june_amount": { "description": "Amount reported for June.", "format": "double", "nullable": true, "type": "number" }, "march_amount": { "description": "Amount reported for March.", "format": "double", "nullable": true, "type": "number" }, "may_amount": { "description": "Amount reported for May.", "format": "double", "nullable": true, "type": "number" }, "medical_and_healthcare_payments": { "description": "Amount of medical and healthcare payments from payer.", "format": "double", "nullable": true, "type": "number" }, "merchant_category_code": { "description": "Merchant category of filer.", "nullable": true, "type": "string" }, "nonemployee_compensation": { "description": "Amount of nonemployee compensation from payer.", "format": "double", "nullable": true, "type": "number" }, "november_amount": { "description": "Amount reported for November.", "format": "double", "nullable": true, "type": "number" }, "number_of_payment_transactions": { "description": "Number of payment transactions made.", "nullable": true, "type": "string" }, "october_amount": { "description": "Amount reported for October.", "format": "double", "nullable": true, "type": "number" }, "other_income": { "description": "Amount in other income by payer.", "format": "double", "nullable": true, "type": "number" }, "payer": { "$ref": "#/components/schemas/Credit1099Payer" }, "payer_made_direct_sales_of_5000_or_more_of_consumer_products_to_buyer": { "description": "Whether or not payer made direct sales over $5000 of consumer products.", "nullable": true, "type": "string" }, "payer_state_number": { "description": "Primary state ID.", "nullable": true, "type": "string" }, "payer_state_number_lower": { "description": "Secondary state ID.", "nullable": true, "type": "string" }, "primary_state": { "description": "Primary state of business.", "nullable": true, "type": "string" }, "primary_state_id": { "description": "Primary state ID.", "nullable": true, "type": "string" }, "primary_state_income_tax": { "description": "State income tax reported for primary state.", "format": "double", "nullable": true, "type": "number" }, "pse_name": { "description": "Name of the PSE (Payment Settlement Entity).", "nullable": true, "type": "string" }, "pse_telephone_number": { "description": "Formatted (XXX) XXX-XXXX. Phone number of the PSE (Payment Settlement Entity).", "nullable": true, "type": "string" }, "recipient": { "$ref": "#/components/schemas/Credit1099Recipient" }, "rents": { "description": "Amount in rent by payer.", "format": "double", "nullable": true, "type": "number" }, "royalties": { "description": "Amount in royalties by payer.", "format": "double", "nullable": true, "type": "number" }, "secondary_state": { "description": "Secondary state of business.", "nullable": true, "type": "string" }, "secondary_state_id": { "description": "Secondary state ID.", "nullable": true, "type": "string" }, "secondary_state_income_tax": { "description": "State income tax reported for secondary state.", "format": "double", "nullable": true, "type": "number" }, "section_409a_deferrals": { "description": "Amount of 409A deferrals earned by payer.", "format": "double", "nullable": true, "type": "number" }, "section_409a_income": { "description": "Amount of 409A income earned by payer.", "format": "double", "nullable": true, "type": "number" }, "september_amount": { "description": "Amount reported for September.", "format": "double", "nullable": true, "type": "number" }, "state_income": { "description": "State income reported for primary state.", "format": "double", "nullable": true, "type": "number" }, "state_income_lower": { "description": "State income reported for secondary state.", "format": "double", "nullable": true, "type": "number" }, "state_tax_withheld": { "description": "Amount of state tax withheld of payer for primary state.", "format": "double", "nullable": true, "type": "number" }, "state_tax_withheld_lower": { "description": "Amount of state tax withheld of payer for secondary state.", "format": "double", "nullable": true, "type": "number" }, "substitute_payments_in_lieu_of_dividends_or_interest": { "description": "Amount of substitute payments made by payer.", "format": "double", "nullable": true, "type": "number" }, "tax_year": { "description": "Tax year of the tax form.", "nullable": true, "type": "string" }, "transactions_reported": { "description": "One of the values will be provided Payment card Third party network", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "Payment card", "Third party network" ] } }, "required": [ "document_id" ], "title": "Credit1099", "type": "object" }, "Credit1099Filer": { "additionalProperties": true, "description": "An object representing a filer used by 1099-K tax documents.", "properties": { "address": { "$ref": "#/components/schemas/CreditPayStubAddress" }, "name": { "description": "Name of filer.", "nullable": true, "type": "string" }, "tin": { "description": "Tax identification number of filer.", "nullable": true, "type": "string" }, "type": { "description": "One of the following values will be provided: Payment Settlement Entity (PSE), Electronic Payment Facilitator (EPF), Other Third Party", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "Payment Settlement Entity (PSE)", "Electronic Payment Facilitator (EPF)", "Other Third Party" ] } }, "title": "Credit1099Filer", "type": "object" }, "Credit1099Payer": { "additionalProperties": true, "description": "An object representing a payer used by 1099-MISC tax documents.", "properties": { "address": { "$ref": "#/components/schemas/CreditPayStubAddress" }, "name": { "description": "Name of payer.", "nullable": true, "type": "string" }, "telephone_number": { "description": "Telephone number of payer.", "nullable": true, "type": "string" }, "tin": { "description": "Tax identification number of payer.", "nullable": true, "type": "string" } }, "title": "Credit1099Payer", "type": "object" }, "Credit1099Recipient": { "additionalProperties": true, "description": "An object representing a recipient used in both 1099-K and 1099-MISC tax documents.", "properties": { "account_number": { "description": "Account number of recipient.", "nullable": true, "type": "string" }, "address": { "$ref": "#/components/schemas/CreditPayStubAddress" }, "facta_filing_requirement": { "description": "Checked if FATCA is a filing requirement.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "CHECKED", "NOT CHECKED" ] }, "name": { "description": "Name of recipient.", "nullable": true, "type": "string" }, "second_tin_exists": { "description": "Checked if 2nd TIN exists.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "CHECKED", "NOT CHECKED" ] }, "tin": { "description": "Tax identification number of recipient.", "nullable": true, "type": "string" } }, "title": "Credit1099Recipient", "type": "object" }, "CreditACHClass": { "description": "Specifies the use case of the transfer. Required for transfers on an ACH network.\n\n`\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts\n\n`\"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.\n\n`\"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.", "enum": [ "ccd", "ppd", "web" ], "title": "CreditACHClass", "type": "string" }, "CreditAccount": { "description": "A credit card type account.", "properties": { "credit card": { "description": "Bank-issued credit card", "type": "string" }, "paypal": { "description": "PayPal-issued credit card", "type": "string" } }, "required": [ "credit card", "paypal" ], "title": "CreditAccount", "type": "string" }, "CreditAccountSubtype": { "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" ], "type": "string" }, "CreditAccountSubtypes": { "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" }, "title": "CreditAccountSubtypes", "type": "array" }, "CreditAmountWithCurrency": { "additionalProperties": true, "description": "This contains an amount, denominated in the currency specified by either `iso_currency_code` or `unofficial_currency_code`", "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "CreditAuditCopyTokenCreateRequest": { "description": "CreditAuditCopyTokenCreateRequest defines the request schema for `/credit/audit_copy_token/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "report_tokens": { "description": "List of report tokens; can include at most one VOA/standard Asset Report tokens and one VOE Asset Report Token.", "items": { "description": "The report token. It can be an VOA Asset Report token or a VOE Asset Report token.", "nullable": false, "type": "string" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "report_tokens" ], "type": "object" }, "CreditAuditCopyTokenCreateResponse": { "additionalProperties": true, "description": "CreditAuditCopyTokenCreateResponse defines the response schema for `/credit/audit_copy_token/create`", "properties": { "audit_copy_token": { "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.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "audit_copy_token", "request_id" ], "type": "object" }, "CreditAuditCopyTokenRemoveRequest": { "description": "CreditAuditCopyTokenRemoveRequest defines the request schema for `/credit/audit_copy_token/remove`", "properties": { "audit_copy_token": { "description": "The `audit_copy_token` granting access to the Audit Copy you would like to revoke.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "type": "object" }, "CreditAuditCopyTokenRemoveResponse": { "additionalProperties": true, "description": "CreditAuditCopyTokenRemoveResponse defines the response schema for `/credit/audit_copy_token/remove`", "properties": { "removed": { "description": "`true` if the Audit Copy was successfully removed.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "removed", "request_id" ], "type": "object" }, "CreditAuditCopyTokenUpdateRequest": { "description": "CreditAuditCopyTokenUpdateRequest defines the request schema for `/credit/audit_copy_token/update`", "properties": { "audit_copy_token": { "description": "The `audit_copy_token` you would like to update.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "report_tokens": { "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" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token", "report_tokens" ], "type": "object" }, "CreditAuditCopyTokenUpdateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/credit/audit_copy_token/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "updated": { "description": "`true` if the Audit Copy Token was successfully updated.", "type": "boolean" } }, "required": [ "request_id", "updated" ], "type": "object" }, "CreditBankEmployer": { "description": "Object containing employer data.", "properties": { "name": { "description": "Name of the employer.", "type": "string" } }, "required": [ "name" ], "type": "object" }, "CreditBankEmployment": { "description": "Detailed information for the bank employment.", "properties": { "account_id": { "description": "Plaid's unique identifier for the account.", "type": "string" }, "bank_employment_id": { "description": "A unique identifier for the bank employment.", "type": "string" }, "earliest_deposit_date": { "description": "The date of the earliest deposit from this employer from within the period of the days requested.", "format": "date", "type": "string" }, "employer": { "$ref": "#/components/schemas/CreditBankEmployer" }, "latest_deposit_date": { "description": "The date of the most recent deposit from this employer.", "format": "date", "type": "string" } }, "required": [ "bank_employment_id", "account_id", "employer", "latest_deposit_date", "earliest_deposit_date" ], "type": "object" }, "CreditBankEmploymentGetRequest": { "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" ], "title": "CreditBankEmploymentGetRequest", "type": "object" }, "CreditBankEmploymentGetResponse": { "additionalProperties": true, "description": "CreditBankEmploymentGetResponse defines the response schema for `/beta/credit/v1/bank_employment/get`.", "properties": { "bank_employment_reports": { "description": "Bank Employment data. Each entry in the array will be a distinct bank employment report.", "items": { "$ref": "#/components/schemas/CreditBankEmploymentReport" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "bank_employment_reports" ], "title": "CreditBankEmploymentGetResponse", "type": "object" }, "CreditBankEmploymentItem": { "description": "The details and metadata for an end user's Item.", "properties": { "bank_employment_accounts": { "description": "The Item's accounts that have Bank Employment data.", "items": { "$ref": "#/components/schemas/CreditBankIncomeAccount" }, "type": "array" }, "bank_employments": { "description": "The bank employment information for this Item. Each entry in the array is a different employer found.", "items": { "$ref": "#/components/schemas/CreditBankEmployment" }, "type": "array" }, "institution_id": { "description": "The unique identifier of the institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The name of the institution associated with the Item.", "type": "string" }, "item_id": { "description": "The unique identifier for the Item.", "type": "string" }, "last_updated_time": { "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", "type": "string" } }, "required": [ "item_id", "last_updated_time", "institution_id", "institution_name", "bank_employments", "bank_employment_accounts" ], "type": "object" }, "CreditBankEmploymentReport": { "description": "The report of the Bank Employment data for an end user.", "properties": { "bank_employment_report_id": { "description": "The unique identifier associated with the Bank Employment Report.", "type": "string" }, "days_requested": { "description": "The number of days requested by the customer for the Bank Employment Report.", "type": "integer" }, "generated_time": { "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", "type": "string" }, "items": { "description": "The list of Items in the report along with the associated metadata about the Item.", "items": { "$ref": "#/components/schemas/CreditBankEmploymentItem" }, "type": "array" }, "warnings": { "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" }, "type": "array" } }, "required": [ "bank_employment_report_id", "generated_time", "days_requested", "items", "warnings" ], "type": "object" }, "CreditBankEmploymentWarning": { "description": "The warning associated with the data that was unavailable for the Bank Employment Report.", "properties": { "cause": { "$ref": "#/components/schemas/CreditBankIncomeCause" }, "warning_code": { "$ref": "#/components/schemas/CreditBankIncomeWarningCode" }, "warning_type": { "$ref": "#/components/schemas/CreditBankEmploymentWarningType" } }, "required": [ "warning_type", "warning_code", "cause" ], "type": "object" }, "CreditBankEmploymentWarningType": { "description": "The warning type which will always be `BANK_EMPLOYMENT_WARNING`.", "enum": [ "BANK_EMPLOYMENT_WARNING" ], "type": "string" }, "CreditBankIncome": { "description": "The report of the Bank Income data for an end user.", "properties": { "bank_income_id": { "description": "The unique identifier associated with the Bank Income Report.", "type": "string" }, "bank_income_summary": { "$ref": "#/components/schemas/CreditBankIncomeSummary" }, "days_requested": { "description": "The number of days requested by the customer for the report.", "type": "integer" }, "generated_time": { "description": "The time when the report was generated.", "format": "date-time", "type": "string" }, "items": { "description": "The list of Items in the report along with the associated metadata about the Item.", "items": { "$ref": "#/components/schemas/CreditBankIncomeItem" }, "type": "array" }, "warnings": { "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" }, "type": "array" } }, "type": "object" }, "CreditBankIncomeAccount": { "description": "The Item's bank accounts that have the selected data.", "properties": { "account_id": { "description": "Plaid's unique identifier for the account.", "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.\nNote 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, "type": "string" }, "name": { "description": "The name of the bank account.", "type": "string" }, "official_name": { "description": "The official name of the bank account.", "nullable": true, "type": "string" }, "owners": { "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" }, "type": "array" }, "subtype": { "$ref": "#/components/schemas/DepositoryAccountSubtype" }, "type": { "$ref": "#/components/schemas/CreditBankIncomeAccountType" } }, "required": [ "account_id", "mask", "name", "official_name", "subtype", "type", "owners" ], "type": "object" }, "CreditBankIncomeAccountType": { "description": "The account type. This will always be `depository`.", "enum": [ "depository" ], "type": "string" }, "CreditBankIncomeCategory": { "description": "The income category.\n`BANK_INTEREST`: Interest earned from a bank account.\n`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.\n`CASH`: Deprecated and used only for existing legacy implementations. Has been replaced by `CASH_DEPOSIT` and `TRANSFER_FROM_APPLICATION`.\n`CASH_DEPOSIT`: A cash or check deposit.\n`CHILD_SUPPORT`: Child support payments received.\n`GIG_ECONOMY`: Income earned as a gig economy worker, e.g. driving for Uber, Lyft, Postmates, DoorDash, etc.\n`LONG_TERM_DISABILITY`: Disability payments, including Social Security disability benefits.\n`OTHER`: Income that could not be categorized as any other income category.\n`MILITARY`: Veterans benefits. Income earned as salary for serving in the military (e.g. through DFAS) will be classified as `SALARY` rather than `MILITARY`.\n`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.\n`RETIREMENT`: Payments from private retirement systems, pensions, and government retirement programs, including Social Security retirement benefits.\n`SALARY`: Payment from an employer to an earner or other form of permanent employment.\n`TAX_REFUND`: A tax refund.\n`TRANSFER_FROM_APPLICATION`: Deposits from a money transfer app, such as Venmo, Cash App, or Zelle.\n`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" ], "type": "string" }, "CreditBankIncomeCause": { "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": { "display_message": { "description": "A user-friendly representation of the error code. null if the error is not related to user action.\nThis may change over time and is not safe for programmatic use.", "type": "string" }, "error_code": { "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.", "type": "string" }, "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" }, "error_type": { "$ref": "#/components/schemas/CreditBankIncomeErrorType" }, "item_id": { "description": "The `item_id` of the Item associated with this warning.", "type": "string" } }, "required": [ "error_type", "error_code", "error_message", "display_message", "item_id" ], "type": "object" }, "CreditBankIncomeErrorType": { "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" ], "type": "string" }, "CreditBankIncomeGetRequest": { "description": "CreditBankIncomeGetRequest defines the request schema for `/credit/bank_income/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CreditBankIncomeGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CreditBankIncomeGetRequest", "type": "object" }, "CreditBankIncomeGetRequestOptions": { "description": "An optional object for `/credit/bank_income/get` request options.", "properties": { "count": { "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.", "type": "integer" } }, "type": "object" }, "CreditBankIncomeGetResponse": { "additionalProperties": true, "description": "CreditBankIncomeGetResponse defines the response schema for `/credit/bank_income/get`", "properties": { "bank_income": { "items": { "$ref": "#/components/schemas/CreditBankIncome" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CreditBankIncomeGetResponse", "type": "object" }, "CreditBankIncomeHistoricalSummary": { "additionalProperties": true, "description": "The end user's monthly summary for the income source(s).", "properties": { "end_date": { "description": "The end date of the period included in this monthly summary.\nThis 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.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "deprecated": true, "description": "The ISO 4217 currency code of the amount or balance.\nPlease 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, "type": "string" }, "start_date": { "description": "The start date of the period covered in this monthly summary.\nThis 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.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amount": { "deprecated": true, "description": "Total amount of earnings for the income source(s) of the user for the month in the summary.\nThis may return an incorrect value if the summary includes income sources in multiple currencies.\nPlease 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.", "type": "number" }, "total_amounts": { "description": "Total amount of earnings for the income source(s) of the user for the month in the summary.\nThis can contain multiple amounts, with each amount denominated in one unique currency.", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" }, "transactions": { "items": { "$ref": "#/components/schemas/CreditBankIncomeTransaction" }, "type": "array" }, "unofficial_currency_code": { "deprecated": true, "description": "The unofficial currency code associated with the amount or balance. Always `null` if `iso_currency_code` is non-null.\nUnofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.\nPlease 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, "type": "string" } }, "type": "object" }, "CreditBankIncomeItem": { "description": "The details and metadata for an end user's Item.", "properties": { "bank_income_accounts": { "description": "The Item's accounts that have Bank Income data.", "items": { "$ref": "#/components/schemas/CreditBankIncomeAccount" }, "type": "array" }, "bank_income_sources": { "description": "The income sources for this Item. Each entry in the array is a single income source.", "items": { "$ref": "#/components/schemas/CreditBankIncomeSource" }, "type": "array" }, "institution_id": { "description": "The unique identifier of the institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The name of the institution associated with the Item.", "type": "string" }, "item_id": { "description": "The unique identifier for the Item.", "type": "string" }, "last_updated_time": { "description": "The time when this Item's data was last retrieved from the financial institution.", "format": "date-time", "type": "string" } }, "type": "object" }, "CreditBankIncomePDFGetRequest": { "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_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token" ], "title": "CreditBankIncomePDFGetRequest", "type": "object" }, "CreditBankIncomePDFGetResponse": { "description": "CreditBankIncomePDFGetResponse defines the response schema for `/credit/bank_income/pdf/get`", "format": "binary", "title": "CreditBankIncomePDFGetResponse", "type": "string" }, "CreditBankIncomePayFrequency": { "description": "The income pay frequency.", "enum": [ "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY", "DAILY", "UNKNOWN" ], "type": "string" }, "CreditBankIncomeRefreshRequest": { "description": "CreditBankIncomeRefreshRequest defines the request schema for `/credit/bank_income/refresh`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CreditBankIncomeRefreshRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token" ], "title": "CreditBankIncomeRefreshRequest", "type": "object" }, "CreditBankIncomeRefreshRequestOptions": { "description": "An optional object for `/credit/bank_income/refresh` request options.", "properties": { "days_requested": { "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.", "type": "integer" } }, "type": "object" }, "CreditBankIncomeRefreshResponse": { "additionalProperties": true, "description": "CreditBankIncomeRefreshResponse defines the response schema for `/credit/bank_income/refresh`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CreditBankIncomeRefreshResponse", "type": "object" }, "CreditBankIncomeSource": { "description": "Detailed information for the income source.", "properties": { "account_id": { "description": "Plaid's unique identifier for the account.", "type": "string" }, "end_date": { "description": "Maximum of all dates within the specific income sources in the user's bank account for days requested by the client.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "historical_summary": { "items": { "$ref": "#/components/schemas/CreditBankIncomeHistoricalSummary" }, "type": "array" }, "income_category": { "$ref": "#/components/schemas/CreditBankIncomeCategory" }, "income_description": { "description": "The most common name or original description for the underlying income transactions.", "type": "string" }, "income_source_id": { "description": "A unique identifier for an income source.", "type": "string" }, "pay_frequency": { "$ref": "#/components/schemas/CreditBankIncomePayFrequency" }, "start_date": { "description": "Minimum of all dates within the specific income sources in the user's bank account for days requested by the client.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amount": { "description": "Total amount of earnings in the user's bank account for the specific income source for days requested by the client.", "type": "number" }, "transaction_count": { "description": "Number of transactions for the income source within the start and end date.", "type": "integer" } }, "type": "object" }, "CreditBankIncomeSummary": { "additionalProperties": true, "description": "Summary for bank income across all income sources and items (max history of 730 days).", "properties": { "end_date": { "description": "The latest date in which all income sources identified by Plaid appear in the user's account.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "historical_summary": { "items": { "$ref": "#/components/schemas/CreditBankIncomeHistoricalSummary" }, "type": "array" }, "income_categories_count": { "description": "Number of income categories per end user.", "type": "integer" }, "income_sources_count": { "description": "Number of income sources per end user.", "type": "integer" }, "income_transactions_count": { "description": "Number of income transactions per end user.", "type": "integer" }, "iso_currency_code": { "deprecated": true, "description": "The ISO 4217 currency code of the amount or balance.\nPlease 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, "type": "string" }, "start_date": { "description": "The earliest date within the days requested in which all income sources identified by Plaid appear in a user's account.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "total_amount": { "deprecated": true, "description": "Total amount of earnings across all the income sources in the end user's Items for the days requested by the client.\nThis may return an incorrect value if the summary includes income sources in multiple currencies.\nPlease use [`total_amounts`](https://plaid.com/docs/api/products/income/#credit-bank_income-get-response-bank-income-bank-income-summary-total-amounts) instead.", "type": "number" }, "total_amounts": { "description": "Total amount of earnings across all the income sources in the end user's Items for the days requested by the client.\nThis can contain multiple amounts, with each amount denominated in one unique currency.", "items": { "$ref": "#/components/schemas/CreditAmountWithCurrency" }, "type": "array" }, "unofficial_currency_code": { "deprecated": true, "description": "The unofficial currency code associated with the amount or balance. Always `null` if `iso_currency_code` is non-null.\nUnofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.\nPlease 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, "type": "string" } }, "type": "object" }, "CreditBankIncomeTransaction": { "additionalProperties": true, "description": "The transactions data for the end user's income source(s).", "properties": { "amount": { "description": "The settled value of the transaction, denominated in the transactions's currency as stated in `iso_currency_code` or `unofficial_currency_code`.\nPositive values when money moves out of the account; negative values when money moves in.\nFor example, credit card purchases are positive; credit card payment, direct deposits, and refunds are negative.", "type": "number" }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "date": { "description": "For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted.\nBoth dates are returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "name": { "description": "The merchant name or transaction description.", "type": "string" }, "original_description": { "description": "The string returned by the financial institution to describe the transaction.", "nullable": true, "type": "string" }, "pending": { "description": "When true, identifies the transaction as pending or unsettled.\nPending transaction details (name, type, amount, category ID) may change before they are settled.", "type": "boolean" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "type": "object" }, "CreditBankIncomeWarning": { "description": "The warning associated with the data that was unavailable for the Bank Income Report.", "properties": { "cause": { "$ref": "#/components/schemas/CreditBankIncomeCause" }, "warning_code": { "$ref": "#/components/schemas/CreditBankIncomeWarningCode" }, "warning_type": { "$ref": "#/components/schemas/CreditBankIncomeWarningType" } }, "type": "object" }, "CreditBankIncomeWarningCode": { "description": "The warning code identifies a specific kind of warning.\n`IDENTITY_UNAVAILABLE`: Unable to extract identity for the Item\n`TRANSACTIONS_UNAVAILABLE`: Unable to extract transactions for the Item\n`ITEM_UNAPPROVED`: User exited flow before giving permission to share data for the Item\n`REPORT_DELETED`: Report deleted due to customer or consumer request\n`DATA_UNAVAILABLE`: No relevant data was found for the Item", "enum": [ "IDENTITY_UNAVAILABLE", "TRANSACTIONS_UNAVAILABLE", "ITEM_UNAPPROVED", "REPORT_DELETED", "DATA_UNAVAILABLE" ], "type": "string" }, "CreditBankIncomeWarningType": { "description": "The warning type which will always be `BANK_INCOME_WARNING`.", "enum": [ "BANK_INCOME_WARNING" ], "type": "string" }, "CreditBankIncomeWebhookUpdateRequest": { "description": "CreditBankIncomeWebhookUpdateRequest defines the request schema for `/credit/bank_income/webhook/update`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "enable_webhooks": { "description": "Whether the user should be enabled for proactive webhook notifications when their income changes", "type": "boolean" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token", "enable_webhooks" ], "title": "CreditBankIncomeWebhookUpdateRequest", "type": "object" }, "CreditBankIncomeWebhookUpdateResponse": { "additionalProperties": true, "description": "CreditBankIncomeWebhookUpdateResponse defines the response schema for `/credit/bank_income/webhook/update`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "CreditBankIncomeWebhookUpdateResponse", "type": "object" }, "CreditBankStatementUploadAccountOwner": { "additionalProperties": true, "description": "An object containing data about the owner of the bank account for the uploaded bank statement.", "properties": { "address": { "$ref": "#/components/schemas/CreditBankStatementUploadAccountOwnerAddress" }, "name": { "description": "The name of the account owner", "nullable": true, "type": "string" } }, "required": [ "name", "address" ], "title": "CreditBankStatementUploadAccountOwner", "type": "object" }, "CreditBankStatementUploadAccountOwnerAddress": { "additionalProperties": true, "description": "Address on the uploaded bank statement", "properties": { "city": { "description": "The full city name.", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code.", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code of the address.", "nullable": true, "type": "string" }, "region": { "description": "The region or state.\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address.", "nullable": true, "type": "string" } }, "required": [ "city", "country", "postal_code", "region", "street" ], "title": "CreditBankStatementUploadAccountOwnerAddress", "type": "object" }, "CreditBankStatementUploadBankAccount": { "additionalProperties": true, "description": "An object containing data about a user's bank account related to an uploaded bank statement.", "properties": { "account_id": { "description": "The unique id of the bank account", "nullable": true, "type": "string" }, "account_number": { "description": "The bank account number.", "nullable": true, "type": "string" }, "account_type": { "description": "The type of the bank account.", "nullable": true, "type": "string" }, "bank_name": { "description": "The name of the bank institution.", "nullable": true, "type": "string" }, "name": { "description": "The name of the bank account", "nullable": true, "type": "string" }, "owner": { "$ref": "#/components/schemas/CreditBankStatementUploadAccountOwner" }, "periods": { "description": "An array of period objects, containing more data on the overall period of the statement.", "items": { "$ref": "#/components/schemas/CreditBankStatementUploadBankAccountPeriod" }, "type": "array" } }, "required": [ "name", "bank_name", "account_type", "account_number", "owner", "periods", "account_id" ], "title": "CreditBankStatementUploadBankAccount", "type": "object" }, "CreditBankStatementUploadBankAccountPeriod": { "description": "An object containing data on the overall period of the statement.", "properties": { "end_date": { "description": "The end date of the statement period in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "ending_balance": { "description": "The ending balance of the bank account for the period.", "nullable": true, "type": "number" }, "start_date": { "description": "The start date of the statement period in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "starting_balance": { "description": "The starting balance of the bank account for the period.", "nullable": true, "type": "number" } }, "required": [ "start_date", "end_date", "starting_balance", "ending_balance" ], "title": "CreditBankStatementUploadBankAccountPeriod", "type": "object" }, "CreditBankStatementUploadItem": { "description": "An object containing information about the bank statement upload Item.", "properties": { "bank_statements": { "items": { "$ref": "#/components/schemas/CreditBankStatementUploadObject" }, "type": "array" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "status": { "$ref": "#/components/schemas/PayrollItemStatus" }, "updated_at": { "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.", "format": "date-time", "nullable": true, "type": "string" } }, "required": [ "item_id", "bank_statements", "status", "updated_at" ], "title": "CreditBankStatementUploadItem", "type": "object" }, "CreditBankStatementUploadObject": { "additionalProperties": true, "description": "An object containing data that has been parsed from a user-uploaded bank statement.", "properties": { "bank_accounts": { "description": "An array of bank accounts associated with the uploaded bank statement.", "items": { "$ref": "#/components/schemas/CreditBankStatementUploadBankAccount" }, "type": "array" }, "document_id": { "description": "An identifier of the document referenced by the document metadata.", "nullable": true, "type": "string" }, "document_metadata": { "$ref": "#/components/schemas/CreditDocumentMetadata" }, "transactions": { "description": "An array of transactions appearing on the bank statement.", "items": { "$ref": "#/components/schemas/CreditBankStatementUploadTransaction" }, "type": "array" } }, "required": [ "transactions", "document_metadata", "document_id", "bank_accounts" ], "title": "CreditBankStatementUploadObject", "type": "object" }, "CreditBankStatementUploadTransaction": { "description": "An object containing data about a transaction appearing on a user-uploaded bank statement.", "properties": { "account_id": { "description": "The unique id of the bank account that this transaction occurs in", "nullable": true, "type": "string" }, "amount": { "description": "The value of the transaction. A negative amount indicates that money moved into the account (such as a paycheck being deposited).", "nullable": true, "type": "number" }, "date": { "description": "The date of when the transaction was made, in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "original_description": { "description": "The raw description of the transaction as it appears on the bank statement.", "nullable": true, "type": "string" } }, "required": [ "amount", "date", "original_description", "account_id" ], "title": "CreditBankStatementUploadTransaction", "type": "object" }, "CreditBankStatementsUploadsGetRequest": { "description": "CreditBankStatementsUploadsGetRequest defines the request schema for `/credit/bank_statements/uploads/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CreditBankStatementsUploadsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token" ], "title": "CreditBankStatementsUploadsGetRequest", "type": "object" }, "CreditBankStatementsUploadsGetRequestOptions": { "description": "An optional object for `/credit/bank_statements/uploads/get` request options.", "properties": { "item_ids": { "description": "An array of `item_id`s whose bank statements information is returned. Each `item_id` should uniquely identify a bank statements uploaded item. If this field is not provided, all `item_id`s associated with the `user_token` will returned in the response.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "CreditBankStatementsUploadsGetResponse": { "additionalProperties": true, "description": "CreditBankStatementsUploadsGetResponse defines the response schema for `/credit/bank_statements/uploads/get`", "properties": { "items": { "description": "Array of bank statement upload items.", "items": { "$ref": "#/components/schemas/CreditBankStatementUploadItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "items", "request_id" ], "title": "CreditBankStatementsUploadsGetResponse", "type": "object" }, "CreditCardLiability": { "additionalProperties": true, "description": "An object representing a credit card account.", "properties": { "account_id": { "description": "The ID of the account that this liability belongs to.", "nullable": true, "type": "string" }, "aprs": { "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" }, "type": "array" }, "is_overdue": { "description": "true if a payment is currently overdue. Availability for this field is limited.", "nullable": true, "type": "boolean" }, "last_payment_amount": { "description": "The amount of the last payment.", "format": "double", "nullable": true, "type": "number" }, "last_payment_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). Availability for this field is limited.", "format": "date", "nullable": true, "type": "string" }, "last_statement_balance": { "description": "The total amount owed as of the last statement issued", "format": "double", "nullable": true, "type": "number" }, "last_statement_issue_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).", "format": "date", "nullable": true, "type": "string" }, "minimum_payment_amount": { "description": "The minimum payment due for the next billing cycle.", "format": "double", "nullable": true, "type": "number" }, "next_payment_due_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).", "format": "date", "nullable": true, "type": "string" } }, "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" ], "title": "CreditCardLiability", "type": "object" }, "CreditCategory": { "additionalProperties": true, "description": "Information describing the intent of the transaction. Most relevant for credit use cases, but not limited to such use cases.\n\nSee the [`taxonomy csv file`](https://plaid.com/documents/credit-category-taxonomy.csv) for a full list of credit categories.", "nullable": true, "properties": { "detailed": { "description": "A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category.", "type": "string" }, "primary": { "description": "A high level category that communicates the broad category of the transaction.", "type": "string" } }, "required": [ "primary", "detailed" ], "title": "CreditCategory", "type": "object" }, "CreditDocumentMetadata": { "additionalProperties": true, "description": "Object representing metadata pertaining to the document.", "properties": { "document_type": { "$ref": "#/components/schemas/CreditDocumentType" }, "download_url": { "description": "Signed URL to retrieve the document(s). The payload will be a .zip file containing the document(s).\n\nFor 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).\n\nFor Document Income, this field will not be `null`, and the file type of the underlying document(s) will be the original file type uploaded by the user. For more details on available file types, see the [Document Income](https://plaid.com/docs/income/payroll-income) documentation.\n\nThis 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, "type": "string" }, "error_message": { "description": "The reason why a failure occurred during document processing (if available).", "nullable": true, "type": "string" }, "name": { "description": "The name of the document.", "type": "string" }, "page_count": { "description": "The number of pages of the uploaded document (if available).", "nullable": true, "type": "integer" }, "status": { "description": "The processing status of the document.\n\n`PROCESSING_COMPLETE`: The document was successfully processed.\n\n`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.\n\n`UNKNOWN` or `null`: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "UNKNOWN", "PROCESSING_COMPLETE", "DOCUMENT_ERROR", null ] } }, "required": [ "name", "document_type", "download_url", "status" ], "title": "CreditDocumentMetadata", "type": "object" }, "CreditDocumentType": { "description": "The type of document.\n\n`PAYSTUB`: A paystub.\n\n`BANK_STATEMENT`: A bank statement.\n\n`US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.\n\n`US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military.\n\n`US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military.\n\n`US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military.\n\n`GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.\n\n`PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid.\n\n`NONE`: Used to indicate that there is no underlying document for the data.\n\n`UNKNOWN`: Document type could not be determined.", "nullable": true, "title": "CreditDocumentType", "type": "string", "x-override-enum-values-shown": [ "UNKNOWN", "PAYSTUB", "BANK_STATEMENT", "US_TAX_W2", "US_MILITARY_ERAS", "US_MILITARY_LES", "US_MILITARY_CLES", "GIG", "PLAID_GENERATED_PAYSTUB_PDF", "NONE" ] }, "CreditEmployerVerification": { "additionalProperties": true, "description": "An object containing employer data.", "properties": { "name": { "description": "Name of employer.", "nullable": true, "type": "string" } }, "required": [ "name" ], "title": "CreditEmployerVerification", "type": "object" }, "CreditEmploymentEmployeeType": { "description": "The type of employment for the individual.\n`\"FULL_TIME\"`: A full-time employee.\n`\"PART_TIME\"`: A part-time employee.\n`\"CONTRACTOR\"`: An employee typically hired externally through a contracting group.\n`\"TEMPORARY\"`: A temporary employee.\n`\"OTHER\"`: The employee type is not one of the above defined types.", "nullable": true, "title": "CreditEmploymentEmployeeType", "type": "string", "x-override-enum-values-shown": [ "FULL_TIME", "PART_TIME", "CONTRACTOR", "TEMPORARY", "OTHER", null ] }, "CreditEmploymentGetRequest": { "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" ], "title": "CreditEmploymentGetRequest", "type": "object" }, "CreditEmploymentGetResponse": { "additionalProperties": true, "description": "CreditEmploymentGetResponse defines the response schema for `/credit/employment/get`.", "properties": { "items": { "description": "Array of employment items.", "items": { "$ref": "#/components/schemas/CreditEmploymentItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "items", "request_id" ], "title": "CreditEmploymentGetResponse", "type": "object" }, "CreditEmploymentItem": { "additionalProperties": true, "description": "The object containing employment items.", "properties": { "employment_report_token": { "description": "Token to represent the underlying Employment data", "title": "EmploymentReportToken", "type": "string", "x-hidden-from-docs": true }, "employments": { "items": { "$ref": "#/components/schemas/CreditEmploymentVerification" }, "type": "array" }, "item_id": { "$ref": "#/components/schemas/ItemId" } }, "required": [ "item_id", "employments" ], "title": "CreditEmploymentItem", "type": "object" }, "CreditEmploymentVerification": { "additionalProperties": true, "description": "The object containing proof of employment data for an individual.", "properties": { "account_id": { "description": "ID of the payroll provider account.", "nullable": true, "type": "string" }, "employee_type": { "$ref": "#/components/schemas/CreditEmploymentEmployeeType" }, "employer": { "$ref": "#/components/schemas/CreditEmployerVerification" }, "end_date": { "description": "End of employment, if applicable. Provided in ISO 8601 format (YYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "last_paystub_date": { "description": "The date of the employee's most recent paystub in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "platform_ids": { "$ref": "#/components/schemas/CreditPlatformIds" }, "start_date": { "description": "Start of employment in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "status": { "$ref": "#/components/schemas/CreditEmploymentVerificationStatus" }, "title": { "description": "Current title of employee.", "nullable": true, "type": "string" } }, "required": [ "account_id", "status", "start_date", "end_date", "employer", "title", "platform_ids", "employee_type", "last_paystub_date" ], "title": "CreditEmploymentVerification", "type": "object" }, "CreditEmploymentVerificationStatus": { "description": "Current employment status.", "nullable": true, "title": "CreditEmploymentVerificationStatus", "type": "string", "x-override-enum-values-shown": [ "ACTIVE", "INACTIVE", null ] }, "CreditFilter": { "additionalProperties": true, "description": "A filter to apply to `credit`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/CreditAccountSubtypes" } }, "required": [ "account_subtypes" ], "title": "CreditFilter", "type": "object" }, "CreditFreddieMacAsset": { "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_HOLDER": { "$ref": "#/components/schemas/AssetHolder" }, "ASSET_HOLDINGS": { "$ref": "#/components/schemas/AssetHoldings" }, "ASSET_OWNERS": { "$ref": "#/components/schemas/AssetOwners" }, "ASSET_TRANSACTIONS": { "$ref": "#/components/schemas/CreditFreddieMacAssetTransactions" }, "VALIDATION_SOURCES": { "$ref": "#/components/schemas/ValidationSources" } }, "required": [ "ASSET_DETAIL", "ASSET_OWNERS", "ASSET_HOLDER", "ASSET_TRANSACTIONS", "VALIDATION_SOURCES" ], "title": "CreditFreddieMacAsset", "type": "object" }, "CreditFreddieMacAssetTransaction": { "additionalProperties": true, "description": "An object representing...", "properties": { "ASSET_TRANSACTION_DESCRIPTION": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "items": { "$ref": "#/components/schemas/AssetTransactionDescription" }, "type": "array" }, "ASSET_TRANSACTION_DETAIL": { "$ref": "#/components/schemas/AssetTransactionDetail" } }, "required": [ "ASSET_TRANSACTION_DETAIL", "ASSET_TRANSACTION_DESCRIPTION" ], "title": "CreditFreddieMacAssetTransaction", "type": "object" }, "CreditFreddieMacAssetTransactions": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET_TRANSACTION": { "items": { "$ref": "#/components/schemas/CreditFreddieMacAssetTransaction" }, "type": "array" } }, "required": [ "ASSET_TRANSACTION" ], "title": "CreditFreddieMacAssetTransactions", "type": "object" }, "CreditFreddieMacAssets": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ASSET": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "items": { "$ref": "#/components/schemas/CreditFreddieMacAsset" }, "type": "array" } }, "required": [ "ASSET" ], "title": "CreditFreddieMacAssets", "type": "object" }, "CreditFreddieMacIndividualName": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "FirstName": { "description": "The first name of the individual represented by the parent object.", "type": "string" }, "LastName": { "description": "The last name of the individual represented by the parent object.", "type": "string" }, "MiddleName": { "description": "The middle name of the individual represented by the parent object.", "type": "string" } }, "required": [ "FirstName", "LastName", "MiddleName" ], "title": "CreditFreddieMacIndividualName", "type": "object" }, "CreditFreddieMacLoan": { "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": { "description": "Type of loan. The value can only be \"SubjectLoan\".", "type": "string" } }, "required": [ "LOAN_IDENTIFIERS", "LoanRoleType" ], "title": "CreditFreddieMacLoan", "type": "object" }, "CreditFreddieMacLoanIdentifiers": { "additionalProperties": true, "description": "Collection of current and previous identifiers for this loan.", "properties": { "LOAN_IDENTIFIER": { "items": { "$ref": "#/components/schemas/LoanIdentifier" }, "type": "array" } }, "required": [ "LOAN_IDENTIFIER" ], "title": "CreditFreddieMacLoanIdentifiers", "type": "object" }, "CreditFreddieMacLoans": { "additionalProperties": true, "description": "A collection of loans that are part of a single deal.", "properties": { "LOAN": { "$ref": "#/components/schemas/CreditFreddieMacLoan" } }, "required": [ "LOAN" ], "title": "CreditFreddieMacLoans", "type": "object" }, "CreditFreddieMacParties": { "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": { "items": { "$ref": "#/components/schemas/CreditFreddieMacParty" }, "type": "array" } }, "required": [ "PARTY" ], "title": "CreditFreddieMacParties", "type": "object" }, "CreditFreddieMacParty": { "additionalProperties": true, "description": "A collection of information about a single party to a transaction. Included direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider.", "properties": { "INDIVIDUAL": { "$ref": "#/components/schemas/CreditFreddieMacPartyIndividual" }, "ROLES": { "$ref": "#/components/schemas/Roles" }, "TAXPAYER_IDENTIFIERS": { "$ref": "#/components/schemas/TaxpayerIdentifiers" } }, "required": [ "INDIVIDUAL", "ROLES", "TAXPAYER_IDENTIFIERS" ], "title": "CreditFreddieMacParty", "type": "object" }, "CreditFreddieMacPartyIndividual": { "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" ], "title": "CreditFreddieMacPartyIndividual", "type": "object" }, "CreditFreddieMacReportingInformation": { "additionalProperties": true, "description": "Information about a report identifier and a report name.", "properties": { "ReportDateTime": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "type": "string" }, "ReportIdentifierType": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac. The value can only be \"ReportID\".", "type": "string" }, "ReportingInformationIdentifier": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "type": "string" }, "ReportingInformationParentIdentifier": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "type": "string" } }, "required": [ "ReportingInformationIdentifier" ], "title": "CreditFreddieMacReportingInformation", "type": "object" }, "CreditFreddieMacReportsGetRequest": { "description": "CreditFreddieMacReportsGetRequest defines the request schema for `/credit/freddie_mac/reports/get`", "properties": { "audit_copy_token": { "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.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "audit_copy_token" ], "title": "CreditFreddieMacReportsGetRequest", "type": "object" }, "CreditFreddieMacReportsGetResponse": { "additionalProperties": true, "description": "CreditFreddieMacReportsGetResponse defines the response schema for `/credit/freddie_mac/reports/get`", "properties": { "DEAL": { "$ref": "#/components/schemas/CreditFreddieMacVerificationOfAssetsDeal" }, "SchemaVersion": { "description": "The Verification Of Assets (VOA) schema version.", "type": "number" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "DEAL", "SchemaVersion" ], "title": "CreditFreddieMacReportsGetResponse", "type": "object" }, "CreditFreddieMacService": { "additionalProperties": true, "description": "A collection of details related to a fulfillment service or product in terms of request, process and result.", "properties": { "STATUSES": { "$ref": "#/components/schemas/Statuses" }, "VERIFICATION_OF_ASSET": { "items": { "$ref": "#/components/schemas/CreditFreddieMacVerificationOfAsset" }, "type": "array" } }, "required": [ "VERIFICATION_OF_ASSET", "STATUSES" ], "title": "CreditFreddieMacService", "type": "object" }, "CreditFreddieMacServices": { "additionalProperties": true, "description": "A collection of objects that describe requests and responses for services.", "properties": { "SERVICE": { "$ref": "#/components/schemas/CreditFreddieMacService" } }, "required": [ "SERVICE" ], "title": "CreditFreddieMacServices", "type": "object" }, "CreditFreddieMacVerificationOfAsset": { "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" ], "title": "CreditFreddieMacVerificationOfAsset", "type": "object" }, "CreditFreddieMacVerificationOfAssetResponse": { "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" ], "title": "VerificationOfAssetResponse", "type": "object" }, "CreditFreddieMacVerificationOfAssetsDeal": { "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" ], "title": "CreditFreddieMacVerificationOfAssetsDeal", "type": "object" }, "CreditIsoCurrencyCode": { "description": "The ISO 4217 currency code of the amount or balance.", "nullable": true, "type": "string" }, "CreditPayStub": { "additionalProperties": true, "description": "An object representing an end user's pay stub.", "properties": { "deductions": { "$ref": "#/components/schemas/CreditPayStubDeductions" }, "document_id": { "description": "An identifier of the document referenced by the document metadata.", "nullable": true, "type": "string" }, "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" ], "title": "CreditPayStub", "type": "object" }, "CreditPayStubAddress": { "additionalProperties": true, "description": "Address on the pay stub.", "properties": { "city": { "description": "The full city name.", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code.", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code of the address.", "nullable": true, "type": "string" }, "region": { "description": "The region or state.\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address.", "nullable": true, "type": "string" } }, "required": [ "city", "country", "postal_code", "region", "street" ], "title": "CreditPayStubAddress", "type": "object" }, "CreditPayStubDeductions": { "additionalProperties": true, "description": "An object with the deduction information found on a pay stub.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/PayStubDeductionsBreakdown" }, "type": "array" }, "total": { "$ref": "#/components/schemas/PayStubDeductionsTotal" } }, "required": [ "breakdown", "total" ], "title": "CreditPayStubDeductions", "type": "object" }, "CreditPayStubEarnings": { "additionalProperties": true, "description": "An object representing both a breakdown of earnings on a pay stub and the total earnings.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/PayStubEarningsBreakdown" }, "type": "array" }, "total": { "$ref": "#/components/schemas/PayStubEarningsTotal" } }, "required": [ "breakdown", "total" ], "title": "CreditPayStubEarnings", "type": "object" }, "CreditPayStubEmployee": { "additionalProperties": true, "description": "Data about the employee.", "properties": { "address": { "$ref": "#/components/schemas/CreditPayStubAddress" }, "marital_status": { "description": "Marital status of the employee - either `SINGLE` or `MARRIED` or `NOT LISTED`.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "SINGLE", "MARRIED", "NOT LISTED", null ] }, "name": { "description": "The name of the employee.", "nullable": true, "type": "string" }, "taxpayer_id": { "$ref": "#/components/schemas/PayStubTaxpayerID" } }, "required": [ "name", "address", "marital_status", "taxpayer_id" ], "title": "CreditPayStubEmployee", "type": "object" }, "CreditPayStubEmployer": { "additionalProperties": true, "description": "Information about the employer on the pay stub.", "properties": { "address": { "$ref": "#/components/schemas/CreditPayStubAddress" }, "name": { "description": "The name of the employer on the pay stub.", "nullable": true, "type": "string" } }, "required": [ "address", "name" ], "title": "CreditPayStubEmployer", "type": "object" }, "CreditPayStubNetPay": { "additionalProperties": true, "description": "An object representing information about the net pay amount on the pay stub.", "properties": { "current_amount": { "description": "Raw amount of the net pay for the pay period.", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the net pay.", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the net pay.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "current_amount", "description", "iso_currency_code", "unofficial_currency_code", "ytd_amount" ], "title": "CreditPayStubNetPay", "type": "object" }, "CreditPayStubPayBasisType": { "description": "The explicit pay basis on the paystub (if present).", "enum": [ "SALARY", "HOURLY", "COMMISSION" ], "type": "string" }, "CreditPayrollIncomeGetRequest": { "description": "CreditPayrollIncomeGetRequest defines the request schema for `/credit/payroll_income/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CreditPayrollIncomeGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CreditPayrollIncomeGetRequest", "type": "object" }, "CreditPayrollIncomeGetRequestOptions": { "description": "An optional object for `/credit/payroll_income/get` request options.", "properties": { "item_ids": { "description": "An array of `item_id`s whose payroll information is returned. Each `item_id` should uniquely identify a payroll income item. If this field is not provided, all `item_id`s associated with the `user_token` will returned in the response.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "CreditPayrollIncomeGetResponse": { "additionalProperties": true, "description": "Defines the response body for `/credit/payroll_income/get`.", "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "items": { "description": "Array of payroll items.", "items": { "$ref": "#/components/schemas/PayrollItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "items", "request_id" ], "title": "CreditPayrollIncomeGetResponse", "type": "object" }, "CreditPayrollIncomeParsingConfigUpdateRequest": { "additionalProperties": true, "description": "CreditPayrollIncomeParsingConfigUpdateRequest defines the request schema for `/credit/payroll_income/parsing_config/update`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "parsing_config": { "description": "The types of analysis to enable for the document income verification session", "items": { "$ref": "#/components/schemas/IncomeVerificationDocParsingConfig" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token", "parsing_config" ], "title": "CreditPayrollIncomeParsingConfigUpdateRequest", "type": "object" }, "CreditPayrollIncomeParsingConfigUpdateResponse": { "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" ], "title": "CreditPayrollIncomeParsingConfigUpdateResponse", "type": "object" }, "CreditPayrollIncomePrecheckRequest": { "description": "Defines the request schema for `/credit/payroll_income/precheck`.", "properties": { "access_tokens": { "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" }, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "employer": { "$ref": "#/components/schemas/IncomeVerificationPrecheckEmployer" }, "payroll_institution": { "$ref": "#/components/schemas/IncomeVerificationPrecheckPayrollInstitution" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "us_military_info": { "$ref": "#/components/schemas/IncomeVerificationPrecheckMilitaryInfo" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CreditPayrollIncomePrecheckRequest", "type": "object" }, "CreditPayrollIncomePrecheckResponse": { "additionalProperties": true, "description": "Defines the response schema for `/credit/payroll_income/precheck`.", "properties": { "confidence": { "$ref": "#/components/schemas/IncomeVerificationPrecheckConfidence" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "confidence", "request_id" ], "title": "CreditPayrollIncomePrecheckResponse", "type": "object" }, "CreditPayrollIncomeRefreshRequest": { "description": "CreditPayrollIncomeRefreshRequest defines the request schema for `/credit/payroll_income/refresh`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/CreditPayrollIncomeRefreshRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_token" ], "title": "CreditPayrollIncomeRefreshRequest", "type": "object" }, "CreditPayrollIncomeRefreshRequestOptions": { "description": "An optional object for `/credit/payroll_income/refresh` request options.", "properties": { "item_ids": { "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.", "items": { "type": "string" }, "type": "array" }, "webhook": { "description": "The URL where Plaid will send the payroll income refresh webhook.", "type": "string" } }, "type": "object" }, "CreditPayrollIncomeRefreshResponse": { "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" ], "title": "CreditPayrollIncomeRefreshResponse", "type": "object" }, "CreditPayrollIncomeRefreshStatus": { "description": "The verification refresh status. One of the following:\n\n`\"USER_PRESENCE_REQUIRED\"` User presence is required to refresh an income verification.\n`\"SUCCESSFUL\"` The income verification refresh was successful.\n`\"NOT_FOUND\"` No new data was found after the income verification refresh.", "title": "CreditPayrollIncomeRefreshStatus", "type": "string", "x-override-enum-values-shown": [ "USER_PRESENCE_REQUIRED", "SUCCESSFUL", "NOT_FOUND" ] }, "CreditPayrollIncomeRiskSignalsGetRequest": { "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_id": { "allOf": [ { "$ref": "#/components/schemas/NewUserID" } ], "x-hidden-from-docs": true }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "title": "CreditPayrollIncomeRiskSignalsGetRequest", "type": "object" }, "CreditPayrollIncomeRiskSignalsGetResponse": { "additionalProperties": true, "description": "CreditPayrollIncomeRiskSignalsGetRequest defines the response schema for `/credit/payroll_income/risk_signals/get`", "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "items": { "description": "Array of payroll items.", "items": { "$ref": "#/components/schemas/PayrollRiskSignalsItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "items", "request_id" ], "title": "CreditPayrollIncomeRiskSignalsGetReponse", "type": "object" }, "CreditPlatformIds": { "additionalProperties": true, "description": "The object containing a set of ids related to an employee.", "properties": { "employee_id": { "description": "The ID of an employee as given by their employer.", "nullable": true, "type": "string" }, "payroll_id": { "description": "The ID of an employee as given by their payroll.", "nullable": true, "type": "string" }, "position_id": { "description": "The ID of the position of the employee.", "nullable": true, "type": "string" } }, "required": [ "employee_id", "payroll_id", "position_id" ], "title": "CreditPlatformIds", "type": "object" }, "CreditRelayCreateRequest": { "description": "CreditRelayCreateRequest defines the request schema for `/credit/relay/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "report_tokens": { "description": "List of report token strings, with at most one token of each report type. Currently only Asset Report token is supported.", "items": { "description": "The report token. It can only be an asset report token.", "nullable": false, "type": "string" }, "type": "array" }, "secondary_client_id": { "description": "The `secondary_client_id` is the client id of the third party with whom you would like to share the relay token.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "URL to which Plaid will send webhooks when the Secondary Client successfully retrieves an Asset Report by calling `/credit/relay/get`.", "format": "url", "nullable": true, "type": "string" } }, "required": [ "report_tokens", "secondary_client_id" ], "type": "object" }, "CreditRelayCreateResponse": { "additionalProperties": true, "description": "CreditRelayCreateResponse defines the response schema for `/credit/relay/create`", "properties": { "relay_token": { "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.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "relay_token", "request_id" ], "type": "object" }, "CreditRelayGetRequest": { "description": "CreditRelayGetRequest defines the request schema for `/credit/relay/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "include_insights": { "default": false, "description": "`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted.", "type": "boolean" }, "relay_token": { "description": "The `relay_token` granting access to the report you would like to get.", "type": "string" }, "report_type": { "$ref": "#/components/schemas/ReportType" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "relay_token", "report_type" ], "title": "CreditRelayGetRequest", "type": "object" }, "CreditRelayPDFGetRequest": { "description": "CreditRelayPDFGetRequest defines the request schema for `/credit/relay/pdf/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "relay_token": { "description": "The `relay_token` granting access to the report you would like to get.", "type": "string" }, "report_type": { "$ref": "#/components/schemas/ReportType" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "relay_token", "report_type" ], "title": "CreditRelayPDFGetRequest", "type": "object" }, "CreditRelayPDFGetResponse": { "description": "CreditRelayPDFGetResponse defines the response schema for `/credit/relay/pdf/get`", "format": "binary", "title": "CreditRelayPDFGetResponse", "type": "string" }, "CreditRelayRefreshRequest": { "description": "CreditRelayRefreshRequest defines the request schema for `/credit/relay/refresh`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "relay_token": { "description": "The `relay_token` granting access to the report you would like to refresh.", "type": "string" }, "report_type": { "$ref": "#/components/schemas/ReportType" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The URL registered to receive webhooks when the report of a relay token has been refreshed.", "format": "url", "nullable": true, "type": "string" } }, "required": [ "relay_token", "report_type" ], "type": "object" }, "CreditRelayRefreshResponse": { "additionalProperties": true, "description": "CreditRelayRefreshResponse defines the response schema for `/credit/relay/refresh`", "properties": { "asset_report_id": { "$ref": "#/components/schemas/AssetReportId" }, "relay_token": { "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "relay_token", "request_id" ], "type": "object" }, "CreditRelayRemoveRequest": { "description": "CreditRelayRemoveRequest defines the request schema for `/credit/relay/remove`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "relay_token": { "description": "The `relay_token` you would like to revoke.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "relay_token" ], "type": "object" }, "CreditRelayRemoveResponse": { "additionalProperties": true, "description": "CreditRelayRemoveResponse defines the response schema for `/credit/relay/remove`", "properties": { "removed": { "description": "`true` if the relay token was successfully removed.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "removed", "request_id" ], "type": "object" }, "CreditSession": { "description": "Metadata and results for a Link session", "properties": { "errors": { "description": "The set of errors that occurred during the Link session.", "items": { "$ref": "#/components/schemas/CreditSessionError" }, "type": "array" }, "link_session_id": { "description": "The unique identifier associated with the Link session. This identifier matches the `link_session_id` returned in the onSuccess/onExit callbacks.", "type": "string" }, "results": { "$ref": "#/components/schemas/CreditSessionResults" }, "session_start_time": { "description": "The time when the Link session started", "format": "date-time", "type": "string" } }, "type": "object" }, "CreditSessionBankEmploymentResult": { "description": "The details of a bank employment verification in Link.", "properties": { "institution_id": { "description": "The Plaid Institution ID 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" }, "status": { "$ref": "#/components/schemas/CreditSessionBankEmploymentStatus" } }, "type": "object" }, "CreditSessionBankEmploymentStatus": { "description": "Status of the Bank Employment Link session.\n\n`APPROVED`: User has approved and verified their employment.\n\n`NO_EMPLOYERS_FOUND`: We attempted, but were unable to find any employment in the connected account.\n\n`EMPLOYER_NOT_LISTED`: The user explicitly indicated that they did not see their current or previous employer in the list of employer names found.\n\n`STARTED`: The user began the bank employment portion of the link flow.\n\n`INTERNAL_ERROR`: The user encountered an internal error.", "enum": [ "APPROVED", "NO_EMPLOYERS_FOUND", "EMPLOYER_NOT_LISTED", "STARTED", "INTERNAL_ERROR" ], "type": "string" }, "CreditSessionBankIncomeResult": { "description": "The details of a bank income verification in Link", "properties": { "institution_id": { "description": "The Plaid Institution ID 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" }, "status": { "$ref": "#/components/schemas/CreditSessionBankIncomeStatus" } }, "type": "object" }, "CreditSessionBankIncomeStatus": { "description": "Status of the Bank Income Link session.\n\n`APPROVED`: User has approved and verified their income\n\n`NO_DEPOSITS_FOUND`: We attempted, but were unable to find any income in the connected account.\n\n`USER_REPORTED_NO_INCOME`: The user explicitly indicated that they don't receive income in the connected account.\n\n`STARTED`: The user began the bank income portion of the link flow.\n\n`INTERNAL_ERROR`: The user encountered an internal error.", "enum": [ "APPROVED", "NO_DEPOSITS_FOUND", "USER_REPORTED_NO_INCOME", "STARTED", "INTERNAL_ERROR" ], "type": "string" }, "CreditSessionDocumentIncomeResult": { "description": "The details of a document income verification in Link", "nullable": true, "properties": { "num_1099s_uploaded": { "description": "The number of 1099s uploaded by the user", "type": "integer" }, "num_bank_statements_uploaded": { "description": "The number of bank statements uploaded by the user.", "type": "integer" }, "num_paystubs_uploaded": { "description": "The number of paystubs uploaded by the user.", "type": "integer" }, "num_w2s_uploaded": { "description": "The number of w2s uploaded by the user.", "type": "integer" } }, "required": [ "num_paystubs_uploaded", "num_w2s_uploaded", "num_bank_statements_uploaded", "num_1099s_uploaded" ], "type": "object" }, "CreditSessionError": { "description": "The details of a Link error.", "properties": { "display_message": { "description": "A user-friendly representation of the error code. `null` if the error is not related to user action.", "nullable": true, "type": "string" }, "error_code": { "description": "The particular error code.", "type": "string" }, "error_message": { "description": "A developer-friendly representation of the error code.", "type": "string" }, "error_type": { "description": "A broad categorization of the error.", "type": "string" } }, "type": "object" }, "CreditSessionItemAddResult": { "description": "The details of an Item add in Link.", "properties": { "institution_id": { "description": "The Plaid Institution ID 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" }, "public_token": { "description": "Returned once a user has successfully linked their Item.", "type": "string" } }, "type": "object" }, "CreditSessionPayrollIncomeResult": { "description": "The details of a digital payroll income verification in Link", "properties": { "institution_id": { "description": "The Plaid Institution ID associated with the Item.", "type": "string" }, "institution_name": { "description": "The Institution Name associated with the Item.", "type": "string" }, "num_paystubs_retrieved": { "description": "The number of paystubs retrieved from a payroll provider.", "type": "integer" }, "num_w2s_retrieved": { "description": "The number of w2s retrieved from a payroll provider.", "type": "integer" } }, "type": "object" }, "CreditSessionResults": { "description": "The set of results for a Link session.", "properties": { "bank_employment_results": { "description": "The set of bank employment verifications for the Link session.", "items": { "$ref": "#/components/schemas/CreditSessionBankEmploymentResult" }, "type": "array" }, "bank_income_results": { "description": "The set of bank income verifications for the Link session.", "items": { "$ref": "#/components/schemas/CreditSessionBankIncomeResult" }, "type": "array" }, "document_income_results": { "$ref": "#/components/schemas/CreditSessionDocumentIncomeResult" }, "item_add_results": { "description": "The set of Item adds for the Link session.", "items": { "$ref": "#/components/schemas/CreditSessionItemAddResult" }, "type": "array" }, "payroll_income_results": { "description": "The set of payroll income verifications for the Link session.", "items": { "$ref": "#/components/schemas/CreditSessionPayrollIncomeResult" }, "type": "array" } }, "type": "object" }, "CreditSessionsGetRequest": { "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" } }, "required": [ "user_token" ], "type": "object" }, "CreditSessionsGetResponse": { "additionalProperties": true, "description": "CreditSessionsGetResponse defines the response schema for `/credit/sessions/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sessions": { "description": "A list of Link sessions for the user. Sessions will be sorted in reverse chronological order.", "items": { "$ref": "#/components/schemas/CreditSession" }, "type": "array" } }, "required": [ "request_id" ], "type": "object" }, "CreditUnofficialCurrencyCode": { "description": "The unofficial currency code associated with the amount or balance. Always `null` if `iso_currency_code` is non-null.\nUnofficial 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, "type": "string" }, "CreditW2": { "additionalProperties": true, "description": "W2 is an object that represents income data taken from a W2 tax document.", "properties": { "allocated_tips": { "description": "Allocated tips.", "nullable": true, "type": "string" }, "box_12": { "items": { "$ref": "#/components/schemas/W2Box12" }, "type": "array" }, "box_9": { "description": "Contents from box 9 on the W2.", "nullable": true, "type": "string" }, "dependent_care_benefits": { "description": "Dependent care benefits.", "nullable": true, "type": "string" }, "document_id": { "description": "An identifier of the document referenced by the document metadata.", "type": "string" }, "document_metadata": { "$ref": "#/components/schemas/CreditDocumentMetadata" }, "employee": { "$ref": "#/components/schemas/CreditPayStubEmployee" }, "employer": { "$ref": "#/components/schemas/CreditPayStubEmployer" }, "employer_id_number": { "description": "An employee identification number or EIN.", "nullable": true, "type": "string" }, "federal_income_tax_withheld": { "description": "Federal income tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_tax_withheld": { "description": "Medicare tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_wages_and_tips": { "description": "Wages and tips from medicare.", "nullable": true, "type": "string" }, "nonqualified_plans": { "description": "Nonqualified plans.", "nullable": true, "type": "string" }, "other": { "description": "Other.", "nullable": true, "type": "string" }, "retirement_plan": { "description": "Retirement plan.", "nullable": true, "type": "string" }, "social_security_tax_withheld": { "description": "Social Security tax withheld for the tax year.", "nullable": true, "type": "string" }, "social_security_tips": { "description": "Tips from Social Security.", "nullable": true, "type": "string" }, "social_security_wages": { "description": "Wages from Social Security.", "nullable": true, "type": "string" }, "state_and_local_wages": { "items": { "$ref": "#/components/schemas/W2StateAndLocalWages" }, "type": "array" }, "statutory_employee": { "description": "Statutory employee.", "nullable": true, "type": "string" }, "tax_year": { "description": "The tax year of the W2 document.", "nullable": true, "type": "string" }, "third_party_sick_pay": { "description": "Third party sick pay.", "nullable": true, "type": "string" }, "wages_tips_other_comp": { "description": "Wages from tips and other compensation.", "nullable": true, "type": "string" } }, "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" ], "title": "CreditW2", "type": "object" }, "Cursor": { "description": "An identifier that determines which page of results you receive.", "example": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "nullable": true, "type": "string" }, "CustomSandboxTransaction": { "additionalProperties": true, "description": "Data to populate as test transaction data.", "properties": { "amount": { "description": "The transaction amount. Can be negative.", "format": "double", "type": "number" }, "date_posted": { "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.", "format": "date", "type": "string" }, "date_transacted": { "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.", "format": "date", "type": "string" }, "description": { "description": "The transaction description.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 format currency code for the transaction. Defaults to USD.", "type": "string" } }, "required": [ "date_transacted", "date_posted", "amount", "description" ], "title": "CustomSandboxTransaction", "type": "object" }, "CustomerInitiatedReturnRisk": { "description": "The object contains a risk score and a risk tier that evaluate the transaction return risk of an unauthorized debit. Common return codes in this category include: \"R05\", \"R07\", \"R10\", \"R11\", \"R29\". These returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized.", "properties": { "risk_tier": { "$ref": "#/components/schemas/CustomerInitiatedRiskTier" }, "score": { "$ref": "#/components/schemas/SignalScore" } }, "required": [ "risk_tier", "score" ], "title": "CustomerInitiatedReturnRisk", "type": "object" }, "CustomerInitiatedRiskTier": { "deprecated": true, "description": "DEPRECATED. Use Signal Rules instead to transform the `score` into a useful action.\n\nA tier corresponding to the projected likelihood that the transaction, if initiated, will be subject to a return.\n\nIn the `customer_initiated_return_risk` object, there are five risk tiers corresponding to the scores:\n 1: Predicted customer-initiated return incidence rate between 0.00% - 0.02%\n 2: Predicted customer-initiated return incidence rate between 0.02% - 0.05%\n 3: Predicted customer-initiated return incidence rate between 0.05% - 0.1%\n 4: Predicted customer-initiated return incidence rate between 0.1% - 0.5%\n 5: Predicted customer-initiated return incidence rate greater than 0.5%\n", "maximum": 5, "minimum": 1, "type": "integer", "x-hidden-from-docs": true }, "DashboardUser": { "additionalProperties": true, "description": "Account information associated with a team member with access to the Plaid dashboard.", "properties": { "created_at": { "$ref": "#/components/schemas/Timestamp" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id": { "$ref": "#/components/schemas/DashboardUserID" }, "status": { "$ref": "#/components/schemas/DashboardUserStatus" } }, "required": [ "id", "created_at", "email_address", "status" ], "title": "DashboardUser", "type": "object" }, "DashboardUserGetRequest": { "description": "Request input for fetching a dashboard user", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "dashboard_user_id": { "$ref": "#/components/schemas/DashboardUserID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "dashboard_user_id" ], "type": "object" }, "DashboardUserGetResponse": { "additionalProperties": true, "description": "Account information associated with a team member with access to the Plaid dashboard.", "properties": { "created_at": { "$ref": "#/components/schemas/Timestamp" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id": { "$ref": "#/components/schemas/DashboardUserID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/DashboardUserStatus" } }, "required": [ "id", "created_at", "email_address", "status", "request_id" ], "type": "object" }, "DashboardUserID": { "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`.", "example": "54350110fedcbaf01234ffee", "title": "DashboardUserID", "type": "string" }, "DashboardUserIDNullable": { "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`.", "example": "54350110fedcbaf01234ffee", "nullable": true, "title": "DashboardUserID", "type": "string" }, "DashboardUserListRequest": { "description": "Request input for listing dashboard users", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "DashboardUserListResponse": { "additionalProperties": true, "description": "Paginated list of dashboard users", "properties": { "dashboard_users": { "description": "List of dashboard users", "items": { "$ref": "#/components/schemas/DashboardUser" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "dashboard_users", "next_cursor", "request_id" ], "type": "object" }, "DashboardUserStatus": { "description": "The current status of the user.", "enum": [ "invited", "active", "deactivated" ], "example": "active", "type": "string" }, "DataSources": { "description": "A description of the source of data for a given product/data type.\n\n`INSTITUTION`: The institution supports this product, and the data was provided by the institution.\n`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.\n`USER`: The institution does not support this product, and the data was manually provided by the user.", "enum": [ "INSTITUTION", "INSTITUTION_MASK", "USER" ], "type": "string" }, "DateRange": { "additionalProperties": true, "description": "A date range with a start and end date", "example": { "beginning": "1966-06-01", "ending": "1966-06-30" }, "properties": { "beginning": { "$ref": "#/components/schemas/ISO8601Date" }, "ending": { "$ref": "#/components/schemas/ISO8601Date" } }, "required": [ "beginning", "ending" ], "title": "DateRange", "type": "object" }, "Deductions": { "additionalProperties": true, "description": "An object with the deduction information found on a paystub.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/DeductionsBreakdown" }, "type": "array" }, "subtotals": { "deprecated": true, "items": { "$ref": "#/components/schemas/Total" }, "type": "array" }, "total": { "$ref": "#/components/schemas/DeductionsTotal" }, "totals": { "deprecated": true, "items": { "$ref": "#/components/schemas/Total" }, "type": "array" } }, "required": [ "breakdown", "total" ], "title": "Deductions", "type": "object" }, "DeductionsBreakdown": { "additionalProperties": true, "description": "An object representing the deduction line items for the pay period", "properties": { "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the deduction line item", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the deduction", "format": "double", "nullable": true, "type": "number" } }, "title": "DeductionsBreakdown", "type": "object" }, "DeductionsTotal": { "additionalProperties": true, "description": "An object representing the total deductions for the pay period", "properties": { "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date total amount of the deductions", "format": "double", "nullable": true, "type": "number" } }, "title": "DeductionsTotal", "type": "object" }, "DefaultUpdateWebhook": { "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.\n\nThis 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.\n", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "description": "The `item_id` of the Item the webhook relates to.", "type": "string" }, "new_transactions": { "description": "The number of new transactions detected since the last time this webhook was fired.", "title": "DefaultUpdateWebhook", "type": "number" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "item_id", "environment" ], "title": "DefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_transactions": 3, "webhook_code": "DEFAULT_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "DepositoryAccount": { "description": "An account type holding cash, in which funds are deposited.", "properties": { "cash management": { "description": "A cash management account, typically a cash account at a brokerage", "type": "string" }, "cd": { "description": "Certificate of deposit account", "type": "string" }, "checking": { "description": "Checking account", "type": "string" }, "ebt": { "description": "An Electronic Benefit Transfer (EBT) account, used by certain public assistance programs to distribute funds (US only)", "type": "string" }, "hsa": { "description": "Health Savings Account (US only) that can only hold cash", "type": "string" }, "limited purpose checking": { "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.", "type": "string" }, "money market": { "description": "Money market account", "type": "string" }, "paypal": { "description": "PayPal depository account", "type": "string" }, "prepaid": { "description": "Prepaid debit card", "type": "string" }, "savings": { "description": "Savings account", "type": "string" } }, "required": [ "checking", "savings", "hsa", "cd", "money market", "paypal", "prepaid", "cash management", "ebt", "limited purpose checking" ], "title": "DepositoryAccount", "type": "string" }, "DepositoryAccountSubtype": { "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" ], "type": "string" }, "DepositoryAccountSubtypes": { "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" }, "title": "DepositoryAccountSubtypes", "type": "array" }, "DepositoryFilter": { "additionalProperties": true, "description": "A filter to apply to `depository`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/DepositoryAccountSubtypes" }, "limited_purpose_types": { "$ref": "#/components/schemas/LimitedPurposeTypes" } }, "required": [ "account_subtypes" ], "title": "DepositoryFilter", "type": "object" }, "DeprecatedClientUserID": { "deprecated": true, "description": "Specifying `user.client_user_id` is deprecated. Please provide `client_user_id` at the root level instead.", "example": "your-db-id-3b24110", "nullable": true, "title": "CustomerReference", "type": "string" }, "DetailedOriginator": { "additionalProperties": true, "description": "Originator and their status.", "properties": { "client_id": { "description": "Originator's client ID.", "type": "string" }, "company_name": { "description": "The company name of the end customer.", "type": "string" }, "outstanding_requirements": { "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" }, "type": "array" }, "transfer_diligence_status": { "$ref": "#/components/schemas/TransferDiligenceStatus" } }, "required": [ "client_id", "transfer_diligence_status", "company_name" ], "title": "Originator", "type": "object" }, "DetectedAccount": { "additionalProperties": true, "description": "A possible account detected to be associated with a transaction user.", "properties": { "account_subtype": { "description": "The detected subtype of the account, based on the transactions to/from the institution.", "nullable": true, "type": "string" }, "account_type": { "description": "The detected account type (depository, credit, loan, investment etc.).", "nullable": true, "type": "string" }, "newest_transaction_amount": { "description": "Amount of the most recent transaction associated with this detected account type at this financial institution.", "format": "double", "type": "number" }, "newest_transaction_date": { "description": "The date of the newest transaction associated with this detected account type at this financial institution.", "format": "date", "type": "string" }, "oldest_transaction_date": { "description": "The date of the oldest transaction associated with this detected account type at this financial institution.", "format": "date", "type": "string" }, "total_inflows": { "description": "Sum of inflow amounts associated with this detected account type at this financial institution.", "format": "double", "type": "number" }, "total_outflows": { "description": "Sum of outflow amounts associated with this detected account type at this financial institution.", "format": "double", "type": "number" }, "transaction_count": { "description": "The number of transactions associated with this detected account type at this financial institution.", "type": "integer" } }, "required": [ "account_type", "account_subtype", "transaction_count", "total_outflows", "total_inflows" ], "type": "object" }, "DeviceId": { "description": "Device Id associated with the device used during the previous link session", "properties": { "id": { "description": "Identifier for the device", "type": "string" }, "type": { "type": "integer" } }, "type": "object" }, "DistributionBreakdown": { "additionalProperties": true, "description": "Information about the accounts that the payment was distributed to.", "properties": { "account_name": { "description": "Name of the account for the given distribution.", "nullable": true, "type": "string" }, "bank_name": { "description": "The name of the bank that the payment is being deposited to.", "nullable": true, "type": "string" }, "current_amount": { "description": "The amount distributed to this account.", "format": "double", "nullable": true, "type": "number" }, "current_pay": { "$ref": "#/components/schemas/Pay" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.", "nullable": true, "type": "string" }, "type": { "description": "Type of the account that the paystub was sent to (e.g. 'checking').", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "title": "DistributionBreakdown", "type": "object" }, "DocType": { "description": "The type of document.\n\n`DOCUMENT_TYPE_PAYSTUB`: A paystub.\n\n`DOCUMENT_TYPE_BANK_STATEMENT`: A bank statement.\n\n`DOCUMENT_TYPE_US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.\n\n`DOCUMENT_TYPE_US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military.\n\n`DOCUMENT_TYPE_US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military.\n\n`DOCUMENT_TYPE_US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military.\n\n`DOCUMENT_TYPE_GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.\n\n`DOCUMENT_TYPE_NONE`: Used to indicate that there is no underlying document for the data.\n\n`DOCUMENT_TYPE_PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid.\n\n`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" ], "title": "DocType", "type": "string" }, "DocumentAnalysis": { "additionalProperties": true, "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.", "properties": { "aamva_verification": { "$ref": "#/components/schemas/AAMVAAnalysis" }, "authenticity": { "$ref": "#/components/schemas/DocumentAuthenticityMatchCode" }, "extracted_data": { "$ref": "#/components/schemas/PhysicalDocumentExtractedDataAnalysis" }, "fraud_analysis_details": { "$ref": "#/components/schemas/FraudAnalysisDetails" }, "human_review": { "$ref": "#/components/schemas/HumanReview" }, "image_quality": { "$ref": "#/components/schemas/ImageQuality" }, "image_quality_details": { "$ref": "#/components/schemas/ImageQualityDetails" } }, "required": [ "authenticity", "image_quality", "extracted_data", "fraud_analysis_details", "image_quality_details", "aamva_verification" ], "type": "object" }, "DocumentAuthenticityMatchCode": { "description": "High level summary of whether the document in the provided image matches the formatting rules and security checks for the associated jurisdiction.\n\nFor example, most identity documents have formatting rules like the following:\n\n\nThe image of the person's face must have a certain contrast in order to highlight skin tone\n\n\nThe subject in the document's image must remove eye glasses and pose in a certain way\n\n\nThe informational fields (name, date of birth, ID number, etc.) must be colored and aligned according to specific rules\n\n\nSecurity features like watermarks and background patterns must be present\n\nSo 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.", "enum": [ "match", "partial_match", "no_match", "no_data" ], "example": "match", "type": "string" }, "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.", "enum": [ "match", "partial_match", "no_match", "no_data" ], "example": "match", "type": "string" }, "DocumentImage__Back": { "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.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg", "nullable": true, "type": "string" }, "DocumentImage__CroppedBack": { "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.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg", "nullable": true, "type": "string" }, "DocumentImage__CroppedFront": { "description": "Temporary URL that expires after 60 seconds for downloading a cropped image containing just the front of the document.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg", "nullable": true, "type": "string" }, "DocumentImage__Face": { "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.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg", "nullable": true, "type": "string" }, "DocumentImage__Front": { "description": "Temporary URL that expires after 60 seconds for downloading the uncropped original image of the front of the document.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg", "nullable": true, "type": "string" }, "DocumentMetadata": { "additionalProperties": true, "description": "An object representing metadata from the end user's uploaded document.", "properties": { "doc_id": { "description": "An identifier of the document that is also present in the paystub response.", "type": "string" }, "doc_type": { "$ref": "#/components/schemas/DocType" }, "name": { "description": "The name of the document.", "type": "string" }, "status": { "description": "The processing status of the document.\n\n`PROCESSING_COMPLETE`: The document was successfully processed.\n\n`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.\n\n`UNKNOWN` or `null`: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "UNKNOWN", "PROCESSING_COMPLETE", "DOCUMENT_ERROR", null ] } }, "title": "DocumentMetadata", "type": "object" }, "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.", "enum": [ "match", "partial_match", "no_match", "no_data" ], "example": "match", "type": "string" }, "DocumentRiskSignal": { "additionalProperties": true, "description": "Details about a certain reason as to why a document could potentially be fraudulent.", "nullable": true, "properties": { "actual_value": { "description": "The derived value obtained in the risk signal calculation process for this field", "nullable": true, "title": "DocumentRiskSignalActualValue", "type": "string" }, "expected_value": { "description": "The expected value of the field, as seen on the document", "nullable": true, "title": "DocumentRiskSignalExpectedValue", "type": "string" }, "field": { "description": "The field which the risk signal was computed for", "nullable": true, "title": "DocumentRiskSignalField", "type": "string" }, "has_fraud_risk": { "description": "A flag used to quickly identify if the signal indicates that this field is authentic or fraudulent", "nullable": true, "title": "DocumentRiskSignalHasFraudRisk", "type": "boolean" }, "institution_metadata": { "$ref": "#/components/schemas/DocumentRiskSignalInstitutionMetadata" }, "page_number": { "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, "title": "DocumentRiskPageNumber", "type": "integer" }, "signal_description": { "description": "A human-readable explanation providing more detail into the particular risk signal", "nullable": true, "title": "DocumentRiskSignalDescription", "type": "string" }, "type": { "description": "The type of risk found in the risk signal check.", "nullable": true, "title": "DocumentRiskSignalResultType", "type": "string", "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" ] } }, "required": [ "type", "field", "has_fraud_risk", "institution_metadata", "expected_value", "actual_value", "signal_description", "page_number" ], "title": "DocumentRiskSignal", "type": "object" }, "DocumentRiskSignalInstitutionMetadata": { "additionalProperties": true, "description": "An object which contains additional metadata about the institution used to compute the verification attribute", "nullable": true, "properties": { "item_id": { "$ref": "#/components/schemas/ItemId" } }, "required": [ "item_id" ], "title": "DocumentRiskSignalInstitutionMetadata", "type": "object" }, "DocumentRiskSignalsObject": { "additionalProperties": true, "description": "Object containing fraud risk data for a set of income documents.", "properties": { "account_id": { "description": "ID of the payroll provider account.", "nullable": true, "type": "string" }, "multi_document_risk_signals": { "description": "Array of risk signals computed from a set of uploaded documents and the associated documents' metadata", "items": { "$ref": "#/components/schemas/MultiDocumentRiskSignal" }, "type": "array" }, "single_document_risk_signals": { "description": "Array of document metadata and associated risk signals per document", "items": { "$ref": "#/components/schemas/SingleDocumentRiskSignal" }, "type": "array" } }, "required": [ "account_id", "single_document_risk_signals", "multi_document_risk_signals" ], "title": "DocumentRiskSignalsObject", "type": "object" }, "DocumentRiskSummary": { "additionalProperties": true, "description": "A summary across all risk signals associated with a document", "properties": { "risk_score": { "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, "type": "number" } }, "required": [ "risk_score" ], "title": "DocumentRiskSummary", "type": "object" }, "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.", "enum": [ "success", "failed", "manually_approved" ], "example": "success", "title": "DocumentStatus", "type": "string" }, "DocumentaryVerification": { "additionalProperties": true, "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`.", "nullable": true, "properties": { "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.\n\nNote: 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.", "items": { "$ref": "#/components/schemas/DocumentaryVerificationDocument" }, "type": "array" }, "status": { "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", "type": "string" } }, "required": [ "status", "documents" ], "title": "DocumentaryVerification", "type": "object" }, "DocumentaryVerificationDocument": { "additionalProperties": true, "description": "Images, extracted data, and analysis from a user's identity document", "properties": { "analysis": { "$ref": "#/components/schemas/DocumentAnalysis" }, "attempt": { "description": "The `attempt` field begins with 1 and increments with each subsequent document upload.", "example": 1, "type": "integer" }, "extracted_data": { "$ref": "#/components/schemas/PhysicalDocumentExtractedData" }, "images": { "$ref": "#/components/schemas/PhysicalDocumentImages" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "status": { "$ref": "#/components/schemas/DocumentStatus" } }, "required": [ "analysis", "attempt", "extracted_data", "images", "status", "redacted_at" ], "type": "object" }, "Earnings": { "additionalProperties": true, "description": "An object representing both a breakdown of earnings on a paystub and the total earnings.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/EarningsBreakdown" }, "type": "array" }, "subtotals": { "deprecated": true, "items": { "$ref": "#/components/schemas/EarningsTotal" }, "type": "array" }, "total": { "$ref": "#/components/schemas/EarningsTotal" }, "totals": { "deprecated": true, "items": { "$ref": "#/components/schemas/EarningsTotal" }, "type": "array" } }, "title": "Earnings", "type": "object" }, "EarningsBreakdown": { "additionalProperties": true, "description": "An object representing the earnings line items for the pay period.", "properties": { "canonical_description": { "$ref": "#/components/schemas/EarningsBreakdownCanonicalDescription" }, "current_amount": { "description": "Raw amount of the earning line item.", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the earning line item.", "nullable": true, "type": "string" }, "hours": { "description": "Number of hours applicable for this earning.", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "rate": { "description": "Hourly rate applicable for this earning.", "format": "double", "nullable": true, "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the deduction.", "format": "double", "nullable": true, "type": "number" } }, "title": "EarningsBreakdown", "type": "object" }, "EarningsBreakdownCanonicalDescription": { "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, "type": "string" }, "EarningsTotal": { "additionalProperties": true, "description": "An object representing both the current pay period and year to date amount for an earning category.", "properties": { "current_amount": { "description": "Total amount of the earnings for this pay period", "format": "double", "nullable": true, "type": "number" }, "current_pay": { "$ref": "#/components/schemas/Pay" }, "hours": { "description": "Total number of hours worked for this pay period", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The total year-to-date amount of the earnings", "format": "double", "nullable": true, "type": "number" }, "ytd_pay": { "$ref": "#/components/schemas/Pay" } }, "title": "EarningsTotal", "type": "object" }, "Email": { "additionalProperties": true, "description": "An object representing an email address", "properties": { "data": { "description": "The email address.", "type": "string" }, "primary": { "description": "When `true`, identifies the email address as the primary email on an account.", "type": "boolean" }, "type": { "description": "The type of email account as described by the financial institution.", "enum": [ "primary", "secondary", "other" ], "type": "string" } }, "required": [ "data", "primary", "type" ], "title": "Email", "type": "object" }, "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).", "example": "user@example.com", "format": "email", "title": "EmailAddress", "type": "string" }, "EmailAddressMatchScore": { "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.", "nullable": true, "properties": { "score": { "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.", "nullable": true, "type": "integer" } }, "title": "EmailAddressMatchScore", "type": "object" }, "EmailAddressNullable": { "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).", "example": "user@example.com", "format": "email", "nullable": true, "title": "EmailAddress", "type": "string" }, "Employee": { "additionalProperties": true, "description": "Data about the employee.", "properties": { "address": { "$ref": "#/components/schemas/PaystubAddress" }, "marital_status": { "description": "Marital status of the employee - either `single` or `married`.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "single", "married" ] }, "name": { "description": "The name of the employee.", "nullable": true, "type": "string" }, "taxpayer_id": { "$ref": "#/components/schemas/TaxpayerID" } }, "required": [ "name", "address" ], "title": "Employee", "type": "object" }, "EmployeeIncomeSummaryFieldString": { "allOf": [ { "$ref": "#/components/schemas/IncomeSummaryFieldString" }, { "additionalProperties": true, "type": "object" } ], "description": "The name of the employee, as reported on the paystub." }, "Employer": { "additionalProperties": true, "description": "Data about the employer.", "properties": { "address": { "$ref": "#/components/schemas/AddressDataNullable" }, "confidence_score": { "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).", "format": "double", "type": "number" }, "employer_id": { "description": "Plaid's unique identifier for the employer.", "type": "string" }, "name": { "description": "The name of the employer", "type": "string" } }, "required": [ "employer_id", "name", "address", "confidence_score" ], "title": "Employer", "type": "object" }, "EmployerIncomeSummaryFieldString": { "allOf": [ { "$ref": "#/components/schemas/IncomeSummaryFieldString" }, { "additionalProperties": true, "type": "object" } ], "description": "The name of the employer, as reported on the paystub." }, "EmployerVerification": { "additionalProperties": true, "description": "An object containing employer data.", "properties": { "name": { "description": "Name of employer.", "nullable": true, "type": "string" } }, "title": "EmployerVerification", "type": "object" }, "EmployersSearchRequest": { "description": "EmployersSearchRequest defines the request schema for `/employers/search`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "products": { "description": "The Plaid products the returned employers should support. Currently, this field must be set to `\"deposit_switch\"`.", "items": { "type": "string" }, "type": "array" }, "query": { "description": "The employer name to be searched for.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "query", "products" ], "title": "EmployersSearchRequest", "type": "object" }, "EmployersSearchResponse": { "additionalProperties": true, "description": "EmployersSearchResponse defines the response schema for `/employers/search`.", "properties": { "employers": { "description": "A list of employers matching the search criteria.", "items": { "$ref": "#/components/schemas/Employer" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "employers", "request_id" ], "title": "EmployersSearchResponse", "type": "object" }, "EmploymentDetails": { "additionalProperties": true, "deprecated": true, "description": "An object representing employment details found on a paystub.", "properties": { "annual_salary": { "$ref": "#/components/schemas/Pay" }, "hire_date": { "description": "Date on which the employee was hired, in the YYYY-MM-DD format.", "format": "date", "nullable": true, "type": "string" } }, "title": "EmploymentDetails", "type": "object" }, "EmploymentSourceType": { "description": "The types of source employment data that users should be able to share", "enum": [ "bank", "payroll" ], "title": "EmploymentSourceType", "type": "string" }, "EmploymentVerification": { "additionalProperties": true, "description": "An object containing proof of employment data for an individual", "properties": { "employer": { "$ref": "#/components/schemas/EmployerVerification" }, "end_date": { "description": "End of employment, if applicable. Provided in ISO 8601 format (YYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "platform_ids": { "$ref": "#/components/schemas/PlatformIds" }, "start_date": { "description": "Start of employment in ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" }, "status": { "$ref": "#/components/schemas/EmploymentVerificationStatus" }, "title": { "description": "Current title of employee.", "nullable": true, "type": "string" } }, "title": "EmploymentVerification", "type": "object" }, "EmploymentVerificationGetRequest": { "description": "EmploymentVerificationGetRequest defines the request schema for `/employment/verification/get`.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "title": "EmploymentVerificationGetRequest", "type": "object" }, "EmploymentVerificationGetResponse": { "additionalProperties": true, "description": "EmploymentVerificationGetResponse defines the response schema for `/employment/verification/get`.", "properties": { "employments": { "description": "A list of employment verification summaries.", "items": { "$ref": "#/components/schemas/EmploymentVerification" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "employments", "request_id" ], "title": "EmploymentVerificationGetResponse", "type": "object" }, "EmploymentVerificationStatus": { "description": "Current employment status.", "enum": [ "EMPLOYMENT_STATUS_ACTIVE", "EMPLOYMENT_STATUS_INACTIVE", null ], "nullable": true, "type": "string" }, "Enhancements": { "additionalProperties": true, "description": "A grouping of the Plaid produced transaction enhancement fields.", "properties": { "category": { "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" }, "type": "array" }, "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).", "nullable": true, "type": "string" }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "counterparties": { "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" }, "type": "array" }, "location": { "$ref": "#/components/schemas/Location" }, "logo_url": { "description": "The URL of a logo associated with this transaction, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "merchant_name": { "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, "type": "string" }, "payment_channel": { "$ref": "#/components/schemas/PaymentChannel" }, "personal_finance_category": { "$ref": "#/components/schemas/PersonalFinanceCategory" }, "personal_finance_category_icon_url": { "description": "The URL of an icon associated with the primary personal finance category. The icon will always be 100\u00d7100 pixel PNG file.", "type": "string" }, "website": { "description": "The website associated with this transaction, if available.", "nullable": true, "type": "string" } }, "required": [ "payment_channel", "location", "category", "category_id" ], "title": "Enhancements", "type": "object" }, "EnrichTransactionDirection": { "description": "The direction of the transaction from the perspective of the account holder:\n\n`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.)\n\n`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.)", "enum": [ "INFLOW", "OUTFLOW" ], "title": "EnrichTransactionDirection", "type": "string" }, "Enrichments": { "additionalProperties": true, "description": "A grouping of the Plaid produced transaction enrichment fields.", "properties": { "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "counterparties": { "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" }, "type": "array" }, "entity_id": { "description": "A unique, stable, Plaid-generated ID that maps to the primary counterparty.", "nullable": true, "type": "string" }, "legacy_category": { "deprecated": true, "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).\n\nWe recommend using the `personal_finance_category` for transaction categorization to obtain the best results.", "items": { "type": "string" }, "nullable": true, "type": "array" }, "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).\n\nWe recommend using the `personal_finance_category` for transaction categorization to obtain the best results.", "nullable": true, "type": "string" }, "location": { "$ref": "#/components/schemas/Location" }, "logo_url": { "description": "The URL of a logo associated with this transaction, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "merchant_name": { "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, "type": "string" }, "payment_channel": { "$ref": "#/components/schemas/PaymentChannel" }, "personal_finance_category": { "$ref": "#/components/schemas/PersonalFinanceCategory" }, "personal_finance_category_icon_url": { "description": "The URL of an icon associated with the primary personal finance category. The icon will always be 100\u00d7100 pixel PNG file.", "type": "string" }, "phone_number": { "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, "type": "string" }, "website": { "description": "The website associated with this transaction.", "nullable": true, "type": "string" } }, "required": [ "payment_channel", "location", "personal_finance_category", "personal_finance_category_icon_url", "logo_url", "website", "counterparties", "merchant_name", "phone_number" ], "title": "Enrichments", "type": "object" }, "EntityDocument": { "additionalProperties": true, "description": "An official document, usually issued by a governing body or institution, with an associated identifier.", "properties": { "number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValue" }, "type": { "$ref": "#/components/schemas/EntityDocumentType" } }, "required": [ "type", "number" ], "title": "EntityDocument", "type": "object" }, "EntityDocumentType": { "description": "The kind of official document represented by this object.\n\n`bik` - Russian bank code\n\n`business_number` - A number that uniquely identifies the business within a category of businesses\n\n`imo` - Number assigned to the entity by the International Maritime Organization\n\n`other` - Any document not covered by other categories\n\n`swift` - Number identifying a bank and branch.\n\n`tax_id` - Identification issued for the purpose of collecting taxes", "enum": [ "bik", "business_number", "imo", "other", "swift", "tax_id" ], "example": "swift", "title": "EntityDocumentType", "type": "string" }, "EntityScreeningHitAnalysis": { "additionalProperties": true, "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" }, "search_terms_version": { "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, "type": "integer" }, "urls": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "search_terms_version" ], "type": "object" }, "EntityScreeningHitData": { "additionalProperties": true, "description": "Information associated with the entity watchlist hit", "properties": { "documents": { "description": "Documents associated with the watchlist hit", "items": { "$ref": "#/components/schemas/EntityScreeningHitDocumentsItems" }, "type": "array" }, "email_addresses": { "description": "Email addresses associated with the watchlist hit", "items": { "$ref": "#/components/schemas/EntityScreeningHitEmailsItems" }, "type": "array" }, "locations": { "description": "Locations associated with the watchlist hit", "items": { "$ref": "#/components/schemas/GenericScreeningHitLocationItems" }, "type": "array" }, "names": { "description": "Names associated with the watchlist hit", "items": { "$ref": "#/components/schemas/EntityScreeningHitNamesItems" }, "type": "array" }, "phone_numbers": { "description": "Phone numbers associated with the watchlist hit", "items": { "$ref": "#/components/schemas/EntityScreeningHitsPhoneNumberItems" }, "type": "array" }, "urls": { "description": "URLs associated with the watchlist hit", "items": { "$ref": "#/components/schemas/EntityScreeningHitUrlsItems" }, "type": "array" } }, "type": "object" }, "EntityScreeningHitDocumentsItems": { "additionalProperties": true, "description": "Analyzed documents for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/EntityDocument" } }, "type": "object" }, "EntityScreeningHitEmails": { "additionalProperties": true, "description": "Email address information for the associated entity watchlist hit", "properties": { "email_address": { "$ref": "#/components/schemas/EmailAddress" } }, "required": [ "email_address" ], "type": "object" }, "EntityScreeningHitEmailsItems": { "additionalProperties": true, "description": "Analyzed emails for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/EntityScreeningHitEmails" } }, "type": "object" }, "EntityScreeningHitNames": { "additionalProperties": true, "description": "Name information for the associated entity watchlist hit", "properties": { "full": { "description": "The full name of the entity.", "example": "Al Qaida", "type": "string" }, "is_primary": { "description": "Primary names are those most commonly used to refer to this entity. Only one name will ever be marked as primary.", "example": false, "type": "boolean" }, "weak_alias_determination": { "$ref": "#/components/schemas/WeakAliasDetermination" } }, "required": [ "full", "is_primary", "weak_alias_determination" ], "type": "object" }, "EntityScreeningHitNamesItems": { "additionalProperties": true, "description": "Analyzed names for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/EntityScreeningHitNames" } }, "type": "object" }, "EntityScreeningHitPhoneNumbers": { "additionalProperties": true, "description": "Phone number information associated with the entity screening hit", "properties": { "phone_number": { "$ref": "#/components/schemas/WatchlistScreeningPhoneNumber" }, "type": { "$ref": "#/components/schemas/PhoneType" } }, "required": [ "type", "phone_number" ], "type": "object" }, "EntityScreeningHitUrls": { "additionalProperties": true, "description": "URLs associated with the entity screening hit", "properties": { "url": { "$ref": "#/components/schemas/URL" } }, "required": [ "url" ], "type": "object" }, "EntityScreeningHitUrlsItems": { "additionalProperties": true, "description": "Analyzed URLs for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/EntityScreeningHitUrls" } }, "type": "object" }, "EntityScreeningHitsPhoneNumberItems": { "additionalProperties": true, "description": "Analyzed phone numbers for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/EntityScreeningHitPhoneNumbers" } }, "type": "object" }, "EntityScreeningStatusUpdatedWebhook": { "additionalProperties": true, "description": "Fired when an entity screening status has changed, which can occur manually via the dashboard or during ongoing monitoring.", "properties": { "entity_screening_id": { "description": "The ID of the associated entity screening.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`STATUS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`ENTITY_SCREENING`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "entity_screening_id", "environment" ], "title": "EntityScreeningStatusUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "entity_screening_id": "entscr_52xR9LKo77r1Np", "environment": "production", "webhook_code": "STATUS_UPDATED", "webhook_type": "ENTITY_SCREENING" } } }, "EntityWatchlistCode": { "description": "Shorthand identifier for a specific screening list for entities.\n `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List\n `CA_CON`: Government of Canada Consolidated List of Sanctions\n `EU_CON`: European External Action Service Consolidated List\n `IZ_SOE`: State Owned Enterprise List\n `IZ_UNC`: United Nations Consolidated Sanctions\n `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals\n `US_CAP`: US OFAC Correspondent Account or Payable-Through Account Sanctions\n `US_FSE`: US OFAC Foreign Sanctions Evaders\n `US_MBS`: US Non-SDN Menu-Based Sanctions\n `US_SDN`: US Specially Designated Nationals List\n `US_SSI`: US OFAC Sectoral Sanctions Identifications\n `US_CMC`: US OFAC Non-SDN Chinese Military-Industrial Complex List\n `US_UVL`: Bureau of Industry and Security Unverified List\n `US_SAM`: US System for Award Management Exclusion List\n `US_TEL`: US Terrorist Exclusion List\n `UK_HMC`: Foreign, Commonwealth & Development Office UK Sanctions List", "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", "title": "EntityWatchlistCode", "type": "string" }, "EntityWatchlistProgram": { "additionalProperties": true, "description": "A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of entities.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "is_archived": { "$ref": "#/components/schemas/ProgramArchived" }, "is_rescanning_enabled": { "description": "Indicator specifying whether the program is enabled and will perform daily rescans.", "example": true, "type": "boolean" }, "lists_enabled": { "description": "Watchlists enabled for the associated program", "example": [ "EU_CON" ], "items": { "$ref": "#/components/schemas/EntityWatchlistCode" }, "type": "array", "uniqueItems": true }, "name": { "$ref": "#/components/schemas/EntityWatchlistScreeningProgramName" }, "name_sensitivity": { "$ref": "#/components/schemas/ProgramNameSensitivity" } }, "required": [ "id", "created_at", "is_rescanning_enabled", "lists_enabled", "name", "name_sensitivity", "audit_trail", "is_archived" ], "title": "EntityWatchlistProgram", "type": "object" }, "EntityWatchlistProgramID": { "description": "ID of the associated entity program.", "example": "entprg_2eRPsDnL66rZ7H", "title": "EntityWatchlistProgramID", "type": "string" }, "EntityWatchlistScreening": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "search_terms": { "$ref": "#/components/schemas/EntityWatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "id", "search_terms", "assignee", "status", "client_user_id", "audit_trail" ], "title": "EntityWatchlistScreening", "type": "object" }, "EntityWatchlistScreeningHit": { "additionalProperties": true, "description": "Data from a government watchlist that has been attached to the screening.", "properties": { "analysis": { "$ref": "#/components/schemas/EntityScreeningHitAnalysis" }, "data": { "$ref": "#/components/schemas/EntityScreeningHitData" }, "first_active": { "$ref": "#/components/schemas/Timestamp" }, "historical_since": { "$ref": "#/components/schemas/TimestampNullable" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningHitID" }, "inactive_since": { "$ref": "#/components/schemas/TimestampNullable" }, "list_code": { "$ref": "#/components/schemas/EntityWatchlistCode" }, "plaid_uid": { "$ref": "#/components/schemas/InternalUID" }, "review_status": { "$ref": "#/components/schemas/WatchlistScreeningHitStatus" }, "source_uid": { "$ref": "#/components/schemas/SourceUID" }, "sub_programs": { "description": "Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN\nentries these are the program codes published in the SDN list (for example `SDGT` for Specially\nDesignated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins,\n`IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice,\nso callers should treat unknown values as opaque strings rather than enum members.\n", "example": [ "SDGT", "SDNTK" ], "items": { "example": "SDGT", "type": "string" }, "type": "array" } }, "required": [ "id", "review_status", "first_active", "inactive_since", "historical_since", "list_code", "plaid_uid", "source_uid", "sub_programs" ], "title": "EntityWatchlistScreeningHit", "type": "object" }, "EntityWatchlistScreeningHitID": { "description": "ID of the associated entity screening hit.", "example": "enthit_52xR9LKo77r1Np", "title": "EntityWatchlistScreeningHitID", "type": "string" }, "EntityWatchlistScreeningID": { "description": "ID of the associated entity screening.", "example": "entscr_52xR9LKo77r1Np", "title": "EntityWatchlistScreeningID", "type": "string" }, "EntityWatchlistScreeningName": { "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.", "example": "Al-Qaida", "title": "EntityWatchlistScreeningName", "type": "string" }, "EntityWatchlistScreeningProgramName": { "description": "A name for the entity program to define its purpose. For example, \"High Risk Organizations\" or \"Applicants\".", "example": "Sample Program", "title": "EntityWatchlistScreeningProgramName", "type": "string" }, "EntityWatchlistScreeningReview": { "additionalProperties": true, "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\nagainst hits attached to the watchlist screening, or both.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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" }, "type": "array" }, "dismissed_hits": { "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" }, "type": "array" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningReviewID" } }, "required": [ "id", "confirmed_hits", "dismissed_hits", "comment", "audit_trail" ], "title": "EntityWatchlistScreeningReview", "type": "object" }, "EntityWatchlistScreeningReviewID": { "description": "ID of the associated entity review.", "example": "entrev_aCLNRxK3UVzn2r", "title": "EntityWatchlistScreeningReviewID", "type": "string" }, "EntityWatchlistScreeningSearchTerms": { "additionalProperties": true, "description": "Search terms associated with an entity used for searching against watchlists", "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCodeNullable" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValueNullable" }, "email_address": { "$ref": "#/components/schemas/EmailAddressNullable" }, "entity_watchlist_program_id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "legal_name": { "$ref": "#/components/schemas/EntityWatchlistScreeningName" }, "phone_number": { "$ref": "#/components/schemas/WatchlistScreeningPhoneNumberNullable" }, "url": { "$ref": "#/components/schemas/URLNullable" }, "version": { "description": "The current version of the search terms. Starts at `1` and increments with each edit to `search_terms`.", "example": 1, "type": "integer" } }, "required": [ "entity_watchlist_program_id", "legal_name", "document_number", "email_address", "country", "phone_number", "url", "version" ], "type": "object" }, "EntityWatchlistSearchTerms": { "description": "Search inputs for creating an entity watchlist screening", "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCodeNullable" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValueNullable" }, "email_address": { "$ref": "#/components/schemas/EmailAddressNullable" }, "entity_watchlist_program_id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "legal_name": { "$ref": "#/components/schemas/EntityWatchlistScreeningName" }, "phone_number": { "$ref": "#/components/schemas/WatchlistScreeningPhoneNumberNullable" }, "url": { "$ref": "#/components/schemas/URLNullable" } }, "required": [ "entity_watchlist_program_id", "legal_name" ], "type": "object" }, "EwaAttributes": { "additionalProperties": { "nullable": true, "type": "number" }, "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.", "nullable": true, "type": "object", "x-hidden-from-docs": true }, "EwaScore": { "additionalProperties": true, "description": "EwaScore represents an earned wage access score for a specific advance amount range.", "properties": { "highest_amount": { "description": "Float value representing the upper bound (exclusive) of the advance amount range associated with a specific EWA score.", "format": "float", "type": "number" }, "lowest_amount": { "description": "Float value representing the lower bound (inclusive) of the advance amount range associated with a specific EWA score.", "format": "float", "type": "number" }, "score": { "description": "EWA score for the corresponding amount bucket. Scores range from 1-99, where a higher score indicates a higher likelihood of repayment.", "type": "integer" } }, "type": "object", "x-hidden-from-docs": true }, "ExpenditureInsights": { "additionalProperties": true, "description": "Comprehensive analysis of spending patterns, categorizing expenses into essential, non-essential, and other categories.", "nullable": true, "properties": { "cash_flow": { "allOf": [ { "$ref": "#/components/schemas/AmountWithCurrencyWithMonthlyAverage" } ], "description": "Net cash flow for the period (inflows minus outflows), including a monthly average." }, "essential_expenditure": { "$ref": "#/components/schemas/ExpenditureSummary" }, "non_essential_expenditure": { "$ref": "#/components/schemas/ExpenditureSummary" }, "other": { "$ref": "#/components/schemas/ExpenditureSummary" }, "outlier_transactions": { "$ref": "#/components/schemas/OutlierTransactionsInsights" }, "total_expenditure": { "$ref": "#/components/schemas/ExpenditureSummary" }, "transfers_out": { "$ref": "#/components/schemas/ExpenditureSummary" } }, "title": "ExpenditureInsights", "type": "object" }, "ExpenditureSummary": { "additionalProperties": true, "description": "Summary statistics for a specific expenditure category, including total amount, monthly average, and percentage of income.", "nullable": true, "properties": { "amount": { "description": "The total value of all the aggregated transactions in this expenditure category.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "percentage_of_income": { "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.\nFor example, a value of 100 represents that 100% of the inflows were spent on transactions that fall into this expenditure group.\nIf there's no available income for the given time period, this field value will be `-1`.", "format": "double", "nullable": true, "type": "number" }, "top_categories": { "description": "The primary credit categories of the expenses within the given time window, across all the accounts in the report.\n\nThe categories are sorted in descending order by the total value spent.\nSee the [category taxonomy](https://plaid.com/documents/credit-category-taxonomy.csv) for a full listing of category IDs.", "items": { "$ref": "#/components/schemas/CategoryExpenses" }, "type": "array" }, "transactions_count": { "description": "The total number of outflow transactions in this expenses group, within the given time window across all the accounts in the report.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "ExpenditureSummary", "type": "object" }, "ExpirationDate": { "description": "A description of whether the associated document was expired when the verification was performed.\n\nNote: In the case where an expiration date is not present on the document or failed to be extracted, this value will be `no_data`.", "enum": [ "not_expired", "expired", "no_data" ], "example": "not_expired", "type": "string" }, "ExtendedRecipientMetadata": { "allOf": [ { "$ref": "#/components/schemas/FDXRecipientMetadata" }, { "properties": { "category": { "description": "The category that the recipient falls under", "title": "Category", "type": "string" }, "connection_count": { "description": "The number of Data Partner consumers that are connected to the recipient for the specific Data Partner", "title": "Connection Count", "type": "integer" }, "joined_date": { "description": "The date at which the recipient gained production access to Plaid", "example": "2021-07-15", "format": "date", "title": "Joined Date", "type": "string" } }, "required": [ "category", "joined_date", "connection_count" ], "type": "object" } ], "description": "Plaid and FDX-defined recipient metadata fields", "title": "ExtendedRecipientMetadata" }, "ExternalPaymentInitiationConsentOptions": { "deprecated": true, "description": "(Deprecated) Additional payment consent options. Please use `payer_details` to specify the account.", "nullable": true, "properties": { "bacs": { "$ref": "#/components/schemas/PaymentInitiationOptionalRestrictionBacs" }, "iban": { "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.", "maxLength": 34, "minLength": 15, "nullable": true, "type": "string" }, "request_refund_details": { "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.", "nullable": true, "type": "boolean" } }, "title": "ExternalPaymentInitiationConsentOptions", "type": "object" }, "ExternalPaymentOptions": { "description": "Additional payment options", "nullable": true, "properties": { "bacs": { "$ref": "#/components/schemas/PaymentInitiationOptionalRestrictionBacs" }, "iban": { "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.", "maxLength": 34, "minLength": 15, "nullable": true, "type": "string" }, "request_refund_details": { "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.", "nullable": true, "type": "boolean" }, "scheme": { "$ref": "#/components/schemas/PaymentScheme" } }, "title": "PaymentOptions", "type": "object" }, "ExternalPaymentRefundDetails": { "description": "Details about external payment refund", "nullable": true, "properties": { "bacs": { "$ref": "#/components/schemas/RecipientBACSNullable" }, "iban": { "description": "The International Bank Account Number (IBAN) for the account.", "nullable": true, "type": "string" }, "name": { "description": "The name of the account holder.", "type": "string" } }, "required": [ "name", "iban", "bacs" ], "title": "ExternalPaymentRefundDetails", "type": "object" }, "ExternalPaymentScheduleBase": { "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": { "adjusted_start_date": { "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`.", "format": "date", "nullable": true, "type": "string" }, "end_date": { "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`.\nIf 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.", "format": "date", "nullable": true, "type": "string" }, "interval": { "$ref": "#/components/schemas/PaymentScheduleInterval" }, "interval_execution_day": { "description": "The day of the interval on which to schedule the payment.\n\nIf the payment interval is weekly, `interval_execution_day` should be an integer from 1 (Monday) to 7 (Sunday).\n\nIf 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": { "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`.\n\nIf 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.", "format": "date", "type": "string" } }, "title": "ExternalPaymentScheduleBase", "type": "object" }, "ExternalPaymentScheduleGet": { "allOf": [ { "$ref": "#/components/schemas/ExternalPaymentScheduleBase" }, { "type": "object" } ], "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, "required": [ "adjusted_start_date", "end_date", "interval", "interval_execution_day", "start_date" ], "title": "ExternalPaymentScheduleGet" }, "ExternalPaymentScheduleRequest": { "allOf": [ { "$ref": "#/components/schemas/ExternalPaymentScheduleBase" }, { "type": "object" } ], "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.", "required": [ "start_date", "interval", "interval_execution_day" ], "title": "ExternalPaymentScheduleRequest" }, "FDXConsentGrant": { "additionalProperties": true, "description": "An FDX consent grant.", "properties": { "createdTime": { "description": "When the consent was initially granted", "format": "date-time", "type": "string" }, "expirationTime": { "description": "When the consent grant will expire. Omitted when the grant has no expiration.", "format": "date-time", "type": "string" }, "id": { "description": "The persistent identifier of the consent grant", "type": "string" }, "parties": { "description": "Non-end-user parties participating in the consent grant (Data Recipient, Data Provider, Data Access Platform).", "items": { "$ref": "#/components/schemas/FDXParty" }, "type": "array" }, "resources": { "description": "Permissioned resource entries. Omitted when there are no resources.", "items": { "$ref": "#/components/schemas/FDXConsentGrantResource" }, "type": "array" }, "status": { "$ref": "#/components/schemas/FDXConsentGrantStatus" }, "updatedTime": { "description": "When the consent grant was last updated", "format": "date-time", "type": "string" } }, "required": [ "id", "status", "createdTime", "updatedTime", "parties" ], "type": "object" }, "FDXConsentGrantResource": { "additionalProperties": true, "description": "One permissioned resource on a consent grant.", "properties": { "dataClusters": { "description": "Names of clusters of data elements permissioned.", "items": { "$ref": "#/components/schemas/FDXDataCluster" }, "type": "array" }, "resourceId": { "description": "Identifier of the resource permissioned.", "type": "string" }, "resourceType": { "$ref": "#/components/schemas/FDXConsentResourceType" } }, "required": [ "resourceType", "resourceId", "dataClusters" ], "type": "object" }, "FDXConsentGrantStatus": { "description": "Current status of a consent grant. One of `ACTIVE`, `REVOKED`, `EXPIRED`.", "enum": [ "ACTIVE", "REVOKED", "EXPIRED" ], "title": "FDX Consent Grant Status", "type": "string" }, "FDXConsentResourceType": { "description": "Type of resource permissioned on a consent grant.", "enum": [ "ACCOUNT", "CUSTOMER", "DOCUMENT" ], "title": "FDX Consent Resource Type", "type": "string" }, "FDXConsentRevocation": { "additionalProperties": true, "description": "Request body for PUT /fdx/consents/{consentId}/revocation.", "properties": { "initiator": { "$ref": "#/components/schemas/FDXPartyType" }, "otherReason": { "description": "Additional information or description of an `OTHER` reason", "type": "string" }, "reason": { "$ref": "#/components/schemas/FDXUpdateReason" }, "updatedTime": { "description": "When the revocation was effected on the initiator's side", "format": "date-time", "type": "string" } }, "required": [ "initiator", "reason" ], "type": "object" }, "FDXConsentRevocationRecord": { "additionalProperties": true, "description": "One revocation record on a consent grant, mirroring the FDX ConsentRevocation entity.", "properties": { "initiator": { "$ref": "#/components/schemas/FDXPartyType" }, "reason": { "$ref": "#/components/schemas/FDXUpdateReason" }, "status": { "$ref": "#/components/schemas/FDXConsentGrantStatus" }, "updatedTime": { "description": "When the consent grant was revoked", "format": "date-time", "type": "string" } }, "required": [ "status", "reason", "initiator", "updatedTime" ], "type": "object" }, "FDXConsentRevocations": { "additionalProperties": true, "description": "The revocation history of a consent grant. Response body for GET /fdx/consents/{consentId}/revocation.", "properties": { "revocations": { "description": "Revocation records for the consent grant, most recent first. Empty when the grant has never been revoked.", "items": { "$ref": "#/components/schemas/FDXConsentRevocationRecord" }, "type": "array" } }, "required": [ "revocations" ], "type": "object" }, "FDXContentTypes": { "description": "Types of document formats. (Suggested values)", "enum": [ "application/pdf", "image/gif", "image/jpeg", "image/tiff", "image/png", "application/json" ], "title": "Content Types", "type": "string" }, "FDXDataCluster": { "description": "Name of a cluster of data elements permissioned by a consent grant.", "enum": [ "ACCOUNT_BASIC", "ACCOUNT_DETAILED", "ACCOUNT_PAYMENTS", "BILLS", "CUSTOMER_CONTACT", "CUSTOMER_PERSONAL", "IMAGES", "INVESTMENTS", "NOTIFICATIONS", "PAYMENT_SUPPORT", "REWARDS", "STATEMENTS", "TAX", "TRANSACTIONS", "BALANCES", "SCHEDULED_PAYMENTS" ], "title": "FDX Data Cluster", "type": "string" }, "FDXEventStatus": { "description": "Current status of indicated entity after reported event change. Not all statuses will be supported on all entity types by all data providers", "enum": [ "ACTIVE", "EXPIRED", "REVOKED", "SUSPENDED" ], "title": "FDX Event Status", "type": "string" }, "FDXFiAttribute": { "additionalProperties": false, "description": "Financial Institution provider-specific attribute", "properties": { "name": { "description": "Name of attribute", "type": "string" }, "value": { "description": "Value of attribute", "type": "string" } }, "required": [ "name", "value" ], "title": "FI Attribute entity", "type": "object" }, "FDXHateoasLink": { "description": "REST application constraint (Hypermedia As The Engine Of Application State)", "properties": { "action": { "$ref": "#/components/schemas/FDXHateoasLinkAction" }, "href": { "description": "URL to invoke the action on the resource", "example": "https://api.fi.com/fdx/v4/accounts/12345", "format": "uri-reference", "type": "string" }, "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": { "description": "Content-types that can be used in the Accept header", "items": { "$ref": "#/components/schemas/FDXContentTypes" }, "type": "array" } }, "required": [ "href" ], "title": "HATEOAS Link", "type": "object" }, "FDXHateoasLinkAction": { "description": "HTTP Method to use for the request", "enum": [ "GET", "POST", "PATCH", "DELETE", "PUT" ], "type": "string" }, "FDXInitiatorFiAttribute": { "description": "Initiator Fi Attribute", "properties": { "name": { "type": "string" }, "value": { "$ref": "#/components/schemas/FDXPartyType" } }, "title": "Initiator Fi Attribute", "type": "object" }, "FDXLifecycleEvent": { "description": "Details of consent or payment network identifier or other entity's revocation request or other lifecycle status change event", "properties": { "initiator": { "$ref": "#/components/schemas/FDXPartyType" }, "otherReason": { "description": "Additional information or description of an `OTHER` reason", "type": "string" }, "reason": { "$ref": "#/components/schemas/FDXUpdateReason" }, "status": { "$ref": "#/components/schemas/FDXEventStatus" }, "updatedTime": { "$ref": "#/components/schemas/FDXTimestamp" } }, "title": "FDX Lifecycle Event entity", "type": "object" }, "FDXNotification": { "description": "Provides the base fields of a notification. Clients will read the `type` property to determine the expected notification payload.", "properties": { "category": { "$ref": "#/components/schemas/FDXNotificationCategory" }, "notificationId": { "description": "Id of notification", "type": "string" }, "notificationPayload": { "$ref": "#/components/schemas/FDXNotificationPayload" }, "priority": { "$ref": "#/components/schemas/FDXNotificationPriority" }, "publisher": { "$ref": "#/components/schemas/FDXParty" }, "sentOn": { "$ref": "#/components/schemas/FDXTimestamp" }, "severity": { "$ref": "#/components/schemas/FDXNotificationSeverity" }, "subscriber": { "$ref": "#/components/schemas/FDXParty" }, "subtype": { "description": "An optional initiator-defined event subtype code or description if the event type needs to be further categorized or described.", "type": "string" }, "type": { "$ref": "#/components/schemas/FDXNotificationType" }, "url": { "$ref": "#/components/schemas/FDXHateoasLink" } }, "required": [ "notificationId", "type", "sentOn", "category", "notificationPayload" ], "title": "FDX Notification entity", "type": "object" }, "FDXNotificationCategory": { "description": "Category of Notification", "enum": [ "SECURITY", "MAINTENANCE", "FRAUD", "CONSENT", "NEW_DATA", "TOKENIZED_ACCOUNT_NUMBER" ], "title": "Notification Category", "type": "string" }, "FDXNotificationPayload": { "description": "Custom key-value pairs payload for a notification", "properties": { "event": { "$ref": "#/components/schemas/FDXLifecycleEvent" }, "id": { "description": "ID for the origination entity related to the notification", "type": "string" }, "idType": { "$ref": "#/components/schemas/FDXNotificationPayloadIdType" } }, "title": "Notification Payload entity", "type": "object" }, "FDXNotificationPayloadIdType": { "description": "Type of entity causing origination of a notification", "enum": [ "ACCOUNT", "CUSTOMER", "PARTY", "MAINTENANCE", "CONSENT" ], "title": "Notification Payload Id Type", "type": "string" }, "FDXNotificationPriority": { "description": "Priority of notification", "enum": [ "HIGH", "MEDIUM", "LOW" ], "title": "Notification Priority", "type": "string" }, "FDXNotificationSeverity": { "description": "Severity level of notification", "enum": [ "EMERGENCY", "ALERT", "WARNING", "NOTICE", "INFO" ], "title": "Notification Severity", "type": "string" }, "FDXNotificationType": { "description": "Type of Notification", "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" ], "title": "Notification Type", "type": "string" }, "FDXParty": { "description": "FDX Participant - an entity or person that is a part of a FDX API transaction", "properties": { "homeUri": { "description": "URI for party, where an end user could learn more about the company or application involved in the data sharing chain", "format": "uri", "type": "string" }, "logoUri": { "description": "URI for a logo asset to be displayed to the end user", "format": "uri", "type": "string" }, "name": { "description": "Human recognizable common name", "type": "string" }, "registeredEntityId": { "description": "Registered id of party", "type": "string" }, "registeredEntityName": { "description": "Registered name of party", "type": "string" }, "registry": { "$ref": "#/components/schemas/FDXPartyRegistry" }, "type": { "$ref": "#/components/schemas/FDXPartyType" } }, "required": [ "name", "type" ], "title": "Party entity", "type": "object" }, "FDXPartyRegistry": { "description": "The registry containing the party's registration with name and id", "enum": [ "FDX", "GLEIF", "ICANN", "PRIVATE" ], "title": "Party Registry", "type": "string" }, "FDXPartyType": { "description": "Identifies the type of a party", "enum": [ "DATA_ACCESS_PLATFORM", "DATA_PROVIDER", "DATA_RECIPIENT", "INDIVIDUAL", "MERCHANT", "VENDOR" ], "title": "Party Type", "type": "string" }, "FDXRecipientMetadata": { "description": "Recipient metadata fields that are defined by FDX.", "properties": { "client_name": { "description": "The recipient name displayed by the Data Provider during the consent flow", "maxLength": 256, "title": "Client Name", "type": "string" }, "logo_uri": { "description": "Data Recipient Logo URL location", "nullable": true, "title": "Logo URI", "type": "string" }, "recipient_id": { "description": "The recipient identifier", "maxLength": 256, "title": "Recipient ID", "type": "string" }, "third_party_legal_name": { "description": "The legal name of the recipient", "maxLength": 256, "title": "Third Party Legal Name", "type": "string" } }, "required": [ "recipient_id", "client_name", "third_party_legal_name" ], "title": "FDXRecipientMetadata", "type": "object" }, "FDXTimestamp": { "description": "ISO 8601 date-time in format 'YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]' according to [IETF RFC3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)", "example": "2021-07-15T14:46:41.375Z", "format": "date-time", "title": "Timestamp", "type": "string" }, "FDXUpdateReason": { "description": "Reason for lifecycle event status change", "enum": [ "BUSINESS_RULE", "SECURITY_EVENT", "USER_ACTION", "OTHER" ], "title": "FDX Update Reason", "type": "string" }, "FallbackAuthMicrodepositAutoVerifiedWebhook": { "additionalProperties": true, "description": "Fires when an account is automatically verified using micro-deposits", "properties": { "account_id": { "description": "The external account ID associated with the micro-deposit", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "description": "The error code associated with the webhook.", "nullable": true, "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`AUTOMATICALLY_VERIFIED`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "item_id", "environment" ], "title": "FallbackAuthMicrodepositAutoVerifiedWebhook", "type": "object" }, "FallbackAuthMicrodepositVerificationExpiredWebhook": { "additionalProperties": true, "description": "Fires when an account has an expired verification when using micro-deposits", "properties": { "account_id": { "description": "The external account ID associated with the micro-deposit", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "description": "The error code associated with the webhook.", "nullable": true, "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`VERIFICATION_EXPIRED`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "item_id", "environment" ], "title": "FallbackAuthMicrodepositVerificationExpiredWebhook", "type": "object" }, "FamilyNameField": { "description": "A string with at least one non-whitespace character, with a max length of 100 characters.", "example": "Knope", "title": "FamilyName", "type": "string" }, "FinancialInstitutionInsights": { "description": "Insights surrounding external financial institution counterparties associated with a user.", "properties": { "detected_accounts": { "description": "Associated accounts, detected based on the nature of transfers to/from this institution.", "items": { "$ref": "#/components/schemas/DetectedAccount" }, "type": "array" }, "entity_id": { "description": "A unique, stable, Plaid-generated id that maps to the counterparty.", "nullable": true, "type": "string" }, "name": { "description": "Name of the financial institution counterparty.", "type": "string" }, "website": { "description": "The website associated with the counterparty.", "nullable": true, "type": "string" } }, "required": [ "name", "website", "detected_accounts" ], "type": "object" }, "FixedIncome": { "additionalProperties": true, "description": "Details about the fixed income security.", "nullable": true, "properties": { "face_value": { "description": "The face value that is paid upon maturity of the fixed income security, per unit of security.", "format": "double", "nullable": true, "type": "number" }, "issue_date": { "description": "The issue date for this fixed income security, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date", "nullable": true, "type": "string" }, "maturity_date": { "description": "The maturity date for this fixed income security, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date", "nullable": true, "type": "string" }, "yield_rate": { "$ref": "#/components/schemas/YieldRate" } }, "required": [ "yield_rate", "maturity_date", "issue_date", "face_value" ], "title": "FixedIncome", "type": "object" }, "ForecastedMonthlyIncome": { "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": { "deprecated": true, "description": "The forecasted monthly income at the time of subscription", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_amount": { "description": "The current forecasted monthly income", "type": "number" } }, "required": [ "current_amount" ], "title": "ForecastedMonthlyIncome", "type": "object" }, "Form1099Type": { "description": "Form 1099 Type", "enum": [ "FORM_1099_TYPE_UNKNOWN", "FORM_1099_TYPE_MISC", "FORM_1099_TYPE_K" ], "title": "Form1099Type", "type": "string" }, "ForwardedJSONResponse": { "additionalProperties": true, "description": "An arbitrary JSON payload sent to or received from the Plaid server. Internal use only.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "FraudAmount": { "additionalProperties": true, "description": "The amount and currency of the fraud or attempted fraud.\n`fraud_amount` should be omitted to indicate an unknown fraud amount.", "nullable": true, "properties": { "iso_currency_code": { "$ref": "#/components/schemas/ISOCurrencyCode" }, "value": { "description": "The amount value.\nThis value can be 0 to indicate no money was lost.\nMust not contain more than two digits of precision (e.g., `1.23`).", "example": 100, "format": "double", "type": "number" } }, "required": [ "iso_currency_code", "value" ], "title": "FraudAmount", "type": "object" }, "FraudAnalysisDetails": { "additionalProperties": true, "description": "Details about the fraud analysis performed on the document.", "nullable": true, "properties": { "detail_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "The outcome of the document detail check for correct styling and layout.\n\n`success` - The document passed all authenticity checks.\n\n`failed` - The document did not pass one or more authenticity checks." }, "image_composition_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "The outcome of the image composition check.\n\n`success` - The image is a valid physical document capture.\n\n`failed` - The image appears to be a photograph of a screen or a digital forgery." }, "integrity_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "The outcome of the integrity check for document security elements.\n\n`success` - Data is consistent across all checked security elements.\n\n`failed` - Inconsistencies were detected across one or more security elements." }, "issue_date_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcomeWithNoData" } ], "description": "The outcome of the issue date validity check.\n\n`success` - The issue date is valid.\n\n`failed` - The issue date is invalid or could not be verified.\n\n`no_data` - The check could not be performed due to insufficient data." }, "portrait_details_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "The outcome of the portrait details check including photo embedding and face landmark checks.\n\n`success` - The portrait passed all validity checks.\n\n`failed` - The portrait did not pass one or more validity checks." }, "portrait_presence_check": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "The outcome of the portrait presence check.\n\n`success` - A portrait was detected.\n\n`failed` - No portrait was detected." }, "type_supported": { "allOf": [ { "$ref": "#/components/schemas/FraudCheckOutcome" } ], "description": "Whether the submitted document type is supported for fraud analysis.\n\n`success` - The document type is supported.\n\n`failed` - The document type is not supported." } }, "required": [ "type_supported", "portrait_presence_check", "portrait_details_check", "image_composition_check", "integrity_check", "detail_check", "issue_date_check" ], "type": "object" }, "FraudAttributes": { "additionalProperties": true, "description": "Event fraud attributes as an arbitrary set of key-value pairs. The set of attributes returned varies by model.", "nullable": true, "type": "object" }, "FraudCheckOutcome": { "description": "The outcome of the fraud check.\n\n\n`success` - The check passed.\n\n`failed` - The check did not pass.", "enum": [ "success", "failed" ], "type": "string" }, "FraudCheckOutcomeWithNoData": { "description": "The outcome of the fraud check.\n\n\n`success` - The check passed.\n\n`failed` - The check did not pass.\n\n`no_data` - The check could not be performed due to insufficient data.", "enum": [ "success", "failed", "no_data" ], "type": "string" }, "GSEReportType": { "description": "The types of GSE Reports supported by the Plaid API", "enum": [ "VOA", "EMPLOYMENT_REFRESH" ], "type": "string" }, "GamblingIndicators": { "additionalProperties": true, "description": "Insights into gambling-related transactions, including frequency, amounts, and top merchants.", "nullable": true, "properties": { "amount": { "description": "The total value of transactions that fall into the `GAMBLING` credit category, across all the accounts in the report.", "format": "double", "nullable": true, "type": "number" }, "days_since_last_occurrence": { "description": "The number of days since the last transaction that falls into the `GAMBLING` category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "monthly_summaries": { "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" }, "type": "array" }, "percentage_of_income": { "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.\nIf there's no available income for the given time period, this field value will be `-1`", "format": "double", "nullable": true, "type": "number" }, "top_merchants": { "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.\n\nIf the user has not spent money on any merchants in the given time window, this list will be empty.", "items": { "type": "string" }, "type": "array" }, "transactions_count": { "description": "The total number of transactions that fall into the `GAMBLING` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "GamblingIndicators", "type": "object" }, "GenericCountryCode": { "description": "Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form.", "example": "US", "title": "GenericCountryCode", "type": "string" }, "GenericCountryCodeNullable": { "description": "Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form.", "example": "US", "nullable": true, "title": "GenericCountryCode", "type": "string" }, "GenericScreeningHitLocationItems": { "additionalProperties": true, "description": "Analyzed location information for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/WatchlistScreeningHitLocations" } }, "type": "object" }, "GetRecipientResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/FDXRecipientMetadata" } ], "description": "GetRecipientResponse defines the response schema for `/fdx/recipient/{recipientId}`", "type": "object" }, "GetRecipientsResponse": { "additionalProperties": true, "description": "GetRecipientsResponse defines the response schema for `/fdx/recipients`", "properties": { "recipients": { "items": { "$ref": "#/components/schemas/ExtendedRecipientMetadata" }, "type": "array" } }, "required": [ "recipients" ], "type": "object" }, "GivenNameField": { "description": "A string with at least one non-whitespace character, with a max length of 100 characters.", "example": "Leslie", "title": "GivenName", "type": "string" }, "HealthIncident": { "additionalProperties": true, "description": "A status health incident", "properties": { "end_date": { "description": "The end date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2020-10-30T15:26:48Z\"`.", "format": "date-time", "nullable": true, "type": "string" }, "incident_updates": { "description": "Updates on the health incident.", "items": { "$ref": "#/components/schemas/IncidentUpdate" }, "type": "array" }, "start_date": { "description": "The start date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2020-10-30T15:26:48Z\"`.", "format": "date-time", "type": "string" }, "title": { "description": "The title of the incident", "type": "string" } }, "required": [ "start_date", "title", "incident_updates" ], "title": "HealthIncident", "type": "object" }, "HiddenMatchSummaryCode": { "description": "An enum indicating the match type between data provided by user and data checked against an external data source.\n\n\n`match` indicates that the provided input data was a strong match against external data.\n\n`partial_match` indicates the data approximately matched against external data. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.\n\n`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.\n\n`no_data` indicates that Plaid was unable to find external data to compare against the provided input data.\n\n`no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user.", "enum": [ "match", "partial_match", "no_match", "no_data", "no_input" ], "example": "match", "title": "MatchSummaryCode", "type": "string", "x-hidden-from-docs": true }, "HistoricalAnnualIncome": { "additionalProperties": true, "description": "An object representing the historical annual income amount.", "properties": { "baseline_amount": { "deprecated": true, "description": "The historical annual income at the time of subscription", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_amount": { "description": "The current historical annual income", "type": "number" } }, "required": [ "current_amount" ], "title": "HistoricalAnnualIncome", "type": "object" }, "HistoricalBalance": { "additionalProperties": true, "description": "An object representing a balance held by an account in the past", "properties": { "current": { "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.\n\nIf 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.", "format": "double", "type": "number" }, "date": { "description": "The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD)", "format": "date", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "required": [ "date", "current", "iso_currency_code", "unofficial_currency_code" ], "title": "HistoricalBalance", "type": "object" }, "HistoricalUpdateWebhook": { "additionalProperties": true, "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.\n\nThis 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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_transactions": { "description": "The number of new transactions available", "type": "number" }, "webhook_code": { "description": "`HISTORICAL_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "item_id", "environment" ], "title": "HistoricalUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_transactions": 231, "webhook_code": "HISTORICAL_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "Holding": { "additionalProperties": true, "description": "A securities holding at an institution.", "properties": { "account_id": { "description": "The Plaid `account_id` associated with the holding.", "type": "string" }, "cost_basis": { "description": "The total cost basis of the holding (e.g., the total amount spent to acquire all assets currently in the holding).", "format": "double", "nullable": true, "type": "number" }, "institution_price": { "description": "The last price given by the institution for this security.", "format": "double", "type": "number" }, "institution_price_as_of": { "description": "The date at which `institution_price` was current.", "format": "date", "nullable": true, "type": "string" }, "institution_price_datetime": { "description": "Date and time at which `institution_price` was current, in ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ).\n\nThis 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).\n", "format": "date-time", "nullable": true, "type": "string" }, "institution_value": { "description": "The value of the holding, as reported by the institution.", "format": "double", "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "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.", "format": "double", "type": "number" }, "security_id": { "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.", "type": "string" }, "tax_lots": { "description": "Per-lot acquisition data for this holding. An empty array indicates the institution does not provide lot-level data.", "items": { "$ref": "#/components/schemas/HoldingTaxLot" }, "type": "array" }, "unofficial_currency_code": { "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.\n\nSee the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.\n", "nullable": true, "type": "string" }, "vested_quantity": { "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).", "format": "double", "nullable": true, "type": "number" }, "vested_value": { "description": "The value of the vested holdings as reported by the institution.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "account_id", "security_id", "institution_price", "institution_value", "cost_basis", "quantity", "iso_currency_code", "unofficial_currency_code" ], "title": "Holding", "type": "object" }, "HoldingTaxLot": { "additionalProperties": true, "description": "A single acquisition lot within a holding.", "properties": { "cost_basis": { "description": "The total cost basis of this lot, inclusive of any fees.", "format": "double", "nullable": true, "type": "number" }, "current_value": { "description": "The current market value of this lot.", "format": "double", "nullable": true, "type": "number" }, "institution_lot_id": { "description": "The financial institution's identifier for this lot. Null if the institution does not provide a lot identifier.", "nullable": true, "type": "string" }, "original_purchase_datetime": { "description": "The date and time this lot was acquired, in ISO 8601 format. Null if the institution does not provide acquisition datetime data.", "format": "date-time", "nullable": true, "type": "string" }, "position_type": { "$ref": "#/components/schemas/HoldingTaxLotPositionType" }, "purchase_price": { "description": "The price per unit of the security at the time this lot was acquired.", "format": "double", "nullable": true, "type": "number" }, "quantity": { "description": "The number of units of the security in this lot.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "institution_lot_id", "original_purchase_datetime", "quantity", "purchase_price", "cost_basis", "current_value", "position_type" ], "title": "HoldingTaxLot", "type": "object" }, "HoldingTaxLotPositionType": { "description": "Indicates whether a holding lot position is long or short. Possible values are `LONG` and `SHORT`.", "enum": [ "LONG", "SHORT" ], "nullable": true, "title": "HoldingTaxLotPositionType", "type": "string" }, "HoldingsDefaultUpdateWebhook": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_holdings": { "description": "The number of new holdings reported since the last time this webhook was fired.", "type": "number" }, "updated_holdings": { "description": "The number of updated holdings reported since the last time this webhook was fired.", "type": "number" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`HOLDINGS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "new_holdings", "updated_holdings", "environment" ], "title": "HoldingsDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_holdings": 19, "updated_holdings": 0, "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "DEFAULT_UPDATE", "webhook_type": "HOLDINGS" } } }, "HoldingsOverride": { "description": "Specify the holdings on the account.", "properties": { "cost_basis": { "description": "The total cost basis of the holding (e.g., the total amount spent to acquire all assets currently in the holding).", "format": "double", "type": "number" }, "currency": { "description": "Either a valid `iso_currency_code` or `unofficial_currency_code`", "type": "string" }, "institution_price": { "description": "The last price given by the institution for this security", "format": "double", "type": "number" }, "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.", "format": "date", "type": "string" }, "quantity": { "description": "The total quantity of the asset held, as reported by the financial institution.", "format": "double", "type": "number" }, "security": { "$ref": "#/components/schemas/SecurityOverride" } }, "required": [ "institution_price", "quantity", "currency", "security" ], "title": "HoldingsOverride", "type": "object" }, "HostedLinkCompletionRedirectURI": { "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.\n", "type": "string" }, "HostedLinkDeliveryMethod": { "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.\n'sms' will deliver via SMS. Must pass `user.phone_number`.\n'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.\n", "enum": [ "sms", "email" ], "type": "string" }, "HostedLinkIsMobileApp": { "default": false, "description": "This indicates whether the client is opening Hosted Link in a mobile app in an `AsWebAuthenticationSession` or Chrome custom tab.\n", "type": "boolean" }, "HostedLinkURLLifetimeSeconds": { "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.\n", "type": "integer" }, "HostedMMDVerificationWebhook": { "additionalProperties": true, "description": "Contains the state of an SMS Same-Day Micro-deposits verification session.", "properties": { "account_id": { "description": "The external account ID of the affected account", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "status": { "description": "The final status of the Same-Day Micro-deposits verification. Will always be `MANUALLY_VERIFIED` or `VERIFICATION_FAILED`.", "type": "string" }, "webhook_code": { "description": "`SMS_MICRODEPOSITS_VERIFICATION`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "item_id", "account_id" ], "title": "HostedMMDVerificationWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "sandbox", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "status": "MANUALLY_VERIFIED", "webhook_code": "SMS_MICRODEPOSITS_VERIFICATION", "webhook_type": "AUTH" } } }, "HumanReview": { "additionalProperties": true, "description": "Details about the human review check, which refers to a check that is performed by a document specialist.", "nullable": true, "properties": { "status": { "$ref": "#/components/schemas/HumanReviewStatus" } }, "required": [ "status" ], "type": "object", "x-hidden-from-docs": true }, "HumanReviewStatus": { "description": "The outcome of the human review check, when available. The following values are possible:\n\n\n`success` - The document passed the check.\n\n`failed` - The document failed the check.\n\n`no_data` - The document was submitted, but the document specialist review was not completed in time.", "enum": [ "success", "failed", "no_data" ], "type": "string" }, "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).", "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", "type": "string" }, "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).", "example": "123456789", "title": "IDNumberValue", "type": "string" }, "IDVProtectEvent": { "additionalProperties": true, "description": "Information about a Protect event including Trust Index score and fraud attributes.", "nullable": true, "properties": { "event_id": { "description": "The event ID.", "example": "ptevt_7AJYTMFxRUgJ", "type": "string" }, "fraud_attributes": { "$ref": "#/components/schemas/FraudAttributes" }, "timestamp": { "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", "format": "date-time", "type": "string" }, "trust_index": { "$ref": "#/components/schemas/TrustIndex" } }, "required": [ "event_id", "timestamp", "trust_index", "fraud_attributes" ], "type": "object" }, "IPAddress": { "description": "An IPv4 or IPv6 address.", "example": "192.0.2.42", "nullable": true, "title": "IPAddress", "type": "string" }, "ISO8601Date": { "description": "A date in the format YYYY-MM-DD (RFC 3339 Section 5.6).", "example": "1990-05-29", "format": "date", "title": "ISO8601Date", "type": "string" }, "ISO8601DateNullable": { "description": "A date in the format YYYY-MM-DD (RFC 3339 Section 5.6).", "example": "1990-05-29", "format": "date", "nullable": true, "title": "ISO8601Date", "type": "string" }, "ISOCurrencyCode": { "description": "An ISO-4217 currency code.", "enum": [ "USD" ], "title": "ISOCurrencyCode", "type": "string" }, "IdempotencyFlag": { "description": "An optional flag specifying how you would like Plaid to handle attempts to create an Identity Verification when an Identity Verification already exists for the provided `client_user_id` and `template_id`.\nIf idempotency is enabled, Plaid will return the existing Identity Verification. If idempotency is disabled, Plaid will reject the request with a `400 Bad Request` status code if an Identity Verification already exists for the supplied `client_user_id` and `template_id`.", "example": true, "nullable": true, "title": "IdempotencyFlag", "type": "boolean" }, "IdentityDefaultUpdateWebhook": { "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": { "account_ids_with_updated_identity": { "$ref": "#/components/schemas/AccountIdsWithUpdatedIdentity" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`IDENTITY`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "error", "account_ids_with_updated_identity", "environment" ], "title": "IdentityDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_ids_with_updated_identity": { "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp": [ "ADDRESSES" ] }, "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "DEFAULT_UPDATE", "webhook_type": "IDENTITY" } } }, "IdentityDocumentMetadata": { "additionalProperties": true, "description": "In closed beta. Object representing metadata pertaining to the document.", "properties": { "is_account_number_match": { "description": "Boolean field indicating if the uploaded document's account number matches the account number we have on file", "type": "boolean" }, "last_updated": { "format": "date-time", "type": "string" }, "uploaded_at": { "format": "date-time", "type": "string" } }, "title": "IdentityDocumentMetadata", "type": "object" }, "IdentityDocumentUpload": { "description": "Document object with metadata of the uploaded document", "properties": { "document_id": { "description": "A UUID identifying the document.", "type": "string" }, "metadata": { "$ref": "#/components/schemas/IdentityDocumentUploadMetadata" }, "risk_insights": { "$ref": "#/components/schemas/IdentityDocumentUploadRiskInsights" } }, "title": "IdentityDocumentUpload", "type": "object" }, "IdentityDocumentUploadMetadata": { "additionalProperties": true, "description": "Metadata pertaining to the document.", "properties": { "document_type": { "description": "The submitted document type. Currently, this will always be `BANK_STATEMENT`.", "nullable": true, "type": "string" }, "is_account_number_match": { "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, "type": "boolean" }, "last_updated": { "description": "The timestamp when the document was last updated.", "format": "date-time", "type": "string" }, "page_count": { "description": "The number of pages in the uploaded document.", "nullable": true, "type": "integer" }, "uploaded_at": { "description": "The timestamp when the document was originally uploaded.", "format": "date-time", "type": "string" } }, "title": "IdentityDocumentUploadMetadata", "type": "object" }, "IdentityDocumentUploadRiskInsights": { "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_signals": { "description": "An array of risk signals.", "items": { "$ref": "#/components/schemas/IdentityDocumentUploadRiskSignal" }, "title": "RiskSignals", "type": "array" }, "risk_summary": { "$ref": "#/components/schemas/IdentityDocumentUploadRiskSummary" } }, "title": "IdentityDocumentUploadRiskInsights", "type": "object" }, "IdentityDocumentUploadRiskSignal": { "additionalProperties": true, "description": "Risk signals tied to the document", "properties": { "has_fraud_risk": { "description": "Indicates whether fraud risk was detected on the field.", "nullable": true, "type": "boolean" }, "page_number": { "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, "type": "integer" }, "signal_description": { "description": "A human-readable explanation providing more detail about the specific risk signal.", "nullable": true, "type": "string" }, "type": { "description": "The type of risk found.", "nullable": true, "type": "string", "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" ] } }, "title": "IdentityDocumentUploadRiskSignal", "type": "object" }, "IdentityDocumentUploadRiskSummary": { "additionalProperties": true, "description": "Risk summary of an uploaded document.", "properties": { "risk_score": { "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, "type": "integer" } }, "title": "IdentityDocumentUploadRiskSummary", "type": "object" }, "IdentityDocumentsUploadsGetRequest": { "description": "IdentityDocumentsUploadsGetRequest defines the request schema for `/identity/documents/uploads/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/IdentityDocumentsUploadsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "title": "IdentityDocumentsUploadsGetRequest" }, "IdentityDocumentsUploadsGetRequestOptions": { "description": "An optional object to filter `/identity/documents/uploads/get` results.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item.\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "IdentityDocumentsUploadsGetResponse": { "additionalProperties": true, "description": "IdentityDocumentsUploadsGetResponse defines the response schema for `/identity/documents/uploads/get`", "properties": { "accounts": { "description": "The accounts for which Identity data has been requested", "items": { "$ref": "#/components/schemas/AccountIdentityDocumentUpload" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "item", "request_id" ], "type": "object" }, "IdentityGetRequest": { "description": "IdentityGetRequest defines the request schema for `/identity/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/IdentityGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "IdentityGetRequestOptions": { "description": "An optional object to filter `/identity/get` results.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item.\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "IdentityGetResponse": { "additionalProperties": true, "description": "IdentityGetResponse defines the response schema for `/identity/get`", "properties": { "accounts": { "description": "The accounts for which Identity data has been requested", "items": { "$ref": "#/components/schemas/AccountIdentity" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "item", "request_id" ], "type": "object" }, "IdentityMatchRequest": { "description": "IdentityMatchRequest defines the request schema for `/identity/match`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/IdentityMatchRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/IdentityMatchUser" } }, "required": [ "access_token" ], "type": "object" }, "IdentityMatchRequestOptions": { "description": "An optional object to filter `/identity/match` results", "properties": { "account_ids": { "description": "An array of `account_ids` to perform fuzzy match", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "IdentityMatchResponse": { "additionalProperties": true, "description": "IdentityMatchResponse defines the response schema for `/identity/match`", "properties": { "accounts": { "description": "The accounts for which Identity match has been requested", "items": { "$ref": "#/components/schemas/AccountIdentityMatchScore" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "item", "request_id" ], "type": "object" }, "IdentityMatchUser": { "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": { "address": { "$ref": "#/components/schemas/AddressDataNullableNoRequiredFields" }, "email_address": { "description": "The user's email address.", "nullable": true, "type": "string" }, "legal_name": { "description": "The user's full legal name.", "nullable": true, "type": "string" }, "phone_number": { "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.", "nullable": true, "type": "string" } }, "title": "IdentityMatchUser", "type": "object" }, "IdentityRefreshRequest": { "description": "IdentityRefreshRequest defines the request schema for `/identity/refresh`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "IdentityRefreshResponse": { "additionalProperties": true, "description": "IdentityRefreshResponse defines the response schema for `/identity/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "IdentityUpdateTypes": { "description": "The possible types of identity data that may have changed.", "enum": [ "PHONES", "ADDRESSES", "EMAILS", "NAMES" ], "type": "string" }, "IdentityVerification": { "additionalProperties": true, "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.", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserIDNullable" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "documentary_verification": { "$ref": "#/components/schemas/DocumentaryVerification" }, "id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "kyc_check": { "$ref": "#/components/schemas/KYCCheckDetails" }, "latest_scored_protect_event": { "$ref": "#/components/schemas/IDVProtectEvent" }, "previous_attempt_id": { "$ref": "#/components/schemas/PreviousIdentityVerificationAttemptID" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "risk_check": { "$ref": "#/components/schemas/RiskCheckDetails" }, "selfie_check": { "$ref": "#/components/schemas/SelfieCheck" }, "shareable_url": { "$ref": "#/components/schemas/ShareableURL" }, "status": { "$ref": "#/components/schemas/IdentityVerificationStatus" }, "steps": { "$ref": "#/components/schemas/IdentityVerificationStepSummary" }, "template": { "$ref": "#/components/schemas/IdentityVerificationTemplateReference" }, "user": { "$ref": "#/components/schemas/IdentityVerificationUserData" }, "user_id": { "$ref": "#/components/schemas/PlaidUserIDNullable" }, "verify_sms": { "$ref": "#/components/schemas/VerifySMSDetails" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualIDNullable" } }, "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" ], "type": "object" }, "IdentityVerificationAutofillAddress": { "additionalProperties": true, "description": "Even if an address has been autofilled, some fields may be null depending on the region's addressing system. For example:\n\nAddresses from the United Kingdom will not include a region\n\nAddresses from Hong Kong will not include postal code", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/CityNullable" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "po_box": { "$ref": "#/components/schemas/POBoxStatus" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/Street" }, "street2": { "$ref": "#/components/schemas/Street2" }, "type": { "$ref": "#/components/schemas/AddressPurposeLabel" } }, "required": [ "street", "street2", "city", "region", "postal_code", "country", "po_box", "type" ], "type": "object" }, "IdentityVerificationAutofillCreateRequest": { "description": "Request input to autofill an Identity Verification", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "identity_verification_id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "identity_verification_id" ], "type": "object" }, "IdentityVerificationAutofillCreateResponse": { "additionalProperties": true, "description": "Autofill represents unverified customer information. This needs to be confirmed by the customer before using.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/IdentityVerificationAutofillStatus" }, "user": { "$ref": "#/components/schemas/IdentityVerificationAutofillUserData" } }, "required": [ "status", "user", "request_id" ], "type": "object" }, "IdentityVerificationAutofillStatus": { "description": "A status enum indicating whether autofill succeeded or failed.", "enum": [ "success", "failed" ], "example": "success", "title": "IdentityVerificationAutofillStatus", "type": "string" }, "IdentityVerificationAutofillUserData": { "additionalProperties": true, "description": "User information that was autofilled. All this information should be confirmed by the user before using.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/IdentityVerificationAutofillAddress" }, "id_number": { "$ref": "#/components/schemas/UserIDNumber" }, "name": { "$ref": "#/components/schemas/IdentityVerificationResponseUserName" } }, "required": [ "name", "address", "id_number" ], "type": "object" }, "IdentityVerificationConsent": { "default": false, "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.\n\nIf `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.", "example": true, "title": "IdentityVerificationConsent", "type": "boolean" }, "IdentityVerificationCreateRequest": { "description": "Request schema for `/identity_verification/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "gave_consent": { "$ref": "#/components/schemas/IdentityVerificationConsent" }, "is_idempotent": { "$ref": "#/components/schemas/IdempotencyFlag" }, "is_shareable": { "description": "A flag specifying whether you would like Plaid to expose a shareable URL for the verification being created.", "example": true, "title": "EnableSharableLink", "type": "boolean" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "template_id": { "$ref": "#/components/schemas/IdentityVerificationTemplateID" }, "user": { "$ref": "#/components/schemas/IdentityVerificationCreateRequestUser" }, "user_id": { "$ref": "#/components/schemas/PlaidUserID" } }, "required": [ "is_shareable", "template_id", "gave_consent" ], "type": "object" }, "IdentityVerificationCreateRequestUser": { "description": "User information collected outside of Link, most likely via your own onboarding process.\n\nEach of the following identity fields are optional:\n\n`email_address`\n\n`phone_number`\n\n`date_of_birth`\n\n`name`\n\n`address`\n\n`id_number`\n\nSpecifically, 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.\nProviding 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.\nIf 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.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/UserAddress" }, "client_user_id": { "$ref": "#/components/schemas/DeprecatedClientUserID" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id_number": { "$ref": "#/components/schemas/UserIDNumber" }, "name": { "$ref": "#/components/schemas/IdentityVerificationRequestUserName" }, "phone_number": { "$ref": "#/components/schemas/IdentityVerificationUserPhoneNumber" } }, "type": "object" }, "IdentityVerificationCreateResponse": { "additionalProperties": true, "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.", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserIDNullable" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "documentary_verification": { "$ref": "#/components/schemas/DocumentaryVerification" }, "id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "kyc_check": { "$ref": "#/components/schemas/KYCCheckDetails" }, "latest_scored_protect_event": { "$ref": "#/components/schemas/IDVProtectEvent" }, "previous_attempt_id": { "$ref": "#/components/schemas/PreviousIdentityVerificationAttemptID" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_check": { "$ref": "#/components/schemas/RiskCheckDetails" }, "selfie_check": { "$ref": "#/components/schemas/SelfieCheck" }, "shareable_url": { "$ref": "#/components/schemas/ShareableURL" }, "status": { "$ref": "#/components/schemas/IdentityVerificationStatus" }, "steps": { "$ref": "#/components/schemas/IdentityVerificationStepSummary" }, "template": { "$ref": "#/components/schemas/IdentityVerificationTemplateReference" }, "user": { "$ref": "#/components/schemas/IdentityVerificationUserData" }, "user_id": { "$ref": "#/components/schemas/PlaidUserIDNullable" }, "verify_sms": { "$ref": "#/components/schemas/VerifySMSDetails" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualIDNullable" } }, "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": { "additionalProperties": true, "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.\n\n`region`, and `postal_code` may be null based on the addressing system. For example:\n\nAddresses from the United Kingdom will not include a region\n\nAddresses from Hong Kong will not include postal code\n\nNote: Optical Character Recognition (OCR) technology may sometimes extract incorrect data from a document.", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/IdentityVerificationDocumentCity" }, "country": { "$ref": "#/components/schemas/IdentityVerificationDocumentCountryCode" }, "postal_code": { "$ref": "#/components/schemas/IdentityVerificationDocumentPostalCode" }, "region": { "$ref": "#/components/schemas/IdentityVerificationDocumentRegion" }, "street": { "$ref": "#/components/schemas/IdentityVerificationDocumentStreet" } }, "required": [ "street", "city", "region", "postal_code", "country" ], "type": "object" }, "IdentityVerificationDocumentCity": { "description": "City extracted from the document.", "example": "Pawnee", "title": "IdentityVerificationDocumentCity", "type": "string" }, "IdentityVerificationDocumentCountryCode": { "description": "Valid, capitalized, two-letter ISO code representing the country extracted from the document. Must be in ISO 3166-1 alpha-2 form.", "example": "US", "title": "IdentityVerificationDocumentCountryCode", "type": "string" }, "IdentityVerificationDocumentISO8601DateOfBirth": { "description": "A date extracted from the document in the format YYYY-MM-DD (RFC 3339 Section 5.6).", "example": "1990-05-29", "format": "date", "nullable": true, "title": "IdentityVerificationDocumentISO8601DateOfBirth", "type": "string" }, "IdentityVerificationDocumentISO8601ExpirationDate": { "description": "The expiration date of the document in the format YYYY-MM-DD (RFC 3339 Section 5.6).", "example": "2030-05-29", "format": "date", "nullable": true, "title": "IdentityVerificationDocumentISO8601ExpirationDate", "type": "string" }, "IdentityVerificationDocumentISO8601IssueDate": { "description": "The issue date of the document in the format YYYY-MM-DD (RFC 3339 Section 5.6).", "example": "2020-05-29", "format": "date", "nullable": true, "title": "IdentityVerificationDocumentISO8601IssueDate", "type": "string" }, "IdentityVerificationDocumentNameResponse": { "additionalProperties": true, "description": "The individual's name extracted from the document.", "nullable": true, "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "type": "object" }, "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.", "example": "46001", "nullable": true, "title": "IdentityVerificationDocumentPostalCode", "type": "string" }, "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.", "example": "IN", "nullable": true, "title": "IdentityVerificationDocumentRegion", "type": "string" }, "IdentityVerificationDocumentStreet": { "description": "The full street address extracted from the document.", "example": "123 Main St. Unit 42", "title": "IdentityVerificationDocumentStreet", "type": "string" }, "IdentityVerificationGetRequest": { "description": "Request input for fetching an Identity Verification", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "identity_verification_id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "identity_verification_id" ], "type": "object" }, "IdentityVerificationGetResponse": { "additionalProperties": true, "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.", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserIDNullable" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "documentary_verification": { "$ref": "#/components/schemas/DocumentaryVerification" }, "id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "kyc_check": { "$ref": "#/components/schemas/KYCCheckDetails" }, "latest_scored_protect_event": { "$ref": "#/components/schemas/IDVProtectEvent" }, "previous_attempt_id": { "$ref": "#/components/schemas/PreviousIdentityVerificationAttemptID" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_check": { "$ref": "#/components/schemas/RiskCheckDetails" }, "selfie_check": { "$ref": "#/components/schemas/SelfieCheck" }, "shareable_url": { "$ref": "#/components/schemas/ShareableURL" }, "status": { "$ref": "#/components/schemas/IdentityVerificationStatus" }, "steps": { "$ref": "#/components/schemas/IdentityVerificationStepSummary" }, "template": { "$ref": "#/components/schemas/IdentityVerificationTemplateReference" }, "user": { "$ref": "#/components/schemas/IdentityVerificationUserData" }, "user_id": { "$ref": "#/components/schemas/PlaidUserIDNullable" }, "verify_sms": { "$ref": "#/components/schemas/VerifySMSDetails" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualIDNullable" } }, "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": { "description": "ID of the associated Identity Verification attempt.", "example": "idv_52xR9LKo77r1Np", "title": "IdentityVerificationID", "type": "string" }, "IdentityVerificationListRequest": { "description": "Request input for listing Identity Verifications", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "template_id": { "$ref": "#/components/schemas/IdentityVerificationTemplateID" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/PlaidUserID" } ], "description": "A unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and the `client_user_id` are present in the request, the `user_id` must have been created from the provided `client_user_id`.", "nullable": true } }, "required": [ "template_id" ], "type": "object" }, "IdentityVerificationListResponse": { "additionalProperties": true, "description": "Paginated list of Plaid sessions.", "properties": { "identity_verifications": { "description": "List of Plaid sessions", "items": { "$ref": "#/components/schemas/IdentityVerification" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "identity_verifications", "next_cursor", "request_id" ], "type": "object" }, "IdentityVerificationRequestUser": { "additionalProperties": true, "description": "User information collected outside of Link, most likely via your own onboarding process.\n\nEach of the following identity fields are optional:\n\n`email_address`\n\n`phone_number`\n\n`date_of_birth`\n\n`name`\n\n`address`\n\n`id_number`\n\nSpecifically, 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.\nProviding 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.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/UserAddress" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "id_number": { "$ref": "#/components/schemas/UserIDNumber" }, "name": { "$ref": "#/components/schemas/IdentityVerificationRequestUserName" }, "phone_number": { "$ref": "#/components/schemas/IdentityVerificationUserPhoneNumber" } }, "type": "object" }, "IdentityVerificationRequestUserName": { "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, "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "type": "object" }, "IdentityVerificationResponseUserName": { "additionalProperties": true, "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.", "nullable": true, "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "type": "object" }, "IdentityVerificationRetriedWebhook": { "additionalProperties": true, "description": "Fired when an identity verification has been retried, which can be triggered via the dashboard or the API.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "identity_verification_id": { "description": "The ID of the associated Identity Verification attempt.", "type": "string" }, "webhook_code": { "description": "`RETRIED`", "type": "string" }, "webhook_type": { "description": "`IDENTITY_VERIFICATION`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "identity_verification_id", "environment" ], "title": "IdentityVerificationRetriedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "identity_verification_id": "idv_52xR9LKo77r1Np", "webhook_code": "RETRIED", "webhook_type": "IDENTITY_VERIFICATION" } } }, "IdentityVerificationRetryRequest": { "description": "Request input for retrying an identity verification attempt", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "is_shareable": { "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.", "example": true, "nullable": true, "title": "EnableSharableLink", "type": "boolean" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "steps": { "$ref": "#/components/schemas/IdentityVerificationRetryRequestStepsObject" }, "strategy": { "$ref": "#/components/schemas/Strategy" }, "template_id": { "$ref": "#/components/schemas/IdentityVerificationTemplateID" }, "user": { "$ref": "#/components/schemas/IdentityVerificationRequestUser" } }, "required": [ "client_user_id", "strategy", "template_id" ], "type": "object" }, "IdentityVerificationRetryRequestStepsObject": { "description": "Instructions for the `custom` retry strategy specifying which steps should be required or skipped.\n\n\nNote:\n\n\nThis field must be provided when the retry strategy is `custom` and must be omitted otherwise.\n\nCustom 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.\n\nThe `selfie_check` step is currently not supported on the sandbox server. Sandbox requests will silently disable the `selfie_check` step when provided.", "nullable": true, "properties": { "documentary_verification": { "description": "A boolean field specifying whether the new session should require or skip the `documentary_verification` 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" }, "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" }, "verify_sms": { "description": "A boolean field specifying whether the new session should require or skip the `verify_sms` step.", "type": "boolean" } }, "required": [ "verify_sms", "kyc_check", "documentary_verification", "selfie_check" ], "type": "object" }, "IdentityVerificationRetryResponse": { "additionalProperties": true, "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.", "properties": { "beacon_user_id": { "$ref": "#/components/schemas/BeaconUserIDNullable" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "completed_at": { "$ref": "#/components/schemas/TimestampNullable" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "documentary_verification": { "$ref": "#/components/schemas/DocumentaryVerification" }, "id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "kyc_check": { "$ref": "#/components/schemas/KYCCheckDetails" }, "latest_scored_protect_event": { "$ref": "#/components/schemas/IDVProtectEvent" }, "previous_attempt_id": { "$ref": "#/components/schemas/PreviousIdentityVerificationAttemptID" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_check": { "$ref": "#/components/schemas/RiskCheckDetails" }, "selfie_check": { "$ref": "#/components/schemas/SelfieCheck" }, "shareable_url": { "$ref": "#/components/schemas/ShareableURL" }, "status": { "$ref": "#/components/schemas/IdentityVerificationStatus" }, "steps": { "$ref": "#/components/schemas/IdentityVerificationStepSummary" }, "template": { "$ref": "#/components/schemas/IdentityVerificationTemplateReference" }, "user": { "$ref": "#/components/schemas/IdentityVerificationUserData" }, "user_id": { "$ref": "#/components/schemas/PlaidUserIDNullable" }, "verify_sms": { "$ref": "#/components/schemas/VerifySMSDetails" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualIDNullable" } }, "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": { "description": "The status of this Identity Verification attempt.\n\n\n`active` - The Identity Verification attempt is incomplete. The user may have completed part of the session, but has neither failed nor passed.\n\n`success` - The Identity Verification attempt has completed, passing all steps defined to the associated Identity Verification template.\n\n`failed` - The user failed one or more steps in the session and was told to contact support.\n\n`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.\n\n`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.\n\n`pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review.", "enum": [ "active", "success", "failed", "expired", "canceled", "pending_review" ], "example": "success", "title": "IdentityVerificationStatus", "type": "string" }, "IdentityVerificationStatusUpdatedWebhook": { "additionalProperties": true, "description": "Fired when the status of an identity verification has been updated, which can be triggered via the dashboard or the API.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "identity_verification_id": { "description": "The ID of the associated Identity Verification attempt.", "type": "string" }, "webhook_code": { "description": "`STATUS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`IDENTITY_VERIFICATION`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "identity_verification_id", "environment" ], "title": "IdentityVerificationStatusUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "identity_verification_id": "idv_52xR9LKo77r1Np", "webhook_code": "STATUS_UPDATED", "webhook_type": "IDENTITY_VERIFICATION" } } }, "IdentityVerificationStepStatus": { "description": "The status of a step in the Identity Verification process.", "enum": [ "success", "active", "failed", "waiting_for_prerequisite", "not_applicable", "skipped", "expired", "canceled", "pending_review", "manually_approved", "manually_rejected" ], "example": "success", "title": "IdentityVerificationStepStatus", "type": "string" }, "IdentityVerificationStepSummary": { "additionalProperties": true, "description": "Each step will be one of the following values:\n\n\n`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.\n\n`success` - The Identity Verification attempt has completed this step.\n\n`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.\n\n`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.\n\n`not_applicable` - This step will not be run for this session.\n\n`skipped` - The retry instructions that created this Identity Verification attempt specified that this step should be skipped.\n\n`expired` - This step had not yet been completed when the Identity Verification attempt as a whole expired.\n\n`canceled` - The Identity Verification attempt was canceled before the user completed this step.\n\n`pending_review` - The Identity Verification attempt template was configured to perform a screening that had one or more hits needing review.\n\n`manually_approved` - The step was manually overridden to pass by a team member in the dashboard.\n\n`manually_rejected` - The step was manually overridden to fail by a team member in the dashboard.", "properties": { "accept_tos": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "documentary_verification": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "kyc_check": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "risk_check": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "selfie_check": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "verify_sms": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "watchlist_screening": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" } }, "required": [ "accept_tos", "verify_sms", "kyc_check", "documentary_verification", "selfie_check", "watchlist_screening", "risk_check" ], "type": "object" }, "IdentityVerificationStepUpdatedWebhook": { "additionalProperties": true, "description": "Fired when an end user has completed a step of the Identity Verification process.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "identity_verification_id": { "description": "The ID of the associated Identity Verification attempt.", "type": "string" }, "webhook_code": { "description": "`STEP_UPDATED`", "type": "string" }, "webhook_type": { "description": "`IDENTITY_VERIFICATION`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "identity_verification_id", "environment" ], "title": "IdentityVerificationStepUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "identity_verification_id": "idv_52xR9LKo77r1Np", "webhook_code": "STEP_UPDATED", "webhook_type": "IDENTITY_VERIFICATION" } } }, "IdentityVerificationTemplateID": { "description": "ID of the associated Identity Verification template. Like all Plaid identifiers, this is case-sensitive.", "example": "idvtmp_4FrXJvfQU3zGUR", "title": "IdentityVerificationTemplateID", "type": "string" }, "IdentityVerificationTemplateReference": { "additionalProperties": true, "description": "The resource ID and version number of the template configuring the behavior of a given Identity Verification.", "properties": { "id": { "$ref": "#/components/schemas/IdentityVerificationTemplateID" }, "version": { "$ref": "#/components/schemas/IdentityVerificationTemplateVersion" } }, "required": [ "id", "version" ], "type": "object" }, "IdentityVerificationTemplateVersion": { "description": "Version of the associated Identity Verification template.", "example": 2, "title": "IdentityVerificationTemplateVersion", "type": "integer" }, "IdentityVerificationUserAddress": { "additionalProperties": true, "description": "Even if an address has been collected, some fields may be null depending on the region's addressing system. For example:\n\nAddresses from the United Kingdom will not include a region\n\nAddresses from Hong Kong will not include postal code", "nullable": true, "properties": { "city": { "$ref": "#/components/schemas/CityNullable" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/StreetNullable" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "street2", "city", "region", "postal_code", "country" ], "type": "object" }, "IdentityVerificationUserData": { "additionalProperties": true, "description": "The identity data that was either collected from the user or provided via API in order to perform an Identity Verification.", "properties": { "address": { "$ref": "#/components/schemas/IdentityVerificationUserAddress" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "email_address": { "$ref": "#/components/schemas/EmailAddressNullable" }, "id_number": { "$ref": "#/components/schemas/UserIDNumber" }, "ip_address": { "$ref": "#/components/schemas/IPAddress" }, "name": { "$ref": "#/components/schemas/IdentityVerificationResponseUserName" }, "phone_number": { "$ref": "#/components/schemas/IdentityVerificationUserPhoneNumber" } }, "required": [ "date_of_birth", "email_address", "ip_address", "name", "address", "id_number" ], "type": "object" }, "IdentityVerificationUserPhoneNumber": { "description": "A valid phone number in E.164 format.", "example": "+12345678909", "nullable": true, "title": "PhoneNumber", "type": "string" }, "ImageQuality": { "description": "A high level description of the quality of the image the user submitted.\n\nFor 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.\n\nNote: 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.", "enum": [ "high", "medium", "low" ], "example": "high", "type": "string" }, "ImageQualityDetails": { "additionalProperties": true, "description": "Details about the image quality of the document.", "nullable": true, "properties": { "blur_check": { "allOf": [ { "$ref": "#/components/schemas/ImageQualityOutcome" } ], "description": "The outcome of the blur check.\n\n`success` - The image is sufficiently sharp.\n\n`failed` - The image is too blurry for analysis." }, "dimensions_check": { "allOf": [ { "$ref": "#/components/schemas/ImageQualityOutcome" } ], "description": "The outcome of the dimensions check.\n\n`success` - The image meets the minimum size and resolution requirements.\n\n`failed` - The image does not meet the minimum size or resolution requirements." }, "glare_check": { "allOf": [ { "$ref": "#/components/schemas/ImageQualityOutcome" } ], "description": "The outcome of the glare check.\n\n`success` - The image is free of glare.\n\n`failed` - The image contains glare that may obscure document details." } }, "required": [ "glare_check", "dimensions_check", "blur_check" ], "type": "object" }, "ImageQualityOutcome": { "description": "The outcome of the image quality check.\n\n\n`success` - The check passed.\n\n`failed` - The check did not pass.", "enum": [ "success", "failed" ], "type": "string" }, "IncidentUpdate": { "additionalProperties": true, "description": "An update on the health incident", "properties": { "description": { "description": "The content of the update.", "type": "string" }, "status": { "description": "The status of the incident.", "enum": [ "INVESTIGATING", "IDENTIFIED", "SCHEDULED", "RESOLVED", "UNKNOWN" ], "type": "string" }, "updated_date": { "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\"`.", "format": "date-time", "type": "string" } }, "title": "IncidentUpdate", "type": "object" }, "IncomeBreakdown": { "additionalProperties": true, "deprecated": true, "description": "An object representing a breakdown of the different income types on the paystub.", "properties": { "hours": { "description": "The number of hours logged for this income for this pay period.", "nullable": true, "type": "number" }, "rate": { "description": "The hourly rate at which the income is paid.", "format": "double", "nullable": true, "type": "number" }, "total": { "description": "The total pay for this pay period.", "format": "double", "nullable": true, "type": "number" }, "type": { "$ref": "#/components/schemas/IncomeBreakdownType" } }, "required": [ "type", "rate", "hours", "total" ], "title": "IncomeBreakdown", "type": "object" }, "IncomeBreakdownType": { "description": "The type of income. Possible values include:\n `\"regular\"`: regular income\n `\"overtime\"`: overtime income\n `\"bonus\"`: bonus income", "enum": [ "bonus", "overtime", "regular", null ], "nullable": true, "type": "string" }, "IncomeInsights": { "additionalProperties": true, "description": "Comprehensive income analysis including total income, income excluding transfers, and inbound transfer amounts.", "nullable": true, "properties": { "income_excluding_transfers": { "allOf": [ { "$ref": "#/components/schemas/AmountWithCurrencyWithMonthlyAverage" } ], "description": "Income excluding account transfer transactions for the period, including a monthly average." }, "total_income": { "allOf": [ { "$ref": "#/components/schemas/AmountWithCurrency" } ], "description": "The total amount of all income transactions in the given time period." }, "transfers_in": { "allOf": [ { "$ref": "#/components/schemas/AmountWithCurrencyWithMonthlyAverage" } ], "description": "Sum of inbound transfer transactions for the period, including a monthly average." } }, "title": "IncomeInsights", "type": "object" }, "IncomeInsightsFilter": { "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:\n- `EARNED_INCOME.*` (`EARNED_INCOME.SALARY`, `EARNED_INCOME.GIG_ECONOMY`, `EARNED_INCOME.SELF_EMPLOYED`)\n- `BENEFITS.DISABILITY`\n- `RETIREMENT.*` (`RETIREMENT.GOVERNMENT_DERIVED`, `RETIREMENT.PRIVATE_RETIREMENT`, `RETIREMENT.PLAN_DISTRIBUTION`)\n\nThe 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.\n\nFilter patterns supported:\n- `*`: All categories\n- `PRIMARY.*`: All categories within the specified primary category\n- `PRIMARY.SECONDARY`: A specific income category\n\nFor a list of income categories, see the [Income V2 Category Taxonomy](https://plaid.com/documents/income-v2-category-taxonomy.csv).", "nullable": true, "properties": { "excluded_categories": { "description": "Excludes income streams matching the specified categories.", "items": { "type": "string" }, "type": "array" }, "included_categories": { "description": "Includes income streams matching the specified categories.", "items": { "type": "string" }, "type": "array" } }, "required": [ "included_categories" ], "title": "IncomeInsightsFilter", "type": "object" }, "IncomeInsightsVersion": { "description": "The version of Income Insights to use.", "enum": [ "II2" ], "nullable": true, "title": "IncomeInsightsVersion", "type": "string" }, "IncomeOverride": { "description": "Specify payroll data on the account.", "properties": { "paystubs": { "description": "A list of paystubs associated with the account.", "items": { "$ref": "#/components/schemas/PaystubOverride" }, "type": "array" }, "w2s": { "description": "A list of w2s associated with the account.", "items": { "$ref": "#/components/schemas/W2Override" }, "type": "array" } }, "title": "IncomeOverride", "type": "object" }, "IncomeSourcesCounts": { "additionalProperties": true, "description": "Details about the number of income sources", "properties": { "baseline_count": { "deprecated": true, "description": "The number of income sources detected at the subscription date", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_count": { "description": "The number of income sources currently detected", "type": "number" } }, "required": [ "current_count" ], "title": "IncomeSourcesCounts", "type": "object" }, "IncomeSummary": { "additionalProperties": true, "description": "The verified fields from a paystub verification. All fields are provided as reported on the paystub.", "properties": { "employee_name": { "$ref": "#/components/schemas/EmployeeIncomeSummaryFieldString" }, "employer_name": { "$ref": "#/components/schemas/EmployerIncomeSummaryFieldString" }, "pay_frequency": { "$ref": "#/components/schemas/PayFrequency" }, "projected_wage": { "$ref": "#/components/schemas/ProjectedIncomeSummaryFieldNumber" }, "verified_transaction": { "$ref": "#/components/schemas/TransactionData" }, "ytd_gross_income": { "$ref": "#/components/schemas/YTDGrossIncomeSummaryFieldNumber" }, "ytd_net_income": { "$ref": "#/components/schemas/YTDNetIncomeSummaryFieldNumber" } }, "required": [ "employer_name", "employee_name", "ytd_gross_income", "ytd_net_income", "pay_frequency", "projected_wage", "verified_transaction" ], "title": "IncomeSummary", "type": "object" }, "IncomeSummaryFieldNumber": { "additionalProperties": true, "description": "Field number for income summary", "nullable": true, "properties": { "value": { "description": "The value of the field.", "format": "double", "type": "number" }, "verification_status": { "$ref": "#/components/schemas/VerificationStatus" } }, "required": [ "value", "verification_status" ], "title": "IncomeSummaryFieldNumber", "type": "object" }, "IncomeSummaryFieldString": { "additionalProperties": true, "description": "Data about the income summary", "nullable": true, "properties": { "value": { "description": "The value of the field.", "type": "string" }, "verification_status": { "$ref": "#/components/schemas/VerificationStatus" } }, "required": [ "value", "verification_status" ], "title": "IncomeSummaryFieldString", "type": "object" }, "IncomeVerificationCreateRequest": { "description": "IncomeVerificationCreateRequest defines the request schema for `/income/verification/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/IncomeVerificationCreateRequestOptions" }, "precheck_id": { "description": "The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The URL endpoint to which Plaid should send webhooks related to the progress of the income verification process.", "type": "string" } }, "required": [ "webhook" ], "title": "IncomeVerificationCreateRequest", "type": "object" }, "IncomeVerificationCreateRequestOptions": { "description": "Optional arguments for `/income/verification/create`", "properties": { "access_tokens": { "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" }, "type": "array" } }, "title": "IncomeVerificationCreateRequestOptions", "type": "object" }, "IncomeVerificationCreateResponse": { "additionalProperties": true, "description": "IncomeVerificationCreateResponse defines the response schema for `/income/verification/create`.", "properties": { "income_verification_id": { "description": "ID of the verification. This ID is persisted throughout the lifetime of the verification.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "income_verification_id", "request_id" ], "title": "IncomeVerificationCreateResponse", "type": "object" }, "IncomeVerificationDocParsingConfig": { "description": "Analysis options to enable for document parsing", "enum": [ "ocr", "risk_signals" ], "title": "IncomeVerificationDocParsingConfig", "type": "string" }, "IncomeVerificationDocumentsDownloadRequest": { "description": "IncomeVerificationDocumentsDownloadRequest defines the request schema for `/income/verification/documents/download`.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessTokenNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "document_id": { "description": "The document ID to download. If passed, a single document will be returned in the resulting zip file, rather than all document", "nullable": true, "type": "string" }, "income_verification_id": { "deprecated": true, "description": "The ID of the verification.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "IncomeVerificationDocumentsDownloadRequest", "type": "object" }, "IncomeVerificationPayrollFlowType": { "description": "Flow types to retrieve payroll income data", "enum": [ "payroll_digital_income", "payroll_document_income" ], "title": "IncomeVerificationPayrollFlowType", "type": "string" }, "IncomeVerificationPaystubsGetRequest": { "description": "IncomeVerificationPaystubsGetRequest defines the request schema for `/income/verification/paystubs/get`.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessTokenNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "income_verification_id": { "deprecated": true, "description": "The ID of the verification for which to get paystub information.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "IncomeVerificationPaystubsGetRequest", "type": "object" }, "IncomeVerificationPaystubsGetResponse": { "additionalProperties": true, "description": "IncomeVerificationPaystubsGetResponse defines the response schema for `/income/verification/paystubs/get`.", "properties": { "document_metadata": { "description": "Metadata for an income document.", "items": { "$ref": "#/components/schemas/DocumentMetadata" }, "type": "array" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "paystubs": { "items": { "$ref": "#/components/schemas/Paystub" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "paystubs", "request_id" ], "title": "IncomeVerificationPaystubsGetResponse", "type": "object" }, "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:\n\n`\"HIGH\"`: It is very likely that this user can use the digital income verification flow.\n\n\"`LOW`\": It is unlikely that this user can use the digital income verification flow.\n\n`\"UNKNOWN\"`: It was not possible to determine if the user is supportable with the information passed.", "enum": [ "HIGH", "LOW", "UNKNOWN" ], "type": "string" }, "IncomeVerificationPrecheckEmployer": { "description": "Information about the end user's employer", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/IncomeVerificationPrecheckEmployerAddress" }, "name": { "description": "The employer's name", "nullable": true, "type": "string" }, "tax_id": { "description": "The employer's tax id", "nullable": true, "type": "string" }, "url": { "description": "The URL for the employer's public website", "format": "url", "nullable": true, "type": "string" } }, "title": "IncomeVerificationPrecheckEmployer", "type": "object" }, "IncomeVerificationPrecheckEmployerAddress": { "allOf": [ { "$ref": "#/components/schemas/IncomeVerificationPrecheckEmployerAddressData" }, { "additionalProperties": true, "type": "object" } ], "description": "The address of the employer", "nullable": true, "title": "IncomeVerificationPrecheckEmployerAddress", "type": "object" }, "IncomeVerificationPrecheckEmployerAddressData": { "additionalProperties": true, "description": "Data about the components comprising an address.", "properties": { "city": { "description": "The full city name", "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "type": "string" }, "postal_code": { "description": "The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.", "type": "string" }, "region": { "description": "The region or state. In API versions 2018-05-22 and earlier, this field is called `state`.\nExample: `\"NC\"`", "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "title": "AddressData", "type": "object" }, "IncomeVerificationPrecheckMilitaryInfo": { "description": "Data about military info in the income verification precheck.", "nullable": true, "properties": { "branch": { "description": "If the user is currently serving in the US military, the branch of the military in which they are serving\nValid values: 'AIR FORCE', 'ARMY', 'COAST GUARD', 'MARINES', 'NAVY', 'UNKNOWN'", "nullable": true, "type": "string" }, "is_active_duty": { "description": "Is the user currently active duty in the US military", "nullable": true, "type": "boolean" } }, "title": "IncomeVerificationPrecheckMilitaryInfo", "type": "object" }, "IncomeVerificationPrecheckPayrollInstitution": { "description": "Information about the end user's payroll institution", "nullable": true, "properties": { "name": { "description": "The name of payroll institution", "nullable": true, "type": "string" } }, "title": "IncomeVerificationPrecheckPayrollInstitution", "type": "object" }, "IncomeVerificationPrecheckRequest": { "description": "IncomeVerificationPrecheckRequest defines the request schema for `/income/verification/precheck`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "employer": { "$ref": "#/components/schemas/IncomeVerificationPrecheckEmployer" }, "payroll_institution": { "$ref": "#/components/schemas/IncomeVerificationPrecheckPayrollInstitution" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transactions_access_token": { "allOf": [ { "$ref": "#/components/schemas/AccessTokenNullable" } ], "deprecated": true }, "transactions_access_tokens": { "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" }, "type": "array" }, "us_military_info": { "$ref": "#/components/schemas/IncomeVerificationPrecheckMilitaryInfo" }, "user": { "$ref": "#/components/schemas/IncomeVerificationPrecheckUser" } }, "title": "IncomeVerificationPrecheckRequest", "type": "object" }, "IncomeVerificationPrecheckResponse": { "additionalProperties": true, "description": "IncomeVerificationPrecheckResponse defines the response schema for `/income/verification/precheck`.", "properties": { "confidence": { "$ref": "#/components/schemas/IncomeVerificationPrecheckConfidence" }, "precheck_id": { "description": "ID of the precheck. Provide this value when calling `/link/token/create` in order to optimize Link conversion.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "precheck_id", "confidence", "request_id" ], "title": "IncomeVerificationPrecheckResponse", "type": "object" }, "IncomeVerificationPrecheckUser": { "description": "Information about the user whose eligibility is being evaluated.", "nullable": true, "properties": { "email_address": { "description": "The user's email address", "nullable": true, "type": "string" }, "first_name": { "description": "The user's first name", "nullable": true, "type": "string" }, "home_address": { "$ref": "#/components/schemas/SignalAddressData" }, "last_name": { "description": "The user's last name", "nullable": true, "type": "string" } }, "title": "IncomeVerificationPrecheckUser", "type": "object" }, "IncomeVerificationRefreshReconnectNeededWebhook": { "additionalProperties": true, "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "user_id": { "description": "The `user_id` corresponding to the user the webhook has fired for.", "type": "string" }, "webhook_code": { "description": "`INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED`", "type": "string" }, "webhook_type": { "description": "`INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "user_id", "environment" ], "title": "IncomeVerificationRefreshReconnectNeededWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED", "webhook_type": "INCOME" } } }, "IncomeVerificationRiskSignalsStatusWebhook": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "description": "The Item ID associated with the verification.", "type": "string" }, "risk_signals_status": { "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.", "type": "string" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`INCOME_VERIFICATION_RISK_SIGNALS`", "type": "string" }, "webhook_type": { "description": "`\"INCOME\"`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "risk_signals_status", "environment" ], "title": "IncomeVerificationRiskSignalsStatusWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ", "risk_signals_status": "RISK_SIGNALS_PROCESSING_COMPLETE", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "webhook_code": "INCOME_VERIFICATION_RISK_SIGNALS", "webhook_type": "INCOME" } } }, "IncomeVerificationSourceType": { "description": "The types of source income data that users should be able to share", "enum": [ "bank", "payroll" ], "title": "IncomeVerificationSourceType", "type": "string" }, "IncomeVerificationStatusWebhook": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "description": "The Item ID associated with the verification.", "type": "string" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "verification_status": { "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.\n\n`VERIFICATION_STATUS_PROCESSING_FAILED`: An unexpected internal error occurred when attempting to process the verification documentation.\n\n`VERIFICATION_STATUS_PENDING_APPROVAL`: (deprecated) The income verification has been sent to the user for review.", "type": "string" }, "webhook_code": { "description": "`INCOME_VERIFICATION`", "type": "string" }, "webhook_type": { "description": "`\"INCOME\"`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "verification_status", "environment" ], "title": "IncomeVerificationStatusWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ", "user_id": "9eaba3c2fdc916bc197f279185b986607dd21682a5b04eab04a5a03e8b3f3334", "verification_status": "VERIFICATION_STATUS_PROCESSING_COMPLETE", "webhook_code": "INCOME_VERIFICATION", "webhook_type": "INCOME" } } }, "IncomeVerificationTaxformsGetRequest": { "description": "IncomeVerificationTaxformsGetRequest defines the request schema for `/income/verification/taxforms/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessTokenNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "income_verification_id": { "deprecated": true, "description": "The ID of the verification.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "IncomeVerificationTaxformsGetRequest", "type": "object" }, "IncomeVerificationTaxformsGetResponse": { "additionalProperties": true, "description": "IncomeVerificationTaxformsGetResponse defines the response schema for `/income/verification/taxforms/get`", "properties": { "document_metadata": { "items": { "$ref": "#/components/schemas/DocumentMetadata" }, "type": "array" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "taxforms": { "description": "A list of forms.", "items": { "$ref": "#/components/schemas/Taxform" }, "type": "array" } }, "required": [ "taxforms", "document_metadata" ], "title": "IncomeVerificationTaxformsGetResponse", "type": "object" }, "IncomeVerificationWebhookStatus": { "additionalProperties": true, "description": "Status of the income verification webhook", "properties": { "id": { "type": "string" } }, "required": [ "id" ], "title": "IncomeVerificationWebhookStatus", "type": "object" }, "IndividualName": { "additionalProperties": true, "description": "Parent container for name that allows for choice group between parsed and unparsed containers.", "properties": { "FirstName": { "description": "The first name of the individual represented by the parent object.", "type": "string" }, "LastName": { "description": "The last name of the individual represented by the parent object.", "type": "string" } }, "required": [ "FirstName", "LastName" ], "title": "NAME", "type": "object" }, "IndividualScreeningHitNames": { "additionalProperties": true, "description": "Name information for the associated individual watchlist hit", "properties": { "full": { "description": "The full name of the individual, including all parts.", "example": "Aleksey Potemkin", "type": "string" }, "is_primary": { "description": "Primary names are those most commonly used to refer to this person. Only one name will ever be marked as primary.", "example": false, "type": "boolean" }, "weak_alias_determination": { "$ref": "#/components/schemas/WeakAliasDetermination" } }, "required": [ "full", "is_primary", "weak_alias_determination" ], "type": "object" }, "IndividualWatchlistCode": { "description": "Shorthand identifier for a specific screening list for individuals.\n `AU_CON`: Australia Department of Foreign Affairs and Trade Consolidated List\n `CA_CON`: Government of Canada Consolidated List of Sanctions\n `EU_CON`: European External Action Service Consolidated List\n `IZ_CIA`: CIA List of Chiefs of State and Cabinet Members\n `IZ_IPL`: Interpol Red Notices for Wanted Persons List\n `IZ_PEP`: Politically Exposed Persons List\n `IZ_UNC`: United Nations Consolidated Sanctions\n `IZ_WBK`: World Bank Listing of Ineligible Firms and Individuals\n `UK_HMC`: Foreign, Commonwealth & Development Office UK Sanctions List\n `US_DPL`: Bureau of Industry and Security Denied Persons List\n `US_DTC`: US Department of State AECA Debarred\n `US_FBI`: US Department of Justice FBI Wanted List\n `US_FSE`: US OFAC Foreign Sanctions Evaders\n `US_ISN`: US Department of State Nonproliferation Sanctions\n `US_PLC`: US OFAC Palestinian Legislative Council\n `US_SAM`: US System for Award Management Exclusion List\n `US_SDN`: US OFAC Specially Designated Nationals List\n `US_SSI`: US OFAC Sectoral Sanctions Identifications\n `SG_SOF`: Government of Singapore Terrorists and Terrorist Entities\n `TR_TWL`: Government of Turkey Terrorist Wanted List\n `TR_DFD`: Government of Turkey Domestic Freezing Decisions\n `TR_FOR`: Government of Turkey Foreign Freezing Requests\n `TR_WMD`: Government of Turkey Weapons of Mass Destruction\n `TR_CMB`: Government of Turkey Capital Markets Board", "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", "title": "IndividualWatchlistCode", "type": "string" }, "IndividualWatchlistProgram": { "additionalProperties": true, "description": "A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of individuals.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/WatchlistProgramID" }, "is_archived": { "$ref": "#/components/schemas/ProgramArchived" }, "is_rescanning_enabled": { "description": "Indicator specifying whether the program is enabled and will perform daily rescans.", "example": true, "type": "boolean" }, "lists_enabled": { "description": "Watchlists enabled for the associated program", "example": [ "US_SDN" ], "items": { "$ref": "#/components/schemas/IndividualWatchlistCode" }, "type": "array", "uniqueItems": true }, "name": { "$ref": "#/components/schemas/IndividualWatchlistScreeningProgramName" }, "name_sensitivity": { "$ref": "#/components/schemas/ProgramNameSensitivity" } }, "required": [ "id", "created_at", "is_rescanning_enabled", "lists_enabled", "name", "name_sensitivity", "audit_trail", "is_archived" ], "title": "IndividualWatchlistProgram", "type": "object" }, "IndividualWatchlistScreeningProgramName": { "description": "A name for the program to define its purpose. For example, \"High Risk Individuals\", \"US Cardholders\", or \"Applicants\".", "example": "Sample Program", "title": "IndividualWatchlistScreeningProgramName", "type": "string" }, "InflowModel": { "additionalProperties": true, "description": "The `inflow_model` allows you to model a test account that receives regular income or make regular payments on a loan. Any transactions generated by the `inflow_model` will appear in addition to randomly generated test data or transactions specified by `override_accounts`.", "properties": { "income_amount": { "description": "Amount of income per month. This value is required if `type` is `monthly-income`.", "format": "double", "type": "number" }, "payment_day_of_month": { "description": "Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the income transaction will appear. The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.", "type": "number" }, "statement_day_of_month": { "description": "Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the balance is calculated for the next payment. The name of the income transaction. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`.", "type": "string" }, "transaction_name": { "description": "The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.", "type": "string" }, "type": { "description": "Inflow model. One of the following:\n\n`none`: No income\n\n`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.\n\n`monthly-interest-only-payment`: Makes an interest-only payment on a liability account at the given statement day of month.\n\nNote 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`.", "type": "string" } }, "required": [ "type", "income_amount", "payment_day_of_month", "transaction_name", "statement_day_of_month" ], "title": "InflowModel", "type": "object" }, "InitialUpdateWebhook": { "additionalProperties": true, "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.\n\nThis 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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "description": "The error code associated with the webhook.", "nullable": true, "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_transactions": { "description": "The number of new transactions available.", "type": "number" }, "webhook_code": { "description": "`INITIAL_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "item_id", "environment" ], "title": "InitialUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_transactions": 19, "webhook_code": "INITIAL_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "Institution": { "additionalProperties": true, "description": "Details relating to a specific financial institution", "properties": { "auth_metadata": { "$ref": "#/components/schemas/AuthMetadata" }, "country_codes": { "description": "A list of the country codes supported by the institution.", "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, "dtc_numbers": { "description": "A partial list of DTC numbers associated with the institution.", "items": { "type": "string" }, "type": "array" }, "institution_id": { "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.", "type": "string" }, "logo": { "description": "Base64 encoded representation of the institution's logo, returned as a base64 encoded 152x152 PNG. Not all institutions' logos are available.", "nullable": true, "type": "string" }, "name": { "description": "The official name of the institution.", "type": "string" }, "oauth": { "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.", "type": "boolean" }, "payment_initiation_metadata": { "$ref": "#/components/schemas/PaymentInitiationMetadata" }, "primary_color": { "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, "type": "string" }, "products": { "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" }, "type": "array" }, "routing_numbers": { "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" }, "type": "array" }, "status": { "$ref": "#/components/schemas/InstitutionStatus" }, "url": { "description": "The URL for the institution's website", "nullable": true, "type": "string" } }, "required": [ "institution_id", "name", "products", "country_codes", "routing_numbers", "oauth" ], "title": "Institution", "type": "object" }, "InstitutionStatus": { "additionalProperties": true, "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.\n\nInstitution 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.\n", "nullable": true, "properties": { "auth": { "$ref": "#/components/schemas/ProductStatus" }, "health_incidents": { "description": "Details of recent health incidents associated with the institution.", "items": { "$ref": "#/components/schemas/HealthIncident" }, "nullable": true, "type": "array" }, "identity": { "$ref": "#/components/schemas/ProductStatus" }, "investments": { "$ref": "#/components/schemas/ProductStatus" }, "investments_updates": { "$ref": "#/components/schemas/ProductStatus" }, "item_logins": { "$ref": "#/components/schemas/ProductStatus" }, "liabilities": { "$ref": "#/components/schemas/ProductStatus" }, "liabilities_updates": { "$ref": "#/components/schemas/ProductStatus" }, "transactions_updates": { "$ref": "#/components/schemas/ProductStatus" } }, "title": "InstitutionStatus", "type": "object", "x-examples": { "example-1": { "status": { "auth": { "breakdown": { "error_institution": 0.08, "error_plaid": 0.01, "success": 0.91 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "identity": { "breakdown": { "error_institution": 0.5, "error_plaid": 0.08, "success": 0.42 }, "last_status_change": "2019-02-15T15:50:00Z", "status": "DEGRADED" }, "investments": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.02, "success": 0.89 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "investments_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" }, "item_logins": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.01, "success": 0.9 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "liabilities": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.02, "success": 0.89 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "liabilities_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" }, "transactions_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" } } } } }, "InstitutionStatusAlertWebhook": { "additionalProperties": true, "description": "Fired when institution status meets the conditions configured in the developer dashboard.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "institution_id": { "description": "The ID of the associated institution.", "type": "string" }, "institution_overall_success_rate": { "description": "The global success rate of the institution, calculated based on item add health.", "format": "double", "type": "number" }, "webhook_code": { "description": "`INSTITUTION_STATUS_ALERT_TRIGGERED`", "type": "string" }, "webhook_type": { "description": "`DASHBOARD_CONFIGURED_ALERT`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "institution_id", "institution_overall_success_rate", "environment" ], "title": "InstitutionStatusAlertWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "institution_id": "ins_3", "institution_overall_success_rate": 0.9, "webhook_code": "INSTITUTION_STATUS_ALERT_TRIGGERED", "webhook_type": "DASHBOARD_CONFIGURED_ALERT" } } }, "InstitutionSupportedNetworks": { "additionalProperties": true, "description": "Contains the RTP and RfP network and types supported by the linked Item's institution.", "properties": { "rfp": { "$ref": "#/components/schemas/TransferCapabilitiesGetRfP" }, "rtp": { "$ref": "#/components/schemas/TransferCapabilitiesGetRTP" } }, "required": [ "rtp", "rfp" ], "title": "InstitutionSupportedNetworks", "type": "object" }, "InstitutionsGetByIdRequest": { "description": "InstitutionsGetByIdRequest defines the request schema for `/institutions/get_by_id`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "country_codes": { "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.\n", "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, "institution_id": { "description": "The ID of the institution to get details about", "minLength": 1, "type": "string" }, "options": { "$ref": "#/components/schemas/InstitutionsGetByIdRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "institution_id", "country_codes" ], "type": "object" }, "InstitutionsGetByIdRequestOptions": { "description": "Specifies optional parameters for `/institutions/get_by_id`. If provided, must not be `null`.", "properties": { "include_auth_metadata": { "default": false, "description": "When `true`, returns metadata related to the Auth product indicating which auth methods are supported.", "type": "boolean" }, "include_optional_metadata": { "default": false, "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`.\n\nNote 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.", "type": "boolean" }, "include_payment_initiation_metadata": { "default": false, "description": "When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.", "type": "boolean" }, "include_status": { "default": false, "description": "If `true`, the response will include status information about the institution. Default value is `false`.", "type": "boolean" } }, "type": "object" }, "InstitutionsGetByIdResponse": { "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" ], "type": "object" }, "InstitutionsGetRequest": { "description": "InstitutionsGetRequest defines the request schema for `/institutions/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "description": "The total number of Institutions to return.", "maximum": 500, "minimum": 1, "type": "integer" }, "country_codes": { "description": "Specify which country or countries to include institutions from, using the ISO-3166-1 alpha-2 country code standard.\n\nIn 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.\n", "items": { "$ref": "#/components/schemas/CountryCode" }, "minItems": 1, "type": "array" }, "offset": { "description": "The number of Institutions to skip.", "minimum": 0, "type": "integer" }, "options": { "$ref": "#/components/schemas/InstitutionsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "count", "offset", "country_codes" ], "type": "object" }, "InstitutionsGetRequestOptions": { "description": "An optional object to filter `/institutions/get` results.", "properties": { "include_auth_metadata": { "default": false, "description": "When `true`, returns metadata related to the Auth product indicating which auth methods are supported.", "type": "boolean" }, "include_optional_metadata": { "description": "When `true`, return the institution's homepage URL, logo and primary brand color. Not all institutions' logos are available.\n\nNote 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.", "type": "boolean" }, "include_payment_initiation_metadata": { "default": false, "description": "When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.", "type": "boolean" }, "oauth": { "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`.", "nullable": true, "type": "boolean" }, "products": { "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`.", "items": { "$ref": "#/components/schemas/Products" }, "minItems": 1, "nullable": true, "type": "array", "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": { "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.", "items": { "type": "string" }, "nullable": true, "type": "array" } }, "type": "object" }, "InstitutionsGetResponse": { "additionalProperties": true, "description": "InstitutionsGetResponse defines the response schema for `/institutions/get`", "properties": { "institutions": { "description": "A list of Plaid institutions", "items": { "$ref": "#/components/schemas/Institution" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "total": { "description": "The total number of institutions available via this endpoint", "type": "integer" } }, "required": [ "institutions", "total", "request_id" ], "type": "object" }, "InstitutionsSearchAccountFilter": { "additionalProperties": true, "description": "An account filter to apply to institutions search requests", "properties": { "credit": { "items": { "$ref": "#/components/schemas/AccountSubtype" }, "type": "array" }, "depository": { "items": { "$ref": "#/components/schemas/AccountSubtype" }, "type": "array" }, "investment": { "items": { "$ref": "#/components/schemas/AccountSubtype" }, "type": "array" }, "loan": { "items": { "$ref": "#/components/schemas/AccountSubtype" }, "type": "array" } }, "title": "InstitutionsSearchAccountFilter", "type": "object" }, "InstitutionsSearchPaymentInitiationOptions": { "description": "Additional options that will be used to filter institutions by various Payment Initiation configurations.", "nullable": true, "properties": { "consent_id": { "description": "A unique ID identifying the payment consent", "nullable": true, "type": "string" }, "payment_id": { "description": "A unique ID identifying the payment", "nullable": true, "type": "string" } }, "type": "object" }, "InstitutionsSearchRequest": { "description": "InstitutionsSearchRequest defines the request schema for `/institutions/search`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "country_codes": { "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.\n", "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, "options": { "$ref": "#/components/schemas/InstitutionsSearchRequestOptions" }, "products": { "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`.", "items": { "$ref": "#/components/schemas/Products" }, "minItems": 1, "nullable": true, "type": "array", "x-override-enum-values-shown": [ "assets", "auth", "balance", "employment", "identity", "income_verification", "investments", "liabilities", "identity_verification", "payment_initiation", "standing_orders", "statements", "transactions" ] }, "query": { "description": "The search query. Institutions with names matching the query are returned", "minLength": 1, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "query", "country_codes" ], "type": "object" }, "InstitutionsSearchRequestOptions": { "description": "An optional object to filter `/institutions/search` results.", "properties": { "include_auth_metadata": { "default": false, "description": "When `true`, returns metadata related to the Auth product indicating which auth methods are supported.", "nullable": true, "type": "boolean" }, "include_optional_metadata": { "description": "When true, return the institution's homepage URL, logo and primary brand color.", "type": "boolean" }, "include_payment_initiation_metadata": { "default": false, "description": "When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.", "nullable": true, "type": "boolean" }, "oauth": { "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`.", "nullable": true, "type": "boolean" }, "payment_initiation": { "$ref": "#/components/schemas/InstitutionsSearchPaymentInitiationOptions" } }, "type": "object" }, "InstitutionsSearchResponse": { "additionalProperties": true, "description": "InstitutionsSearchResponse defines the response schema for `/institutions/search`", "properties": { "institutions": { "description": "An array of institutions matching the search criteria", "items": { "$ref": "#/components/schemas/Institution" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "institutions", "request_id" ], "type": "object" }, "InternalUID": { "description": "A universal identifier for a watchlist individual that is stable across searches and updates.", "example": "uid_3NggckTimGSJHS", "title": "InternalUID", "type": "string" }, "InvestmentAccount": { "allOf": [ { "$ref": "#/components/schemas/AccountBase" }, { "additionalProperties": true, "properties": { "balances": { "$ref": "#/components/schemas/InvestmentAccountBalance" }, "mask": { "nullable": true, "type": "string" }, "name": { "type": "string" }, "official_name": { "nullable": true, "type": "string" }, "verification_name": { "type": "string" } }, "required": [ "balances" ], "type": "object" } ], "description": "A single account at a financial institution, with additional investment-specific balance information.", "title": "InvestmentAccount" }, "InvestmentAccountBalance": { "allOf": [ { "$ref": "#/components/schemas/AccountBalance" }, { "additionalProperties": true, "properties": { "margin_loan_amount": { "description": "The total amount of borrowed funds in the account, as determined by the financial institution.\nFor investment-type accounts, the margin balance is the total value of borrowed assets in the account, as presented by the institution.\nThis is commonly referred to as margin or a loan.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "margin_loan_amount" ], "type": "object" } ], "description": "A set of fields describing the balance for an account, including margin loan information for investment accounts.", "title": "InvestmentAccountBalance" }, "InvestmentAccountSubtype": { "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" ], "type": "string" }, "InvestmentAccountSubtypeStandalone": { "description": "An investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage`.", "properties": { "401a": { "description": "Employer-sponsored money-purchase 401(a) retirement plan (US)", "type": "string" }, "401k": { "description": "Standard 401(k) retirement account (US)", "type": "string" }, "403B": { "description": "403(b) retirement savings account for non-profits and schools (US)", "type": "string" }, "457b": { "description": "Tax-advantaged deferred-compensation 457(b) retirement plan for governments and non-profits (US)", "type": "string" }, "529": { "description": "Tax-advantaged college savings and prepaid tuition 529 plans (US)\n", "type": "string" }, "brokerage": { "description": "Standard brokerage account", "type": "string" }, "cash isa": { "description": "Individual Savings Account (ISA) that pays interest tax-free (UK)", "type": "string" }, "crypto exchange": { "description": "Standard cryptocurrency exchange account", "type": "string" }, "education savings account": { "description": "Tax-advantaged Coverdell Education Savings Account (ESA) (US)", "type": "string" }, "fhsa": { "description": "First Home Savings Account (FHSA) (Canada)", "type": "string" }, "fixed annuity": { "description": "Fixed annuity", "type": "string" }, "gic": { "description": "Guaranteed Investment Certificate (Canada)", "type": "string" }, "health reimbursement arrangement": { "description": "Tax-advantaged Health Reimbursement Arrangement (HRA) benefit plan (US)", "type": "string" }, "hsa": { "description": "Non-cash tax-advantaged medical Health Savings Account (HSA) (US)\n", "type": "string" }, "ira": { "description": "Traditional Individual Retirement Account (IRA) (US)", "type": "string" }, "isa": { "description": "Non-cash Individual Savings Account (ISA) (UK)", "type": "string" }, "keogh": { "description": "Keogh self-employed retirement plan (US)", "type": "string" }, "lif": { "description": "Life Income Fund (LIF) retirement account (Canada)\n", "type": "string" }, "life insurance": { "description": "Life insurance account", "type": "string" }, "line of credit": { "description": "Pre-approved line of credit", "type": "string" }, "lira": { "description": "Locked-in Retirement Account (LIRA) (Canada)", "type": "string" }, "lrif": { "description": "Locked-in Retirement Income Fund (LRIF) (Canada)", "type": "string" }, "lrsp": { "description": "Locked-in Retirement Savings Plan (Canada)", "type": "string" }, "mutual fund": { "description": "Mutual fund account", "type": "string" }, "non-custodial wallet": { "description": "A cryptocurrency wallet where the user controls the private key", "type": "string" }, "non-taxable brokerage account": { "description": "A non-taxable brokerage account that is not covered by a more specific subtype", "type": "string" }, "other": { "description": "An account whose type could not be determined", "type": "string" }, "other annuity": { "description": "An annuity account not covered by other subtypes", "type": "string" }, "other insurance": { "description": "An insurance account not covered by other subtypes", "type": "string" }, "pension": { "description": "Standard pension account", "type": "string" }, "prif": { "description": "Prescribed Registered Retirement Income Fund (Canada)", "type": "string" }, "profit sharing plan": { "description": "Plan that gives employees share of company profits", "type": "string" }, "qshr": { "description": "Qualifying share account", "type": "string" }, "rdsp": { "description": "Registered Disability Savings Plan (RDSP) (Canada)", "type": "string" }, "resp": { "description": "Registered Education Savings Plan (Canada)", "type": "string" }, "retirement": { "description": "Retirement account not covered by other subtypes", "type": "string" }, "rlif": { "description": "Restricted Life Income Fund (RLIF) (Canada)", "type": "string" }, "roth": { "description": "Roth IRA (US)", "type": "string" }, "roth 401k": { "description": "Employer-sponsored Roth 401(k) plan (US)", "type": "string" }, "roth 403B": { "description": "Roth 403(b) retirement savings account for non-profits and schools (US)", "type": "string" }, "roth 457b": { "description": "Roth 457(b) deferred-compensation retirement plan for governments and non-profits (US)", "type": "string" }, "roth pension": { "description": "Roth version of a standard pension account", "type": "string" }, "roth profit sharing plan": { "description": "Roth version of a profit sharing plan", "type": "string" }, "roth thrift savings plan": { "description": "Roth version of the Thrift Savings Plan (US)", "type": "string" }, "rrif": { "description": "Registered Retirement Income Fund (RRIF) (Canada)", "type": "string" }, "rrsp": { "description": "Registered Retirement Savings Plan (Canadian, similar to US 401(k))", "type": "string" }, "sarsep": { "description": "Salary Reduction Simplified Employee Pension Plan (SARSEP), discontinued retirement plan (US)", "type": "string" }, "sep ira": { "description": "Simplified Employee Pension IRA (SEP IRA), retirement plan for small businesses and self-employed (US)", "type": "string" }, "simple ira": { "description": "Savings Incentive Match Plan for Employees IRA, retirement plan for small businesses (US)", "type": "string" }, "sipp": { "description": "Self-Invested Personal Pension (SIPP) (UK)", "type": "string" }, "stock plan": { "description": "Standard stock plan account", "type": "string" }, "tfsa": { "description": "Tax-Free Savings Account (TFSA), a retirement plan similar to a Roth IRA (Canada)", "type": "string" }, "thrift savings plan": { "description": "Thrift Savings Plan, a retirement savings and investment plan for Federal employees and members of the uniformed services.", "type": "string" }, "trust": { "description": "Account representing funds or assets held by a trustee for the benefit of a beneficiary. Includes both revocable and irrevocable trusts.", "type": "string" }, "ugma": { "description": "'Uniform Gift to Minors Act' (brokerage account for minors, US)", "type": "string" }, "utma": { "description": "'Uniform Transfers to Minors Act' (brokerage account for minors, US)\n", "type": "string" }, "variable annuity": { "description": "Tax-deferred capital accumulation annuity contract", "type": "string" } }, "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" ], "title": "InvestmentAccountSubtype", "type": "string" }, "InvestmentAccountSubtypes": { "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" }, "title": "InvestmentAccountSubtypes", "type": "array" }, "InvestmentFilter": { "additionalProperties": true, "description": "A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier).", "properties": { "account_subtypes": { "$ref": "#/components/schemas/InvestmentAccountSubtypes" } }, "required": [ "account_subtypes" ], "title": "InvestmentFilter", "type": "object" }, "InvestmentHoldingsGetRequestOptions": { "description": "An optional object to filter `/investments/holdings/get` results. If provided, must not be `null`.", "properties": { "account_ids": { "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" }, "type": "array" } }, "type": "object" }, "InvestmentTransaction": { "additionalProperties": true, "description": "A transaction within an investment account.", "properties": { "account_id": { "description": "The `account_id` of the account against which this transaction posted.", "type": "string" }, "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.", "format": "double", "type": "number" }, "cancel_transaction_id": { "deprecated": true, "description": "A legacy field formerly used internally by Plaid to identify certain canceled transactions.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "date": { "description": "The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction. This is typically the settlement date.", "format": "date", "type": "string" }, "fees": { "description": "The combined value of all fees applied to this transaction", "format": "double", "nullable": true, "type": "number" }, "investment_transaction_id": { "description": "The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive.", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "name": { "description": "The institution's description of the transaction.", "type": "string" }, "price": { "description": "The price of the security at which this transaction occurred.", "format": "double", "type": "number" }, "quantity": { "description": "The number of units of the security involved in this transaction. Positive for buy transactions; negative for sell transactions.", "format": "double", "type": "number" }, "security_id": { "description": "The `security_id` to which this transaction is related.", "nullable": true, "type": "string" }, "subtype": { "$ref": "#/components/schemas/InvestmentTransactionSubtype" }, "transaction_datetime": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "type": { "$ref": "#/components/schemas/InvestmentTransactionType" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "investment_transaction_id", "account_id", "security_id", "date", "name", "quantity", "amount", "price", "fees", "type", "subtype", "iso_currency_code", "unofficial_currency_code" ], "title": "InvestmentTransaction", "type": "object" }, "InvestmentTransactionSubtype": { "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" ], "type": "string" }, "InvestmentTransactionType": { "description": "Value is one of the following:\n`buy`: Buying an investment\n`sell`: Selling an investment\n`cancel`: A cancellation of a pending transaction\n`cash`: Activity that modifies a cash position\n`fee`: A fee on the account\n`transfer`: Activity which modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer\n\nFor descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).", "enum": [ "buy", "sell", "cancel", "cash", "fee", "transfer" ], "type": "string" }, "InvestmentsAuth401kContributionDetails": { "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": { "contribution_amount_12m": { "description": "Sum of the contribution transactions on this account, for the past 12 months.", "format": "float", "type": "number" }, "contribution_amount_1m": { "description": "Sum of the contribution transactions on this account, for the past month.", "format": "float", "type": "number" }, "contribution_amount_6m": { "description": "Sum of the contribution transactions on this account, for the past 6 months.", "format": "float", "type": "number" }, "contribution_count_12m": { "description": "Number of contribution transactions on this account, for the past 12 months.", "type": "integer" }, "contribution_count_1m": { "description": "Number of contribution transactions on this account, for the past month.", "type": "integer" }, "contribution_count_6m": { "description": "Number of contribution transactions on this account, for the past 6 months.", "type": "integer" }, "last_contribution_transactions": { "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" }, "type": "array" } }, "required": [ "last_contribution_transactions", "contribution_count_1m", "contribution_amount_1m", "contribution_count_6m", "contribution_amount_6m", "contribution_count_12m", "contribution_amount_12m" ], "type": "object" }, "InvestmentsAuth401kFeeDetails": { "additionalProperties": true, "description": "Object containing information on account fee transactions for the 401k account.", "properties": { "account_fee_amount_12m": { "description": "Sum of account fee transactions on this account, for the past 12 months.", "format": "float", "type": "number" }, "account_fee_count_12m": { "description": "Number of account fee transactions on this account, for the past 12 months.", "type": "integer" } }, "required": [ "account_fee_count_12m", "account_fee_amount_12m" ], "type": "object" }, "InvestmentsAuthAccountDetails401k": { "additionalProperties": true, "description": "Additional account fee and contribution information for 401k type accounts.", "properties": { "account_id": { "description": "The ID of the 401k account.", "type": "string" }, "contribution_details": { "$ref": "#/components/schemas/InvestmentsAuth401kContributionDetails" }, "fee_details": { "$ref": "#/components/schemas/InvestmentsAuth401kFeeDetails" } }, "type": "object" }, "InvestmentsAuthDataSources": { "additionalProperties": true, "description": "Object with metadata pertaining to the source of data for the account numbers, owners, and holdings that are returned.", "properties": { "holdings": { "$ref": "#/components/schemas/DataSources" }, "numbers": { "$ref": "#/components/schemas/DataSources" }, "owners": { "$ref": "#/components/schemas/DataSources" } }, "title": "InvestmentsAuthDataSources", "type": "object" }, "InvestmentsAuthGetNumbers": { "additionalProperties": true, "description": "Identifying information for transferring holdings to an investments account.", "properties": { "acats": { "items": { "$ref": "#/components/schemas/NumbersACATS" }, "type": "array" }, "aton": { "items": { "$ref": "#/components/schemas/NumbersATON" }, "type": "array" }, "retirement_401k": { "items": { "$ref": "#/components/schemas/NumbersRetirement401k" }, "type": "array" } }, "type": "object" }, "InvestmentsAuthGetRequest": { "description": "InvestmentsAuthGetRequest defines the request schema for `/investments/auth/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/InvestmentsAuthGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "InvestmentsAuthGetRequestOptions": { "description": "An optional object to filter `/investments/auth/get` results.", "properties": { "account_ids": { "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" }, "type": "array" } }, "type": "object" }, "InvestmentsAuthGetResponse": { "additionalProperties": true, "description": "InvestmentsAuthGetResponse defines the response schema for `/investments/auth/get`", "properties": { "account_details_401k": { "description": "Additional information for accounts of 401k subtype.", "items": { "$ref": "#/components/schemas/InvestmentsAuthAccountDetails401k" }, "type": "array", "x-hidden-from-docs": true }, "accounts": { "description": "The accounts for which data is being retrieved", "items": { "$ref": "#/components/schemas/InvestmentAccount" }, "type": "array" }, "data_sources": { "$ref": "#/components/schemas/InvestmentsAuthDataSources" }, "holdings": { "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" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "numbers": { "$ref": "#/components/schemas/InvestmentsAuthGetNumbers" }, "owners": { "description": "Information about the account owners for the accounts associated with the Item. ", "items": { "$ref": "#/components/schemas/InvestmentsAuthOwner" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "Objects describing the securities held in the accounts associated with the Item. ", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" } }, "required": [ "accounts", "holdings", "securities", "item", "numbers", "owners", "data_sources", "request_id" ], "type": "object" }, "InvestmentsAuthOwner": { "additionalProperties": true, "description": "Information on the ownership of an investments account", "properties": { "account_id": { "description": "The ID of the account that this identity information pertains to", "type": "string" }, "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.\n\nIf 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.", "items": { "type": "string" }, "type": "array" } }, "title": "InvestmentsAuthOwner", "type": "object" }, "InvestmentsDefaultUpdateWebhook": { "additionalProperties": true, "description": "Fired when new transactions have been detected on an investment account.", "properties": { "cancelled_investments_transactions": { "description": "The number of cancelled transactions reported since the last time this webhook was fired.", "type": "number" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_investments_transactions": { "description": "The number of new transactions reported since the last time this webhook was fired.", "type": "number" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`INVESTMENTS_TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "new_investments_transactions", "cancelled_investments_transactions", "environment" ], "title": "InvestmentsDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "cancelled_investments_transactions": 0, "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_investments_transactions": 16, "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "DEFAULT_UPDATE", "webhook_type": "INVESTMENTS_TRANSACTIONS" } } }, "InvestmentsHistoricalUpdateWebhook": { "additionalProperties": true, "description": "Fired after an asynchronous extraction on an investments account.", "properties": { "cancelled_investments_transactions": { "description": "The number of cancelled transactions reported since the last time this webhook was fired.", "type": "number" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_investments_transactions": { "description": "The number of new transactions reported since the last time this webhook was fired.", "type": "number" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`HISTORICAL_UPDATE`", "type": "string" }, "webhook_type": { "description": "`INVESTMENTS_TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "new_investments_transactions", "cancelled_investments_transactions", "environment" ], "title": "InvestmentsHistoricalUpdateWebhook", "type": "object", "x-examples": { "example-1": { "cancelled_investments_transactions": 0, "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_investments_transactions": 16, "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "HISTORICAL_UPDATE", "webhook_type": "INVESTMENTS_TRANSACTIONS" } } }, "InvestmentsHoldingsGetRequest": { "description": "InvestmentsHoldingsGetRequest defines the request schema for `/investments/holdings/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/InvestmentHoldingsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "InvestmentsHoldingsGetResponse": { "additionalProperties": true, "description": "InvestmentsHoldingsGetResponse defines the response schema for `/investments/holdings/get`", "properties": { "accounts": { "description": "The accounts associated with the Item", "items": { "$ref": "#/components/schemas/InvestmentAccount" }, "type": "array" }, "holdings": { "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" }, "type": "array" }, "is_investments_fallback_item": { "description": "When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow.", "type": "boolean" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "Objects describing the securities held in the accounts associated with the Item. ", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" } }, "required": [ "accounts", "holdings", "securities", "item", "request_id" ], "type": "object" }, "InvestmentsRefreshRequest": { "description": "InvestmentsRefreshRequest defines the request schema for `/investments/refresh`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "InvestmentsRefreshResponse": { "additionalProperties": true, "description": "InvestmentsRefreshResponse defines the response schema for `/investments/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "InvestmentsTransactionsGetRequest": { "description": "InvestmentsTransactionsGetRequest defines the request schema for `/investments/transactions/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_date": { "description": "The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "options": { "$ref": "#/components/schemas/InvestmentsTransactionsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "required": [ "access_token", "start_date", "end_date" ], "type": "object" }, "InvestmentsTransactionsGetRequestOptions": { "description": "An optional object to filter `/investments/transactions/get` results. If provided, must be non-`null`.", "properties": { "account_ids": { "description": "An array of `account_ids` to retrieve for the Item.", "items": { "type": "string" }, "type": "array" }, "async_update": { "default": false, "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.", "type": "boolean" }, "count": { "default": 100, "description": "The number of transactions to fetch.\n", "maximum": 500, "minimum": 1, "type": "integer" }, "offset": { "default": 0, "description": "The number of transactions to skip when fetching transaction history", "minimum": 0, "type": "integer" } }, "type": "object" }, "InvestmentsTransactionsGetResponse": { "additionalProperties": true, "description": "InvestmentsTransactionsGetResponse defines the response schema for `/investments/transactions/get`", "properties": { "accounts": { "description": "The accounts for which transaction history is being fetched.", "items": { "$ref": "#/components/schemas/InvestmentAccount" }, "type": "array" }, "investment_transactions": { "description": "The transactions being fetched", "items": { "$ref": "#/components/schemas/InvestmentTransaction" }, "type": "array" }, "is_investments_fallback_item": { "description": "When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow.", "type": "boolean" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "All securities for which there is a corresponding transaction being fetched.", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" }, "total_investment_transactions": { "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.", "type": "integer" } }, "required": [ "item", "accounts", "securities", "investment_transactions", "total_investment_transactions", "request_id" ], "type": "object" }, "Investments_TransactionsOverride": { "description": "Specify the list of investments transactions on the account.", "properties": { "currency": { "description": "Either a valid `iso_currency_code` or `unofficial_currency_code`", "type": "string" }, "date": { "description": "Posting date for the transaction. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date.", "format": "date", "type": "string" }, "fees": { "description": "The combined value of all fees applied to this transaction.", "format": "double", "type": "number" }, "name": { "description": "The institution's description of the transaction.", "type": "string" }, "price": { "description": "The price of the security at which this transaction occurred.", "format": "double", "type": "number" }, "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.", "format": "double", "type": "number" }, "security": { "$ref": "#/components/schemas/SecurityOverride" }, "type": { "description": "The type of the investment transaction. Possible values are:\n`buy`: Buying an investment\n`sell`: Selling an investment\n`cash`: Activity that modifies a cash position\n`fee`: A fee on the account\n`transfer`: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer", "type": "string" } }, "required": [ "date", "name", "quantity", "price", "type", "currency" ], "title": "Investments_TransactionsOverride", "type": "object" }, "Issue": { "additionalProperties": true, "description": "Information on an issue encountered with financial institutions interactions with financial institutions during Linking.", "properties": { "created_at": { "description": "The creation time of the record tracking this issue.", "format": "date-time", "type": "string" }, "detailed_description": { "description": "A more detailed description for the customer.", "type": "string" }, "institution_ids": { "description": "A list of ids of the financial institutions affected.", "items": { "type": "string" }, "type": "array" }, "institution_names": { "description": "A list of names of the financial institutions affected.", "items": { "type": "string" }, "type": "array" }, "issue_id": { "description": "The unique identifier of the issue.", "type": "string" }, "status": { "$ref": "#/components/schemas/IssuesStatus" }, "summary": { "description": "A simple summary of the error for the end user.", "type": "string" } }, "type": "object" }, "IssueResolvedWebhook": { "additionalProperties": true, "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.", "properties": { "institution_id": { "description": "The unique identifier of the financial institution involved.", "type": "string" }, "institution_name": { "description": "The name of the financial institution involved.", "type": "string" }, "issue_description": { "description": "A simple description of the error for the end user.", "type": "string" }, "issue_id": { "description": "The unique identifier of the connectivity issue.", "type": "string" }, "issue_resolved_at": { "description": "The time when the issue was marked as resolved.", "format": "date-time", "type": "string" }, "webhook_code": { "description": "`ISSUE_RESOLVED`", "type": "string" }, "webhook_type": { "description": "`ISSUES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "issue_id", "issue_description", "issue_resolved_at", "institution_id", "institution_name" ], "title": "IssueResolvedWebhook", "type": "object", "x-examples": { "example-1": { "institution_id": "ins_4", "institution_name": "Example Bank", "issue_description": "Connection to Example Bank temporarily unavailable.", "issue_id": "KI123456", "issue_resolved_at": "2023-07-03T14:30:00Z", "webhook_code": "ISSUE_RESOLVED", "webhook_type": "ISSUES" } } }, "IssuesGetRequest": { "description": "IssuesGetRequest defines the request schema for `/issues/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "issue_id": { "description": "The unique identifier of the issue to retrieve.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "issue_id" ], "type": "object" }, "IssuesGetResponse": { "additionalProperties": true, "description": "IssuesGetResponse defines the response schema for `/issues/get`.", "properties": { "issue": { "$ref": "#/components/schemas/Issue" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "IssuesSearchRequest": { "description": "IssuesSearchRequest defines the request schema for `/issues/search`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_id": { "description": "A unique identifier for the Plaid Item.", "type": "string" }, "link_session_id": { "description": "A unique identifier for the Link session.", "type": "string" }, "link_session_request_id": { "description": "The `request_id` for the Link session that might have had an institution connection issue.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "IssuesSearchResponse": { "additionalProperties": true, "description": "IssuesSearchResponse defines the response schema for `/issues/search`.", "properties": { "issues": { "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.", "items": { "$ref": "#/components/schemas/Issue" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "IssuesStatus": { "description": "The current status of the issue.", "enum": [ "REPORTED", "AWAITING_RESOLUTION", "FIX_IN_PROGRESS", "FIX_PENDING_VALIDATION", "CANNOT_FIX", "RESOLVED" ], "type": "string" }, "IssuesSubscribeRequest": { "description": "IssuesSubscribeRequest defines the request schema for `/issues/subscribe`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "issue_id": { "description": "The unique identifier of the issue to subscribe to.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The webhook URL where notifications should be sent when the issue status changes.", "type": "string" } }, "required": [ "issue_id", "webhook" ], "type": "object" }, "IssuesSubscribeResponse": { "additionalProperties": true, "description": "IssuesSubscribeResponse defines the response schema for `/issues/subscribe`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "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.\n\nNote: You can configure whether a `no_match` on `issuing_country` fails the `documentary_verification` by editing your Plaid Template.", "enum": [ "match", "no_match" ], "type": "string" }, "Item": { "additionalProperties": true, "description": "Metadata about the Item.", "properties": { "auth_method": { "$ref": "#/components/schemas/ItemAuthMethod" }, "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`.", "items": { "$ref": "#/components/schemas/Products" }, "type": "array" }, "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.\n", "items": { "$ref": "#/components/schemas/Products" }, "type": "array" }, "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).", "format": "date-time", "nullable": true, "type": "string" }, "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.\n", "items": { "$ref": "#/components/schemas/Products" }, "type": "array", "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" ] }, "error": { "$ref": "#/components/schemas/PlaidError" }, "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.", "nullable": true, "type": "string" }, "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.", "nullable": true, "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" }, "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`.\n", "items": { "$ref": "#/components/schemas/Products" }, "type": "array" }, "update_type": { "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.\n\n`background` - Item can be updated in the background\n\n`user_present_required` - Item requires user interaction to be updated", "enum": [ "background", "user_present_required" ], "type": "string" }, "webhook": { "description": "The URL registered to receive webhooks for the Item.", "nullable": true, "type": "string" } }, "required": [ "item_id", "webhook", "error", "available_products", "billed_products", "consent_expiration_time", "update_type" ], "type": "object" }, "ItemAccessTokenInvalidateRequest": { "description": "ItemAccessTokenInvalidateRequest defines the request schema for `/item/access_token/invalidate`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "ItemAccessTokenInvalidateResponse": { "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" ], "type": "object" }, "ItemActivityListRequest": { "description": "Request to list a historical log of user consent events.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 50, "maximum": 50, "minimum": 1, "type": "integer" }, "cursor": { "description": "Cursor used for pagination.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "ItemActivityListResponse": { "additionalProperties": true, "description": "Describes a historical log of user consent events.", "properties": { "activities": { "description": "A list of activities.", "items": { "$ref": "#/components/schemas/Activity" }, "type": "array" }, "cursor": { "description": "Cursor used for pagination.", "type": "string" }, "last_data_access_times": { "description": "An array of objects containing timestamps for the last time each data type was accessed per application.", "items": { "$ref": "#/components/schemas/LastDataAccessTimes" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "activities", "last_data_access_times", "request_id" ], "type": "object" }, "ItemAddResultWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "link_session_id": { "description": "The identifier for the Link session.", "type": "string" }, "link_token": { "description": "The `link_token` used to create the Link session.", "type": "string" }, "public_token": { "description": "The `public_token` corresponding to the Item that was added.", "type": "string" }, "webhook_code": { "description": "`ITEM_ADD_RESULT`", "type": "string" }, "webhook_type": { "description": "`LINK`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "link_session_id", "link_token", "public_token", "environment" ], "title": "ItemAddResultWebhook", "type": "object", "x-examples": { "example-1": { "environment": "sandbox", "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", "webhook_code": "ITEM_ADD_RESULT", "webhook_type": "LINK" } } }, "ItemApplicationListRequest": { "description": "Request to list connected applications for a user.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessTokenNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "ItemApplicationListResponse": { "additionalProperties": true, "description": "Describes the connected application for a particular end user.", "properties": { "applications": { "description": "A list of connected applications.", "items": { "$ref": "#/components/schemas/ConnectedApplication" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "applications" ], "type": "object" }, "ItemApplicationListUserAuth": { "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.", "nullable": true, "properties": { "fi_username_hash": { "description": "Account username hashed by FI.", "nullable": true, "type": "string" }, "user_id": { "description": "Account username.", "nullable": true, "type": "string" } }, "type": "object" }, "ItemApplicationScopesUpdateRequest": { "description": "ItemApplicationScopesUpdateRequest defines the request schema for `/item/application/scopes/update`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "context": { "$ref": "#/components/schemas/ScopesContext" }, "scopes": { "$ref": "#/components/schemas/Scopes" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "state": { "$ref": "#/components/schemas/ScopesState" } }, "required": [ "application_id", "access_token", "scopes", "context" ], "type": "object" }, "ItemApplicationScopesUpdateResponse": { "additionalProperties": true, "description": "ItemApplicationScopesUpdateResponse defines the response schema for `/item/application/scopes/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ItemApplicationUnlinkRequest": { "description": "ItemApplicationUnlinkRequest defines the request schema for `/item/application/unlink/`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "application_id", "access_token" ], "type": "object" }, "ItemApplicationUnlinkResponse": { "additionalProperties": true, "description": "ItemApplicationUnlinkResponse defines the response schema for `/item/application/unlink`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ItemAuthMethod": { "description": "The method used to populate Auth data for the Item. This field is only populated for Items that have had Auth numbers data set on at least one of its accounts, and will be `null` otherwise. For info about the various flows, see our [Auth coverage documentation](https://plaid.com/docs/auth/coverage/).\n\n`INSTANT_AUTH`: The Item's Auth data was provided directly by the user's institution connection.\n\n`INSTANT_MATCH`: The Item's Auth data was provided via the Instant Match fallback flow.\n\n`AUTOMATED_MICRODEPOSITS`: The Item's Auth data was provided via the Automated Micro-deposits flow.\n\n`SAME_DAY_MICRODEPOSITS`: The Item's Auth data was provided via the Same-Day Micro-deposits flow.\n\n`INSTANT_MICRODEPOSITS`: The Item's Auth data was provided via the Instant Micro-deposits flow.\n\n`DATABASE_MATCH`: The Item's Auth data was provided via the Database Match flow.\n\n`DATABASE_INSIGHTS`: The Item's Auth data was provided via the Database Insights flow.\n\n`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).\n\n`INVESTMENTS_FALLBACK`: The Item's Auth data for Investments Move was provided via a [fallback flow](https://plaid.com/docs/investments-move/#fallback-flows).", "enum": [ "INSTANT_AUTH", "INSTANT_MATCH", "AUTOMATED_MICRODEPOSITS", "SAME_DAY_MICRODEPOSITS", "INSTANT_MICRODEPOSITS", "DATABASE_MATCH", "DATABASE_INSIGHTS", "TRANSFER_MIGRATED", "INVESTMENTS_FALLBACK", null ], "nullable": true, "type": "string" }, "ItemConsentedDataScope": { "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)", "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" ], "title": "Consented Data Scope", "type": "string" }, "ItemCreateAuthentication": { "description": "Enum representing the entity authenticating the user.", "enum": [ "UNKNOWN", "DATA_PARTNER", "PLAID" ], "type": "string" }, "ItemErrorWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`ERROR`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "error", "environment" ], "title": "ItemErrorWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "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 }, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "ERROR", "webhook_type": "ITEM" } } }, "ItemGetRequest": { "description": "ItemGetRequest defines the request schema for `/item/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "ItemGetResponse": { "additionalProperties": true, "description": "ItemGetResponse defines the response schema for `/item/get` and `/item/webhook/update`", "properties": { "item": { "$ref": "#/components/schemas/ItemWithConsentFields" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/ItemStatusNullable" } }, "required": [ "item", "request_id" ], "type": "object" }, "ItemId": { "description": "The `item_id` of the Item associated with this webhook, warning, or error", "title": "ItemId", "type": "string" }, "ItemImportRequest": { "description": "ItemImportRequest defines the request schema for `/item/import`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "institution_id": { "$ref": "#/components/schemas/ItemImportRequestInstitutionID" }, "options": { "$ref": "#/components/schemas/ItemImportRequestOptions" }, "products": { "description": "Array of product strings", "items": { "$ref": "#/components/schemas/Products" }, "minItems": 1, "type": "array", "x-override-enum-values-shown": [ "assets", "auth", "balance", "employment", "identity", "income_verification", "investments", "liabilities", "payment_initiation", "standing_orders", "transactions", "transfer" ] }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_auth": { "$ref": "#/components/schemas/ItemImportRequestUserAuth" } }, "required": [ "products", "user_auth" ], "type": "object" }, "ItemImportRequestInstitutionID": { "description": "The Plaid Institution ID associated with the Item.", "type": "string" }, "ItemImportRequestOptions": { "description": "An optional object to configure `/item/import` request.", "properties": { "webhook": { "description": "Specifies a webhook URL to associate with an Item. Plaid fires a webhook if credentials fail.\n", "format": "url", "type": "string" } }, "type": "object" }, "ItemImportRequestUserAuth": { "description": "Object of user ID and auth token pair, permitting Plaid to aggregate a user's accounts", "properties": { "auth_token": { "description": "Authorization token Plaid will use to aggregate this user's accounts", "type": "string" }, "user_id": { "description": "Opaque user identifier", "type": "string" } }, "required": [ "user_id", "auth_token" ], "type": "object" }, "ItemImportResponse": { "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" ], "type": "object" }, "ItemLoginRepairedWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`LOGIN_REPAIRED`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "environment" ], "title": "ItemLoginRepairedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "LOGIN_REPAIRED", "webhook_type": "ITEM" } } }, "ItemProductReadyWebhook": { "additionalProperties": true, "description": "Fired once Plaid calculates income from an Item.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`PRODUCT_READY`", "type": "string" }, "webhook_type": { "description": "`INCOME`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "environment" ], "title": "ItemProductReadyWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "PRODUCT_READY", "webhook_type": "INCOME" } } }, "ItemProductsTerminateReasonCode": { "allOf": [ { "$ref": "#/components/schemas/ProductsTerminateReasonCode" } ], "description": "The reason for terminating products on the Item." }, "ItemProductsTerminateRequest": { "description": "ItemProductsTerminateRequest defines the request schema for `/item/products/terminate`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "reason_code": { "$ref": "#/components/schemas/ItemProductsTerminateReasonCode" }, "reason_note": { "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`.", "maxLength": 512, "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "reason_code" ], "type": "object" }, "ItemProductsTerminateResponse": { "additionalProperties": true, "description": "ItemProductsTerminateResponse defines the response schema for `/item/products/terminate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ItemPublicTokenCreateRequest": { "description": "ItemPublicTokenCreateRequest defines the request schema for `/item/public_token/create`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "ItemPublicTokenCreateResponse": { "additionalProperties": true, "description": "ItemPublicTokenCreateResponse defines the response schema for `/item/public_token/create`", "properties": { "expiration": { "format": "date-time", "type": "string" }, "public_token": { "description": "A `public_token` for the particular Item corresponding to the specified `access_token`", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "public_token", "request_id" ], "type": "object" }, "ItemPublicTokenExchangeRequest": { "description": "ItemPublicTokenExchangeRequest defines the request schema for `/item/public_token/exchange`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "public_token": { "description": "Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/public_token/create`.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "public_token" ], "type": "object" }, "ItemPublicTokenExchangeResponse": { "additionalProperties": true, "description": "ItemPublicTokenExchangeResponse defines the response schema for `/item/public_token/exchange`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "item_id": { "description": "The `item_id` value of the Item associated with the returned `access_token`", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "access_token", "item_id", "request_id" ], "type": "object" }, "ItemRemoveReasonCode": { "description": "The reason for removing the Item\n\n`FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud\n`FRAUD_FALSE_IDENTITY`: The end user created the connection using false identity information or stolen credentials\n`FRAUD_ABUSE`: The end user is abusing the client's service or platform through their connected account\n`FRAUD_OTHER`: Other fraud-related reasons involving the end user not covered by the specific fraud categories\n`CONNECTION_IS_NON_FUNCTIONAL`: The connection to the end user's financial institution is broken and cannot be restored\n`OTHER`: Any other reason for removing the connection not covered by the above categories\n", "enum": [ "FRAUD_FIRST_PARTY", "FRAUD_FALSE_IDENTITY", "FRAUD_ABUSE", "FRAUD_OTHER", "CONNECTION_IS_NON_FUNCTIONAL", "OTHER" ], "nullable": true, "type": "string" }, "ItemRemoveRequest": { "description": "ItemRemoveRequest defines the request schema for `/item/remove`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "reason_code": { "$ref": "#/components/schemas/ItemRemoveReasonCode" }, "reason_note": { "description": "Additional context or details about the reason for removing the Item. Personally identifiable information, such as an email address or phone number, should not be included in the `reason_note`.", "maxLength": 512, "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "ItemRemoveResponse": { "additionalProperties": true, "description": "ItemRemoveResponse defines the response schema for `/item/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ItemStatus": { "additionalProperties": true, "description": "An object with information about the status of the Item.", "nullable": true, "properties": { "investments": { "$ref": "#/components/schemas/ItemStatusInvestments" }, "last_webhook": { "$ref": "#/components/schemas/ItemStatusLastWebhook" }, "transactions": { "$ref": "#/components/schemas/ItemStatusTransactions" } }, "title": "ItemStatus", "type": "object", "x-examples": { "example-1": {} } }, "ItemStatusInvestments": { "additionalProperties": true, "description": "Information about the last successful and failed investments update for the Item.", "nullable": true, "properties": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "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.", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" }, "ItemStatusLastWebhook": { "additionalProperties": true, "description": "Information about the last webhook fired for the Item.", "nullable": true, "properties": { "code_sent": { "description": "The last webhook code sent.", "type": "string" }, "sent_at": { "description": "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of when the webhook was fired.\n", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" }, "ItemStatusNullable": { "allOf": [ { "$ref": "#/components/schemas/ItemStatus" }, { "additionalProperties": true, "type": "object" } ], "description": "Information about the last successful and failed transactions update for the Item.", "nullable": true }, "ItemStatusTransactions": { "additionalProperties": true, "description": "Information about the last successful and failed transactions update for the Item.", "nullable": true, "properties": { "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).", "format": "date-time", "nullable": true, "type": "string" }, "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).", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" }, "ItemWebhookUpdateRequest": { "description": "ItemWebhookUpdateRequest defines the request schema for `/item/webhook/update`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The new webhook URL to associate with the Item. To remove a webhook from an Item, set to `null`.", "format": "url", "nullable": true, "type": "string" } }, "required": [ "access_token" ], "type": "object" }, "ItemWebhookUpdateResponse": { "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" ], "type": "object" }, "ItemWithConsentFields": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/Item" }, { "properties": { "consented_data_scopes": { "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" }, "type": "array" }, "consented_use_cases": { "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).\n\nYou 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" }, "type": "array" }, "created_at": { "description": "The date and time when the Item was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" } }, "type": "object" } ], "description": "Metadata about the Item", "type": "object" }, "JWKPublicKey": { "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": { "description": "The alg member identifies the cryptographic algorithm family used with the key.", "type": "string" }, "created_at": { "description": "The timestamp when the key was created, in Unix time.", "type": "integer" }, "crv": { "description": "The crv member identifies the cryptographic curve used with the key.", "type": "string" }, "expired_at": { "description": "The timestamp when the key expired, in Unix time.", "nullable": true, "type": "integer" }, "kid": { "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.", "type": "string" }, "kty": { "description": "The kty (key type) parameter identifies the cryptographic algorithm family used with the key, such as RSA or EC.", "type": "string" }, "use": { "description": "The use (public key use) parameter identifies the intended use of the public key.", "type": "string" }, "x": { "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.", "type": "string" }, "y": { "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.", "type": "string" } }, "required": [ "alg", "kid", "kty", "crv", "x", "y", "use", "created_at", "expired_at" ], "type": "object" }, "JWTHeader": { "additionalProperties": true, "description": "A JWT Header, used for webhook validation", "properties": { "alg": { "type": "string" }, "id": { "type": "string" }, "kid": { "type": "string" } }, "required": [ "id", "kid", "alg" ], "title": "JWTHeader", "type": "object" }, "KYCCheckAddressSummary": { "additionalProperties": true, "description": "Result summary object specifying how the `address` field matched.", "properties": { "city": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "international_details": { "$ref": "#/components/schemas/KYCCheckDetailsInternationalAddress" }, "po_box": { "$ref": "#/components/schemas/POBoxStatus" }, "postal_code": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "region": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "street": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "summary": { "$ref": "#/components/schemas/MatchSummaryCode" }, "type": { "$ref": "#/components/schemas/AddressPurposeLabel" } }, "required": [ "summary", "po_box", "type" ], "type": "object" }, "KYCCheckDateOfBirthSummary": { "additionalProperties": true, "description": "Result summary object specifying how the `date_of_birth` field matched.", "properties": { "day": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "month": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "summary": { "$ref": "#/components/schemas/MatchSummaryCode" }, "year": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" } }, "required": [ "summary" ], "type": "object" }, "KYCCheckDetails": { "additionalProperties": true, "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`.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/KYCCheckAddressSummary" }, "date_of_birth": { "$ref": "#/components/schemas/KYCCheckDateOfBirthSummary" }, "id_number": { "$ref": "#/components/schemas/KYCCheckIDNumberSummary" }, "name": { "$ref": "#/components/schemas/KYCCheckNameSummary" }, "phone_number": { "$ref": "#/components/schemas/KYCCheckPhoneSummary" }, "status": { "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", "type": "string" } }, "required": [ "status", "phone_number", "address", "name", "date_of_birth", "id_number" ], "type": "object" }, "KYCCheckDetailsInternationalAddress": { "additionalProperties": true, "description": "Result summary object specifying how the `address` field matched for fields that are only present on an international KYC check.", "nullable": true, "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" ], "type": "object", "x-hidden-from-docs": true }, "KYCCheckIDNumberSummary": { "additionalProperties": true, "description": "Result summary object specifying how the `id_number` field matched.", "properties": { "summary": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "summary" ], "type": "object" }, "KYCCheckNameSummary": { "additionalProperties": true, "description": "Result summary object specifying how the `name` field matched.", "properties": { "family_name": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "given_name": { "$ref": "#/components/schemas/HiddenMatchSummaryCode" }, "summary": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "summary" ], "type": "object" }, "KYCCheckPhoneSummary": { "additionalProperties": true, "description": "Result summary object specifying how the `phone` field matched.", "properties": { "area_code": { "$ref": "#/components/schemas/MatchSummaryCode" }, "summary": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "summary", "area_code" ], "type": "object" }, "LastDataAccessTimes": { "additionalProperties": true, "description": "Describes the last time each datatype was accessed by an application.", "properties": { "account_balance_info": { "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", "format": "date-time", "nullable": true, "type": "string" }, "account_routing_number": { "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", "format": "date-time", "nullable": true, "type": "string" }, "application_id": { "description": "ID of the application accessing data.", "type": "string" }, "contact_details": { "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", "format": "date-time", "nullable": true, "type": "string" }, "credit_and_loans": { "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", "format": "date-time", "nullable": true, "type": "string" }, "investments": { "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", "format": "date-time", "nullable": true, "type": "string" }, "payroll_info": { "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", "format": "date-time", "nullable": true, "type": "string" }, "transaction_risk_info": { "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", "format": "date-time", "nullable": true, "type": "string" }, "transactions": { "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", "format": "date-time", "nullable": true, "type": "string" } }, "required": [ "application_id", "account_balance_info", "account_routing_number", "contact_details", "transactions", "credit_and_loans", "investments", "payroll_info", "transaction_risk_info" ], "type": "object" }, "LatestScoredEvent": { "additionalProperties": true, "description": "The latest scored event for a user.", "nullable": true, "properties": { "event_id": { "description": "The event ID.", "type": "string" }, "event_type": { "description": "The type of event.", "type": "string" }, "fraud_attributes": { "$ref": "#/components/schemas/FraudAttributes" }, "timestamp": { "description": "The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "trust_index": { "$ref": "#/components/schemas/TrustIndex" } }, "required": [ "event_id", "timestamp", "trust_index", "fraud_attributes" ], "type": "object" }, "LayerAuthenticationPassedWebhook": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "link_session_id": { "description": "An identifier for the Link session these events occurred in", "type": "string" }, "link_token": { "description": "The Link token used to create the Link session these events are from", "type": "string" }, "webhook_code": { "description": "`LAYER_AUTHENTICATION_PASSED`", "type": "string" }, "webhook_type": { "description": "`LAYER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "environment", "link_session_id", "link_token" ], "title": "LayerAuthenticationPassedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "link_session_id": "1daca4d5-9a0d-4e85-a2e9-1e905ecaa32e", "link_token": "link-sandbox-79e723b0-0e04-4248-8a33-15ceb6828a45", "webhook_code": "LAYER_AUTHENTICATION_PASSED", "webhook_type": "LAYER" } } }, "LedgerDepositIdempotencyKey": { "description": "A unique key provided by the client, per unique ledger deposit. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "LedgerDepositIdempotencyKey", "type": "string" }, "LedgerDistributeIdempotencyKey": { "description": "A unique key provided by the client, per unique ledger distribute. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "LedgerDistributeIdempotencyKey", "type": "string" }, "LedgerEventSourceType": { "description": "Source of the ledger event.\n\n`\"TRANSFER\"` - The source of the ledger event is a transfer\n`\"SWEEP\"` - The source of the ledger event is a sweep\n`\"REFUND\"` - The source of the ledger event is a refund", "enum": [ "TRANSFER", "SWEEP", "REFUND" ], "nullable": true, "title": "LedgerEventSourceType", "type": "string" }, "LedgerWithdrawIdempotencyKey": { "description": "A unique key provided by the client, per unique ledger withdraw. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "LedgerWithdrawIdempotencyKey", "type": "string" }, "LendScore": { "additionalProperties": true, "description": "The results of the LendScore", "nullable": true, "properties": { "error_reason": { "description": "Human-readable description of why the LendScore could not be computed.", "nullable": true, "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the LendScore. For a full list of possible reason codes and a mapping of reason codes to human-readable reasons, contact your Plaid account manager. Different LendScore versions will use different sets of reason codes.", "items": { "type": "string" }, "type": "array" }, "score": { "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, "type": "integer" } }, "type": "object" }, "LiabilitiesAccountIdsWithUpdatedLiabilities": { "additionalProperties": { "items": { "type": "string" }, "type": "array" }, "description": "An object with keys of `account_id`'s that are mapped to their respective liabilities fields that changed.\n\nExample: `{ \"XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58\": [\"past_amount_due\"] }`\n", "type": "object" }, "LiabilitiesDefaultUpdateWebhook": { "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.", "properties": { "account_ids_with_new_liabilities": { "description": "An array of `account_id`'s for accounts that contain new liabilities.'", "items": { "type": "string" }, "type": "array" }, "account_ids_with_updated_liabilities": { "$ref": "#/components/schemas/LiabilitiesAccountIdsWithUpdatedLiabilities" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`LIABILITIES`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "error", "account_ids_with_new_liabilities", "account_ids_with_updated_liabilities", "environment" ], "title": "LiabilitiesDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_ids_with_new_liabilities": [ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58", "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp" ], "account_ids_with_updated_liabilities": { "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": [ "past_amount_due" ] }, "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "DEFAULT_UPDATE", "webhook_type": "LIABILITIES" } } }, "LiabilitiesGetRequest": { "description": "LiabilitiesGetRequest defines the request schema for `/liabilities/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/LiabilitiesGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "LiabilitiesGetRequestOptions": { "description": "An optional object to filter `/liabilities/get` results. If provided, `options` cannot be null.", "properties": { "account_ids": { "description": "A list of accounts to retrieve for the Item.\n\nAn error will be returned if a provided `account_id` is not associated with the Item", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "LiabilitiesGetResponse": { "additionalProperties": true, "description": "LiabilitiesGetResponse defines the response schema for `/liabilities/get`", "properties": { "accounts": { "description": "An array of accounts associated with the Item", "items": { "$ref": "#/components/schemas/AccountBase" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "liabilities": { "$ref": "#/components/schemas/LiabilitiesObject" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "accounts", "item", "liabilities", "request_id" ], "type": "object" }, "LiabilitiesObject": { "additionalProperties": true, "description": "An object containing liability accounts", "properties": { "credit": { "description": "The credit accounts returned.", "items": { "$ref": "#/components/schemas/CreditCardLiability" }, "nullable": true, "type": "array" }, "mortgage": { "description": "The mortgage accounts returned.", "items": { "$ref": "#/components/schemas/MortgageLiability" }, "nullable": true, "type": "array" }, "student": { "description": "The student loan accounts returned.", "items": { "$ref": "#/components/schemas/StudentLoan" }, "nullable": true, "type": "array" } }, "required": [ "credit", "mortgage", "student" ], "title": "LiabilitiesObject", "type": "object" }, "LiabilityOverride": { "additionalProperties": true, "description": "Used to configure Sandbox test data for the Liabilities product", "properties": { "balance_transfer_apr": { "description": "The balance transfer APR percentage value. Can only be set if `type` is `credit`.", "format": "double", "type": "number" }, "cash_apr": { "description": "The cash APR percentage value. Can only be set if `type` is `credit`.", "format": "double", "type": "number" }, "expected_payoff_date": { "description": "Override the `expected_payoff_date` field. Can only be set if `type` is `student`.", "format": "date", "type": "string" }, "guarantor": { "description": "Override the `guarantor` field. Can only be set if `type` is `student`.", "type": "string" }, "interest_capitalization_grace_period_months": { "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`.", "type": "number" }, "is_federal": { "description": "Override the `is_federal` field. Can only be set if `type` is `student`.", "type": "boolean" }, "is_overdue": { "description": "Override the `is_overdue` field", "type": "boolean" }, "last_payment_amount": { "description": "Override the `last_payment_amount` field. Can only be set if `type` is `credit`.", "format": "double", "type": "number" }, "loan_name": { "description": "Override the `loan_name` field. Can only be set if `type` is `student`.", "type": "string" }, "loan_status": { "$ref": "#/components/schemas/StudentLoanStatus" }, "minimum_payment_amount": { "description": "Override the `minimum_payment_amount` field. Can only be set if `type` is `credit` or `student`.", "format": "double", "type": "number" }, "nominal_apr": { "description": "The interest rate on the loan as a percentage. Can only be set if `type` is `student`.", "format": "double", "type": "number" }, "origination_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`.", "format": "date", "type": "string" }, "payment_reference_number": { "description": "Override the `payment_reference_number` field. Can only be set if `type` is `student`.", "type": "string" }, "principal": { "description": "The original loan principal. Can only be set if `type` is `student`.", "format": "double", "type": "number" }, "pslf_status": { "$ref": "#/components/schemas/PSLFStatus" }, "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`.", "format": "double", "type": "number" }, "repayment_model": { "$ref": "#/components/schemas/StudentLoanRepaymentModel" }, "repayment_plan_description": { "description": "Override the `repayment_plan.description` field. Can only be set if `type` is `student`.", "type": "string" }, "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": { "description": "Override the `sequence_number` field. Can only be set if `type` is `student`.", "type": "string" }, "servicer_address": { "$ref": "#/components/schemas/Address" }, "special_apr": { "description": "The special APR percentage value. Can only be set if `type` is `credit`.", "format": "double", "type": "number" }, "type": { "description": "The type of the liability object, either `credit` or `student`. Mortgages are not currently supported in the custom Sandbox.", "type": "string" } }, "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" ], "title": "LiabilityOverride", "type": "object" }, "LimitedPurposeType": { "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" ], "type": "string" }, "LimitedPurposeTypes": { "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" }, "title": "LimitedPurposeTypes", "type": "array" }, "LinkCallbackMetadata": { "additionalProperties": true, "description": "Information related to the callback from the Hosted Link session.", "properties": { "accounts": { "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" }, "type": "array" }, "callback_type": { "$ref": "#/components/schemas/LinkDeliveryWebhookCallbackType" }, "event_name": { "$ref": "#/components/schemas/LinkEventName" }, "institution": { "$ref": "#/components/schemas/LinkDeliveryInstitution" }, "link_session_id": { "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.", "type": "string" }, "request_id": { "description": "The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation.", "type": "string" }, "status": { "description": "Indicates where in the flow the Link user exited", "type": "string" } }, "title": "LinkCallbackMetadata", "type": "object", "x-hidden-from-docs": true }, "LinkDeliveryAccount": { "additionalProperties": true, "description": "Information related to account attached to the connected Item", "properties": { "class_type": { "description": "If micro-deposit verification is being used, indicates whether the account being verified is a `business` or `personal` account.", "type": "string" }, "id": { "description": "The Plaid `account_id`", "type": "string" }, "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. It may also not match the mask that the bank displays to the user.", "type": "string" }, "name": { "description": "The official account name", "type": "string" }, "subtype": { "description": "The account subtype. See the [Account schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of possible values", "type": "string" }, "type": { "description": "The account type. See the [Account schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full list of possible values", "type": "string" }, "verification_status": { "$ref": "#/components/schemas/LinkDeliveryVerificationStatus" } }, "title": "LinkDeliveryAccount", "type": "object", "x-hidden-from-docs": true }, "LinkDeliveryCallbackWebhook": { "additionalProperties": true, "description": "Webhook containing metadata proxied over from Link callback e.g. `onEvent`, `onExit`, `onSuccess`.", "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "link_callback_metadata": { "$ref": "#/components/schemas/LinkCallbackMetadata" }, "link_delivery_session_id": { "description": "The ID of the Hosted Link session.", "type": "string" }, "timestamp": { "description": "Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "type": "string" }, "webhook_code": { "description": "`LINK_CALLBACK`", "type": "string" }, "webhook_type": { "description": "`LINK_DELIVERY`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "link_delivery_session_id", "timestamp", "link_callback_metadata" ], "title": "LinkDeliveryCallbackWebhook", "type": "object", "x-examples": {}, "x-hidden-from-docs": true }, "LinkDeliveryCommunicationMethod": { "description": "The communication method containing both the type and address to send the URL.", "properties": { "address": { "description": "The phone number / email address that Hosted Link sessions are delivered to. Phone numbers must be in E.164 format.", "type": "string" }, "method": { "$ref": "#/components/schemas/LinkDeliveryDeliveryMethod" } }, "type": "object" }, "LinkDeliveryCreateRequest": { "description": "LinkDeliveryCreateRequest defines the request schema for `/link_delivery/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "link_token": { "description": "A `link_token` from a previous invocation of `/link/token/create`.", "type": "string" }, "options": { "$ref": "#/components/schemas/LinkDeliveryOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "link_token" ], "type": "object" }, "LinkDeliveryCreateResponse": { "additionalProperties": true, "description": "LinkDeliveryCreateResponse defines the response schema for `/link_delivery/create`", "properties": { "link_delivery_session_id": { "description": "The ID for the Hosted Link session. Same as the `link_token` string excluding the \"link-{env}-\" prefix.", "type": "string" }, "link_delivery_url": { "description": "The URL to the Hosted Link session, which will be delivered by the specified delivery method.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "link_delivery_url", "link_delivery_session_id", "request_id" ], "type": "object" }, "LinkDeliveryDeliveryMethod": { "description": "The delivery method to be used to deliver the Hosted Link session URL.\n\n`SMS`: The URL will be delivered through SMS\n\n`EMAIL`: The URL will be delivered through email", "enum": [ "SMS", "EMAIL" ], "type": "string" }, "LinkDeliveryGetRequest": { "description": "LinkDeliveryGetRequest defines the request schema for `/link_delivery/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "link_delivery_session_id": { "description": "The ID for the Hosted Link session from a previous invocation of `/link_delivery/create`.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "link_delivery_session_id" ], "type": "object" }, "LinkDeliveryGetResponse": { "additionalProperties": true, "description": "LinkDeliveryGetRequest defines the response schema for `/link_delivery/get`", "properties": { "access_tokens": { "description": "An array of access tokens associated with the Hosted Link session.", "items": { "$ref": "#/components/schemas/AccessToken" }, "nullable": true, "type": "array" }, "completed_at": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "created_at": { "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.", "format": "date-time", "type": "string" }, "item_ids": { "description": "An array of `item_id`s associated with the Hosted Link session.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/LinkDeliverySessionStatus" } }, "required": [ "status", "created_at", "request_id" ], "type": "object" }, "LinkDeliveryInstitution": { "additionalProperties": true, "description": "Information related to the financial institution.", "properties": { "institution_id": { "description": "The Plaid institution identifier", "type": "string" }, "name": { "description": "The full institution name, such as 'Wells Fargo'", "type": "string" } }, "title": "LinkDeliveryInstitution", "type": "object", "x-hidden-from-docs": true }, "LinkDeliveryMetadata": { "additionalProperties": true, "description": "Information related to the related to the delivery of the link session to users", "properties": { "communication_method": { "$ref": "#/components/schemas/LinkDeliveryWebhookCommunicationMethod" }, "delivery_status": { "$ref": "#/components/schemas/LinkDeliveryWebhookDeliveryStatus" } }, "title": "LinkDeliveryMetadata", "type": "object", "x-hidden-from-docs": true }, "LinkDeliveryOptions": { "description": "Optional metadata related to the Hosted Link session", "properties": { "recipient": { "$ref": "#/components/schemas/LinkDeliveryRecipient" } }, "type": "object" }, "LinkDeliveryRecipient": { "description": "Metadata related to the recipient. If the information required to populate this field is not available, leave it blank.", "properties": { "communication_methods": { "description": "The list of communication methods to send the Hosted Link session URL to. If delivery is not required, leave this field blank.", "items": { "$ref": "#/components/schemas/LinkDeliveryCommunicationMethod" }, "type": "array" }, "first_name": { "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.", "type": "string" } }, "type": "object" }, "LinkDeliverySessionStatus": { "description": "The status of the given Hosted Link session.\n\n`CREATED`: The session is created but not yet accessed by the user\n\n`OPENED`: The session is opened by the user but not yet completed\n\n`EXITED`: The session has been exited by the user\n\n`COMPLETED`: The session has been completed by the user\n\n`EXPIRED`: The session has expired", "enum": [ "CREATED", "OPENED", "EXITED", "COMPLETED", "EXPIRED" ], "type": "string" }, "LinkDeliveryVerificationStatus": { "description": "Indicates an Item's micro-deposit-based verification or database verification status.", "enum": [ "automatically_verified", "pending_automatic_verification", "pending_manual_verification", "manually_verified", "verification_expired", "verification_failed", "unsent", "database_matched", "database_insights_pending" ], "title": "LinkDeliveryVerificationStatus", "type": "string" }, "LinkDeliveryWebhookCallbackType": { "description": "The type of Link callback event", "enum": [ "ON_SUCCESS", "ON_EVENT", "ON_EXIT" ], "title": "LinkDeliveryWebhookCallbackType", "type": "string" }, "LinkDeliveryWebhookCommunicationMethod": { "description": "The communication method used to deliver the Hosted Link session", "enum": [ "SMS", "EMAIL" ], "title": "LinkDeliveryWebhookCommunicationMethod", "type": "string" }, "LinkDeliveryWebhookDeliveryStatus": { "description": "The status of the delivery of the Hosted Link to the user", "enum": [ "SUCCESS", "FAILURE" ], "title": "LinkDeliveryWebhookDeliveryStatus", "type": "string" }, "LinkEvent": { "additionalProperties": true, "description": "An event that occurred while the user was going through Link", "properties": { "event_id": { "description": "UUID that can be used to deduplicate events", "type": "string" }, "event_metadata": { "$ref": "#/components/schemas/LinkEventMetadata" }, "event_name": { "description": "Event name", "type": "string" }, "timestamp": { "description": "Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "type": "string" } }, "required": [ "event_id", "timestamp", "event_name", "event_metadata" ], "title": "LinkEvent", "type": "object" }, "LinkEventMetadata": { "additionalProperties": true, "description": "Metadata about an event that occurred while the user was going through Link", "properties": { "account_number_mask": { "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`.", "type": "string" }, "brand_name": { "description": "The name of the selected brand.", "type": "string" }, "error_code": { "description": "The error code that the user encountered. Emitted by `ERROR`, `EXIT`.", "type": "string" }, "error_message": { "description": "The error message that the user encountered. Emitted by: `ERROR`, `EXIT`.", "type": "string" }, "error_type": { "description": "The error type that the user encountered. Emitted by: `ERROR`, `EXIT`.", "type": "string" }, "exit_status": { "description": "The status key indicates the point at which the user exited the Link flow. Emitted by: `EXIT`.", "type": "string" }, "institution_id": { "description": "The ID of the selected institution. Emitted by: all events.", "type": "string" }, "institution_name": { "description": "The name of the selected institution. Emitted by: all events.", "type": "string" }, "institution_search_query": { "description": "The query used to search for institutions. Emitted by: `SEARCH_INSTITUTION`.", "type": "string" }, "match_reason": { "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`.", "type": "string" }, "mfa_type": { "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`.", "type": "string" }, "request_id": { "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.", "type": "string" }, "routing_number": { "description": "The routing number submitted by user at the micro-deposits routing number pane. Emitted by `SUBMIT_ROUTING_NUMBER`.", "type": "string" }, "selection": { "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`.", "type": "string" }, "view_name": { "description": "The name of the view that is being transitioned to. Emitted by: `TRANSITION_VIEW`.", "type": "string" } }, "title": "LinkEventMetadata", "type": "object" }, "LinkEventName": { "description": "A string representing the event that has just occurred in the Link flow.", "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" ], "title": "LinkEventName", "type": "string" }, "LinkEventsWebhook": { "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.\n\nBy 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": { "events": { "description": "The Link events emitted during the Link session", "items": { "$ref": "#/components/schemas/LinkEvent" }, "type": "array" }, "link_session_id": { "description": "An identifier for the Link session these events occurred in", "type": "string" }, "link_token": { "description": "The Link token used to create the Link session these events are from", "type": "string" }, "webhook_code": { "description": "`EVENTS`", "type": "string" }, "webhook_type": { "description": "`LINK`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "events", "link_session_id", "link_token" ], "title": "LinkEventsWebhook", "type": "object", "x-examples": { "example-1": { "environment": "sandbox", "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" } ], "link_session_id": "1daca4d5-9a0d-4e85-a2e9-1e905ecaa32e", "link_token": "link-sandbox-79e723b0-0e04-4248-8a33-15ceb6828a45", "webhook_code": "EVENTS", "webhook_type": "LINK" } } }, "LinkOAuthCorrelationIdExchangeRequest": { "description": "LinkOAuthCorrelationIdExchangeRequest defines the request schema for `/link/oauth/correlation_id/exchange`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "link_correlation_id": { "description": "A `link_correlation_id` from a received OAuth redirect URI callback", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "link_correlation_id" ], "type": "object" }, "LinkOAuthCorrelationIdExchangeResponse": { "additionalProperties": true, "description": "LinkOAuthCorrelationIdExchangeResponse defines the response schema for `/link/oauth/correlation_id/exchange`", "properties": { "link_token": { "description": "The `link_token` associated to the given `link_correlation_id`, which can be used to re-initialize Link.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "link_token", "request_id" ], "type": "object" }, "LinkSessionBankEmploymentResult": { "additionalProperties": true, "description": "The details of a bank employment verification in Link.", "properties": { "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "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" }, "status": { "$ref": "#/components/schemas/CreditSessionBankEmploymentStatus" } }, "required": [ "status", "item_id", "institution" ], "type": "object" }, "LinkSessionBankIncomeResult": { "additionalProperties": true, "description": "The details of a bank income verification in Link.", "properties": { "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "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" }, "status": { "$ref": "#/components/schemas/CreditSessionBankIncomeStatus" } }, "required": [ "status", "item_id", "institution" ], "type": "object" }, "LinkSessionCraDocumentUploadResult": { "description": "The details of a document upload CRA session in link", "nullable": true, "properties": { "num_bank_statements_uploaded": { "description": "The number of bank statements uploaded by the user.", "type": "integer" } }, "required": [ "num_bank_statements_uploaded" ], "type": "object" }, "LinkSessionCraItemAddResult": { "additionalProperties": true, "description": "The details of a Plaid Check Item add in Link.", "properties": { "accounts": { "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" }, "type": "array" }, "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "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" } }, "required": [ "item_id", "accounts", "institution" ], "type": "object" }, "LinkSessionCraUpdateResult": { "additionalProperties": true, "description": "The details of a Plaid Check Item update via update mode in Link.", "properties": { "accounts": { "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" }, "type": "array" }, "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "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" } }, "required": [ "item_id", "accounts", "institution" ], "type": "object" }, "LinkSessionExit": { "additionalProperties": true, "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.", "nullable": true, "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "metadata": { "$ref": "#/components/schemas/LinkSessionExitMetadata" } }, "required": [ "error", "metadata" ], "type": "object" }, "LinkSessionExitDeprecated": { "additionalProperties": true, "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.", "nullable": true, "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "metadata": { "$ref": "#/components/schemas/LinkSessionExitMetadata" } }, "required": [ "error", "metadata" ], "type": "object" }, "LinkSessionExitMetadata": { "description": "Displayed if a user exits Link without successfully linking an Item.", "nullable": true, "properties": { "institution": { "$ref": "#/components/schemas/LinkSessionExitMetadataInstitution" }, "link_session_id": { "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.", "type": "string" }, "request_id": { "description": "The request ID for the last request made by Link. This can be shared with Plaid support to expedite investigation.", "type": "string" }, "status": { "description": "The point at which the user exited the Link flow. One of the following values.", "properties": { "choose_device": { "description": "User prompted to select a device on which to receive a one-time passcode" }, "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" }, "requires_account_selection": { "description": "User prompted to select one or more financial accounts to share" }, "requires_code": { "description": "User prompted to provide 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_oauth": { "description": "User prompted to enter an OAuth flow" }, "requires_questions": { "description": "User prompted to answer security questions" }, "requires_selections": { "description": "User prompted to answer multiple choice question(s)" } }, "type": "string" } }, "type": "object" }, "LinkSessionExitMetadataInstitution": { "description": "An institution object. If the Item was created via Same-Day or Instant micro-deposit verification, will be `null`.", "nullable": true, "properties": { "institution_id": { "description": "The Plaid institution identifier", "type": "string" }, "name": { "description": "The full institution name, such as `Wells Fargo`", "type": "string" } }, "type": "object" }, "LinkSessionFinishedWebhook": { "additionalProperties": true, "description": "Contains the state of a completed Link session, along with the public token(s) if available.\n\nBy 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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "link_session_id": { "description": "The identifier for the Link session.", "type": "string" }, "link_token": { "description": "The `link_token` used to create the Link session.", "type": "string" }, "public_token": { "deprecated": true, "description": "The public token generated by the Link session. This field has been deprecated; please use `public_tokens` instead.", "type": "string" }, "public_tokens": { "description": "The public tokens generated by the Link session.", "items": { "type": "string" }, "type": "array" }, "status": { "description": "The final status of the Link session. Will always be \"SUCCESS\" or \"EXITED\".", "type": "string" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`SESSION_FINISHED`", "type": "string" }, "webhook_type": { "description": "`LINK`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "status", "link_session_id", "link_token", "environment" ], "title": "LinkSessionFinishedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "sandbox", "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" ], "status": "SUCCESS", "webhook_code": "SESSION_FINISHED", "webhook_type": "LINK" } } }, "LinkSessionItemAddResult": { "additionalProperties": true, "description": "The details of an Item add in Link.", "properties": { "accounts": { "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" }, "type": "array" }, "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "public_token": { "description": "Returned once a user has successfully linked their Item.", "type": "string" } }, "required": [ "public_token", "accounts", "institution" ], "type": "object" }, "LinkSessionPayrollIncomeResult": { "additionalProperties": true, "description": "The details of a digital payroll income verification in Link.", "properties": { "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "num_paystubs_retrieved": { "description": "The number of paystubs retrieved from a payroll provider.", "type": "integer" }, "num_w2s_retrieved": { "description": "The number of W-2s retrieved from a payroll provider.", "type": "integer" } }, "required": [ "num_paystubs_retrieved", "num_w2s_retrieved", "institution" ], "type": "object" }, "LinkSessionResults": { "additionalProperties": true, "description": "The set of results for a Link session.", "nullable": true, "properties": { "bank_income_results": { "description": "The set of bank income verifications for the Link session.", "items": { "$ref": "#/components/schemas/LinkSessionBankIncomeResult" }, "type": "array" }, "cra_document_upload_results": { "$ref": "#/components/schemas/LinkSessionCraDocumentUploadResult" }, "cra_item_add_results": { "description": "The set of Plaid Check Item adds for the Link session.", "items": { "$ref": "#/components/schemas/LinkSessionCraItemAddResult" }, "type": "array" }, "cra_update_results": { "description": "The set of Plaid Check Item updates for the Link session.", "items": { "$ref": "#/components/schemas/LinkSessionCraUpdateResult" }, "type": "array" }, "document_income_results": { "$ref": "#/components/schemas/CreditSessionDocumentIncomeResult" }, "item_add_results": { "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" }, "type": "array" }, "payroll_income_results": { "description": "The set of payroll income verifications for the Link session.", "items": { "$ref": "#/components/schemas/LinkSessionPayrollIncomeResult" }, "type": "array" } }, "required": [ "item_add_results", "cra_item_add_results", "cra_update_results", "bank_income_results", "payroll_income_results", "document_income_results" ], "type": "object" }, "LinkSessionSuccess": { "deprecated": true, "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": { "metadata": { "$ref": "#/components/schemas/LinkSessionSuccessMetadata" }, "public_token": { "description": "Displayed once a user has successfully linked their Item.", "type": "string" } }, "required": [ "public_token", "metadata" ], "type": "object" }, "LinkSessionSuccessMetadata": { "description": "Displayed once a user has successfully linked their Item.", "nullable": true, "properties": { "accounts": { "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" }, "type": "array" }, "institution": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataInstitution" }, "link_session_id": { "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.", "type": "string" }, "transfer_status": { "$ref": "#/components/schemas/LinkSessionSuccessMetadataTransferStatus" } }, "type": "object" }, "LinkSessionSuccessMetadataAccount": { "description": "An account attached to the connected Item.", "properties": { "class_type": { "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.", "nullable": true, "type": "string" }, "id": { "description": "The Plaid `account_id`\n", "type": "string" }, "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. It may also not match the mask that the bank displays to the user.", "nullable": true, "type": "string" }, "name": { "description": "The official account name", "type": "string" }, "subtype": { "description": "The account subtype. See the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full list of possible values", "type": "string" }, "type": { "description": "The account type. See the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full list of possible values", "type": "string" }, "verification_status": { "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:\n\n`pending_automatic_verification`: The Item is pending automatic verification.\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.\n\n`automatically_verified`: The Item has successfully been automatically verified.\n\n`manually_verified`: The Item has successfully been manually verified.\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\n\n`unsent`: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.\n\n`database_insights_pending`: The Database Auth result is pending and will be available upon Auth request.\n\n`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.\n\n`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.\n\n`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.\n\n`database_matched`: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.\n\n`null` or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.\n", "nullable": true, "type": "string" } }, "type": "object" }, "LinkSessionSuccessMetadataInstitution": { "description": "An institution object. If the Item was created via Same-Day or Instant micro-deposit verification, will be `null`.", "nullable": true, "properties": { "institution_id": { "description": "The Plaid institution identifier", "type": "string" }, "name": { "description": "The full institution name, such as `'Wells Fargo'`", "type": "string" } }, "type": "object" }, "LinkSessionSuccessMetadataTransferStatus": { "description": "The status of a transfer. Returned only when [Transfer UI](https://plaid.com/docs/transfer/using-transfer-ui) is implemented.\n\n- `COMPLETE` - The transfer was completed.\n- `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 ], "nullable": true, "type": "string" }, "LinkTokenAccountFilters": { "additionalProperties": true, "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).\n\nThe 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.\n", "properties": { "credit": { "$ref": "#/components/schemas/CreditFilter" }, "depository": { "$ref": "#/components/schemas/DepositoryFilter" }, "investment": { "$ref": "#/components/schemas/InvestmentFilter" }, "loan": { "$ref": "#/components/schemas/LoanFilter" }, "other": { "$ref": "#/components/schemas/OtherFilter" } }, "type": "object" }, "LinkTokenCashflowReport": { "description": "Configuration parameters for the Cashflow Report product. Currently in closed beta.", "properties": { "days_requested": { "default": 365, "description": "Number of days of transaction history to request in the Cashflow Report product.", "maximum": 730, "minimum": 1, "type": "integer" } }, "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateCardSwitch": { "description": "A map containing data to pass in for the Card Switch flow.", "properties": { "card_bin": { "description": "The BIN (Bank Identification Number) of the card to switch.", "type": "string" } }, "required": [ "card_bin" ], "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateCreditFilter": { "description": "A filter to apply to `credit`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/CreditAccountSubtypes" } }, "type": "object" }, "LinkTokenCreateDepositoryFilter": { "description": "A filter to apply to `depository`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/DepositoryAccountSubtypes" }, "limited_purpose_types": { "$ref": "#/components/schemas/LimitedPurposeTypes" } }, "type": "object" }, "LinkTokenCreateHostedLink": { "additionalProperties": true, "description": "Configuration parameters for Hosted Link. To enable the session for Hosted Link, send this object in the request. It can be empty.", "properties": { "completion_redirect_uri": { "$ref": "#/components/schemas/HostedLinkCompletionRedirectURI" }, "delivery_method": { "$ref": "#/components/schemas/HostedLinkDeliveryMethod" }, "is_mobile_app": { "$ref": "#/components/schemas/HostedLinkIsMobileApp" }, "url_lifetime_seconds": { "$ref": "#/components/schemas/HostedLinkURLLifetimeSeconds" } }, "type": "object" }, "LinkTokenCreateIdentity": { "description": "Identity object used to specify document upload", "properties": { "account_ids": { "description": "An array of `account_ids`. Currently can only contain one `account_id`. Must be populated if using Document Upload.", "items": { "type": "string" }, "type": "array" }, "is_document_upload": { "description": "Used to specify whether the Link session is Identity Document Upload", "type": "boolean" }, "parsing_configs": { "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" }, "type": "array" } }, "type": "object" }, "LinkTokenCreateInstitutionData": { "description": "A map containing data used to highlight institutions in Link.", "properties": { "routing_number": { "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.", "type": "string" } }, "type": "object" }, "LinkTokenCreateInvestmentFilter": { "description": "A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier).", "properties": { "account_subtypes": { "$ref": "#/components/schemas/InvestmentAccountSubtypes" } }, "type": "object" }, "LinkTokenCreateLoanFilter": { "description": "A filter to apply to `loan`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/LoanAccountSubtypes" } }, "type": "object" }, "LinkTokenCreateRequest": { "description": "LinkTokenCreateRequest defines the request schema for `/link/token/create`", "properties": { "access_token": { "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, "type": "string" }, "access_tokens": { "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" }, "type": "array", "x-hidden-from-docs": true }, "account_filters": { "$ref": "#/components/schemas/LinkTokenAccountFilters" }, "additional_consented_products": { "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.\n\n`balance` is *not* a valid value, the Balance product does not require explicit initialization and will automatically have consent collected.\n\nInstitutions that do not support these products will still be shown in Link.\n\nThere should be no overlap between this array and the `products` or `required_if_supported_products` arrays.\n\nIf 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" }, "nullable": true, "type": "array", "x-override-enum-values-shown": [ "auth", "balance_plus", "identity", "investments", "investments_auth", "liabilities", "transactions", "signal" ] }, "android_package_name": { "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.", "type": "string" }, "appearance_mode": { "$ref": "#/components/schemas/LinkTokenCreateRequestAppearanceMode" }, "auth": { "$ref": "#/components/schemas/LinkTokenCreateRequestAuth" }, "base_report": { "$ref": "#/components/schemas/LinkTokenCreateRequestBaseReport" }, "card_switch": { "$ref": "#/components/schemas/LinkTokenCreateCardSwitch" }, "cashflow_report": { "$ref": "#/components/schemas/LinkTokenCashflowReport" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_name": { "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, "type": "string" }, "consumer_report_permissible_purpose": { "$ref": "#/components/schemas/ConsumerReportPermissiblePurpose" }, "country_codes": { "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.\n\nIf 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.\n\nIf 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.\n\nIf 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.\n\nIf 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, "type": "array" }, "cra_enabled": { "description": "If `true`, request a CRA connection. Defaults to `false`.", "type": "boolean", "x-hidden-from-docs": true }, "cra_options": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptions" }, "credit_partner_insights": { "$ref": "#/components/schemas/LinkTokenCreateRequestCreditPartnerInsights" }, "employment": { "$ref": "#/components/schemas/LinkTokenCreateRequestEmployment" }, "enable_multi_item_link": { "description": "If `true`, enable linking multiple items in the same Link session. Defaults to `false`.", "type": "boolean" }, "eu_config": { "$ref": "#/components/schemas/LinkTokenEUConfig" }, "financekit_supported": { "description": "If `true`, indicates that client supports linking FinanceKit / AppleCard items. Defaults to `false`.", "type": "boolean", "x-hidden-from-docs": true }, "hosted_link": { "$ref": "#/components/schemas/LinkTokenCreateHostedLink" }, "identity": { "$ref": "#/components/schemas/LinkTokenCreateIdentity" }, "identity_verification": { "$ref": "#/components/schemas/LinkTokenCreateRequestIdentityVerification" }, "income_verification": { "$ref": "#/components/schemas/LinkTokenCreateRequestIncomeVerification" }, "institution_data": { "$ref": "#/components/schemas/LinkTokenCreateInstitutionData" }, "institution_id": { "description": "Used for certain legacy use cases", "type": "string" }, "investments": { "$ref": "#/components/schemas/LinkTokenInvestments" }, "investments_auth": { "$ref": "#/components/schemas/LinkTokenInvestmentsAuth" }, "language": { "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).\n\nSupported languages are:\n- Danish (`'da'`)\n- Dutch (`'nl'`)\n- English (`'en'`)\n- Estonian (`'et'`)\n- French (`'fr'`)\n- German (`'de'`)\n- Hindi (`'hi'`)\n- Italian (`'it'`)\n- Latvian (`'lv'`)\n- Lithuanian (`'lt'`)\n- Norwegian (`'no'`)\n- Polish (`'pl'`)\n- Portuguese (`'pt'`)\n- Romanian (`'ro'`)\n- Spanish (`'es'`)\n- Swedish (`'sv'`)\n- Vietnamese (`'vi'`)\n\nWhen using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.", "minLength": 1, "type": "string" }, "link_customization_name": { "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`.", "type": "string" }, "optional_products": { "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.\n\nThere 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.\n\nFor more details on using this feature, see [Optional Products](https://plaid.com/docs/link/initializing-products/#optional-products).", "items": { "$ref": "#/components/schemas/Products" }, "nullable": true, "type": "array", "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" ] }, "payment_configuration": { "$ref": "#/components/schemas/LinkTokenCreateRequestPaymentConfiguration" }, "payment_initiation": { "$ref": "#/components/schemas/LinkTokenCreateRequestPaymentInitiation" }, "products": { "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.\n\nTo 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).\n\nTo 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/).\n\n`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.\n\nIf launching Link with CRA products, `cra_base_reports` is required and must be included in the `products` array.\n\nNote 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.\n\nIn 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" }, "nullable": true, "type": "array", "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" ] }, "redirect_uri": { "$ref": "#/components/schemas/LinkTokenCreateRequestRedirectUri" }, "required_if_supported_products": { "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.\n\nThere 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.\n\nFor 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" }, "nullable": true, "type": "array", "x-override-enum-values-shown": [ "auth", "identity", "investments", "liabilities", "transactions", "signal", "statements", "protect_linked_bank", "protect_transactions" ] }, "secret": { "$ref": "#/components/schemas/APISecret" }, "statements": { "$ref": "#/components/schemas/LinkTokenCreateRequestStatements" }, "third_party_user_token": { "description": "A third party user token associated with the current user.", "type": "string", "x-hidden-from-docs": true }, "transactions": { "$ref": "#/components/schemas/LinkTokenTransactions" }, "transfer": { "$ref": "#/components/schemas/LinkTokenCreateRequestTransfer" }, "update": { "$ref": "#/components/schemas/LinkTokenCreateRequestUpdate" }, "user": { "$ref": "#/components/schemas/LinkTokenCreateRequestUser" }, "user_id": { "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.", "type": "string" }, "user_token": { "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`.", "type": "string" }, "webhook": { "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", "type": "string" } }, "required": [ "client_name", "language", "country_codes" ], "type": "object", "x-reserved-keys": [ "deposit_switch" ] }, "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.\n\nFor a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#account-type-schema).\n\nFor institutions using OAuth, the filter will not affect the list of institutions or accounts shown by the bank in the OAuth window.\n", "properties": { "credit": { "$ref": "#/components/schemas/LinkTokenCreateCreditFilter" }, "depository": { "$ref": "#/components/schemas/LinkTokenCreateDepositoryFilter" }, "investment": { "$ref": "#/components/schemas/LinkTokenCreateInvestmentFilter" }, "loan": { "$ref": "#/components/schemas/LinkTokenCreateLoanFilter" } }, "type": "object" }, "LinkTokenCreateRequestAppearanceMode": { "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 ], "nullable": true, "type": "string", "x-hidden-from-docs": true }, "LinkTokenCreateRequestAuth": { "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": { "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`.", "type": "boolean" }, "automated_microdeposits_enabled": { "description": "Specifies whether the Link session is enabled for the Automated Micro-deposits flow. Default behavior is `false`.", "type": "boolean" }, "database_insights_enabled": { "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.", "type": "boolean" }, "database_match_enabled": { "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.", "type": "boolean" }, "flow_type": { "deprecated": true, "description": "This field has been deprecated in favor of `auth_type_select_enabled`.", "enum": [ "FLEXIBLE_AUTH" ], "type": "string", "x-hidden-from-docs": true }, "instant_match_enabled": { "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`.", "type": "boolean" }, "instant_microdeposits_enabled": { "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`.", "type": "boolean" }, "reroute_to_credentials": { "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`.", "enum": [ "OFF", "OPTIONAL", "FORCED" ], "type": "string" }, "same_day_microdeposits_enabled": { "description": "Specifies whether the Link session is enabled for the Same-Day Micro-deposits flow. Default behavior is `false`.", "type": "boolean" }, "sms_microdeposits_verification_enabled": { "description": "Specifies whether the Link session is enabled for SMS micro-deposits verification. Default behavior is `true`.", "type": "boolean" } }, "type": "object" }, "LinkTokenCreateRequestBaseReport": { "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": { "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "days_requested": { "description": "The maximum integer number of days of history to include in the Base Report.", "maximum": 730, "minimum": 1, "type": "integer" } }, "required": [ "days_requested" ], "title": "LinkTokenCreateRequestBaseReport", "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateRequestCraOptions": { "description": "Specifies options for initializing Link for use with Plaid Check products", "properties": { "base_report": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsBaseReport" }, "cashflow_insights": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsCashflowInsights" }, "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "days_requested": { "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, "type": "integer" }, "days_required": { "description": "The minimum number of days of data required for the report to be successfully generated.", "maximum": 184, "type": "integer" }, "include_investments": { "description": "Indicates that investment data should be extracted from the linked account(s).", "nullable": true, "type": "boolean" }, "income_insights": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsIncomeInsights" }, "lend_score": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsLendScore" }, "network_insights": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsNetworkInsights" }, "partner_insights": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsPartnerInsights" } }, "required": [ "days_requested" ], "title": "LinkTokenCreateRequestCraOptions", "type": "object" }, "LinkTokenCreateRequestCraOptionsBaseReport": { "description": "Specifies options for initializing Link for use with the Base Report product, specifically the `client_report_id`.", "properties": { "client_report_id": { "description": "Client-generated identifier, which can be used by lenders to track loan applications.", "nullable": true, "type": "string" }, "gse_options": { "$ref": "#/components/schemas/LinkTokenCreateRequestCraOptionsBaseReportGSEOptions" }, "home_lending_report_options": { "$ref": "#/components/schemas/CraCheckReportHomeLendingReportOptions" }, "require_identity": { "description": "Indicates that the report must include identity information. If identity information is not available, the report will fail.", "nullable": true, "type": "boolean" } }, "title": "LinkTokenCreateRequestCraOptionsBaseReport", "type": "object" }, "LinkTokenCreateRequestCraOptionsBaseReportGSEOptions": { "description": "Specifies options for initializing Link to create reports that can be shared with GSEs for mortgage verification.", "nullable": true, "properties": { "report_types": { "description": "Specifies which types of reports should be made available to GSEs.", "items": { "$ref": "#/components/schemas/GSEReportType" }, "type": "array" } }, "required": [ "report_types" ], "title": "LinkTokenCreateRequestCraOptionsBaseReportGSEOptions", "type": "object" }, "LinkTokenCreateRequestCraOptionsCashflowInsights": { "description": "Specifies options for initializing Link for use with the Cashflow Insights product.", "properties": { "attributes_version": { "$ref": "#/components/schemas/CashflowAttributesVersion" } }, "title": "LinkTokenCreateRequestCraOptionsCashflowInsights", "type": "object" }, "LinkTokenCreateRequestCraOptionsIncomeInsights": { "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" ], "title": "LinkTokenCreateRequestCraOptionsIncomeInsights", "type": "object" }, "LinkTokenCreateRequestCraOptionsLendScore": { "description": "Specifies options for initializing Link for use with the CRA LendScore product.", "properties": { "lend_score_version": { "$ref": "#/components/schemas/PlaidLendScoreVersion" } }, "title": "LinkTokenCreateRequestCraOptionsLendScore", "type": "object" }, "LinkTokenCreateRequestCraOptionsNetworkInsights": { "description": "Specifies options for initializing Link for use with the CRA Network Insights product.", "properties": { "network_insights_version": { "$ref": "#/components/schemas/NetworkInsightsVersion" } }, "title": "LinkTokenCreateRequestCraOptionsNetworkInsights", "type": "object" }, "LinkTokenCreateRequestCraOptionsPartnerInsights": { "description": "Specifies options for initializing Link for use with the Credit Partner Insights product.", "properties": { "fico": { "$ref": "#/components/schemas/CraPartnerInsightsFicoInput" }, "prism_versions": { "$ref": "#/components/schemas/PrismVersions" } }, "title": "LinkTokenCreateRequestCraOptionsPartnerInsights", "type": "object" }, "LinkTokenCreateRequestCreditPartnerInsights": { "description": "Specifies options for initializing Link for use with the Credit Partner Insights product.", "properties": { "days_requested": { "description": "The maximum integer number of days of history to compute Credit Partner Insights. Defaults to 180 if not specified", "maximum": 730, "minimum": 1, "type": "integer" } }, "title": "LinkTokenCreateRequestCreditPartnerInsights", "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateRequestDepositSwitch": { "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": { "description": "The `deposit_switch_id` provided by the `/deposit_switch/create` endpoint.", "type": "string" } }, "required": [ "deposit_switch_id" ], "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateRequestEmployment": { "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": { "bank_employment": { "$ref": "#/components/schemas/LinkTokenCreateRequestEmploymentBankIncome" }, "employment_source_types": { "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" }, "type": "array" } }, "title": "LinkTokenCreateRequestEmployment", "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateRequestEmploymentBankIncome": { "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": { "description": "The number of days of data to request for the Bank Employment product.", "type": "integer" } }, "required": [ "days_requested" ], "title": "LinkTokenCreateRequestEmploymentBankIncome", "type": "object" }, "LinkTokenCreateRequestIdentityVerification": { "description": "Specifies option for initializing Link for use with the Identity Verification product.", "properties": { "consent": { "allOf": [ { "$ref": "#/components/schemas/IdentityVerificationConsent" } ], "x-hidden-from-docs": true }, "gave_consent": { "$ref": "#/components/schemas/IdentityVerificationConsent" }, "template_id": { "allOf": [ { "$ref": "#/components/schemas/IdentityVerificationTemplateID" } ] } }, "required": [ "template_id" ], "type": "object" }, "LinkTokenCreateRequestIncomeVerification": { "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": { "access_tokens": { "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.\n\nThis field should only be used with the `payroll` income source type.", "items": { "$ref": "#/components/schemas/AccessToken" }, "nullable": true, "type": "array" }, "asset_report_id": { "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.", "type": "string" }, "bank_income": { "$ref": "#/components/schemas/LinkTokenCreateRequestIncomeVerificationBankIncome" }, "income_source_types": { "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" }, "type": "array" }, "income_verification_id": { "deprecated": true, "description": "The `income_verification_id` of the verification instance, as provided by `/income/verification/create`. Replaced by the user token.", "type": "string", "x-hidden-from-docs": true }, "payroll_income": { "$ref": "#/components/schemas/LinkTokenCreateRequestIncomeVerificationPayrollIncome" }, "stated_income_sources": { "description": "A list of user stated income sources", "items": { "$ref": "#/components/schemas/LinkTokenCreateRequestUserStatedIncomeSource" }, "type": "array" } }, "title": "LinkTokenCreateRequestIncomeVerification", "type": "object" }, "LinkTokenCreateRequestIncomeVerificationBankIncome": { "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": { "description": "The number of days of data to request for the Bank Income product", "maximum": 731, "minimum": 1, "type": "integer" }, "enable_multiple_items": { "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.", "nullable": true, "type": "boolean" } }, "required": [ "days_requested" ], "title": "LinkTokenCreateRequestIncomeVerificationBankIncome", "type": "object" }, "LinkTokenCreateRequestIncomeVerificationPayrollIncome": { "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": { "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" }, "nullable": true, "type": "array" }, "is_update_mode": { "default": false, "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.", "type": "boolean" }, "item_id_to_update": { "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, "type": "string" }, "parsing_config": { "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" }, "nullable": true, "type": "array" } }, "title": "LinkTokenCreateRequestIncomeVerificationPayrollIncome", "type": "object" }, "LinkTokenCreateRequestPaymentConfiguration": { "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": { "description": "The amount of the transfer (decimal string with two digits of precision e.g. \"10.00\").", "type": "string", "x-hidden-from-docs": true }, "description": { "description": "The description of the transfer that provides the payment context. The max length is 256.", "type": "string", "x-hidden-from-docs": true } }, "required": [ "amount" ], "type": "object", "x-hidden-from-docs": true }, "LinkTokenCreateRequestPaymentInitiation": { "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": { "consent_id": { "description": "The `consent_id` provided by the `/payment_initiation/consent/create` endpoint.", "type": "string" }, "payment_id": { "description": "The `payment_id` provided by the `/payment_initiation/payment/create` endpoint.", "type": "string" } }, "type": "object" }, "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" }, "LinkTokenCreateRequestStatements": { "description": "Specifies options for initializing Link for use with the Statements product. This field is required for the statements product.", "properties": { "end_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.", "format": "date", "type": "string" }, "start_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\".", "format": "date", "type": "string" } }, "required": [ "start_date", "end_date" ], "type": "object" }, "LinkTokenCreateRequestTransfer": { "description": "Specifies options for initializing Link for use with the Transfer product.", "properties": { "authorization_id": { "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.", "type": "string" }, "intent_id": { "description": "The `id` returned by the `/transfer/intent/create` endpoint.", "type": "string" }, "payment_profile_token": { "description": "The `payment_profile_token` returned by the `/payment_profile/create` endpoint.", "type": "string", "x-hidden-from-docs": true } }, "type": "object" }, "LinkTokenCreateRequestUpdate": { "description": "Specifies options for initializing Link for [update mode](https://plaid.com/docs/link/update-mode).", "properties": { "account_selection_enabled": { "default": false, "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.", "type": "boolean" }, "item_ids": { "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.\n", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array" }, "reauthorization_enabled": { "description": "Note: this field is not currently used. Plaid may enable this field in the future if 1033-related expiration begins to be enforced.\n\nBy 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.\n", "type": "boolean", "x-hidden-from-docs": true }, "user": { "default": false, "description": "If `true`, a `user_token` or `user_id` must also be provided, and Link will open in update mode for the given user.", "type": "boolean" } }, "type": "object" }, "LinkTokenCreateRequestUser": { "description": "An object specifying information about the end user who will be linking their account. **Required** if `user_id` isn't included.", "properties": { "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." } ] }, "client_user_id": { "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, "type": "string" }, "date_of_birth": { "description": "To be provided in the format \"yyyy-mm-dd\". Can be used to prefill Link fields when used with Identity Verification.", "format": "date", "nullable": true, "type": "string" }, "email_address": { "description": "The user's email address. Can be used to prefill Link fields when used with [Identity Verification](https://plaid.com/docs/identity-verification).", "type": "string" }, "email_address_verified_time": { "deprecated": 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.\n\n 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.\n\n Example: `2020-01-01T00:00:00Z`", "format": "date-time", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "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." } ] }, "legal_name": { "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.", "type": "string" }, "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": { "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.", "type": "string" }, "phone_number_verified_time": { "deprecated": 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.\n\n 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.\n\n Example: `2020-01-01T00:00:00Z`\n", "format": "date-time", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "ssn": { "deprecated": true, "description": "Deprecated and not currently used, use the `id_number` field instead.", "type": "string", "x-hidden-from-docs": true } }, "required": [ "client_user_id" ], "type": "object" }, "LinkTokenCreateRequestUserStatedIncomeSource": { "description": "Specifies user stated income sources for the Income product", "properties": { "category": { "$ref": "#/components/schemas/UserStatedIncomeSourceCategory" }, "employer": { "description": "The employer corresponding to an income source specified by the user", "type": "string" }, "pay_annual": { "description": "The income amount paid annually for a specified income source", "format": "double", "type": "number" }, "pay_frequency": { "$ref": "#/components/schemas/UserStatedIncomeSourceFrequency" }, "pay_per_cycle": { "description": "The income amount paid per cycle for a specified income source", "format": "double", "type": "number" }, "pay_type": { "$ref": "#/components/schemas/UserStatedIncomeSourcePayType" } }, "type": "object" }, "LinkTokenCreateResponse": { "additionalProperties": true, "description": "LinkTokenCreateResponse defines the response schema for `/link/token/create`", "properties": { "expiration": { "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.", "format": "date-time", "type": "string" }, "hosted_link_url": { "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.", "type": "string" }, "link_token": { "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`.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "link_token", "expiration", "request_id" ], "type": "object" }, "LinkTokenEUConfig": { "deprecated": true, "description": "Configuration parameters for EU flows", "properties": { "headless": { "description": "If `true`, open Link without an initial UI. Defaults to `false`.", "type": "boolean" } }, "type": "object", "x-hidden-from-docs": true }, "LinkTokenGetMetadataResponse": { "additionalProperties": true, "description": "An object specifying the arguments originally provided to the `/link/token/create` call.", "properties": { "account_filters": { "$ref": "#/components/schemas/AccountFiltersResponse" }, "client_name": { "description": "The `client_name` specified in the `/link/token/create` call.", "nullable": true, "type": "string" }, "country_codes": { "description": "The `country_codes` specified in the `/link/token/create` call.", "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, "initial_products": { "description": "The `products` specified in the `/link/token/create` call.", "items": { "$ref": "#/components/schemas/Products" }, "type": "array", "x-override-enum-values-shown": [ "assets", "auth", "employment", "identity", "income_verification", "identity_verification", "investments", "liabilities", "payment_initiation", "standing_orders", "transactions", "transfer" ] }, "institution_data": { "$ref": "#/components/schemas/LinkTokenCreateInstitutionData" }, "language": { "description": "The `language` specified in the `/link/token/create` call.", "nullable": true, "type": "string" }, "redirect_uri": { "description": "The `redirect_uri` specified in the `/link/token/create` call.", "nullable": true, "type": "string" }, "webhook": { "description": "The `webhook` specified in the `/link/token/create` call.", "format": "url", "nullable": true, "type": "string" } }, "required": [ "initial_products", "webhook", "country_codes", "language", "redirect_uri", "client_name" ], "type": "object" }, "LinkTokenGetRequest": { "description": "LinkTokenGetRequest defines the request schema for `/link/token/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "link_token": { "description": "A `link_token` from a previous invocation of `/link/token/create`", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "link_token" ], "type": "object" }, "LinkTokenGetResponse": { "additionalProperties": true, "description": "LinkTokenGetResponse defines the response schema for `/link/token/get`", "properties": { "created_at": { "description": "The creation timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "nullable": true, "type": "string" }, "expiration": { "description": "The expiration timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "nullable": true, "type": "string" }, "link_sessions": { "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" }, "type": "array" }, "link_token": { "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`.", "type": "string" }, "metadata": { "$ref": "#/components/schemas/LinkTokenGetMetadataResponse" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "link_token", "created_at", "expiration", "metadata", "request_id" ], "type": "object" }, "LinkTokenGetSessionsResponse": { "additionalProperties": true, "description": "An object containing information about a link session. Session data will be provided for up to six hours after the session has ended.", "properties": { "events": { "description": "List of customer-related Link events", "items": { "$ref": "#/components/schemas/LinkEvent" }, "type": "array" }, "exit": { "$ref": "#/components/schemas/LinkSessionExit" }, "finished_at": { "description": "The timestamp at which the link session was finished, if available, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "nullable": true, "type": "string" }, "link_session_id": { "description": "The unique ID for the link session.", "type": "string" }, "on_exit": { "$ref": "#/components/schemas/LinkSessionExitDeprecated" }, "on_success": { "$ref": "#/components/schemas/LinkSessionSuccess" }, "results": { "$ref": "#/components/schemas/LinkSessionResults" }, "started_at": { "description": "The timestamp at which the link session was first started, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" } }, "required": [ "link_session_id" ], "type": "object" }, "LinkTokenInvestments": { "description": "Configuration parameters for the Investments product", "properties": { "allow_manual_entry": { "description": "If `true`, allow users to manually enter Investments account and holdings information. Defaults to `false`.", "type": "boolean" }, "allow_unverified_crypto_wallets": { "description": "If `true`, allow self-custody crypto wallets to be added without requiring signature verification. Defaults to `false`.", "type": "boolean" } }, "type": "object" }, "LinkTokenInvestmentsAuth": { "description": "Configuration parameters for the Investments Move product", "properties": { "manual_entry_enabled": { "default": false, "description": "If `true`, show institutions that use the manual entry fallback flow.", "nullable": true, "type": "boolean" }, "masked_number_match_enabled": { "default": false, "description": "If `true`, show institutions that use the masked number match fallback flow.", "nullable": true, "type": "boolean" }, "rollover_401k_enabled": { "default": false, "description": "If `true`, the fee and contribution details for 401k accounts will be returned.", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "stated_account_number_enabled": { "default": false, "description": "If `true`, show institutions that use the stated account number fallback flow.", "nullable": true, "type": "boolean" } }, "type": "object" }, "LinkTokenTransactions": { "description": "Configuration parameters for the Transactions product", "properties": { "days_requested": { "default": 90, "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.\n\nCustomers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results.", "maximum": 730, "minimum": 1, "type": "integer" } }, "type": "object" }, "LinkUserDeliveryStatusWebhook": { "additionalProperties": true, "description": "Webhook indicating that the status of the delivery of the Hosted Link session to a user", "properties": { "link_delivery_metadata": { "$ref": "#/components/schemas/LinkDeliveryMetadata" }, "link_delivery_session_id": { "description": "The ID of the Hosted Link session.", "type": "string" }, "timestamp": { "description": "Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "type": "string" }, "webhook_code": { "description": "`DELIVERY_STATUS`", "type": "string" }, "webhook_type": { "description": "`LINK_DELIVERY`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "link_delivery_session_id", "timestamp", "link_delivery_metadata" ], "title": "LinkUserDeliveryStatusWebhook", "type": "object", "x-examples": {}, "x-hidden-from-docs": true }, "Loan": { "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" ], "title": "Loan", "type": "object" }, "LoanAccount": { "description": "A loan type account.", "properties": { "auto": { "description": "Auto loan", "type": "string" }, "business": { "description": "Business loan", "type": "string" }, "commercial": { "description": "Commercial loan", "type": "string" }, "construction": { "description": "Construction loan", "type": "string" }, "consumer": { "description": "Consumer loan", "type": "string" }, "home equity": { "description": "Home Equity Line of Credit (HELOC)", "type": "string" }, "line of credit": { "description": "Pre-approved line of credit", "type": "string" }, "loan": { "description": "General loan", "type": "string" }, "mortgage": { "description": "Mortgage loan", "type": "string" }, "other": { "description": "Other loan type or unknown loan type", "type": "string" }, "overdraft": { "description": "Pre-approved overdraft account, usually tied to a checking account", "type": "string" }, "student": { "description": "Student loan", "type": "string" } }, "required": [ "auto", "business", "commercial", "construction", "consumer", "home equity", "loan", "mortgage", "overdraft", "line of credit", "student", "other" ], "title": "LoanAccount", "type": "string" }, "LoanAccountSubtype": { "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" ], "type": "string" }, "LoanAccountSubtypes": { "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" }, "title": "LoanAccountSubtypes", "type": "array" }, "LoanDisbursementsIndicators": { "additionalProperties": true, "description": "Insights into loan disbursement transactions received by the user, tracking incoming funds from loan providers.", "nullable": true, "properties": { "amount": { "description": "The total value of inflow transactions categorized as `LOAN_DISBURSEMENTS`, across all the accounts in the report within the requested time window.", "format": "double", "nullable": true, "type": "number" }, "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.", "items": { "$ref": "#/components/schemas/CategoryExpenses" }, "type": "array" }, "days_since_last_occurrence": { "description": "The number of days since the last transaction that falls into the `LOAN_DISBURSEMENTS` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "monthly_summaries": { "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" }, "type": "array" }, "percentage_of_income": { "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.\nIf there's no available income for the given time period, this field value will be `-1`.", "format": "double", "nullable": true, "type": "number" }, "top_providers": { "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.\n\nIf the user has received money from any provider in the given time window, this list will be empty.", "items": { "type": "string" }, "type": "array" }, "transactions_count": { "description": "The total number of transactions that fall into the `LOAN_DISBURSEMENTS` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "LoanDisbursementsIndicators", "type": "object" }, "LoanFilter": { "additionalProperties": true, "description": "A filter to apply to `loan`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/LoanAccountSubtypes" } }, "required": [ "account_subtypes" ], "title": "LoanFilter", "type": "object" }, "LoanIdentifier": { "additionalProperties": true, "description": "The information used to identify this loan by various parties to the transaction or other organizations.", "properties": { "LoanIdentifier": { "description": "The value of the identifier for the specified type.", "nullable": true, "type": "string" }, "LoanIdentifierType": { "$ref": "#/components/schemas/LoanIdentifierType" } }, "required": [ "LoanIdentifier", "LoanIdentifierType" ], "title": "LoanIdentifier", "type": "object" }, "LoanIdentifierType": { "description": "A value from a MISMO prescribed list that specifies the type of loan identifier.", "enum": [ "LenderLoan", "UniversalLoan" ], "nullable": true, "title": "LoanIdentifierType", "type": "string" }, "LoanIdentifiers": { "additionalProperties": true, "description": "Collection of current and previous identifiers for this loan.", "properties": { "LOAN_IDENTIFIER": { "$ref": "#/components/schemas/LoanIdentifier" } }, "required": [ "LOAN_IDENTIFIER" ], "title": "LoanIdentifiers", "type": "object" }, "LoanPaymentsCounts": { "additionalProperties": true, "description": "Details regarding the number of loan payments", "properties": { "baseline_count": { "deprecated": true, "description": "The number of loan payments made in the 30 days before the subscription date", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_count": { "description": "The current number of loan payments made in the last 30 days", "type": "number" } }, "required": [ "current_count" ], "title": "LoanPaymentsCounts", "type": "object" }, "LoanPaymentsIndicators": { "additionalProperties": true, "description": "Insights into loan payment transactions made by the user, tracking outgoing payments to loan providers.", "nullable": true, "properties": { "amount": { "description": "The total value of outflow transactions categorized as `LOAN_PAYMENTS`, across all the accounts in the report within the requested time window.", "format": "double", "nullable": true, "type": "number" }, "category_details": { "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" }, "type": "array" }, "days_since_last_occurrence": { "description": "The number of days since the last transaction that falls into the `LOAN_PAYMENTS` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "monthly_average": { "$ref": "#/components/schemas/MonthlyAverage" }, "monthly_summaries": { "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" }, "type": "array" }, "percentage_of_income": { "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.\nIf there's no available income for the given time period, this field value will be `-1`", "format": "double", "nullable": true, "type": "number" }, "top_providers": { "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.\n\nIf the user has not spent money on any provider in the given time window, this list will be empty.", "items": { "type": "string" }, "type": "array" }, "transactions_count": { "description": "The total number of transactions that fall into the `LOAN_PAYMENTS` credit category, across all the accounts in the report.", "nullable": true, "type": "integer" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "LoanPaymentsIndicators", "type": "object" }, "LoanPaymentsMerchantCounts": { "additionalProperties": true, "description": "Details regarding the number of unique loan payment merchants", "properties": { "baseline_count": { "deprecated": true, "description": "The number of unique loan payment merchants detected in the 30 days before the subscription date", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_count": { "description": "The current number of unique loan payment merchants detected in the last 30 days", "type": "number" } }, "required": [ "current_count" ], "title": "LoanPaymentsMerchantCounts", "type": "object" }, "Loans": { "additionalProperties": true, "description": "A collection of loans that are part of a single deal.", "properties": { "LOAN": { "$ref": "#/components/schemas/Loan" } }, "required": [ "LOAN" ], "title": "Loans", "type": "object" }, "Location": { "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": { "description": "The street address where the transaction occurred.", "nullable": true, "type": "string" }, "city": { "description": "The city where the transaction occurred.", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code where the transaction occurred.", "nullable": true, "type": "string" }, "lat": { "description": "The latitude where the transaction occurred.", "format": "double", "nullable": true, "type": "number" }, "lon": { "description": "The longitude where the transaction occurred.", "format": "double", "nullable": true, "type": "number" }, "postal_code": { "description": "The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `zip`.", "nullable": true, "type": "string" }, "region": { "description": "The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `state`.", "nullable": true, "type": "string" }, "store_number": { "description": "The merchant defined store number where the transaction occurred.", "nullable": true, "type": "string" } }, "required": [ "address", "city", "region", "postal_code", "country", "lat", "lon", "store_number" ], "title": "Transaction Location", "type": "object" }, "MFA": { "additionalProperties": true, "description": "Specifies the multi-factor authentication settings to use with this test account", "properties": { "question_rounds": { "description": "Number of rounds of questions. Required if value of `type` is `questions`. ", "type": "number" }, "questions_per_round": { "description": "Number of questions per round. Required if value of `type` is `questions`. If value of type is `selections`, default value is 2.", "type": "number" }, "selection_rounds": { "description": "Number of rounds of selections, used if `type` is `selections`. Defaults to 1.", "type": "number" }, "selections_per_question": { "description": "Number of available answers per question, used if `type` is `selection`. Defaults to 2.\n", "type": "number" }, "type": { "description": "Possible values are `device`, `selections`, or `questions`.\n\nIf value is `device`, the MFA answer is `1234`.\n\nIf value is `selections`, the MFA answer is always the first option.\n\nIf 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`.", "type": "string" } }, "required": [ "type", "question_rounds", "questions_per_round", "selection_rounds", "selections_per_question" ], "title": "MFA", "type": "object" }, "MatchSummary": { "additionalProperties": true, "description": "Summary object reflecting the match result of the associated data", "properties": { "summary": { "$ref": "#/components/schemas/MatchSummaryCode" } }, "required": [ "summary" ], "type": "object" }, "MatchSummaryCode": { "description": "An enum indicating the match type between data provided by user and data checked against an external data source.\n\n\n`match` indicates that the provided input data was a strong match against external data.\n\n`partial_match` indicates the data approximately matched against external data. For example, \"Knope\" vs. \"Knope-Wyatt\" for last name.\n\n`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.\n\n`no_data` indicates that Plaid was unable to find external data to compare against the provided input data.\n\n`no_input` indicates that Plaid was unable to perform a check because no information was provided for this field by the end user.", "enum": [ "match", "partial_match", "no_match", "no_data", "no_input" ], "example": "match", "title": "MatchSummaryCode", "type": "string" }, "MerchantInsights": { "description": "Insights into a user's top merchants.", "properties": { "entity_id": { "description": "A unique, stable, Plaid-generated id that maps to the merchant.", "nullable": true, "type": "string" }, "name": { "description": "The counterparty name.", "type": "string" }, "personal_finance_category_detailed": { "description": "The detailed personal finance category associated with this merchant.", "nullable": true, "type": "string" }, "personal_finance_category_primary": { "description": "The primary personal finance category associated with this merchant.", "nullable": true, "type": "string" }, "total_inflows": { "description": "Sum of inflow amounts.", "format": "double", "type": "number" }, "total_outflows": { "description": "Sum of outflow amounts.", "format": "double", "type": "number" }, "transaction_count": { "description": "The number of transactions associated with merchant of this type.", "type": "integer" }, "website": { "description": "The website associated with the merchant.", "nullable": true, "type": "string" } }, "required": [ "name", "website", "transaction_count", "personal_finance_category_primary", "personal_finance_category_detailed", "total_outflows", "total_inflows" ], "type": "object" }, "Meta": { "additionalProperties": true, "description": "Allows specifying the metadata of the test account", "properties": { "limit": { "description": "The account's limit", "format": "double", "type": "number" }, "mask": { "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}$", "type": "string" }, "name": { "description": "The account's name", "type": "string" }, "official_name": { "description": "The account's official name", "type": "string" } }, "required": [ "name", "official_name", "limit", "mask" ], "title": "Meta", "type": "object" }, "MinLastUpdatedDatetime": { "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`.\n\nThis 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.\n\nIf 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.", "format": "date-time", "title": "MinLastUpdatedDatetime", "type": "string" }, "MonitoringConsumerReportPermissiblePurpose": { "description": "Describes the reason you are generating a Consumer Report for this user.\n\n`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).\n\n`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.", "enum": [ "ACCOUNT_REVIEW_CREDIT", "WRITTEN_INSTRUCTION_OTHER" ], "title": "MonitoringConsumerReportPermissiblePurpose", "type": "string" }, "MonitoringIncomeInsights": { "additionalProperties": true, "description": "An object representing the income subcategory of the report", "properties": { "forecasted_monthly_income": { "$ref": "#/components/schemas/ForecastedMonthlyIncome" }, "historical_annual_income": { "$ref": "#/components/schemas/HistoricalAnnualIncome" }, "income_sources": { "description": "The income sources for this Item. Each entry in the array is a single income source", "items": { "$ref": "#/components/schemas/MonitoringIncomeSource" }, "type": "array" }, "income_sources_counts": { "$ref": "#/components/schemas/IncomeSourcesCounts" }, "total_monthly_income": { "$ref": "#/components/schemas/TotalMonthlyIncomeInsights" } }, "required": [ "total_monthly_income", "income_sources_counts", "forecasted_monthly_income", "historical_annual_income", "income_sources" ], "title": "MonitoringIncomeInsights", "type": "object" }, "MonitoringIncomeSource": { "additionalProperties": true, "description": "An object representing an income source", "properties": { "income_category": { "$ref": "#/components/schemas/CreditBankIncomeCategory" }, "income_description": { "description": "The most common name or original description for the underlying income transactions", "type": "string" }, "income_source_id": { "description": "A unique identifier for an income source", "type": "string" }, "last_transaction_date": { "description": "The last detected transaction date for this income source", "format": "date", "type": "string" } }, "required": [ "income_source_id", "income_description", "income_category", "last_transaction_date" ], "title": "MonitoringIncomeSource", "type": "object" }, "MonitoringInsights": { "additionalProperties": true, "description": "An object representing the Monitoring Insights for the given Item", "nullable": true, "properties": { "income": { "$ref": "#/components/schemas/MonitoringIncomeInsights" }, "loans": { "$ref": "#/components/schemas/MonitoringLoanInsights" } }, "required": [ "income", "loans" ], "title": "MonitoringInsights", "type": "object" }, "MonitoringInsightsItemStatus": { "additionalProperties": true, "description": "An object with details of the Monitoring Insights Item's status.", "properties": { "reason": { "description": "A reason for why a Monitoring Insights Report is not available.\nThis field will only be populated when the `status_code` is not `AVAILABLE`", "nullable": true, "type": "string" }, "status_code": { "$ref": "#/components/schemas/MonitoringItemStatusCode" } }, "required": [ "status_code" ], "title": "MonitoringInsightsItemStatus", "type": "object" }, "MonitoringInsightsStatus": { "description": "Enum for the status of the insights", "enum": [ "AVAILABLE", "FAILED" ], "title": "MonitoringInsightsStatus", "type": "string" }, "MonitoringItemStatusCode": { "description": "Enum for the status of the Item's insights", "enum": [ "AVAILABLE", "FAILED", "PENDING" ], "title": "MonitoringItemStatusCode", "type": "string" }, "MonitoringLoanInsights": { "additionalProperties": true, "description": "An object representing the loan exposure subcategory of the report", "properties": { "loan_disbursements_count": { "description": "The number of loan disbursements detected in the last 30 days", "type": "number" }, "loan_payment_merchants_counts": { "$ref": "#/components/schemas/LoanPaymentsMerchantCounts" }, "loan_payments_counts": { "$ref": "#/components/schemas/LoanPaymentsCounts" } }, "required": [ "loan_payments_counts", "loan_disbursements_count", "loan_payment_merchants_counts" ], "title": "MonitoringLoanInsights", "type": "object" }, "MonthlyAverage": { "additionalProperties": true, "description": "The monthly average amount calculated by dividing the total by the number of calendar months in the time period.", "nullable": true, "properties": { "amount": { "description": "The monthly average amount of all the aggregated transactions of the given category, across all the accounts for the given time window.\n\nThe average is calculated by dividing the total amount of the transactions by the number of calendar months in the given time window.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "description": "The unofficial currency code associated with the amount. Always `null` if `iso_currency_code` is non-`null`.\n\nSee 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, "type": "string" } }, "title": "MonthlyAverage", "type": "object" }, "MonthlySummary": { "additionalProperties": true, "description": "Monthly summary of transactions within a specific time period, showing aggregated amounts.", "nullable": true, "properties": { "end_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).", "format": "date", "nullable": true, "type": "string" }, "start_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).", "format": "date", "nullable": true, "type": "string" }, "total_amount": { "$ref": "#/components/schemas/AmountWithCurrency" } }, "title": "MonthlySummary", "type": "object" }, "MortgageInterestRate": { "additionalProperties": true, "description": "Object containing metadata about the interest rate for the mortgage.", "properties": { "percentage": { "description": "Percentage value (interest rate of current mortgage, not APR) of interest payable on a loan.", "format": "double", "nullable": true, "type": "number" }, "type": { "description": "The type of interest charged (fixed or variable).", "nullable": true, "type": "string" } }, "required": [ "percentage", "type" ], "title": "MortgageInterestRate", "type": "object" }, "MortgageLiability": { "additionalProperties": true, "description": "Contains details about a mortgage account.", "properties": { "account_id": { "description": "The ID of the account that this liability belongs to.", "type": "string" }, "account_number": { "description": "The account number of the loan.", "nullable": true, "type": "string" }, "current_late_fee": { "description": "The current outstanding amount charged for late payment.", "format": "double", "nullable": true, "type": "number" }, "escrow_balance": { "description": "Total amount held in escrow to pay taxes and insurance on behalf of the borrower.", "format": "double", "nullable": true, "type": "number" }, "has_pmi": { "description": "Indicates whether the borrower has private mortgage insurance in effect.", "nullable": true, "type": "boolean" }, "has_prepayment_penalty": { "description": "Indicates whether the borrower will pay a penalty for early payoff of mortgage.", "nullable": true, "type": "boolean" }, "interest_rate": { "$ref": "#/components/schemas/MortgageInterestRate" }, "last_payment_amount": { "description": "The amount of the last payment.", "format": "double", "nullable": true, "type": "number" }, "last_payment_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).", "format": "date", "nullable": true, "type": "string" }, "loan_term": { "description": "Full duration of mortgage as at origination (e.g. `10 year`).", "nullable": true, "type": "string" }, "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.", "nullable": true, "type": "string" }, "maturity_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).", "format": "date", "nullable": true, "type": "string" }, "next_monthly_payment": { "description": "The amount of the next payment.", "format": "double", "nullable": true, "type": "number" }, "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).", "format": "date", "nullable": true, "type": "string" }, "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).", "format": "date", "nullable": true, "type": "string" }, "origination_principal_amount": { "description": "The original principal balance of the mortgage.", "format": "double", "nullable": true, "type": "number" }, "past_due_amount": { "description": "Amount of loan (principal + interest) past due for payment.", "format": "double", "nullable": true, "type": "number" }, "property_address": { "$ref": "#/components/schemas/MortgagePropertyAddress" }, "ytd_interest_paid": { "description": "The year to date (YTD) interest paid.", "format": "double", "nullable": true, "type": "number" }, "ytd_principal_paid": { "description": "The YTD principal paid.", "format": "double", "nullable": true, "type": "number" } }, "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" ], "title": "MortgageLiability", "type": "object" }, "MortgagePropertyAddress": { "additionalProperties": true, "description": "Object containing fields describing property address.", "properties": { "city": { "description": "The city name.", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code.", "nullable": true, "type": "string" }, "postal_code": { "description": "The five or nine digit postal code.", "nullable": true, "type": "string" }, "region": { "description": "The region or state (example \"NC\").", "nullable": true, "type": "string" }, "street": { "description": "The full street address (example \"564 Main Street, Apt 15\").", "nullable": true, "type": "string" } }, "required": [ "city", "country", "postal_code", "region", "street" ], "title": "MortgagePropertyAddress", "type": "object" }, "MultiDocumentRiskSignal": { "additionalProperties": true, "description": "Object containing risk signals and relevant metadata for a set of uploaded documents", "properties": { "document_references": { "description": "Array of objects containing attributes that could indicate if a document is fraudulent", "items": { "$ref": "#/components/schemas/RiskSignalDocumentReference" }, "type": "array" }, "risk_signals": { "description": "Array of attributes that indicate whether or not there is fraud risk with a set of documents", "items": { "$ref": "#/components/schemas/DocumentRiskSignal" }, "type": "array" } }, "required": [ "document_references", "risk_signals" ], "title": "MultiDocumentRiskSignal", "type": "object" }, "NameMatchScore": { "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.", "nullable": true, "properties": { "is_business_name_detected": { "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.", "nullable": true, "type": "boolean" }, "is_first_name_or_last_name_match": { "description": "first or last name completely matched, likely a family member", "nullable": true, "type": "boolean" }, "is_nickname_match": { "description": "nickname matched, example Jennifer and Jenn.", "nullable": true, "type": "boolean" }, "score": { "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.", "nullable": true, "type": "integer" } }, "title": "NameMatchScore", "type": "object" }, "NegativeBalanceInsights": { "additionalProperties": true, "description": "Insights into negative balance occurrences, including frequency, duration, and minimum balance details.", "nullable": true, "properties": { "days_since_last_occurrence": { "description": "The number of days since the last transaction that caused any account in the report to have a negative balance.\n\nThis 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`.", "nullable": true, "type": "integer" }, "days_with_negative_balance": { "description": "The number of aggregated days that the accounts in the report has had a negative balance within the given time window.", "nullable": true, "type": "integer" }, "minimum_balance": { "$ref": "#/components/schemas/AmountWithCurrency" }, "occurrences": { "description": "The summary of the negative balance occurrences for this account.\n\nIf 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" }, "type": "array" } }, "title": "NegativeBalanceInsights", "type": "object" }, "NegativeBalanceOccurrence": { "additionalProperties": true, "description": "Details about a specific occurrence of a negative balance period, including start and end dates.", "nullable": true, "properties": { "end_date": { "description": "The date of the last transaction that caused the account to have a negative balance.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).\nThis date is inclusive, meaning that this was the last date that the account had a negative balance.", "format": "date", "nullable": true, "type": "string" }, "minimum_balance": { "$ref": "#/components/schemas/AmountWithCurrency" }, "start_date": { "description": "The date of the first transaction that caused the account to have a negative balance.\nThe date will be returned in an ISO 8601 format (YYYY-MM-DD).", "format": "date", "nullable": true, "type": "string" } }, "title": "NegativeBalanceOccurrence", "type": "object" }, "NetPay": { "additionalProperties": true, "description": "An object representing information about the net pay amount on the paystub.", "properties": { "current_amount": { "description": "Raw amount of the net pay for the pay period", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the net pay", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "total": { "$ref": "#/components/schemas/Total" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the net pay", "format": "double", "nullable": true, "type": "number" } }, "title": "NetPay", "type": "object" }, "NetworkInsightsSchema": { "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.", "title": "NetworkInsights", "type": "object" }, "NetworkInsightsVersion": { "description": "The version of Network Insights. Required if using Network Insights.", "enum": [ "NI1" ], "nullable": true, "type": "string" }, "NetworkStatusGetRequest": { "description": "NetworkStatusGetRequest defines the request schema for `/network/status/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "template_id": { "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).", "type": "string" }, "user": { "$ref": "#/components/schemas/NetworkStatusGetUser" } }, "required": [ "user" ], "type": "object" }, "NetworkStatusGetResponse": { "additionalProperties": true, "description": "NetworkStatusGetResponse defines the response schema for `/network/status/get`", "properties": { "layer": { "$ref": "#/components/schemas/NetworkStatusGetResponseLayer" }, "network_status": { "$ref": "#/components/schemas/NetworkStatusGetResponseNetworkStatus" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "network_status", "request_id" ], "type": "object" }, "NetworkStatusGetResponseLayer": { "additionalProperties": true, "description": "An object representing Layer-related metadata for the requested user.", "nullable": true, "properties": { "eligible": { "description": "Indicates if the user is eligible for a Layer session.", "type": "boolean" } }, "required": [ "eligible" ], "type": "object" }, "NetworkStatusGetResponseNetworkStatus": { "description": "Enum representing the overall network status of the user.", "enum": [ "UNKNOWN", "RETURNING_USER" ], "nullable": false, "type": "string" }, "NetworkStatusGetUser": { "additionalProperties": true, "description": "An object specifying information about the end user for the network status check.", "properties": { "phone_number": { "description": "The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.", "type": "string" } }, "required": [ "phone_number" ], "type": "object" }, "NewAccountsAvailableWebhook": { "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`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`NEW_ACCOUNTS_AVAILABLE`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "title": "NewAccountsAvailableWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "NEW_ACCOUNTS_AVAILABLE", "webhook_type": "ITEM" } } }, "NewUserID": { "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).", "title": "NewUserID", "type": "string" }, "Numbers": { "additionalProperties": true, "description": "Account and bank identifier number data used to configure the test account. All values are optional.", "properties": { "account": { "description": "Will be used for the account number.", "type": "string" }, "ach_routing": { "description": "Must be a valid ACH routing number. To test `/transfer/capabilities/get`, set this to 322271627 to force a `true` result.", "type": "string" }, "ach_wire_routing": { "description": "Must be a valid wire transfer routing number.", "type": "string" }, "bacs_sort_code": { "description": "Bacs sort code", "type": "string" }, "eft_branch": { "description": "EFT branch number. Must be specified alongside `eft_institution`.", "type": "string" }, "eft_institution": { "description": "EFT institution number. Must be specified alongside `eft_branch`.", "type": "string" }, "international_bic": { "description": "Business Identifier Code (BIC). Must be specified alongside `international_iban`.", "type": "string" }, "international_iban": { "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`.", "type": "string" } }, "title": "Numbers", "type": "object" }, "NumbersACATS": { "additionalProperties": true, "description": "Identifying information for transferring holdings to an investments account via ACATS.", "properties": { "account": { "description": "The full account number for the account", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "dtc_numbers": { "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" }, "type": "array" } }, "required": [ "account_id", "account", "dtc_numbers" ], "title": "NumbersACATS", "type": "object" }, "NumbersACH": { "additionalProperties": true, "description": "Identifying information for transferring money to or from a US account via ACH or wire transfer.", "properties": { "account": { "description": "The ACH account number for the account.\n\nAt certain institutions, including Chase, PNC, and US Bank, you will receive \"tokenized\" routing and account numbers, which are not the user's actual account and routing numbers. For important details on how this may impact your integration and on how to avoid fraud, user confusion, and ACH returns, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers).", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "can_transfer_in": { "description": "Whether the account supports ACH transfers into the account", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "can_transfer_out": { "description": "Whether the account supports ACH transfers out of the account", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "is_tokenized_account_number": { "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).", "type": "boolean" }, "routing": { "description": "The ACH routing number for the account. This may be a tokenized routing number. For more information, see [Tokenized account numbers](https://plaid.com/docs/auth/#tokenized-account-numbers).", "type": "string" }, "wire_routing": { "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, "type": "string" } }, "required": [ "account_id", "account", "routing", "wire_routing" ], "title": "NumbersACH", "type": "object" }, "NumbersACHNullable": { "allOf": [ { "$ref": "#/components/schemas/NumbersACH" }, { "additionalProperties": true, "type": "object" } ], "description": "Identifying information for transferring money to or from a US account via ACH or wire transfer.", "nullable": true }, "NumbersATON": { "additionalProperties": true, "description": "Identifying information for transferring holdings to an investments account via ATON.", "properties": { "account": { "description": "The full account number for the account", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" } }, "required": [ "account_id", "account" ], "title": "NumbersATON", "type": "object" }, "NumbersBACS": { "additionalProperties": true, "description": "Identifying information for transferring money to or from a UK bank account via Bacs.", "properties": { "account": { "description": "The Bacs account number for the account", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "sort_code": { "description": "The Bacs sort code for the account", "type": "string" } }, "required": [ "account_id", "account", "sort_code" ], "title": "NumbersBACS", "type": "object" }, "NumbersBACSNullable": { "allOf": [ { "$ref": "#/components/schemas/NumbersBACS" }, { "additionalProperties": true, "type": "object" } ], "description": "Identifying information for transferring money to or from a UK bank account via Bacs.", "nullable": true }, "NumbersEFT": { "additionalProperties": true, "description": "Identifying information for transferring money to or from a Canadian bank account via EFT.", "properties": { "account": { "description": "The EFT account number for the account", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "branch": { "description": "The EFT branch number for the account", "type": "string" }, "institution": { "description": "The EFT institution number for the account", "type": "string" } }, "required": [ "account_id", "account", "institution", "branch" ], "title": "NumbersEFT", "type": "object" }, "NumbersEFTNullable": { "allOf": [ { "$ref": "#/components/schemas/NumbersEFT" }, { "additionalProperties": true, "type": "object" } ], "description": "Identifying information for transferring money to or from a Canadian bank account via EFT.", "nullable": true }, "NumbersIBAN": { "description": "International Bank Account Number (IBAN).", "maxLength": 34, "minLength": 15, "type": "string" }, "NumbersIBANNullable": { "allOf": [ { "$ref": "#/components/schemas/NumbersIBAN" } ], "description": "International Bank Account Number (IBAN).", "nullable": true, "type": "string" }, "NumbersInternational": { "additionalProperties": true, "description": "Identifying information for transferring money to or from an international bank account via wire transfer.", "properties": { "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "bic": { "description": "The Business Identifier Code (BIC) for the account", "type": "string" }, "iban": { "description": "The International Bank Account Number (IBAN) for the account", "type": "string" } }, "required": [ "account_id", "iban", "bic" ], "title": "NumbersInternational", "type": "object" }, "NumbersInternationalIBAN": { "additionalProperties": true, "description": "Account numbers using the International Bank Account Number and BIC/SWIFT code format.", "nullable": true, "properties": { "bic": { "description": "The Business Identifier Code, also known as SWIFT code, for this bank account.", "maxLength": 11, "minLength": 8, "type": "string" }, "iban": { "$ref": "#/components/schemas/NumbersIBAN" } }, "required": [ "iban", "bic" ], "type": "object" }, "NumbersInternationalNullable": { "allOf": [ { "$ref": "#/components/schemas/NumbersInternational" }, { "additionalProperties": true, "type": "object" } ], "description": "Identifying information for transferring money to or from an international bank account via wire transfer.", "nullable": true }, "NumbersRetirement401k": { "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": { "description": "The full account number for the account", "type": "string" }, "account_id": { "description": "The Plaid account ID associated with the account numbers", "type": "string" }, "plan": { "description": "The plan number for the employer's 401k retirement plan", "type": "string" } }, "required": [ "account_id" ], "title": "NumbersRetirement401k", "type": "object" }, "OAuthAccessToken": { "description": "Access token for OAuth", "title": "OAuth Access Token", "type": "string" }, "OAuthAnyToken": { "description": "An OAuth token of any type (`refresh_token`, `access_token`, etc)", "title": "OAuth Generic Token", "type": "string" }, "OAuthErrorCode": { "description": "OAuth error code", "enum": [ "invalid_request", "invalid_client", "invalid_grant", "unauthorized_client", "invalid_scope", "unsupported_grant_type" ], "title": "OAuth Error Code", "type": "string" }, "OAuthErrorDescription": { "description": "A human-readable description of the error", "title": "OAuth Error Description", "type": "string" }, "OAuthErrorResponse": { "additionalProperties": true, "description": "OAuth error response", "properties": { "error": { "$ref": "#/components/schemas/OAuthErrorCode" }, "error_description": { "$ref": "#/components/schemas/OAuthErrorDescription" }, "error_uri": { "$ref": "#/components/schemas/OAuthErrorURI" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "OAuthErrorURI": { "description": "A URI identifying the specific error", "title": "OAuth Error URI", "type": "string" }, "OAuthGrantType": { "description": "The type of OAuth grant being requested:\n\n`client_credentials` allows exchanging a client id and client secret for a refresh and access token.\n`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`).\n`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.\nThese 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.", "enum": [ "refresh_token", "urn:ietf:params:oauth:grant-type:token-exchange", "client_credentials" ], "type": "string" }, "OAuthIntrospectRequest": { "description": "OAuth token introspect request.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "token": { "$ref": "#/components/schemas/OAuthAnyToken" } }, "required": [ "token" ], "type": "object" }, "OAuthIntrospectResponse": { "additionalProperties": true, "description": "OAuth token introspect response", "properties": { "active": { "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.", "type": "boolean" }, "aud": { "description": "Audience of the token", "example": "https://production.plaid.com", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "exp": { "description": "Expiration time as UNIX timestamp since January 1 1970 UTC", "example": 1670000000, "type": "integer" }, "iat": { "description": "Issued at time as UNIX timestamp since January 1 1970 UTC", "example": 1670000000, "type": "integer" }, "iss": { "description": "Issuer of the token", "example": "https://production.plaid.com", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "scope": { "$ref": "#/components/schemas/OAuthScope" }, "sub": { "description": "Subject of the token", "example": "68028ce48d2b0dec68747f6c", "type": "string" }, "token_type": { "description": "Type of the token", "example": "Bearer", "type": "string" }, "user_id": { "description": "User ID of the token", "example": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "type": "string" } }, "required": [ "active", "request_id" ], "type": "object" }, "OAuthRefreshToken": { "description": "Refresh token for OAuth", "title": "OAuth Refresh Token", "type": "string" }, "OAuthRevokeRequest": { "description": "OAuth token revoke request", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "token": { "$ref": "#/components/schemas/OAuthAnyToken" } }, "required": [ "token" ], "type": "object" }, "OAuthRevokeResponse": { "additionalProperties": true, "description": "Successful OAuth token revoke response", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "OAuthScope": { "description": "A JSON string containing a space-separated list of scopes associated with this token, in the format described in [https://datatracker.ietf.org/doc/html/rfc6749#section-3.3](https://datatracker.ietf.org/doc/html/rfc6749#section-3.3). Currently accepted values are:\n\n`user:read` allows reading user data.\n`user:write` allows writing user data.\n`exchange` allows exchanging a token using the `urn:plaid:params:oauth:user-token` grant type.\n`mcp:dashboard` allows access to the MCP dashboard server.", "example": "user:read user:write exchange", "title": "OAuth Scope", "type": "string" }, "OAuthSubjectTokenType": { "description": "The type of the subject token.\n`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.\n`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.\n`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`.", "enum": [ "urn:plaid:params:tokens:user", "urn:plaid:params:oauth:user-token", "urn:plaid:params:credit:multi-user" ], "type": "string" }, "OAuthTokenRequest": { "description": "OAuth token grant request.", "properties": { "audience": { "description": "Used when exchanging a token. The meaning depends on the `subject_token_type`:\n\n- For `urn:plaid:params:tokens:user`: Must be the same as the `client_id`.\n- For `urn:plaid:params:oauth:user-token`: The other `client_id` to exchange tokens to.\n- 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", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "grant_type": { "$ref": "#/components/schemas/OAuthGrantType" }, "refresh_token": { "$ref": "#/components/schemas/OAuthRefreshToken" }, "resource": { "description": "URI of the target resource server", "example": "https://production.plaid.com", "type": "string" }, "scope": { "$ref": "#/components/schemas/OAuthScope" }, "secret": { "$ref": "#/components/schemas/OauthAPISecret" }, "subject_token": { "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", "type": "string" }, "subject_token_type": { "$ref": "#/components/schemas/OAuthSubjectTokenType" } }, "required": [ "grant_type" ], "type": "object" }, "OAuthTokenResponse": { "additionalProperties": true, "description": "OAuth token grant success response", "properties": { "access_token": { "$ref": "#/components/schemas/OAuthAccessToken" }, "expires_in": { "description": "Time remaining in seconds before expiration.", "example": 500, "type": "integer" }, "refresh_token": { "$ref": "#/components/schemas/OAuthRefreshToken" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "token_type": { "description": "Type of token the access token is. Currently it is always Bearer", "example": "Bearer", "type": "string" } }, "required": [ "access_token", "refresh_token", "token_type", "expires_in", "request_id" ], "type": "object" }, "OauthAPISecret": { "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`.", "title": "APISecret", "type": "string" }, "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" ], "title": "OmittableTransferType", "type": "string" }, "OptionContract": { "additionalProperties": true, "description": "Details about the option security.\n\nFor 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).", "nullable": true, "properties": { "contract_type": { "description": "The type of this option contract. It is one of:\n\n`put`: for Put option contracts\n\n`call`: for Call option contracts", "type": "string" }, "expiration_date": { "description": "The expiration date for this option contract, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date", "type": "string" }, "strike_price": { "description": "The strike price for this option contract, per share of security.", "format": "double", "type": "number" }, "underlying_security_ticker": { "description": "The ticker of the underlying security for this option contract.", "type": "string" } }, "required": [ "contract_type", "expiration_date", "strike_price", "underlying_security_ticker" ], "title": "OptionContract", "type": "object" }, "OriginatingFundSource": { "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.", "nullable": true, "properties": { "account_number": { "description": "The account number from which the funds are sourced.", "type": "string" }, "address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "bic": { "description": "The Business Identifier Code, also known as SWIFT code, for this bank account.", "maxLength": 11, "minLength": 8, "type": "string" }, "full_name": { "description": "The full name associated with the source of the funds.", "type": "string" } }, "required": [ "full_name", "address", "account_number", "bic" ], "title": "OriginatingFundSource", "type": "object" }, "Originator": { "additionalProperties": true, "description": "Originator and their status.", "properties": { "client_id": { "description": "Originator's client ID.", "type": "string" }, "transfer_diligence_status": { "$ref": "#/components/schemas/TransferDiligenceStatus" } }, "required": [ "client_id", "transfer_diligence_status" ], "title": "Originator", "type": "object" }, "OriginatorExpectedTransferFrequency": { "description": "The originator's expected transfer frequency.", "enum": [ "once_per_month", "twice_per_month", "once_per_week", "daily" ], "title": "OriginatorExpectedTransferFrequency", "type": "string" }, "OtherAccountSubtype": { "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" ], "type": "string" }, "OtherAccountSubtypes": { "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" }, "title": "OtherAccountSubtypes", "type": "array" }, "OtherFilter": { "additionalProperties": true, "description": "A filter to apply to `other`-type accounts", "properties": { "account_subtypes": { "$ref": "#/components/schemas/OtherAccountSubtypes" } }, "required": [ "account_subtypes" ], "title": "OtherFilter", "type": "object" }, "OutlierTransactionsInsights": { "additionalProperties": true, "description": "Insights into unusually large transactions that exceed typical spending patterns for the account.", "nullable": true, "properties": { "top_categories": { "description": "Up to 3 top categories of expenses in this group.", "items": { "$ref": "#/components/schemas/CategoryExpenses" }, "type": "array" }, "total_amount": { "$ref": "#/components/schemas/AmountWithCurrency" }, "transactions_count": { "description": "The total number of transactions whose value is above the threshold of normal amounts for a given account.", "nullable": true, "type": "integer" } }, "title": "OutlierTransactionsInsights", "type": "object" }, "OverrideAccountType": { "description": "`investment:` Investment account.\n\n`credit:` Credit card\n\n`depository:` Depository account\n\n`loan:` Loan account\n\n`payroll:` Payroll account\n\n`other:` Non-specified account type\n\nSee the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.", "enum": [ "investment", "credit", "depository", "loan", "payroll", "other" ], "title": "OverrideAccountType", "type": "string" }, "OverrideAccounts": { "additionalProperties": true, "description": "Data to use to set values of test accounts. Some values cannot be specified in the schema and will instead will be calculated from other test data in order to achieve more consistent, realistic test data.", "properties": { "currency": { "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.", "type": "string" }, "force_available_balance": { "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`.\n", "format": "double", "type": "number" }, "has_null_available_balance": { "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`.\n", "type": "boolean" }, "holdings": { "$ref": "#/components/schemas/HoldingsOverride" }, "identity": { "$ref": "#/components/schemas/OwnerOverride" }, "income": { "$ref": "#/components/schemas/IncomeOverride" }, "inflow_model": { "$ref": "#/components/schemas/InflowModel" }, "investment_transactions": { "$ref": "#/components/schemas/Investments_TransactionsOverride" }, "liability": { "$ref": "#/components/schemas/LiabilityOverride" }, "meta": { "$ref": "#/components/schemas/Meta" }, "numbers": { "$ref": "#/components/schemas/Numbers" }, "starting_balance": { "description": "If provided, the account will start with this amount as the current balance.\n", "format": "double", "type": "number" }, "subtype": { "$ref": "#/components/schemas/AccountSubtype" }, "transactions": { "description": "Specify the list of transactions on the account.", "items": { "$ref": "#/components/schemas/TransactionOverride" }, "type": "array" }, "type": { "$ref": "#/components/schemas/OverrideAccountType" } }, "required": [ "type", "subtype", "starting_balance", "force_available_balance", "has_null_available_balance", "currency", "meta", "numbers", "transactions", "identity", "liability", "inflow_model" ], "title": "OverrideAccounts", "type": "object" }, "Owner": { "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": { "addresses": { "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" }, "type": "array" }, "emails": { "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" }, "type": "array" }, "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.\n\nIf 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.", "items": { "type": "string" }, "type": "array" }, "phone_numbers": { "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" }, "type": "array" } }, "required": [ "names", "phone_numbers", "emails", "addresses" ], "title": "Owner", "type": "object" }, "OwnerOverride": { "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": { "addresses": { "description": "Data about the various addresses associated with the account.", "items": { "$ref": "#/components/schemas/Address" }, "type": "array" }, "emails": { "description": "A list of email addresses associated with the account.", "items": { "$ref": "#/components/schemas/Email" }, "type": "array" }, "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.", "items": { "type": "string" }, "type": "array" }, "phone_numbers": { "description": "A list of phone numbers associated with the account.", "items": { "$ref": "#/components/schemas/PhoneNumber" }, "type": "array" } }, "required": [ "names", "phone_numbers", "emails", "addresses" ], "title": "OwnerOverride", "type": "object" }, "OwnershipType": { "description": "How an asset is owned.\n\n`association`: Ownership by a corporation, partnership, or unincorporated association, including for-profit and not-for-profit organizations.\n`individual`: Ownership by an individual.\n`joint`: Joint ownership by multiple parties.\n`trust`: Ownership by a revocable or irrevocable trust.", "enum": [ null, "individual", "joint", "association", "trust" ], "nullable": true, "type": "string" }, "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.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "PSLFStatus": { "additionalProperties": 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": { "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).", "format": "date", "nullable": true, "type": "string" }, "payments_made": { "description": "The number of qualifying payments that have been made.", "nullable": true, "type": "integer" }, "payments_remaining": { "description": "The number of qualifying payments remaining.", "nullable": true, "type": "integer" } }, "required": [ "estimated_eligibility_date", "payments_made", "payments_remaining" ], "title": "PSLFStatus", "type": "object", "x-hidden-from-docs": true }, "Parties": { "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": { "items": { "$ref": "#/components/schemas/Party" }, "type": "array" } }, "required": [ "PARTY" ], "title": "Parties", "type": "object" }, "PartnerCustomerCreateRequest": { "description": "Request schema for `/partner/customer/create`.", "properties": { "address": { "$ref": "#/components/schemas/PartnerEndCustomerAddress" }, "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" }, "assets_under_management": { "$ref": "#/components/schemas/PartnerEndCustomerAssetsUnderManagement" }, "billing_contact": { "$ref": "#/components/schemas/PartnerEndCustomerBillingContact" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "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" }, "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.\n\nImportant: 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" }, "customer_support_info": { "$ref": "#/components/schemas/PartnerEndCustomerCustomerSupportInfo" }, "is_bank_addendum_completed": { "description": "Denotes whether the partner has forwarded the Plaid bank addendum to the end customer.", "type": "boolean" }, "is_diligence_attested": { "description": "Denotes whether or not the partner has completed attestation of diligence for the end customer to be created.", "type": "boolean" }, "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" }, "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" }, "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.", "items": { "$ref": "#/components/schemas/Products" }, "type": "array", "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" ] }, "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.", "items": { "type": "string" }, "type": "array" }, "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" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "technical_contact": { "$ref": "#/components/schemas/PartnerEndCustomerTechnicalContact" }, "website": { "description": "The end customer's website.", "type": "string" } }, "required": [ "company_name", "is_diligence_attested", "legal_entity_name", "website", "application_name", "address", "is_bank_addendum_completed" ] }, "PartnerCustomerCreateResponse": { "additionalProperties": true, "description": "Response schema for `/partner/customer/create`.", "properties": { "end_customer": { "$ref": "#/components/schemas/PartnerEndCustomerWithSecrets" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PartnerCustomerEnableRequest": { "description": "Request schema for `/partner/customer/enable`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ] }, "PartnerCustomerEnableResponse": { "additionalProperties": true, "description": "Response schema for `/partner/customer/enable`.", "properties": { "production_secret": { "description": "The end customer's secret key for the Production environment.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PartnerCustomerGetRequest": { "description": "Request schema for `/partner/customer/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ] }, "PartnerCustomerGetResponse": { "additionalProperties": true, "description": "Response schema for `/partner/customer/get`.", "properties": { "end_customer": { "$ref": "#/components/schemas/PartnerEndCustomer" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PartnerCustomerOAuthInstitutionsGetRequest": { "description": "Request schema for `/partner/customer/oauth_institutions/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ] }, "PartnerCustomerOAuthInstitutionsGetResponse": { "additionalProperties": true, "description": "Response schema for `/partner/customer/oauth_institutions/get`.", "properties": { "flowdown_status": { "$ref": "#/components/schemas/PartnerEndCustomerFlowdownStatus" }, "institutions": { "description": "The OAuth institutions with which the end customer's application is being registered.", "items": { "$ref": "#/components/schemas/PartnerEndCustomerOAuthInstitution" }, "type": "array" }, "questionnaire_status": { "$ref": "#/components/schemas/PartnerEndCustomerQuestionnaireStatus" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PartnerCustomerRemoveRequest": { "description": "Request schema for `/partner/customer/remove`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_customer_client_id": { "description": "The `client_id` of the end customer to be removed.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "end_customer_client_id" ] }, "PartnerCustomerRemoveResponse": { "additionalProperties": true, "description": "Response schema for `/partner/customer/remove`.", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PartnerEndCustomer": { "additionalProperties": true, "description": "The details for an end customer.", "properties": { "client_id": { "description": "The `client_id` of the end customer.", "type": "string" }, "company_name": { "description": "The company name associated with the end customer.", "type": "string" }, "status": { "$ref": "#/components/schemas/PartnerEndCustomerStatus" } }, "type": "object" }, "PartnerEndCustomerAddress": { "additionalProperties": true, "description": "The end customer's address.", "properties": { "city": { "type": "string" }, "country_code": { "description": "ISO-3166-1 alpha-2 country code standard.", "type": "string" }, "postal_code": { "type": "string" }, "region": { "type": "string" }, "street": { "type": "string" } }, "type": "object" }, "PartnerEndCustomerAssetsUnderManagement": { "additionalProperties": true, "description": "Assets under management for the given end customer. Required for end customers with monthly service commitments.", "properties": { "amount": { "format": "double", "type": "number" }, "iso_currency_code": { "type": "string" } }, "required": [ "amount", "iso_currency_code" ], "type": "object" }, "PartnerEndCustomerBankAddendumAcceptance": { "additionalProperties": true, "description": "The bank addendum acceptance for the end customer.", "properties": { "customer_accepted": { "description": "Denotes whether the end customer has accepted the bank addendum terms.", "type": "boolean" }, "customer_agreement_timestamp": { "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`).", "format": "date-time", "type": "string" }, "customer_ip_address": { "description": "The IP address of the end customer when they accepted the bank addendum.", "type": "string" } }, "type": "object" }, "PartnerEndCustomerBillingContact": { "additionalProperties": true, "description": "The billing contact for the end customer. Defaults to partner's billing contact if omitted.", "properties": { "email": { "type": "string" }, "family_name": { "type": "string" }, "given_name": { "type": "string" } }, "type": "object" }, "PartnerEndCustomerCRAPurposes": { "additionalProperties": true, "description": "A map of permissible purposes to their corresponding use cases.", "properties": { "BUSINESS_NEED_ACCOUNT_REVIEW": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "BUSINESS_NEED_TRANSACTION": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "EMPLOYMENT": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "INSURANCE_UNDERWRITING": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "LICENSE_ELIGIBILITY": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "RISK_ASSESSMENT": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" }, "WRITTEN_INSTRUCTION": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCases" } }, "type": "object" }, "PartnerEndCustomerCRAQuestionnaire": { "additionalProperties": true, "description": "The CRA questionnaire for the end customer.", "properties": { "is_technical_service_provider_involved": { "description": "Denotes whether the technical service provider is involved.", "type": "boolean" }, "is_third_party_involved": { "description": "Denotes whether the third party is involved.", "type": "boolean" }, "purposes": { "$ref": "#/components/schemas/PartnerEndCustomerCRAPurposes" } }, "type": "object" }, "PartnerEndCustomerCRAUseCase": { "description": "A CRA use case under a permissible purpose.", "enum": [ "CREDIT_UNDERWRITING", "TENANT_SCREENING", "INVESTOR_OR_SERVICER_OF_CREDIT", "UTILITIES", "BANK_ACCOUNT_OPENING", "IDENTITY_VERIFICATION_FRAUD_PREVENTION", "COLLECTIONS_DEBT_RECOVERY" ], "type": "string" }, "PartnerEndCustomerCRAUseCases": { "description": "The list of use cases associated with a given permissible purpose.", "properties": { "use_cases": { "description": "List of use cases for the given permissible purpose.", "items": { "$ref": "#/components/schemas/PartnerEndCustomerCRAUseCase" }, "type": "array" } }, "type": "object" }, "PartnerEndCustomerCustomerSupportInfo": { "additionalProperties": true, "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.", "properties": { "contact_url": { "type": "string" }, "email": { "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.", "type": "string" }, "link_update_url": { "type": "string" }, "phone_number": { "type": "string" } }, "type": "object" }, "PartnerEndCustomerFlowdownStatus": { "description": "The status of the addendum to the Plaid MSA (\"flowdown\") for the end customer.", "enum": [ "NOT_STARTED", "IN_REVIEW", "NEGOTIATION", "COMPLETE" ], "type": "string" }, "PartnerEndCustomerOAuthInstitution": { "additionalProperties": true, "description": "The OAuth registration information for an institution.", "properties": { "classic_disablement_date": { "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, "type": "string" }, "environments": { "$ref": "#/components/schemas/PartnerEndCustomerOAuthInstitutionEnvironments" }, "errors": { "description": "The errors encountered while registering the end customer's application with the institutions.", "items": { "$ref": "#/components/schemas/PlaidError" }, "type": "array" }, "institution_id": { "type": "string" }, "name": { "type": "string" }, "production_enablement_date": { "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, "type": "string" } }, "type": "object" }, "PartnerEndCustomerOAuthInstitutionApplicationStatus": { "description": "The registration status for the end customer's application.", "enum": [ "NOT_STARTED", "PROCESSING", "APPROVED", "ENABLED", "ATTENTION_REQUIRED" ], "type": "string" }, "PartnerEndCustomerOAuthInstitutionEnvironments": { "additionalProperties": true, "description": "Registration statuses by environment.", "properties": { "development": { "$ref": "#/components/schemas/PartnerEndCustomerOAuthInstitutionApplicationStatus" }, "production": { "$ref": "#/components/schemas/PartnerEndCustomerOAuthInstitutionApplicationStatus" } }, "type": "object" }, "PartnerEndCustomerOAuthStatusUpdatedValues": { "description": "The OAuth status of the update", "enum": [ "not-started", "processing", "approved", "enabled", "attention-required" ], "nullable": false, "type": "string" }, "PartnerEndCustomerOAuthStatusUpdatedWebhook": { "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.", "properties": { "end_customer_client_id": { "description": "The client ID of the end customer", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "institution_id": { "description": "The institution ID", "type": "string" }, "institution_name": { "description": "The institution name", "type": "string" }, "status": { "$ref": "#/components/schemas/PartnerEndCustomerOAuthStatusUpdatedValues" }, "webhook_code": { "description": "`END_CUSTOMER_OAUTH_STATUS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`PARTNER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "end_customer_client_id", "environment", "institution_id", "institution_name", "status" ], "title": "PartnerEndCustomerOAuthStatusUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "end_customer_client_id": "634758733ebb4f00134b85ea", "environment": "production", "institution_id": "ins_127989", "institution_name": "Bank of America", "status": "attention-required", "webhook_code": "END_CUSTOMER_OAUTH_STATUS_UPDATED", "webhook_type": "PARTNER" } } }, "PartnerEndCustomerProductStatuses": { "additionalProperties": true, "description": "Mapping of product names to their current status.", "type": "object" }, "PartnerEndCustomerQuestionnaireStatus": { "description": "The status of the end customer's security questionnaire.", "enum": [ "NOT_STARTED", "RECEIVED", "COMPLETE" ], "type": "string" }, "PartnerEndCustomerQuestionnaires": { "additionalProperties": true, "description": "The questionnaires for the end customer.", "properties": { "cra": { "$ref": "#/components/schemas/PartnerEndCustomerCRAQuestionnaire" } }, "type": "object" }, "PartnerEndCustomerRequirementDue": { "description": "A field that may be required to be submitted for enablement.", "enum": [ "legal_entity_name", "website", "application_name", "is_diligence_attested", "technical_contact", "billing_contact", "address", "bank_addendum_acceptance", "questionnaires.cra" ], "type": "string" }, "PartnerEndCustomerRequirementsDue": { "description": "A list of fields that are still required to be submitted.", "items": { "$ref": "#/components/schemas/PartnerEndCustomerRequirementDue" }, "type": "array" }, "PartnerEndCustomerSecrets": { "additionalProperties": true, "description": "The secrets for the newly created end customer.", "properties": { "development": { "deprecated": true, "description": "The end customer's secret key for the Development environment. The Development environment has been removed.", "type": "string", "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" }, "sandbox": { "description": "The end customer's secret key for the Sandbox environment.", "type": "string" } }, "type": "object" }, "PartnerEndCustomerStatus": { "description": "The status of the given end customer.\n\n`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`.\n\n`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.\n\n`ACTIVE`: The end customer has been fully enabled in all environments.\n\n`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.", "enum": [ "UNDER_REVIEW", "PENDING_ENABLEMENT", "ACTIVE", "DENIED", "MORE_INFORMATION_NEEDED" ], "type": "string", "x-override-enum-values-shown": [ "UNDER_REVIEW", "PENDING_ENABLEMENT", "ACTIVE", "DENIED" ] }, "PartnerEndCustomerTechnicalContact": { "additionalProperties": true, "description": "The technical contact for the end customer. Defaults to partner's technical contact if omitted.", "properties": { "email": { "type": "string" }, "family_name": { "type": "string" }, "given_name": { "type": "string" } }, "type": "object" }, "PartnerEndCustomerWithSecrets": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/PartnerEndCustomer" }, { "properties": { "secrets": { "$ref": "#/components/schemas/PartnerEndCustomerSecrets" } }, "type": "object" } ], "description": "The details for the newly created end customer, including secrets for non-Production environments.", "type": "object" }, "Party": { "additionalProperties": true, "description": "A collection of information about a single party to a transaction. Included direct participants like the borrower and seller as well as indirect participants such as the flood certificate provider.", "properties": { "INDIVIDUAL": { "$ref": "#/components/schemas/PartyIndividual" }, "ROLES": { "$ref": "#/components/schemas/Roles" }, "TAXPAYER_IDENTIFIERS": { "$ref": "#/components/schemas/TaxpayerIdentifiers" } }, "required": [ "INDIVIDUAL", "ROLES", "TAXPAYER_IDENTIFIERS" ], "title": "Party", "type": "object" }, "PartyIndividual": { "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" ], "title": "INDIVIDUAL", "type": "object" }, "PartyRoleType": { "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" ], "title": "PartyRoleType", "type": "string" }, "Pay": { "additionalProperties": true, "deprecated": true, "description": "An object representing a monetary amount.", "properties": { "amount": { "description": "A numerical amount of a specific currency.", "format": "double", "nullable": true, "type": "number" }, "currency": { "description": "Currency code, e.g. USD", "nullable": true, "type": "string" } }, "title": "Pay", "type": "object" }, "PayFrequency": { "additionalProperties": true, "description": "The frequency of the pay period.", "nullable": true, "properties": { "value": { "$ref": "#/components/schemas/PayFrequencyValue" }, "verification_status": { "$ref": "#/components/schemas/VerificationStatus" } }, "required": [ "value", "verification_status" ], "title": "PayFrequency", "type": "object" }, "PayFrequencyValue": { "description": "The frequency of the pay period.", "enum": [ "monthly", "semimonthly", "weekly", "biweekly", "unknown", null ], "title": "PayFrequencyValue", "type": "string" }, "PayPeriodDetails": { "additionalProperties": true, "description": "Details about the pay period.", "properties": { "check_amount": { "description": "The amount of the paycheck.", "format": "double", "nullable": true, "type": "number" }, "distribution_breakdown": { "items": { "$ref": "#/components/schemas/DistributionBreakdown" }, "type": "array" }, "end_date": { "description": "The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".", "format": "date", "nullable": true, "type": "string" }, "gross_earnings": { "description": "Total earnings before tax/deductions.", "format": "double", "nullable": true, "type": "number" }, "pay_date": { "description": "The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "pay_day": { "deprecated": true, "description": "The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "pay_frequency": { "$ref": "#/components/schemas/PayPeriodDetailsPayFrequency" }, "start_date": { "description": "The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".", "format": "date", "nullable": true, "type": "string" } }, "title": "PayPeriodDetails", "type": "object" }, "PayPeriodDetailsPayFrequency": { "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, "title": "PayPeriodDetailsPayFrequency", "type": "string" }, "PayStubDeductionsBreakdown": { "additionalProperties": true, "description": "An object representing the deduction line items for the pay period", "properties": { "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the deduction line item", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the deduction", "format": "double", "nullable": true, "type": "number" } }, "required": [ "current_amount", "description", "iso_currency_code", "unofficial_currency_code", "ytd_amount" ], "title": "PayStubDeductionsBreakdown", "type": "object" }, "PayStubDeductionsTotal": { "additionalProperties": true, "description": "An object representing the total deductions for the pay period", "properties": { "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date total amount of the deductions", "format": "double", "nullable": true, "type": "number" } }, "required": [ "current_amount", "iso_currency_code", "unofficial_currency_code", "ytd_amount" ], "title": "PayStubDeductionsTotal", "type": "object" }, "PayStubDistributionBreakdown": { "additionalProperties": true, "description": "Information about the accounts that the payment was distributed to.", "properties": { "account_name": { "description": "Name of the account for the given distribution.", "nullable": true, "type": "string" }, "bank_name": { "description": "The name of the bank that the payment is being deposited to.", "nullable": true, "type": "string" }, "current_amount": { "description": "The amount distributed to this account.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.", "nullable": true, "type": "string" }, "type": { "description": "Type of the account that the paystub was sent to (e.g. 'checking').", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "account_name", "bank_name", "current_amount", "iso_currency_code", "mask", "type", "unofficial_currency_code" ], "title": "PayStubDistributionBreakdown", "type": "object" }, "PayStubEarningsBreakdown": { "additionalProperties": true, "description": "An object representing the earnings line items for the pay period.", "properties": { "canonical_description": { "$ref": "#/components/schemas/PayStubEarningsBreakdownCanonicalDescription" }, "current_amount": { "description": "Raw amount of the earning line item.", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the earning line item.", "nullable": true, "type": "string" }, "hours": { "description": "Number of hours applicable for this earning.", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "rate": { "description": "Hourly rate applicable for this earning.", "format": "double", "nullable": true, "type": "number" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the deduction.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "canonical_description", "current_amount", "description", "hours", "iso_currency_code", "rate", "unofficial_currency_code", "ytd_amount" ], "title": "PayStubEarningsBreakdown", "type": "object" }, "PayStubEarningsBreakdownCanonicalDescription": { "description": "Commonly used term to describe the earning line item.", "nullable": true, "type": "string", "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 ] }, "PayStubEarningsTotal": { "additionalProperties": true, "description": "An object representing both the current pay period and year to date amount for an earning category.", "properties": { "current_amount": { "description": "Total amount of the earnings for this pay period.", "format": "double", "nullable": true, "type": "number" }, "hours": { "description": "Total number of hours worked for this pay period.", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "ytd_amount": { "description": "The total year-to-date amount of the earnings.", "format": "double", "nullable": true, "type": "number" } }, "required": [ "current_amount", "hours", "iso_currency_code", "unofficial_currency_code", "ytd_amount" ], "title": "PayStubEarningsTotal", "type": "object" }, "PayStubPayPeriodDetails": { "additionalProperties": true, "description": "Details about the pay period.", "properties": { "distribution_breakdown": { "items": { "$ref": "#/components/schemas/PayStubDistributionBreakdown" }, "type": "array" }, "end_date": { "description": "The date on which the pay period ended, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "gross_earnings": { "description": "Total earnings before tax/deductions.", "format": "double", "nullable": true, "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "pay_amount": { "description": "The amount of the paycheck.", "format": "double", "nullable": true, "type": "number" }, "pay_basis": { "$ref": "#/components/schemas/CreditPayStubPayBasisType" }, "pay_date": { "description": "The date on which the pay stub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "pay_frequency": { "description": "The frequency at which an individual is paid.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "UNKNOWN", "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY", null ] }, "start_date": { "description": "The date on which the pay period started, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" } }, "required": [ "pay_amount", "distribution_breakdown", "end_date", "gross_earnings", "iso_currency_code", "pay_date", "pay_frequency", "start_date", "unofficial_currency_code" ], "title": "PayStubPayPeriodDetails", "type": "object" }, "PayStubTaxpayerID": { "additionalProperties": true, "description": "Taxpayer ID of the individual receiving the paystub.", "properties": { "id_mask": { "description": "ID mask; i.e. last 4 digits of the taxpayer ID.", "nullable": true, "type": "string" }, "id_type": { "description": "Type of ID, e.g. 'SSN'.", "nullable": true, "type": "string" } }, "required": [ "id_type", "id_mask" ], "title": "PayStubTaxpayerID", "type": "object" }, "PaymentAmount": { "description": "The amount and currency of a payment", "properties": { "currency": { "$ref": "#/components/schemas/PaymentAmountCurrency" }, "value": { "description": "The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`.", "format": "double", "type": "number" } }, "required": [ "currency", "value" ], "title": "PaymentAmount", "type": "object" }, "PaymentAmountCurrency": { "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.", "enum": [ "GBP", "EUR", "PLN", "SEK", "DKK", "NOK" ], "maxLength": 3, "minLength": 3, "type": "string" }, "PaymentAmountNullable": { "additionalProperties": true, "description": "The amount and currency of a payment", "nullable": true, "properties": { "currency": { "$ref": "#/components/schemas/PaymentAmountCurrency" }, "value": { "description": "The amount of the payment. Must contain at most two digits of precision e.g. `1.23`.", "format": "double", "minimum": 0.01, "type": "number" } }, "required": [ "currency", "value" ], "title": "PaymentAmount", "type": "object" }, "PaymentAmountRefunded": { "allOf": [ { "$ref": "#/components/schemas/PaymentAmountNullable" }, { "additionalProperties": true, "description": "The amount that has been refunded already. Subtract this from the payment amount to calculate the amount still available to refund.", "type": "object" } ], "description": "The amount and currency of a payment" }, "PaymentAmountToRefund": { "allOf": [ { "$ref": "#/components/schemas/PaymentAmountNullable" }, { "description": "An amount to refund the payment partially. If this amount is not specified, the payment is refunded fully for the remaining amount.", "type": "object" } ], "description": "The amount and currency of a payment" }, "PaymentChannel": { "description": "The channel used to make a payment.\n`online:` transactions that took place online.\n\n`in store:` transactions that were made at a physical location.\n\n`other:` transactions that relate to banks, e.g. fees or deposits.", "enum": [ "online", "in store", "other" ], "title": "Transaction Payment Channel", "type": "string" }, "PaymentConsentMaxPaymentAmount": { "allOf": [ { "$ref": "#/components/schemas/PaymentAmount" } ], "description": "Maximum amount of a single payment initiated using the payment consent." }, "PaymentConsentPeriodicAlignment": { "description": "Where the payment consent period should start.\n\nIf the institution is Monzo, only `CONSENT` alignments are supported.\n\n`CALENDAR`: line up with a calendar.\n\n`CONSENT`: on the date of consent creation.", "enum": [ "CALENDAR", "CONSENT" ], "type": "string" }, "PaymentConsentPeriodicAmount": { "description": "Defines consent payments limitations per period.", "properties": { "alignment": { "$ref": "#/components/schemas/PaymentConsentPeriodicAlignment" }, "amount": { "$ref": "#/components/schemas/PaymentConsentPeriodicAmountAmount" }, "interval": { "$ref": "#/components/schemas/PaymentConsentPeriodicInterval" } }, "required": [ "amount", "interval", "alignment" ], "title": "PaymentConsentPeriodicAmount", "type": "object" }, "PaymentConsentPeriodicAmountAmount": { "allOf": [ { "$ref": "#/components/schemas/PaymentAmount" } ], "description": "Maximum cumulative amount for all payments in the specified interval." }, "PaymentConsentPeriodicInterval": { "description": "Payment consent periodic interval.", "enum": [ "DAY", "WEEK", "MONTH", "YEAR" ], "type": "string" }, "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": { "description": "The date and time from which the consent should be active, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "nullable": true, "type": "string" }, "to": { "description": "The date and time at which the consent expires, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "nullable": true, "type": "string" } }, "title": "PaymentConsentValidDateTime", "type": "object" }, "PaymentInitiationAddress": { "additionalProperties": true, "description": "The optional address of the payment recipient's bank account. Required by most institutions outside of the UK.", "nullable": true, "properties": { "city": { "description": "The city where the recipient is located. Maximum of 35 characters.", "maxLength": 35, "minLength": 1, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code where the recipient is located.", "maxLength": 2, "minLength": 2, "type": "string" }, "postal_code": { "description": "The postal code where the recipient is located. Maximum of 16 characters.", "maxLength": 16, "minLength": 1, "type": "string" }, "street": { "description": "An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.", "items": { "minLength": 1, "type": "string" }, "minItems": 1, "type": "array" } }, "required": [ "street", "city", "postal_code", "country" ], "title": "PaymentInitiationAddress", "type": "object" }, "PaymentInitiationConsent": { "additionalProperties": true, "description": "PaymentInitiationConsent defines a payment initiation consent.", "properties": { "consent_id": { "description": "The consent ID.", "minLength": 1, "type": "string" }, "constraints": { "$ref": "#/components/schemas/PaymentInitiationConsentConstraints" }, "created_at": { "description": "Consent creation timestamp, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" }, "payer_details": { "$ref": "#/components/schemas/ExternalPaymentRefundDetails" }, "recipient_id": { "description": "The ID of the recipient the payment consent is for.", "minLength": 1, "type": "string" }, "reference": { "description": "A reference for the payment consent.", "type": "string" }, "scopes": { "deprecated": true, "description": "Deprecated, use the 'type' field instead.", "items": { "$ref": "#/components/schemas/PaymentInitiationConsentScope" }, "type": "array" }, "status": { "$ref": "#/components/schemas/PaymentInitiationConsentStatus" }, "type": { "$ref": "#/components/schemas/PaymentInitiationConsentType" } }, "required": [ "consent_id", "status", "created_at", "recipient_id", "reference", "constraints" ], "type": "object" }, "PaymentInitiationConsentConstraints": { "description": "Limitations that will be applied to payments initiated using the payment consent.", "properties": { "max_payment_amount": { "$ref": "#/components/schemas/PaymentConsentMaxPaymentAmount" }, "periodic_amounts": { "description": "A list of amount limitations per period of time.", "items": { "$ref": "#/components/schemas/PaymentConsentPeriodicAmount" }, "minItems": 1, "type": "array" }, "valid_date_time": { "$ref": "#/components/schemas/PaymentConsentValidDateTime" } }, "required": [ "max_payment_amount", "periodic_amounts" ], "title": "PaymentInitiationConsentConstraints", "type": "object" }, "PaymentInitiationConsentCreateRequest": { "description": "PaymentInitiationConsentCreateRequest defines the request schema for `/payment_initiation/consent/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "constraints": { "$ref": "#/components/schemas/PaymentInitiationConsentConstraints" }, "options": { "$ref": "#/components/schemas/ExternalPaymentInitiationConsentOptions" }, "payer_details": { "$ref": "#/components/schemas/PaymentInitiationConsentPayerDetails" }, "recipient_id": { "description": "The ID of the recipient the payment consent is for. The created consent can be used to transfer funds to this recipient only.", "type": "string" }, "reference": { "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.", "maxLength": 18, "minLength": 1, "type": "string" }, "scopes": { "deprecated": true, "description": "An array of payment consent scopes.", "items": { "$ref": "#/components/schemas/PaymentInitiationConsentScope" }, "minItems": 1, "type": "array", "uniqueItems": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "type": { "$ref": "#/components/schemas/PaymentInitiationConsentType" } }, "required": [ "recipient_id", "reference", "constraints" ], "type": "object" }, "PaymentInitiationConsentCreateResponse": { "additionalProperties": true, "description": "PaymentInitiationConsentCreateResponse defines the response schema for `/payment_initiation/consent/create`", "properties": { "consent_id": { "description": "A unique ID identifying the payment consent.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/PaymentInitiationConsentStatus" } }, "required": [ "consent_id", "status", "request_id" ], "type": "object" }, "PaymentInitiationConsentGetRequest": { "description": "PaymentInitiationConsentGetRequest defines the request schema for `/payment_initiation/consent/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consent_id": { "description": "The `consent_id` returned from `/payment_initiation/consent/create`.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "consent_id" ], "type": "object" }, "PaymentInitiationConsentGetResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/PaymentInitiationConsent" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "PaymentInitiationConsentGetResponse defines the response schema for `/payment_initiation/consent/get`", "required": [ "request_id" ], "type": "object" }, "PaymentInitiationConsentPayerDetails": { "additionalProperties": true, "description": "An object representing the payment consent payer details.\nPayer `name` and account `numbers` are required to lock the account to which the consent can be created.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "date_of_birth": { "description": "The payer's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.", "format": "date", "nullable": true, "type": "string" }, "emails": { "description": "The payer's emails", "items": { "type": "string" }, "type": "array" }, "name": { "description": "The name of the payer as it appears in their bank account", "minLength": 1, "type": "string" }, "numbers": { "$ref": "#/components/schemas/PaymentInitiationConsentPayerNumbers" }, "phone_numbers": { "description": "The payer's phone numbers in E.164 format: +{countrycode}{number}", "items": { "type": "string" }, "type": "array" } }, "required": [ "name", "numbers" ], "title": "PaymentInitiationConsentPayerDetails", "type": "object" }, "PaymentInitiationConsentPayerNumbers": { "additionalProperties": true, "description": "The counterparty's bank account numbers. Exactly one of IBAN or Bacs data is required.", "properties": { "bacs": { "$ref": "#/components/schemas/PaymentInitiationOptionalRestrictionBacs" }, "iban": { "$ref": "#/components/schemas/NumbersIBANNullable" } }, "title": "PaymentInitiationConsentPayerNumbers", "type": "object" }, "PaymentInitiationConsentPaymentExecuteRequest": { "description": "PaymentInitiationConsentPaymentExecuteRequest defines the request schema for `/payment_initiation/consent/payment/execute`", "properties": { "amount": { "$ref": "#/components/schemas/PaymentAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consent_id": { "description": "The consent ID.", "type": "string" }, "idempotency_key": { "$ref": "#/components/schemas/ConsentPaymentIdempotencyKey" }, "processing_mode": { "$ref": "#/components/schemas/PaymentInitiationConsentProcessingMode" }, "reference": { "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).\nIf 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.\nSome 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.\nBoth the originally provided and automatically adjusted references (if any) can be found in the `reference` and `adjusted_reference` fields, respectively.", "maxLength": 18, "minLength": 1, "nullable": true, "type": "string" }, "scope": { "allOf": [ { "$ref": "#/components/schemas/PaymentInitiationConsentScope" }, { "description": "Deprecated, payments will be executed within the type of the consent.\n\nA scope of the payment. Must be one of the scopes mentioned in the consent.\nOptional if the appropriate consent has only one scope defined, required otherwise.", "nullable": true, "type": "string" } ], "deprecated": true }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "consent_id", "amount", "idempotency_key" ], "type": "object" }, "PaymentInitiationConsentPaymentExecuteResponse": { "additionalProperties": true, "description": "PaymentInitiationConsentPaymentExecuteResponse defines the response schema for `/payment_initiation/consent/payment/execute`", "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "payment_id": { "description": "A unique ID identifying the payment", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" } }, "required": [ "payment_id", "status", "request_id" ], "type": "object" }, "PaymentInitiationConsentProcessingMode": { "description": "Decides the mode under which the payment processing should be performed, using `IMMEDIATE` as default.\n\n`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.\n\n `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.", "enum": [ "ASYNC", "IMMEDIATE" ], "title": "PaymentInitiationConsentProcessingMode", "type": "string" }, "PaymentInitiationConsentRevokeRequest": { "description": "PaymentInitiationConsentRevokeRequest defines the request schema for `/payment_initiation/consent/revoke`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consent_id": { "description": "The consent ID.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "consent_id" ], "type": "object" }, "PaymentInitiationConsentRevokeResponse": { "additionalProperties": true, "description": "PaymentInitiationConsentRevokeResponse defines the response schema for `/payment_initiation/consent/revoke`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" }, "PaymentInitiationConsentScope": { "description": "This field is deprecated in favor of the consent `type` field. Consents are required to have a single type.\n\nPayment consent scope. Defines possible directions for payments made with the given consent.\n\n`ME_TO_ME`: Allows moving money between accounts owned by the same user.\n\n`EXTERNAL`: Allows initiating payments from the user's account to third parties.", "enum": [ "ME_TO_ME", "EXTERNAL" ], "title": "PaymentInitiationConsentScope", "type": "string" }, "PaymentInitiationConsentStatus": { "description": "The status of the payment consent.\n\n`UNAUTHORISED`: Consent created, but requires user authorisation.\n\n`REJECTED`: Consent authorisation was rejected by the bank.\n\n`AUTHORISED`: Consent is active and ready to be used.\n\n`REVOKED`: Consent has been revoked and can no longer be used.\n\n`EXPIRED`: Consent is no longer valid.", "enum": [ "UNAUTHORISED", "AUTHORISED", "REVOKED", "REJECTED", "EXPIRED" ], "type": "string" }, "PaymentInitiationConsentStatusUpdateWebhook": { "additionalProperties": true, "description": "Fired when the status of a payment consent has changed.", "properties": { "consent_id": { "description": "The `id` for the consent being updated", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "new_status": { "$ref": "#/components/schemas/PaymentInitiationConsentStatus" }, "old_status": { "$ref": "#/components/schemas/PaymentInitiationConsentStatus" }, "timestamp": { "description": "The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "webhook_code": { "description": "`CONSENT_STATUS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`PAYMENT_INITIATION`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "consent_id", "old_status", "new_status", "timestamp", "environment" ], "title": "PaymentInitiationConsentStatusUpdateWebhook", "type": "object", "x-examples": { "example-1": { "consent_id": "payment-consent-id-production-e7258765-69f9-46b1-9c67-d2800448e5ff", "environment": "production", "new_status": "AUTHORISED", "old_status": "UNAUTHORISED", "timestamp": "2017-09-14T14:42:19.350Z", "webhook_code": "CONSENT_STATUS_UPDATE", "webhook_type": "PAYMENT_INITIATION" } } }, "PaymentInitiationConsentType": { "description": "Payment consent type. Defines possible use case for payments made with the given consent.\n\n`SWEEPING`: Allows moving money between accounts owned by the same user.\n\n`COMMERCIAL`: Allows initiating payments from the user's account to third parties.", "enum": [ "SWEEPING", "COMMERCIAL" ], "title": "PaymentInitiationConsentType", "type": "string" }, "PaymentInitiationMaximumPaymentAmount": { "additionalProperties": { "type": "string" }, "description": "A mapping of currency to maximum payment amount (denominated in the smallest unit of currency) supported by the institution.\n\nExample: `{\"GBP\": \"10000\"}`\n", "type": "object" }, "PaymentInitiationMetadata": { "additionalProperties": true, "description": "Metadata that captures what specific payment configurations an institution supports when making Payment Initiation requests.", "nullable": true, "properties": { "maximum_payment_amount": { "$ref": "#/components/schemas/PaymentInitiationMaximumPaymentAmount" }, "standing_order_metadata": { "$ref": "#/components/schemas/PaymentInitiationStandingOrderMetadata" }, "supports_international_payments": { "description": "Indicates whether the institution supports payments from a different country.", "type": "boolean" }, "supports_payment_consents": { "description": "Indicates whether the institution supports payment consents.", "type": "boolean" }, "supports_refund_details": { "description": "Indicates whether the institution supports returning refund details when initiating a payment.", "type": "boolean" }, "supports_sepa_instant": { "description": "Indicates whether the institution supports SEPA Instant payments.", "type": "boolean" } }, "required": [ "supports_international_payments", "supports_sepa_instant", "maximum_payment_amount", "supports_refund_details", "standing_order_metadata", "supports_payment_consents" ], "title": "PaymentInitiationMetadata", "type": "object" }, "PaymentInitiationOptionalRestrictionBacs": { "allOf": [ { "$ref": "#/components/schemas/RecipientBACS" }, { "additionalProperties": true, "type": "object" } ], "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 }, "PaymentInitiationPayment": { "additionalProperties": true, "description": "PaymentInitiationPayment defines a payment initiation payment", "properties": { "adjusted_reference": { "description": "The value of the reference sent to the bank after adjustment to pass bank validation rules.", "nullable": true, "type": "string" }, "adjusted_scheme": { "$ref": "#/components/schemas/PaymentScheme" }, "amount": { "$ref": "#/components/schemas/PaymentAmount" }, "amount_refunded": { "$ref": "#/components/schemas/PaymentAmountRefunded" }, "bacs": { "$ref": "#/components/schemas/SenderBACSNullable" }, "consent_id": { "description": "The payment consent ID that this payment was initiated with. Is present only when payment was initiated using the payment consent.", "nullable": true, "type": "string" }, "end_to_end_id": { "description": "A unique identifier assigned by Plaid to each payment for tracking and reconciliation purposes.\n\nNote: 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, "type": "string" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "iban": { "description": "The International Bank Account Number (IBAN) for the sender, if specified in the `/payment_initiation/payment/create` call.", "nullable": true, "type": "string" }, "last_status_update": { "description": "The date and time of the last time the `status` was updated, in IS0 8601 format", "format": "date-time", "type": "string" }, "payment_id": { "description": "The ID of the payment. Like all Plaid identifiers, the `payment_id` is case sensitive.", "type": "string" }, "recipient_id": { "description": "The ID of the recipient", "type": "string" }, "reference": { "description": "A reference for the payment.", "type": "string" }, "refund_details": { "$ref": "#/components/schemas/ExternalPaymentRefundDetails" }, "refund_ids": { "description": "Refund IDs associated with the payment.", "items": { "type": "string" }, "nullable": true, "type": "array" }, "schedule": { "$ref": "#/components/schemas/ExternalPaymentScheduleGet" }, "scheme": { "$ref": "#/components/schemas/PaymentScheme" }, "status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" }, "transaction_id": { "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, "type": "string" }, "wallet_id": { "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, "type": "string" } }, "required": [ "payment_id", "amount", "status", "recipient_id", "reference", "last_status_update", "bacs", "iban" ], "type": "object" }, "PaymentInitiationPaymentCreateRequest": { "description": "PaymentInitiationPaymentCreateRequest defines the request schema for `/payment_initiation/payment/create`", "properties": { "amount": { "$ref": "#/components/schemas/PaymentAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/ExternalPaymentOptions" }, "recipient_id": { "description": "The ID of the recipient the payment is for.", "type": "string" }, "reference": { "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).\nIn 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.\nSome 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.\nBoth the originally provided and automatically adjusted references (if any) can be found in the `reference` and `adjusted_reference` fields, respectively.", "maxLength": 18, "minLength": 1, "type": "string" }, "schedule": { "$ref": "#/components/schemas/ExternalPaymentScheduleRequest" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "recipient_id", "reference", "amount" ], "type": "object" }, "PaymentInitiationPaymentCreateResponse": { "additionalProperties": true, "description": "PaymentInitiationPaymentCreateResponse defines the response schema for `/payment_initiation/payment/create`", "properties": { "payment_id": { "description": "A unique ID identifying the payment", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/PaymentInitiationPaymentCreateStatus" } }, "required": [ "payment_id", "status", "request_id" ], "type": "object" }, "PaymentInitiationPaymentCreateStatus": { "description": "For a payment returned by this endpoint, there is only one possible value:\n\n`PAYMENT_STATUS_INPUT_NEEDED`: The initial phase of the payment", "enum": [ "PAYMENT_STATUS_INPUT_NEEDED" ], "type": "string" }, "PaymentInitiationPaymentGetRequest": { "description": "PaymentInitiationPaymentGetRequest defines the request schema for `/payment_initiation/payment/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_id": { "description": "The `payment_id` returned from `/payment_initiation/payment/create`.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_id" ], "type": "object" }, "PaymentInitiationPaymentGetResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/PaymentInitiationPayment" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initiation/payment/get`", "required": [ "request_id", "payment_id", "amount", "status", "recipient_id", "reference", "last_status_update", "bacs", "iban" ] }, "PaymentInitiationPaymentListRequest": { "description": "PaymentInitiationPaymentListRequest defines the request schema for `/payment_initiation/payment/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consent_id": { "description": "The consent ID. If specified, only payments, executed using this consent, will be returned.", "nullable": true, "type": "string" }, "count": { "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).", "maximum": 200, "minimum": 1, "nullable": true, "type": "integer" }, "cursor": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "PaymentInitiationPaymentListResponse": { "additionalProperties": true, "description": "PaymentInitiationPaymentListResponse defines the response schema for `/payment_initiation/payment/list`", "properties": { "next_cursor": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "payments": { "description": "An array of payments that have been created, associated with the given `client_id`.", "items": { "$ref": "#/components/schemas/PaymentInitiationPayment" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "payments", "next_cursor", "request_id" ], "type": "object" }, "PaymentInitiationPaymentReverseRequest": { "description": "PaymentInitiationPaymentReverseRequest defines the request schema for `/payment_initiation/payment/reverse`", "properties": { "amount": { "$ref": "#/components/schemas/PaymentAmountToRefund" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "counterparty_address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "counterparty_date_of_birth": { "description": "The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.", "format": "date", "nullable": true, "type": "string" }, "idempotency_key": { "$ref": "#/components/schemas/WalletTransactionIdempotencyKey" }, "payment_id": { "description": "The ID of the payment to reverse", "type": "string" }, "reference": { "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.", "maxLength": 18, "minLength": 6, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_id", "idempotency_key", "reference" ], "type": "object" }, "PaymentInitiationPaymentReverseResponse": { "additionalProperties": true, "description": "PaymentInitiationPaymentReverseResponse defines the response schema for `/payment_initiation/payment/reverse`", "properties": { "refund_id": { "description": "A unique ID identifying the refund", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/WalletTransactionStatus" } }, "required": [ "refund_id", "request_id", "status" ], "type": "object" }, "PaymentInitiationPaymentStatus": { "description": "The status of the payment.\n\nCore lifecycle statuses:\n\n**`PAYMENT_STATUS_INPUT_NEEDED`**: Transitional. The payment is awaiting user input to continue processing. It may re-enter this state if additional input is required.\n\n**`PAYMENT_STATUS_AUTHORISING`:** Transitional. The payment is being authorised by the financial institution. It will automatically move on once authorisation completes.\n\n**`PAYMENT_STATUS_INITIATED`:** 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/).\n\n**`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.\n\n**`PAYMENT_STATUS_SETTLED`: Terminal.** The funds are available in the recipient's account. Only available to customers using [Plaid Virtual Accounts](https://plaid.com/docs/payment-initiation/virtual-accounts/).\n\nFailure statuses:\n\n**`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: Terminal.** The payment failed due to insufficient funds. No further retries will succeed until the payer's balance is replenished.\n\n**`PAYMENT_STATUS_FAILED`: Terminal (retryable).** The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved.\n\n**`PAYMENT_STATUS_BLOCKED`: Terminal (retryable).** The payment was blocked by Plaid (e.g., flagged as risky). Resolve any compliance or risk issues and retry.\n\n**`PAYMENT_STATUS_REJECTED`: Terminal.** The payment was rejected by the financial institution. No automatic retry is possible.\n\n**`PAYMENT_STATUS_CANCELLED`: Terminal.** The end user cancelled the payment during authorisation.\n\nStanding-order statuses:\n\n**`PAYMENT_STATUS_ESTABLISHED`: Terminal.** A recurring/standing order has been successfully created.\n\nDeprecated (to be removed in a future release):\n\n`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.\n\n`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed.\n\n`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established.", "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" ], "type": "string" }, "PaymentInitiationPaymentTokenCreateRequest": { "description": "PaymentInitiationPaymentTokenCreateRequest defines the request schema for `/payment_initiation/payment/token/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_id": { "description": "The `payment_id` returned from `/payment_initiation/payment/create`.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_id" ], "type": "object" }, "PaymentInitiationPaymentTokenCreateResponse": { "additionalProperties": true, "description": "PaymentInitiationPaymentTokenCreateResponse defines the response schema for `/payment_initiation/payment/token/create`", "properties": { "payment_token": { "description": "A `payment_token` that can be provided to Link initialization to enter the payment initiation flow", "type": "string" }, "payment_token_expiration_time": { "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.", "format": "date-time", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "payment_token", "payment_token_expiration_time", "request_id" ], "type": "object" }, "PaymentInitiationRecipient": { "additionalProperties": true, "description": "PaymentInitiationRecipient defines a payment initiation recipient", "properties": { "address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "bacs": { "$ref": "#/components/schemas/RecipientBACSNullable" }, "iban": { "description": "The International Bank Account Number (IBAN) for the recipient.", "nullable": true, "type": "string" }, "name": { "description": "The name of the recipient.", "type": "string" }, "recipient_id": { "description": "The ID of the recipient.", "type": "string" } }, "required": [ "recipient_id", "name" ], "title": "PaymentInitiationRecipient", "type": "object" }, "PaymentInitiationRecipientCreateRequest": { "description": "PaymentInitiationRecipientCreateRequest defines the request schema for `/payment_initiation/recipient/create`", "properties": { "address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "bacs": { "$ref": "#/components/schemas/RecipientBACSNullable" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "iban": { "description": "The International Bank Account Number (IBAN) for the recipient. If Bacs data is not provided, an IBAN is required.", "maxLength": 34, "minLength": 15, "nullable": true, "type": "string" }, "name": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "name" ], "type": "object" }, "PaymentInitiationRecipientCreateResponse": { "additionalProperties": true, "description": "PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initiation/recipient/create`", "properties": { "recipient_id": { "description": "A unique ID identifying the recipient", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "recipient_id", "request_id" ], "type": "object" }, "PaymentInitiationRecipientGetRequest": { "description": "PaymentInitiationRecipientGetRequest defines the request schema for `/payment_initiation/recipient/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "recipient_id": { "description": "The ID of the recipient", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "recipient_id" ], "type": "object" }, "PaymentInitiationRecipientGetResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/PaymentInitiationRecipient" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "PaymentInitiationRecipientGetResponse defines the response schema for `/payment_initiation/recipient/get`", "required": [ "recipient_id", "name", "request_id" ] }, "PaymentInitiationRecipientListRequest": { "description": "PaymentInitiationRecipientListRequest defines the request schema for `/payment_initiation/recipient/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "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).", "maximum": 100, "minimum": 1, "nullable": true, "type": "integer" }, "cursor": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "PaymentInitiationRecipientListResponse": { "additionalProperties": true, "description": "PaymentInitiationRecipientListResponse defines the response schema for `/payment_initiation/recipient/list`", "properties": { "next_cursor": { "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, "type": "string" }, "recipients": { "description": "An array of payment recipients created for Payment Initiation", "items": { "$ref": "#/components/schemas/PaymentInitiationRecipient" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "recipients", "request_id" ], "type": "object" }, "PaymentInitiationStandingOrderMetadata": { "additionalProperties": true, "description": "Metadata specifically related to valid Payment Initiation standing order configurations for the institution.", "nullable": true, "properties": { "supports_standing_order_end_date": { "description": "Indicates whether the institution supports closed-ended standing orders by providing an end date.", "type": "boolean" }, "supports_standing_order_negative_execution_days": { "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.", "type": "boolean" }, "valid_standing_order_intervals": { "description": "A list of the valid standing order intervals supported by the institution.", "items": { "$ref": "#/components/schemas/PaymentScheduleInterval" }, "type": "array" } }, "required": [ "supports_standing_order_end_date", "supports_standing_order_negative_execution_days", "valid_standing_order_intervals" ], "title": "PaymentInitiationStandingOrderMetadata", "type": "object" }, "PaymentMeta": { "additionalProperties": true, "description": "Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`.\n\nIf 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": { "by_order_of": { "description": "The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer.", "nullable": true, "type": "string" }, "payee": { "description": "For transfers, the party that is receiving the transaction.", "nullable": true, "type": "string" }, "payer": { "description": "For transfers, the party that is paying the transaction.", "nullable": true, "type": "string" }, "payment_method": { "description": "The type of transfer, e.g. 'ACH'", "nullable": true, "type": "string" }, "payment_processor": { "description": "The name of the payment processor", "nullable": true, "type": "string" }, "ppd_id": { "description": "The ACH PPD ID for the payer.", "nullable": true, "type": "string" }, "reason": { "description": "The payer-supplied description of the transfer.", "nullable": true, "type": "string" }, "reference_number": { "description": "The transaction reference number supplied by the financial institution.", "nullable": true, "type": "string" } }, "required": [ "reference_number", "ppd_id", "payee", "by_order_of", "payer", "payment_method", "payment_processor", "reason" ], "title": "PaymentMeta", "type": "object" }, "PaymentProfileCreateRequest": { "description": "PaymentProfileCreateRequest defines the request schema for `/payment_profile/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "PaymentProfileCreateResponse": { "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" ], "type": "object" }, "PaymentProfileGetRequest": { "description": "PaymentProfileGetRequest defines the request schema for `/payment_profile/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_profile_token": { "$ref": "#/components/schemas/PaymentProfileToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_profile_token" ], "type": "object" }, "PaymentProfileGetResponse": { "additionalProperties": true, "description": "PaymentProfileGetResponse defines the response schema for `/payment_profile/get`", "properties": { "created_at": { "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", "format": "date-time", "type": "string" }, "deleted_at": { "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", "format": "date-time", "nullable": true, "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/PaymentProfileStatus" }, "updated_at": { "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", "format": "date-time", "type": "string" } }, "required": [ "request_id", "status", "created_at", "updated_at", "deleted_at" ], "type": "object" }, "PaymentProfileRemoveRequest": { "description": "PaymentProfileRemoveRequest defines the request schema for `/payment_profile/remove`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_profile_token": { "$ref": "#/components/schemas/PaymentProfileToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_profile_token" ], "type": "object" }, "PaymentProfileRemoveResponse": { "additionalProperties": true, "description": "PaymentProfileRemoveResponse defines the response schema for `/payment_profile/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "PaymentProfileStatus": { "description": "The status of the given Payment Profile.\n\n`READY`: This Payment Profile is ready to be used to create transfers using `/transfer/authorization/create` and `/transfer/create`.\n\n`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.\n\n`REMOVED`: This Payment Profile has been removed.", "enum": [ "PENDING", "READY", "REMOVED" ], "type": "string" }, "PaymentProfileToken": { "description": "A payment profile token associated with the Payment Profile data that is being requested.", "title": "PaymentProfileToken", "type": "string", "x-hidden-from-docs": true }, "PaymentScheduleInterval": { "description": "The frequency interval of the payment.", "enum": [ "WEEKLY", "MONTHLY" ], "minLength": 1, "title": "PaymentScheduleInterval", "type": "string" }, "PaymentScheme": { "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.\n\n`LOCAL_DEFAULT`: The default payment scheme for the selected market and currency will be used.\n\n`LOCAL_INSTANT`: The instant payment scheme for the selected market and currency will be used (if applicable). Fees may be applied by the institution.\n\n`SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area.\n\n`SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks.", "enum": [ null, "LOCAL_DEFAULT", "LOCAL_INSTANT", "SEPA_CREDIT_TRANSFER", "SEPA_CREDIT_TRANSFER_INSTANT" ], "nullable": true, "type": "string" }, "PaymentStatusUpdateWebhook": { "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/).\n\nNote: Plaid payment statuses do not constitute proof that funds have arrived in the recipient's account. Do not use `new_payment_status` to confirm fund settlement.", "properties": { "adjusted_reference": { "description": "The value of the reference sent to the bank after adjustment to pass bank validation rules.", "nullable": true, "type": "string" }, "adjusted_start_date": { "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`.", "format": "date", "nullable": true, "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "new_payment_status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" }, "old_payment_status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" }, "original_reference": { "description": "The original value of the reference when creating the payment.", "nullable": true, "type": "string" }, "original_start_date": { "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`.", "format": "date", "nullable": true, "type": "string" }, "payment_id": { "description": "The `payment_id` for the payment being updated", "type": "string" }, "timestamp": { "description": "The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "transaction_id": { "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, "type": "string" }, "webhook_code": { "description": "`PAYMENT_STATUS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`PAYMENT_INITIATION`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "payment_id", "new_payment_status", "old_payment_status", "original_reference", "original_start_date", "adjusted_start_date", "timestamp", "environment" ], "title": "PaymentStatusUpdateWebhook", "type": "object", "x-examples": { "example-1": { "adjusted_reference": "Account Funding 99", "adjusted_start_date": "2017-09-15", "environment": "production", "new_payment_status": "PAYMENT_STATUS_INITIATED", "old_payment_status": "PAYMENT_STATUS_PROCESSING", "original_reference": "Account Funding 99744", "original_start_date": "2017-09-14", "payment_id": "payment-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2", "timestamp": "2017-09-14T14:42:19.350Z", "webhook_code": "PAYMENT_STATUS_UPDATE", "webhook_type": "PAYMENT_INITIATION" } } }, "PayrollAccount": { "description": "A payroll account.", "properties": { "payroll": { "description": "Standard payroll account", "type": "string" } }, "required": [ "payroll" ], "title": "PayrollAccount", "type": "string" }, "PayrollIncomeAccountData": { "additionalProperties": true, "description": "An object containing account level data.", "nullable": true, "properties": { "account_id": { "description": "ID of the payroll provider account.", "nullable": true, "type": "string" }, "pay_frequency": { "description": "The frequency at which an individual is paid.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "DAILY", "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY", "CONTRACT", "QUARTERLY", "SEMI_ANNUALLY", "ANNUALLY", "OTHER", null ] }, "rate_of_pay": { "$ref": "#/components/schemas/PayrollIncomeRateOfPay" } }, "required": [ "account_id", "rate_of_pay", "pay_frequency" ], "title": "PayrollIncomeAccountData", "type": "object" }, "PayrollIncomeObject": { "additionalProperties": true, "description": "An object representing payroll data.", "properties": { "account_id": { "description": "ID of the payroll provider account.", "nullable": true, "type": "string" }, "form1099s": { "description": "Array of tax form 1099s.", "items": { "$ref": "#/components/schemas/Credit1099" }, "type": "array" }, "pay_stubs": { "description": "Array of pay stubs for the user.", "items": { "$ref": "#/components/schemas/CreditPayStub" }, "type": "array" }, "w2s": { "description": "Array of tax form W-2s.", "items": { "$ref": "#/components/schemas/CreditW2" }, "type": "array" } }, "required": [ "account_id", "pay_stubs", "w2s", "form1099s" ], "title": "PayrollIncomeObject", "type": "object" }, "PayrollIncomeRateOfPay": { "additionalProperties": true, "description": "An object representing the rate at which an individual is paid.", "properties": { "pay_amount": { "description": "The amount at which an employee is paid.", "format": "double", "nullable": true, "type": "number" }, "pay_rate": { "description": "The rate at which an employee is paid.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "ANNUAL", "HOURLY", "CONTRACT", "WEEKLY", "BIWEEKLY", "MONTHLY", "SEMI_MONTHLY", "DAILY", "COMMISSION", "OTHER", null ] } }, "title": "PayrollIncomeRateOfPay", "type": "object" }, "PayrollItem": { "description": "An object containing information about the payroll item.", "properties": { "accounts": { "items": { "$ref": "#/components/schemas/PayrollIncomeAccountData" }, "type": "array" }, "institution_id": { "description": "The unique identifier of the institution associated with the Item.", "type": "string" }, "institution_name": { "description": "The name of the institution associated with the Item.", "type": "string" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "payroll_income": { "items": { "$ref": "#/components/schemas/PayrollIncomeObject" }, "type": "array" }, "status": { "$ref": "#/components/schemas/PayrollItemStatus" }, "updated_at": { "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.", "format": "date-time", "nullable": true, "type": "string" } }, "required": [ "item_id", "institution_id", "institution_name", "payroll_income", "status", "accounts", "updated_at" ], "title": "PayrollItem", "type": "object" }, "PayrollItemStatus": { "additionalProperties": true, "description": "Details about the status of the payroll item.", "nullable": true, "properties": { "processing_status": { "description": "Denotes the processing status for the verification.\n\n`UNKNOWN`: The processing status could not be determined.\n\n`PROCESSING_COMPLETE`: The processing has completed and the user has approved for sharing. The data is available to be retrieved.\n\n`PROCESSING`: The verification is still processing. The data is not available yet.\n\n`FAILED`: The processing failed to complete successfully.\n\n`APPROVAL_STATUS_PENDING`: The processing has completed but the user has not yet approved the sharing of the data.", "nullable": true, "title": "PayrollItemStatusProcessingStatus", "type": "string", "x-override-enum-values-shown": [ "UNKNOWN", "PROCESSING_COMPLETE", "PROCESSING", "FAILED", "APPROVAL_STATUS_PENDING" ] } }, "title": "PayrollItemStatus", "type": "object" }, "PayrollRiskSignalsItem": { "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.", "items": { "$ref": "#/components/schemas/DocumentRiskSignalsObject" }, "type": "array" } }, "required": [ "item_id", "verification_risk_signals" ], "title": "PayrollRiskSignalsItem", "type": "object" }, "Paystub": { "additionalProperties": true, "description": "An object representing data extracted from the end user's paystub.", "properties": { "deductions": { "$ref": "#/components/schemas/Deductions" }, "doc_id": { "description": "An identifier of the document referenced by the document metadata.", "type": "string" }, "earnings": { "$ref": "#/components/schemas/Earnings" }, "employee": { "$ref": "#/components/schemas/Employee" }, "employer": { "$ref": "#/components/schemas/PaystubEmployer" }, "employment_details": { "$ref": "#/components/schemas/EmploymentDetails" }, "income_breakdown": { "deprecated": true, "items": { "$ref": "#/components/schemas/IncomeBreakdown" }, "type": "array" }, "net_pay": { "$ref": "#/components/schemas/NetPay" }, "pay_period_details": { "$ref": "#/components/schemas/PayPeriodDetails" }, "paystub_details": { "$ref": "#/components/schemas/PaystubDetails" }, "ytd_earnings": { "$ref": "#/components/schemas/PaystubYTDDetails" } }, "required": [ "deductions", "doc_id", "earnings", "employee", "employer", "net_pay", "pay_period_details" ], "title": "Paystub", "type": "object" }, "PaystubAddress": { "additionalProperties": true, "description": "Address on the paystub", "properties": { "city": { "description": "The full city name.", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code.", "nullable": true, "type": "string" }, "line1": { "deprecated": true, "description": "Street address line 1.", "nullable": true, "type": "string" }, "line2": { "deprecated": true, "description": "Street address line 2.", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code of the address.", "nullable": true, "type": "string" }, "region": { "description": "The region or state\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "state_code": { "deprecated": true, "description": "The region or state\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address.", "nullable": true, "type": "string" } }, "title": "Address", "type": "object" }, "PaystubDeduction": { "additionalProperties": true, "description": "Deduction on the paystub", "properties": { "is_pretax": { "description": "`true` if the deduction is pre-tax; `false` otherwise.", "nullable": true, "type": "boolean" }, "total": { "description": "The amount of the deduction.", "format": "double", "nullable": true, "type": "number" }, "type": { "description": "The description of the deduction, as provided on the paystub. For example: `\"401(k)\"`, `\"FICA MED TAX\"`.", "nullable": true, "type": "string" } }, "required": [ "type", "is_pretax", "total" ], "title": "PaystubDeduction", "type": "object" }, "PaystubDetails": { "additionalProperties": true, "deprecated": true, "description": "An object representing details that can be found on the paystub.", "properties": { "pay_date": { "description": "Pay date on the paystub in the 'YYYY-MM-DD' format.", "format": "date", "nullable": true, "type": "string" }, "pay_frequency": { "$ref": "#/components/schemas/PaystubPayFrequency" }, "pay_period_end_date": { "description": "Ending date of the pay period on the paystub in the 'YYYY-MM-DD' format.", "format": "date", "nullable": true, "type": "string" }, "pay_period_start_date": { "description": "Beginning date of the pay period on the paystub in the 'YYYY-MM-DD' format.", "format": "date", "nullable": true, "type": "string" }, "paystub_provider": { "description": "The name of the payroll provider that generated the paystub, e.g. ADP", "nullable": true, "type": "string" } }, "title": "PaystubDetails", "type": "object" }, "PaystubEmployer": { "additionalProperties": true, "description": "Information about the employer on the paystub", "properties": { "address": { "$ref": "#/components/schemas/PaystubAddress" }, "name": { "description": "The name of the employer on the paystub.", "nullable": true, "type": "string" } }, "required": [ "name" ], "title": "Employer", "type": "object" }, "PaystubOverride": { "description": "An object representing data from a paystub.", "properties": { "deductions": { "$ref": "#/components/schemas/PaystubOverrideDeductions" }, "earnings": { "$ref": "#/components/schemas/PaystubOverrideEarnings" }, "employee": { "$ref": "#/components/schemas/PaystubOverrideEmployee" }, "employer": { "$ref": "#/components/schemas/PaystubOverrideEmployer" }, "income_breakdown": { "deprecated": true, "items": { "$ref": "#/components/schemas/IncomeBreakdown" }, "type": "array", "x-hidden-from-docs": true }, "net_pay": { "$ref": "#/components/schemas/PaystubOverrideNetPay" }, "pay_period_details": { "$ref": "#/components/schemas/PaystubOverridePayPeriodDetails" } }, "title": "PaystubOverride", "type": "object" }, "PaystubOverrideDeductions": { "additionalProperties": true, "description": "An object with the deduction information found on a paystub.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/PaystubOverrideDeductionsBreakdown" }, "type": "array" }, "total": { "$ref": "#/components/schemas/PaystubOverrideDeductionsTotal" } }, "title": "PaystubOverrideDeductions", "type": "object" }, "PaystubOverrideDeductionsBreakdown": { "additionalProperties": true, "description": "An object representing the deduction line items for the pay period", "properties": { "currency": { "description": "The ISO-4217 currency code of the line item.", "nullable": true, "type": "string" }, "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the deduction line item", "nullable": true, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the deduction", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubOverrideDeductionsBreakdown", "type": "object" }, "PaystubOverrideDeductionsTotal": { "additionalProperties": true, "description": "An object representing the total deductions for the pay period", "properties": { "currency": { "description": "The ISO-4217 currency code of the line item.", "nullable": true, "type": "string" }, "current_amount": { "description": "Raw amount of the deduction", "format": "double", "nullable": true, "type": "number" }, "ytd_amount": { "description": "The year-to-date total amount of the deductions", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubOverrideDeductionsTotal", "type": "object" }, "PaystubOverrideDistributionBreakdown": { "additionalProperties": true, "description": "Information about the accounts that the payment was distributed to.", "properties": { "account_name": { "description": "Name of the account for the given distribution.", "nullable": true, "type": "string" }, "bank_name": { "description": "The name of the bank that the payment is being deposited to.", "nullable": true, "type": "string" }, "currency": { "description": "The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "current_amount": { "description": "The amount distributed to this account.", "format": "double", "nullable": true, "type": "number" }, "mask": { "description": "The last 2-4 alphanumeric characters of an account's official account number.", "nullable": true, "type": "string" }, "type": { "description": "Type of the account that the paystub was sent to (e.g. 'checking').", "nullable": true, "type": "string" } }, "title": "DistributionBreakdown", "type": "object" }, "PaystubOverrideEarnings": { "additionalProperties": true, "description": "An object representing both a breakdown of earnings on a paystub and the total earnings.", "properties": { "breakdown": { "items": { "$ref": "#/components/schemas/PaystubOverrideEarningsBreakdown" }, "type": "array" }, "total": { "$ref": "#/components/schemas/PaystubOverrideEarningsTotal" } }, "title": "PaystubOverrideEarnings", "type": "object" }, "PaystubOverrideEarningsBreakdown": { "additionalProperties": true, "description": "An object representing the earnings line items for the pay period.", "properties": { "canonical_description": { "$ref": "#/components/schemas/EarningsBreakdownCanonicalDescription" }, "currency": { "description": "The ISO-4217 currency code of the line item.", "nullable": true, "type": "string" }, "current_amount": { "description": "Raw amount of the earning line item.", "format": "double", "nullable": true, "type": "number" }, "description": { "description": "Description of the earning line item.", "nullable": true, "type": "string" }, "hours": { "description": "Number of hours applicable for this earning.", "nullable": true, "type": "number" }, "rate": { "description": "Hourly rate applicable for this earning.", "format": "double", "nullable": true, "type": "number" }, "ytd_amount": { "description": "The year-to-date amount of the deduction.", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubOverrideEarningsBreakdown", "type": "object" }, "PaystubOverrideEarningsTotal": { "additionalProperties": true, "description": "An object representing both the current pay period and year to date amount for an earning category.", "properties": { "currency": { "description": "The ISO-4217 currency code of the line item", "nullable": true, "type": "string" }, "hours": { "description": "Total number of hours worked for this pay period", "nullable": true, "type": "number" }, "ytd_amount": { "description": "The year-to-date amount for the total earnings", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubOverrideEarningsTotal", "type": "object" }, "PaystubOverrideEmployee": { "description": "The employee on the paystub.", "properties": { "address": { "$ref": "#/components/schemas/PaystubOverrideEmployeeAddress" }, "marital_status": { "description": "Marital status of the employee - either `single` or `married`.", "nullable": true, "type": "string", "x-override-enum-values-shown": [ "single", "married" ] }, "name": { "description": "The name of the employee.", "type": "string" }, "taxpayer_id": { "$ref": "#/components/schemas/PaystubOverrideTaxpayerID" } }, "type": "object" }, "PaystubOverrideEmployeeAddress": { "description": "The address of the employee.", "properties": { "city": { "description": "The full city name.", "type": "string" }, "country": { "description": "The country of the address.", "type": "string" }, "postal_code": { "description": "5 digit postal code.", "type": "string" }, "region": { "description": "The region or state\nExample: `\"NC\"`", "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "type": "object" }, "PaystubOverrideEmployer": { "description": "The employer on the paystub.", "properties": { "address": { "$ref": "#/components/schemas/PaystubOverrideEmployerAddress" }, "name": { "description": "The name of the employer.", "nullable": true, "type": "string" } }, "type": "object" }, "PaystubOverrideEmployerAddress": { "description": "The address of the employer.", "properties": { "city": { "description": "The full city name.", "type": "string" }, "country": { "description": "The country of the address.", "type": "string" }, "postal_code": { "description": "5 digit postal code.", "type": "string" }, "region": { "description": "The region or state\nExample: `\"NC\"`", "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "type": "object" }, "PaystubOverrideNetPay": { "additionalProperties": true, "description": "An object representing information about the net pay amount on the paystub.", "properties": { "currency": { "description": "The ISO-4217 currency code of the net pay.", "nullable": true, "type": "string" }, "description": { "description": "Description of the net pay", "nullable": true, "type": "string" }, "ytd_amount": { "description": "The year-to-date amount of the net pay", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubOverrideNetPay", "type": "object" }, "PaystubOverridePayPeriodDetails": { "additionalProperties": true, "description": "Details about the pay period.", "properties": { "check_amount": { "description": "The amount of the paycheck.", "format": "double", "nullable": true, "type": "number" }, "distribution_breakdown": { "items": { "$ref": "#/components/schemas/PaystubOverrideDistributionBreakdown" }, "type": "array" }, "end_date": { "description": "The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".", "format": "date", "nullable": true, "type": "string" }, "gross_earnings": { "description": "Total earnings before tax/deductions.", "format": "double", "nullable": true, "type": "number" }, "pay_date": { "description": "The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "pay_day": { "deprecated": true, "description": "The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "nullable": true, "type": "string" }, "pay_frequency": { "$ref": "#/components/schemas/PayPeriodDetailsPayFrequency" }, "start_date": { "description": "The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: \"yyyy-mm-dd\".", "format": "date", "nullable": true, "type": "string" } }, "title": "PaystubOverridePayPeriodDetails", "type": "object" }, "PaystubOverrideTaxpayerID": { "additionalProperties": true, "description": "Taxpayer ID of the individual receiving the paystub.", "properties": { "id_mask": { "description": "ID mask; i.e. last 4 digits of the taxpayer ID", "nullable": true, "type": "string" }, "id_type": { "description": "Type of ID, e.g. 'SSN'", "nullable": true, "type": "string" } }, "title": "PaystubOverrideTaxpayerID", "type": "object" }, "PaystubPayFrequency": { "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, "type": "string" }, "PaystubYTDDetails": { "additionalProperties": true, "deprecated": true, "description": "The amount of income earned year to date, as based on paystub data.", "properties": { "gross_earnings": { "description": "Year-to-date gross earnings.", "format": "double", "nullable": true, "type": "number" }, "net_earnings": { "description": "Year-to-date net (take home) earnings.", "format": "double", "nullable": true, "type": "number" } }, "title": "PaystubYTDDetails", "type": "object" }, "PendingDisconnectWebhook": { "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": { "disconnect_time": { "description": "The date and time at which the Item is scheduled to disconnect, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "reason": { "$ref": "#/components/schemas/PendingDisconnectWebhookReason" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`PENDING_DISCONNECT`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "reason", "disconnect_time", "environment" ], "title": "PendingDisconnectWebhook", "type": "object", "x-examples": { "example-1": { "disconnect_time": "2020-01-15T13:25:17.766Z", "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "reason": "INSTITUTION_MIGRATION", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "PENDING_DISCONNECT", "webhook_type": "ITEM" } } }, "PendingDisconnectWebhookReason": { "description": "Reason why the Item is about to be disconnected.\n`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.\n`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" ], "type": "string" }, "PendingExpirationWebhook": { "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": { "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.", "format": "date-time", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`PENDING_EXPIRATION`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "consent_expiration_time", "environment" ], "title": "PendingExpirationWebhook", "type": "object", "x-examples": { "example-1": { "consent_expiration_time": "2020-01-15T13:25:17.766Z", "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "PENDING_EXPIRATION", "webhook_type": "ITEM" } } }, "PersonalFinanceCategory": { "additionalProperties": true, "description": "Information describing the intent of the transaction. Most relevant for personal finance use cases, but not limited to such use cases.\n\nSee 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/).", "nullable": true, "properties": { "confidence_level": { "description": "A description of how confident we are that the provided categories accurately describe the transaction intent.\n\n`VERY_HIGH`: We are more than 98% confident that this category reflects the intent of the transaction.\n`HIGH`: We are more than 90% confident that this category reflects the intent of the transaction.\n`MEDIUM`: We are moderately confident that this category reflects the intent of the transaction.\n`LOW`: This category may reflect the intent, but there may be other categories that are more accurate.\n`UNKNOWN`: We don't know the confidence level for this category.", "nullable": true, "type": "string" }, "detailed": { "description": "A granular category conveying the transaction's intent. This field can also be used as a unique identifier for the category.", "type": "string" }, "primary": { "description": "A high level category that communicates the broad category of the transaction.", "type": "string" }, "version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" } }, "required": [ "primary", "detailed" ], "title": "PersonalFinanceCategory", "type": "object" }, "PersonalFinanceCategoryVersion": { "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).\n\nIf you enabled Transactions or Enrich before December 2025 you will receive the `v1` taxonomy by default and may request `v2` by explicitly setting this field to `v2` in the request.\n\nIf you enabled Transactions or Enrich on or after December 2025, you may only receive the `v2` taxonomy.\n", "enum": [ "v1", "v2" ], "title": "PersonalFinanceCategoryVersion", "type": "string" }, "PfcDetailedCategory": { "description": "A personal finance detailed category.\nSee the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv) for a full list of personal finance categories.\n", "title": "PfcDetailedCategory", "type": "string" }, "PfcPrimaryCategory": { "description": "A personal finance primary category.\nSee the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv) for a full list of personal finance categories.\n", "title": "PfcPrimaryCategory", "type": "string" }, "PhoneNumber": { "additionalProperties": true, "description": "A phone number", "properties": { "data": { "description": "The phone number.", "type": "string" }, "primary": { "description": "When `true`, identifies the phone number as the primary number on an account.", "type": "boolean" }, "type": { "description": "The type of phone number.", "enum": [ "home", "work", "office", "mobile", "mobile1", "other" ], "type": "string" } }, "required": [ "data", "primary", "type" ], "title": "PhoneNumber", "type": "object" }, "PhoneNumberMatchScore": { "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.", "nullable": true, "properties": { "score": { "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.", "nullable": true, "type": "integer" } }, "title": "PhoneNumberMatchScore", "type": "object" }, "PhoneType": { "description": "An enum indicating whether a phone number is a phone line or a fax line.", "enum": [ "phone", "fax" ], "type": "string" }, "PhysicalDocumentCategory": { "description": "The type of identity document detected in the images provided. Will always be one of the following values:\n\n `drivers_license` - A driver's license issued by the associated country, establishing identity without any guarantee as to citizenship, and granting driving privileges\n\n `id_card` - A general national identification card, distinct from driver's licenses as it only establishes identity\n\n `passport` - A travel passport issued by the associated country for one of its citizens\n\n `residence_permit_card` - An identity document issued by the associated country permitting a foreign citizen to temporarily reside there\n\n `resident_card` - An identity document issued by the associated country permitting a foreign citizen to permanently reside there\n\n `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\n\nNote: 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", "type": "string" }, "PhysicalDocumentExtractedData": { "additionalProperties": true, "description": "Data extracted from a user-submitted document.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/IdentityVerificationDocumentAddressResponse" }, "category": { "$ref": "#/components/schemas/PhysicalDocumentCategory" }, "date_of_birth": { "$ref": "#/components/schemas/IdentityVerificationDocumentISO8601DateOfBirth" }, "expiration_date": { "$ref": "#/components/schemas/IdentityVerificationDocumentISO8601ExpirationDate" }, "id_number": { "$ref": "#/components/schemas/PhysicalDocumentIDNumber" }, "issue_date": { "$ref": "#/components/schemas/IdentityVerificationDocumentISO8601IssueDate" }, "issuing_country": { "$ref": "#/components/schemas/GenericCountryCode" }, "issuing_region": { "$ref": "#/components/schemas/Region" }, "name": { "$ref": "#/components/schemas/IdentityVerificationDocumentNameResponse" } }, "required": [ "id_number", "category", "expiration_date", "issue_date", "issuing_country", "issuing_region", "date_of_birth", "address" ], "type": "object" }, "PhysicalDocumentExtractedDataAnalysis": { "additionalProperties": true, "description": "Analysis of the data extracted from the submitted document.", "nullable": true, "properties": { "date_of_birth": { "$ref": "#/components/schemas/DocumentDateOfBirthMatchCode" }, "expiration_date": { "$ref": "#/components/schemas/ExpirationDate" }, "issuing_country": { "$ref": "#/components/schemas/IssuingCountry" }, "name": { "$ref": "#/components/schemas/DocumentNameMatchCode" } }, "required": [ "name", "date_of_birth", "expiration_date", "issuing_country" ], "type": "object" }, "PhysicalDocumentIDNumber": { "description": "Alpha-numeric ID number extracted via OCR from the user's document image.", "example": "AB123456", "nullable": true, "type": "string" }, "PhysicalDocumentImages": { "additionalProperties": true, "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": { "cropped_back": { "$ref": "#/components/schemas/DocumentImage__CroppedBack" }, "cropped_front": { "$ref": "#/components/schemas/DocumentImage__CroppedFront" }, "face": { "$ref": "#/components/schemas/DocumentImage__Face" }, "original_back": { "$ref": "#/components/schemas/DocumentImage__Back" }, "original_front": { "$ref": "#/components/schemas/DocumentImage__Front" } }, "required": [ "original_front", "original_back", "cropped_front", "cropped_back", "face" ], "type": "object" }, "PlaidError": { "additionalProperties": true, "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.", "nullable": true, "properties": { "causes": { "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.\n\n`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": {}, "type": "array" }, "display_message": { "description": "A user-friendly representation of the error code. `null` if the error is not related to user action.\n\nThis may change over time and is not safe for programmatic use.", "nullable": true, "type": "string" }, "documentation_url": { "description": "The URL of a Plaid documentation page with more information about the error", "type": "string" }, "error_code": { "description": "The particular error code. Safe for programmatic use.", "type": "string" }, "error_code_reason": { "description": "The specific reason for the error code. Currently, reasons are only supported OAuth-based item errors; `null` will be returned otherwise. Safe for programmatic use.\n\nPossible values:\n`OAUTH_INVALID_TOKEN`: The user's OAuth connection to this institution has been invalidated.\n\n`OAUTH_CONSENT_EXPIRED`: The user's access consent for this OAuth connection to this institution has expired.\n\n`OAUTH_USER_REVOKED`: The user's OAuth connection to this institution is invalid because the user revoked their connection.", "nullable": true, "type": "string" }, "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" }, "error_type": { "$ref": "#/components/schemas/PlaidErrorType" }, "provided_account_subtypes": { "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.\n", "items": { "type": "string" }, "type": "array" }, "request_id": { "description": "A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.", "type": "string" }, "required_account_subtypes": { "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.\n", "items": { "type": "string" }, "type": "array" }, "status": { "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, "type": "integer" }, "suggested_action": { "description": "Suggested steps for resolving the error", "nullable": true, "type": "string" } }, "required": [ "error_type", "error_code", "error_message", "display_message" ], "title": "Error", "type": "object" }, "PlaidErrorType": { "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" ], "title": "PlaidErrorType", "type": "string" }, "PlaidLendScoreVersion": { "description": "The version of the LendScore to use. Required if using LendScore.", "enum": [ "v1.0", "v2.0", "LS1" ], "nullable": true, "type": "string", "x-override-enum-values-shown": [ "LS1" ] }, "PlaidUserID": { "description": "Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`.", "example": "usr_dddAs9ewdcDQQQ", "title": "PlaidUserID", "type": "string" }, "PlaidUserIDNullable": { "description": "Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be provided. The `user_id` may only be used instead of the `client_user_id` if you were not a pre-existing user of `/user/create` as of December 10, 2025; for more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis). If both this field and a `client_user_id` are present in a request, the `user_id` must have been created from the provided `client_user_id`.", "example": "usr_dddAs9ewdcDQQQ", "nullable": true, "title": "PlaidUserID", "type": "string" }, "PlatformIds": { "additionalProperties": true, "description": "An object containing a set of ids related to an employee", "properties": { "employee_id": { "description": "The ID of an employee as given by their employer", "nullable": true, "type": "string" }, "payroll_id": { "description": "The ID of an employee as given by their payroll", "nullable": true, "type": "string" }, "position_id": { "description": "The ID of the position of the employee", "nullable": true, "type": "string" } }, "title": "PlatformIds", "type": "object" }, "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.", "example": "46001", "nullable": true, "title": "PostalCode", "type": "string" }, "PreviousIdentityVerificationAttemptID": { "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.", "example": "idv_42cF1MNo42r9Xj", "nullable": true, "type": "string" }, "PrismCashScore": { "additionalProperties": true, "description": "The data from the CashScore\u00ae product returned by Prism Data.", "nullable": true, "properties": { "error_reason": { "$ref": "#/components/schemas/PrismErrorReason" }, "metadata": { "$ref": "#/components/schemas/PrismCashScoreMetadata" }, "model_version": { "description": "The version of Prism Data's cash score model used.", "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the cash score.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk.", "nullable": true, "type": "integer" }, "version": { "deprecated": true, "description": "The version of Prism Data's cash score model used. This field is deprecated in favor of `model_version`.", "type": "integer" } }, "required": [ "version", "score" ], "type": "object" }, "PrismCashScoreMetadata": { "additionalProperties": true, "description": "An object containing metadata about the provided transactions.", "properties": { "l1m_credit_value_cnt": { "description": "Number of credit transactions in the last 30 days.", "nullable": true, "type": "integer" }, "l1m_debit_value_cnt": { "description": "Number of debit transactions in the last 30 days.", "nullable": true, "type": "integer" }, "max_age": { "description": "Number of days since the oldest transaction.", "nullable": true, "type": "integer" }, "max_age_credit": { "description": "Number of days since the oldest credit transaction.", "nullable": true, "type": "integer" }, "max_age_debit": { "description": "Number of days since the oldest debit transaction.", "nullable": true, "type": "integer" }, "min_age": { "description": "Number of days since the latest transaction.", "nullable": true, "type": "integer" }, "min_age_credit": { "description": "Number of days since the latest credit transaction.", "nullable": true, "type": "integer" }, "min_age_debit": { "description": "Number of days since the latest debit transaction.", "nullable": true, "type": "integer" }, "num_trxn_credit": { "description": "Number of credit transactions.", "nullable": true, "type": "integer" }, "num_trxn_debit": { "description": "Number of debit transactions.", "nullable": true, "type": "integer" } }, "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" ], "type": "object" }, "PrismCashScoreVersion": { "description": "The version of Prism CashScore. If not specified, will default to v3.", "enum": [ 4.1, 4, "3_lite", 3, null ], "nullable": true, "type": "string", "x-override-enum-values-shown": [ 4.1, 4, 3, null ] }, "PrismDetect": { "additionalProperties": true, "description": "The data from the CashScore\u00ae Detect product returned by Prism Data.", "nullable": true, "properties": { "error_reason": { "$ref": "#/components/schemas/PrismErrorReason" }, "metadata": { "$ref": "#/components/schemas/PrismCashScoreMetadata" }, "model_version": { "description": "The version of Prism Data's CashScore\u00ae Detect model used.", "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the CashScore\u00ae Detect score.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk.", "nullable": true, "type": "integer" } }, "required": [ "model_version", "score" ], "type": "object" }, "PrismDetectVersion": { "description": "The version of Prism Detect", "enum": [ 4.1, 4, null ], "nullable": true, "type": "string" }, "PrismErrorReason": { "description": "The error returned by Prism for this product.", "type": "string" }, "PrismExtend": { "additionalProperties": true, "description": "The data from the CashScore\u00ae Extend product returned by Prism Data.", "nullable": true, "properties": { "error_reason": { "$ref": "#/components/schemas/PrismErrorReason" }, "metadata": { "$ref": "#/components/schemas/PrismCashScoreMetadata" }, "model_version": { "description": "The version of Prism Data's CashScore\u00ae Extend model used.", "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the CashScore\u00ae Extend score.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk.", "nullable": true, "type": "integer" } }, "required": [ "model_version", "score" ], "type": "object" }, "PrismExtendVersion": { "description": "The version of Prism Extend", "enum": [ 4.1, 4, null ], "nullable": true, "type": "string" }, "PrismFirstDetect": { "additionalProperties": true, "description": "The data from the FirstDetect product returned by Prism Data.", "nullable": true, "properties": { "error_reason": { "$ref": "#/components/schemas/PrismErrorReason" }, "metadata": { "$ref": "#/components/schemas/PrismCashScoreMetadata" }, "model_version": { "description": "The version of Prism Data's FirstDetect model used.", "type": "string" }, "reason_codes": { "description": "The reasons for an individual having risk according to the FirstDetect score.", "items": { "type": "string" }, "type": "array" }, "score": { "description": "The score returned by Prism Data. Ranges from 1-999, with higher score indicating lower risk.", "nullable": true, "type": "integer" }, "version": { "deprecated": true, "description": "The version of Prism Data's FirstDetect model used. This field is deprecated in favor of `model_version`.", "type": "integer" } }, "required": [ "version", "score" ], "type": "object" }, "PrismFirstDetectVersion": { "description": "The version of Prism FirstDetect. If not specified, will default to v3.", "enum": [ 3, null ], "nullable": true, "type": "string" }, "PrismInsights": { "additionalProperties": true, "description": "The data from the Insights product returned by Prism Data.", "nullable": true, "properties": { "error_reason": { "$ref": "#/components/schemas/PrismErrorReason" }, "model_version": { "description": "The version of Prism Data's insights model used.", "type": "string" }, "result": { "$ref": "#/components/schemas/PrismInsightsResult" }, "version": { "deprecated": true, "description": "The version of Prism Data's insights model used. This field is deprecated in favor of `model_version`.", "type": "integer" } }, "required": [ "version" ], "type": "object" }, "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.", "title": "PrismInsightsResult", "type": "object" }, "PrismInsightsVersion": { "description": "The version of Prism Insights. If not specified, will default to v3.", "enum": [ 4.1, 4, 3, null ], "nullable": true, "type": "string" }, "PrismVersions": { "description": "The versions of Prism products to evaluate", "nullable": true, "properties": { "cashscore": { "$ref": "#/components/schemas/PrismCashScoreVersion" }, "detect": { "$ref": "#/components/schemas/PrismDetectVersion" }, "extend": { "$ref": "#/components/schemas/PrismExtendVersion" }, "firstdetect": { "$ref": "#/components/schemas/PrismFirstDetectVersion" }, "insights": { "$ref": "#/components/schemas/PrismInsightsVersion" } }, "title": "PrismVersions", "type": "object" }, "PrismVersionsDeprecated": { "deprecated": true, "description": "Deprecated, use `partner_insights.prism_versions` instead.", "nullable": true, "properties": { "cashscore": { "$ref": "#/components/schemas/PrismCashScoreVersion" }, "detect": { "$ref": "#/components/schemas/PrismDetectVersion" }, "extend": { "$ref": "#/components/schemas/PrismExtendVersion" }, "firstdetect": { "$ref": "#/components/schemas/PrismFirstDetectVersion" }, "insights": { "$ref": "#/components/schemas/PrismInsightsVersion" } }, "title": "PrismVersions", "type": "object" }, "ProcessorAccountGetRequest": { "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" ], "type": "object" }, "ProcessorAccountGetResponse": { "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" ], "type": "object" }, "ProcessorApexProcessorTokenCreateRequest": { "description": "ProcessorApexProcessorTokenCreateRequest defines the request schema for `/processor/apex/processor_token/create`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "description": "The `account_id` value obtained from the `onSuccess` callback in Link", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "account_id" ], "type": "object" }, "ProcessorAuthGetRequest": { "description": "ProcessorAuthGetRequest defines the request schema for `/processor/auth/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorAuthGetResponse": { "additionalProperties": true, "description": "ProcessorAuthGetResponse defines the response schema for `/processor/auth/get`", "properties": { "account": { "$ref": "#/components/schemas/AccountBase" }, "numbers": { "$ref": "#/components/schemas/ProcessorNumber" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "numbers", "account" ], "type": "object" }, "ProcessorBalanceGetRequest": { "description": "ProcessorBalanceGetRequest defines the request schema for `/processor/balance/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/ProcessorBalanceGetRequestOptions" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorBalanceGetRequestOptions": { "description": "Optional parameters to `/processor/balance/get`.", "properties": { "min_last_updated_datetime": { "$ref": "#/components/schemas/MinLastUpdatedDatetime" } }, "type": "object" }, "ProcessorBalanceGetResponse": { "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" ], "type": "object" }, "ProcessorBankTransferCreateRequest": { "description": "Defines the request schema for `/processor/bank_transfer/create`", "properties": { "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/BankTransferAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "custom_tag": { "description": "An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.", "maxLength": 100, "nullable": true, "type": "string" }, "description": { "description": "The transfer description. Maximum of 10 characters.", "maxLength": 10, "type": "string" }, "idempotency_key": { "$ref": "#/components/schemas/BankTransferIdempotencyKey" }, "iso_currency_code": { "description": "The currency of the transfer amount - should be set to \"USD\".", "type": "string" }, "metadata": { "$ref": "#/components/schemas/BankTransferMetadata" }, "network": { "$ref": "#/components/schemas/BankTransferNetwork" }, "origination_account_id": { "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.", "nullable": true, "type": "string" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "type": { "$ref": "#/components/schemas/BankTransferType" }, "user": { "$ref": "#/components/schemas/BankTransferUser" } }, "required": [ "idempotency_key", "processor_token", "type", "network", "amount", "iso_currency_code", "description", "user" ], "title": "ProcessorBankTransferCreateRequest", "type": "object" }, "ProcessorBankTransferCreateResponse": { "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" ], "title": "ProcessorBankTransferCreateResponse", "type": "object" }, "ProcessorDefaultUpdateWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day.\n\nThis 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.\n", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "new_transactions": { "description": "The number of new transactions detected since the last time this webhook was fired.", "title": "DefaultUpdateWebhook", "type": "number" }, "webhook_code": { "description": "`DEFAULT_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "account_id", "environment" ], "title": "ProcessorDefaultUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "new_transactions": 3, "webhook_code": "DEFAULT_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "ProcessorHistoricalUpdateWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired 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.\n\nThis 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.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "new_transactions": { "description": "The number of new transactions available", "type": "number" }, "webhook_code": { "description": "`HISTORICAL_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "account_id", "environment" ], "title": "ProcessorHistoricalUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "new_transactions": 231, "webhook_code": "HISTORICAL_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "ProcessorIdentityGetRequest": { "description": "ProcessorIdentityGetRequest defines the request schema for `/processor/identity/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorIdentityGetResponse": { "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" ], "type": "object" }, "ProcessorIdentityMatchRequest": { "description": "ProcessorIdentityMatchRequest defines the request schema for `/processor/identity/match`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/IdentityMatchUser" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorIdentityMatchResponse": { "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" ], "type": "object" }, "ProcessorInitialUpdateWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired 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.\n\nThis 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.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "description": "The error code associated with the webhook.", "nullable": true, "type": "string" }, "new_transactions": { "description": "The number of new transactions available.", "type": "number" }, "webhook_code": { "description": "`INITIAL_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "new_transactions", "account_id", "environment" ], "title": "ProcessorInitialUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "new_transactions": 19, "webhook_code": "INITIAL_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "ProcessorInvestmentsAuthGetRequest": { "description": "ProcessorInvestmentsAuthGetRequest defines the request schema for `/processor/investments/auth/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorInvestmentsAuthGetResponse": { "additionalProperties": true, "description": "ProcessorInvestmentsAuthGetResponse defines the response schema for `/processor/investments/auth/get`", "properties": { "account": { "$ref": "#/components/schemas/AccountBase" }, "account_details_401k": { "description": "Additional information for accounts of 401k subtype.", "items": { "$ref": "#/components/schemas/InvestmentsAuthAccountDetails401k" }, "type": "array", "x-hidden-from-docs": true }, "data_sources": { "$ref": "#/components/schemas/InvestmentsAuthDataSources" }, "holdings": { "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" }, "type": "array" }, "is_investments_fallback_item": { "description": "When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow.", "type": "boolean" }, "numbers": { "$ref": "#/components/schemas/InvestmentsAuthGetNumbers" }, "owners": { "description": "Information about the account owners for the account.", "items": { "$ref": "#/components/schemas/InvestmentsAuthOwner" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "Objects describing the securities held in the account.", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" } }, "required": [ "account", "holdings", "securities", "numbers", "owners", "data_sources", "request_id" ], "type": "object" }, "ProcessorInvestmentsHoldingsGetRequest": { "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" ], "type": "object" }, "ProcessorInvestmentsHoldingsGetResponse": { "additionalProperties": true, "description": "ProcessorInvestmentsHoldingsGetResponse defines the response schema for `/processor/investments/holdings/get`", "properties": { "account": { "$ref": "#/components/schemas/InvestmentAccount" }, "holdings": { "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" }, "type": "array" }, "is_investments_fallback_item": { "description": "When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "Objects describing the securities held in the account.", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" } }, "required": [ "account", "holdings", "securities" ], "type": "object" }, "ProcessorInvestmentsTransactionsGetRequest": { "description": "ProcessorInvestmentsTransactionsGetRequest defines the request schema for `/processor/investments/transactions/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_date": { "description": "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "options": { "$ref": "#/components/schemas/InvestmentsTransactionsGetRequestOptions" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "required": [ "processor_token", "start_date", "end_date" ], "type": "object" }, "ProcessorInvestmentsTransactionsGetResponse": { "additionalProperties": true, "description": "ProcessorInvestmentsTransactionsGetRequest defines the response schema for `/processor/investments/transactions/get`", "properties": { "account": { "$ref": "#/components/schemas/InvestmentAccount" }, "investment_transactions": { "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" }, "type": "array" }, "is_investments_fallback_item": { "description": "When true, this field indicates that the Item's portfolio was manually created with the Investments Fallback flow.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "securities": { "description": "All securities for which there is a corresponding transaction being fetched.", "items": { "$ref": "#/components/schemas/Security" }, "type": "array" }, "total_investment_transactions": { "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.", "type": "integer" } }, "required": [ "account", "securities", "investment_transactions", "total_investment_transactions", "request_id" ], "type": "object" }, "ProcessorLiabilitiesGetRequest": { "description": "ProcessorLiabilitiesGetRequest defines the request schema for `/processor/liabilities/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorLiabilitiesGetResponse": { "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" ], "type": "object" }, "ProcessorNumber": { "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" }, "bacs": { "$ref": "#/components/schemas/NumbersBACSNullable" }, "eft": { "$ref": "#/components/schemas/NumbersEFTNullable" }, "international": { "$ref": "#/components/schemas/NumbersInternationalNullable" } }, "type": "object" }, "ProcessorRecurringTransactionsUpdateWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired 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.\n\nAfter receipt of this webhook, the updated data can be fetched from `/processor/transactions/recurring/get`.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`RECURRING_TRANSACTIONS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "environment" ], "title": "ProcessorRecurringTransactionsUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "webhook_code": "RECURRING_TRANSACTIONS_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "ProcessorSignalDecisionReportRequest": { "description": "ProcessorSignalDecisionReportRequest defines the request schema for `/processor/signal/decision/report`", "properties": { "amount_instantly_available": { "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).", "format": "double", "nullable": true, "type": "number" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "description": "Must be the same as the `client_transaction_id` supplied when calling `/processor/signal/evaluate`", "maxLength": 36, "minLength": 1, "type": "string" }, "days_funds_on_hold": { "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.\n\nFor 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, "type": "integer" }, "decision_outcome": { "$ref": "#/components/schemas/SignalDecisionOutcome" }, "initiated": { "description": "`true` if the ACH transaction was initiated, `false` otherwise.\n\nThis 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.", "type": "boolean" }, "payment_method": { "$ref": "#/components/schemas/SignalPaymentMethod" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token", "client_transaction_id", "initiated" ], "title": "ProcessorSignalDecisionReportRequest", "type": "object" }, "ProcessorSignalDecisionReportResponse": { "additionalProperties": true, "description": "ProcessorSignalDecisionReportResponse defines the response schema for `/processor/signal/decision/report`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "ProcessorSignalDecisionReportResponse", "type": "object" }, "ProcessorSignalEvaluateRequest": { "description": "ProcessorSignalEvaluateRequest defines the request schema for `/processor/signal/evaluate`", "properties": { "amount": { "description": "The transaction amount, in USD (e.g. `102.05`)", "format": "double", "type": "number" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "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.", "maxLength": 36, "minLength": 1, "type": "string" }, "client_user_id": { "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`.", "type": "string" }, "default_payment_method": { "description": "The default ACH or non-ACH payment method to complete the transaction.\n`SAME_DAY_ACH`: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day.\n`STANDARD_ACH`: Standard ACH by Nacha.\n`MULTIPLE_PAYMENT_METHODS`: If there is no default debit rail or there are multiple payment methods.\nPossible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS`", "nullable": true, "type": "string" }, "device": { "$ref": "#/components/schemas/SignalDevice" }, "is_recurring": { "description": "**true** if the ACH transaction is a recurring transaction; **false** otherwise.", "nullable": true, "type": "boolean" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "ruleset_key": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/SignalUser" }, "user_present": { "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, "type": "boolean" } }, "required": [ "processor_token", "client_transaction_id", "amount" ], "title": "ProcessorSignalEvaluateRequest", "type": "object" }, "ProcessorSignalEvaluateResponse": { "additionalProperties": true, "description": "ProcessorSignalEvaluateResponse defines the response schema for `/processor/signal/evaluate`", "properties": { "core_attributes": { "$ref": "#/components/schemas/SignalEvaluateCoreAttributes" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "ruleset": { "$ref": "#/components/schemas/Ruleset" }, "scores": { "$ref": "#/components/schemas/SignalScores" }, "warnings": { "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" }, "type": "array" } }, "required": [ "request_id", "scores" ], "title": "ProcessorSignalEvaluateResponse", "type": "object" }, "ProcessorSignalPrepareRequest": { "description": "ProcessorSignalPrepareRequest defines the request schema for `/processor/signal/prepare`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "title": "ProcessorSignalPrepareRequest", "type": "object" }, "ProcessorSignalPrepareResponse": { "additionalProperties": true, "description": "ProcessorSignalPrepareResponse defines the response schema for `/processor/signal/prepare`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "ProcessorSignalPrepareResponse", "type": "object" }, "ProcessorSignalReturnReportRequest": { "description": "ProcessorSignalReturnReportRequest defines the request schema for `/processor/signal/return/report`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "description": "Must be the same as the `client_transaction_id` supplied when calling `/processor/signal/evaluate`", "maxLength": 36, "minLength": 1, "type": "string" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "return_code": { "description": "Must be a valid ACH return code (e.g. \"R01\")\n\nIf formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error.", "type": "string" }, "returned_at": { "description": "Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`).", "format": "date-time", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token", "client_transaction_id", "return_code" ], "title": "ProcessorSignalReturnReportRequest", "type": "object" }, "ProcessorSignalReturnReportResponse": { "additionalProperties": true, "description": "ProcessorSignalReturnReportResponse defines the response schema for `/processor/signal/return/report`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "ProcessorSignalReturnReportResponse", "type": "object" }, "ProcessorStripeBankAccountTokenCreateRequest": { "description": "ProcessorStripeBankAccountTokenCreateRequest defines the request schema for `/processor/stripe/bank_account_token/create`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "description": "The `account_id` value obtained from the `onSuccess` callback in Link", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "account_id" ], "type": "object" }, "ProcessorStripeBankAccountTokenCreateResponse": { "additionalProperties": true, "description": "ProcessorStripeBankAccountTokenCreateResponse defines the response schema for `/processor/stripe/bank_account_token/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "stripe_bank_account_token": { "description": "A token that can be sent to Stripe for use in making API calls to Plaid", "type": "string" } }, "required": [ "stripe_bank_account_token", "request_id" ], "type": "object" }, "ProcessorSyncUpdatesAvailableWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired 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`.\n\nAfter receipt of this webhook, the new changes can be fetched for the Item from `/processor/transactions/sync`.\n\nNote that to receive this webhook for an Item, `/processor/transactions/sync` must have been called at least once on that Item. This means that, unlike the `INITIAL_UPDATE` and `HISTORICAL_UPDATE` webhooks, it will not fire immediately upon Item creation. If `/transactions/sync` is called on an Item that was *not* initialized with Transactions, the webhook will fire twice: once the first 30 days of transactions data has been fetched, and a second time when all available historical transactions data has been fetched.\n\nThis 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`.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "historical_update_complete": { "description": "Indicates if historical pull information is available.", "type": "boolean" }, "initial_update_complete": { "description": "Indicates if initial pull information is available.", "type": "boolean" }, "webhook_code": { "description": "`SYNC_UPDATES_AVAILABLE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "initial_update_complete", "historical_update_complete", "environment" ], "title": "ProcessorSyncUpdatesAvailableWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "historical_update_complete": false, "initial_update_complete": true, "webhook_code": "SYNC_UPDATES_AVAILABLE", "webhook_type": "TRANSACTIONS" } } }, "ProcessorToken": { "description": "The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor--`", "title": "ProcessorToken", "type": "string" }, "ProcessorTokenCreateRequest": { "description": "ProcessorTokenCreateRequest defines the request schema for `/processor/token/create`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "description": "The `account_id` value obtained from the `onSuccess` callback in Link", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor": { "description": "The processor you are integrating with.", "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" ], "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "account_id", "processor" ], "type": "object" }, "ProcessorTokenCreateResponse": { "additionalProperties": true, "description": "ProcessorTokenCreateResponse defines the response schema for `/processor/token/create` and `/processor/apex/processor_token/create`", "properties": { "processor_token": { "description": "The `processor_token` that can then be used by the Plaid partner to make API requests", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "processor_token", "request_id" ], "type": "object" }, "ProcessorTokenPermissionsGetRequest": { "description": "ProcessorTokenPermissionsGetRequest defines the request schema for `/processor/token/permissions/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorTokenPermissionsGetResponse": { "additionalProperties": true, "description": "ProcessorTokenPermissionsGetResponse defines the response schema for `/processor/token/permissions/get`", "properties": { "products": { "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" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "products" ], "type": "object" }, "ProcessorTokenPermissionsSetRequest": { "description": "ProcessorTokenPermissionsSetRequest defines the request schema for `/processor/token/permissions/set`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "products": { "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" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token", "products" ], "type": "object" }, "ProcessorTokenPermissionsSetResponse": { "additionalProperties": true, "description": "ProcessorTokenPermissionsSetResponse defines the response schema for `/processor/token/permissions/set`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ProcessorTokenWebhookUpdate": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired when a processor updates the webhook URL for a processor token via `/processor/token/webhook/update`.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "new_webhook_url": { "description": "The new webhook URL.", "type": "string" }, "webhook_code": { "description": "`WEBHOOK_UPDATE_ACKNOWLEDGED`", "type": "string" }, "webhook_type": { "description": "`PROCESSOR_TOKEN`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "account_id", "new_webhook_url", "environment" ], "title": "ProcessorTokenWebhookUpdate", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "new_webhook_url": "https://www.example.com", "webhook_code": "WEBHOOK_UPDATE_ACKNOWLEDGED", "webhook_type": "PROCESSOR_TOKEN" } } }, "ProcessorTokenWebhookUpdateRequest": { "description": "ProcessorTokenWebhookUpdateRequest defines the request schema for `/processor/token/webhook/update`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "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, "type": "string" } }, "required": [ "processor_token", "webhook" ], "type": "object" }, "ProcessorTokenWebhookUpdateResponse": { "additionalProperties": true, "description": "ProcessorTokenWebhookUpdateResponse defines the response schema for `/processor/token/webhook/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ProcessorTransactionsGetRequest": { "description": "ProcessorTransactionsGetRequest defines the request schema for `/processor/transactions/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_date": { "description": "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "options": { "$ref": "#/components/schemas/ProcessorTransactionsGetRequestOptions" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "required": [ "processor_token", "start_date", "end_date" ], "type": "object" }, "ProcessorTransactionsGetRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "count": { "default": 100, "description": "The number of transactions to fetch.", "exclusiveMinimum": false, "maximum": 500, "minimum": 1, "type": "integer" }, "include_logo_and_counterparty_beta": { "default": false, "deprecated": true, "description": "Counterparties and extra merchant fields are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "include_original_description": { "default": false, "description": "Include the raw unparsed transaction description from the financial institution.", "nullable": true, "type": "boolean" }, "include_personal_finance_category": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "include_personal_finance_category_beta": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "offset": { "default": 0, "description": "The number of transactions to skip. The default value is 0.", "minimum": 0, "type": "integer" } }, "type": "object" }, "ProcessorTransactionsGetResponse": { "additionalProperties": true, "description": "ProcessorTransactionsGetResponse defines the response schema for `/processor/transactions/get`", "properties": { "account": { "$ref": "#/components/schemas/AccountBase" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "total_transactions": { "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.", "type": "integer" }, "transactions": { "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" }, "type": "array" } }, "required": [ "account", "transactions", "total_transactions", "request_id" ], "type": "object" }, "ProcessorTransactionsRecurringGetRequest": { "description": "ProcessorTransactionsRecurringGetRequest defines the request schema for `/processor/transactions/recurring/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/TransactionsRecurringGetRequestOptions" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorTransactionsRecurringGetResponse": { "additionalProperties": true, "description": "ProcessorTransactionsRecurringGetResponse defines the response schema for `/processor/transactions/recurring/get`", "properties": { "inflow_streams": { "description": "An array of depository transaction streams.", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "outflow_streams": { "description": "An array of expense transaction streams.", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "updated_datetime": { "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", "format": "date-time", "type": "string" } }, "required": [ "inflow_streams", "outflow_streams", "updated_datetime", "request_id" ], "type": "object" }, "ProcessorTransactionsRefreshRequest": { "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" ], "type": "object" }, "ProcessorTransactionsRefreshResponse": { "additionalProperties": true, "description": "ProcessorTransactionsRefreshResponse defines the response schema for `/processor/transactions/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ProcessorTransactionsRemovedWebhook": { "additionalProperties": true, "description": "This webhook is only sent to [Plaid processor partners](https://plaid.com/docs/auth/partnerships/).\n\nFired 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.\n\nThis 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.", "properties": { "account_id": { "description": "The ID of the account.", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "removed_transactions": { "description": "An array of `transaction_ids` corresponding to the removed transactions", "items": { "type": "string" }, "type": "array" }, "webhook_code": { "description": "`TRANSACTIONS_REMOVED`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "removed_transactions", "account_id", "environment" ], "title": "ProcessorTransactionsRemovedWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK", "environment": "production", "error": null, "removed_transactions": [ "yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6", "kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no" ], "webhook_code": "TRANSACTIONS_REMOVED", "webhook_type": "TRANSACTIONS" } } }, "ProcessorTransactionsSyncRequest": { "description": "ProcessorTransactionsSyncRequest defines the request schema for `/processor/transactions/sync`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 100, "description": "The number of transaction updates to fetch.", "exclusiveMinimum": false, "maximum": 500, "minimum": 1, "type": "integer" }, "cursor": { "description": "The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update.\nIf omitted, the entire history of updates will be returned, starting with the first-added transactions on the Item.\nNote: The upper-bound length of this cursor is 256 characters of base64.", "type": "string" }, "options": { "$ref": "#/components/schemas/TransactionsSyncRequestOptions" }, "processor_token": { "$ref": "#/components/schemas/ProcessorToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "processor_token" ], "type": "object" }, "ProcessorTransactionsSyncResponse": { "additionalProperties": true, "description": "ProcessorTransactionsSyncResponse defines the response schema for `/processor/transactions/sync`", "properties": { "account": { "$ref": "#/components/schemas/AccountBaseNullable" }, "added": { "description": "Transactions that have been added to the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/Transaction" }, "type": "array" }, "has_more": { "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.", "type": "boolean" }, "modified": { "description": "Transactions that have been modified on the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/Transaction" }, "type": "array" }, "next_cursor": { "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.", "type": "string" }, "removed": { "description": "Transactions that have been removed from the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/RemovedTransaction" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "transactions_update_status": { "$ref": "#/components/schemas/TransactionsUpdateStatus" } }, "required": [ "account", "added", "modified", "removed", "next_cursor", "has_more", "request_id", "transactions_update_status" ], "type": "object" }, "ProductAccess": { "additionalProperties": true, "description": "The product access being requested. Used to or disallow product access across all accounts. If unset, defaults to all products allowed.", "properties": { "accounts_details_transactions": { "default": true, "description": "Allow access to `accounts_details_transactions`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "accounts_routing_number": { "default": true, "description": "Allow access to `accounts_routing_number`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "accounts_statements": { "default": true, "description": "Allow access to `accounts_statements`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "accounts_tax_statements": { "default": true, "description": "Allow access to `accounts_tax_statements`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "auth": { "default": true, "description": "Allow access to account number details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "customers_profiles": { "default": true, "description": "Allow access to `customers_profiles`. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "identity": { "default": true, "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`.", "nullable": true, "type": "boolean" }, "statements": { "default": true, "description": "Allow access to statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "transactions": { "default": true, "description": "Allow access to transaction details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.", "nullable": true, "type": "boolean" } }, "type": "object" }, "ProductPermissionsRequiredAuthWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`PRODUCT_PERMISSIONS_REQUIRED`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "environment" ], "title": "ProductPermissionsRequiredAuthWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "PRODUCT_PERMISSIONS_REQUIRED", "webhook_type": "AUTH" } } }, "ProductPermissionsRequiredIdentityWebhook": { "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": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`PRODUCT_PERMISSIONS_REQUIRED`", "type": "string" }, "webhook_type": { "description": "`IDENTITY`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "environment" ], "title": "ProductPermissionsRequiredIdentityWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "PRODUCT_PERMISSIONS_REQUIRED", "webhook_type": "IDENTITY" } } }, "ProductStatus": { "additionalProperties": 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.", "nullable": true, "properties": { "breakdown": { "$ref": "#/components/schemas/ProductStatusBreakdown" }, "last_status_change": { "description": "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) formatted timestamp of the last status change for the institution.\n", "format": "date-time", "type": "string" }, "status": { "deprecated": true, "description": "This field is deprecated in favor of the `breakdown` object, which provides more granular institution health data.\n\n`HEALTHY`: the majority of requests are successful\n`DEGRADED`: only some requests are successful\n`DOWN`: all requests are failing", "enum": [ "HEALTHY", "DEGRADED", "DOWN" ], "type": "string" } }, "required": [ "status", "last_status_change", "breakdown" ], "title": "ProductStatus", "type": "object" }, "ProductStatusBreakdown": { "additionalProperties": true, "description": "A detailed breakdown of the institution's performance for a request type. The values for `success`, `error_plaid`, and `error_institution` sum to 1. The time range used for calculating the breakdown may range from the most recent few minutes to the past six hours. In general, smaller institutions will show status that was calculated over a longer period of time. For Investment updates, which are refreshed less frequently, the period assessed may be 24 hours or more. For more details, see [Institution status details](https://plaid.com/docs/account/activity/#institution-status-details).", "properties": { "error_institution": { "description": "The percentage of logins that are failing due to an issue in the institution's system, expressed as a decimal.", "format": "double", "type": "number" }, "error_plaid": { "description": "The percentage of logins that are failing due to an internal Plaid issue, expressed as a decimal.\n", "format": "double", "type": "number" }, "refresh_interval": { "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.", "enum": [ "NORMAL", "DELAYED", "STOPPED" ], "type": "string" }, "success": { "description": "The percentage of login attempts that are successful, expressed as a decimal.", "format": "double", "type": "number" } }, "required": [ "success", "error_plaid", "error_institution" ], "title": "StatusBreakdown", "type": "object" }, "Products": { "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.", "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" ], "title": "Products", "type": "string" }, "ProductsTerminateReasonCode": { "description": "The reason for terminating products.\n\n`FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed fraud\n`FRAUD_FALSE_IDENTITY`: The end user created the connection using false identity information or stolen credentials\n`FRAUD_ABUSE`: The end user is abusing the client's service or platform through their connected account\n`FRAUD_OTHER`: Other fraud-related reasons involving the end user not covered by the specific fraud categories\n`FRAUD_TRANSACTION`: Fraud occurred at the transaction level, such as an unauthorized transaction, card testing, chargeback, ACH return, or dispute\n`CONSUMER_LOAN_PAID_OFF`: The end user paid off their loan and no longer needs the product\n`CONSUMER_ACCOUNT_CLOSED`: The end user closed their account with the client and no longer needs the product\n`CONSUMER_CHARGE_OFF`: The end user's account has been charged off\n`CONSUMER_PAYMENT_METHOD_SWITCHED`: The end user switched to a different payment method and no longer needs the product\n`USER_OFFBOARDING`: The user is offboarding from the service or platform\n`DUPLICATE_ITEM`: The connection is a duplicate of another existing connection for the same user\n`BILLING_TERMINATION`: The user's billing or subscription relationship has ended\n`OTHER`: Any other reason for terminating products not covered by the above categories\n", "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" ], "type": "string" }, "ProfileNetworkStatusGetRequest": { "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" ], "type": "object", "x-hidden-from-docs": true }, "ProfileNetworkStatusGetResponse": { "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" ], "type": "object", "x-hidden-from-docs": true }, "ProgramArchived": { "description": "Archived programs are read-only and cannot screen new customers nor participate in ongoing monitoring.", "example": false, "title": "Archived", "type": "boolean" }, "ProgramNameSensitivity": { "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.\n\n`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.\n\n`balanced` - A good default for most companies. This sensitivity is balanced to show high quality hits with reduced noise.\n\n`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.\n\n`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.", "enum": [ "coarse", "balanced", "strict", "exact" ], "example": "balanced", "title": "ProgramNameSensitivity", "type": "string" }, "ProjectedIncomeSummaryFieldNumber": { "allOf": [ { "$ref": "#/components/schemas/IncomeSummaryFieldNumber" }, { "additionalProperties": true, "description": "The employee's estimated annual salary, as derived from information reported on the paystub.", "type": "object" } ], "description": "The employee's estimated annual salary, as derived from information reported on the paystub." }, "ProtectAPIToken": { "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.", "title": "ProtectAPIToken", "type": "string" }, "ProtectAppVisitEvent": { "additionalProperties": true, "description": "This event type represents a user visiting the client application.", "nullable": true, "type": "object" }, "ProtectBankAccount": { "additionalProperties": true, "description": "Bank account information associated with the incident.", "nullable": true, "properties": { "account_id": { "description": "Plaid's unique identifier for the account.", "nullable": true, "type": "string" }, "account_number": { "description": "Full account number of the bank account.", "nullable": true, "type": "string" }, "routing_number": { "description": "Routing number of the bank account. Must be present if `account_number` is present.", "nullable": true, "type": "string" } }, "type": "object" }, "ProtectClientSessionStartData": { "description": "The initial data collected by the Protect SDK when a Protect client session is started.", "title": "ProtectClientSessionStartData", "type": "string" }, "ProtectComputeRequest": { "description": "Request object for /protect/compute", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "model": { "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`.", "maxLength": 128, "type": "string" }, "model_inputs": { "$ref": "#/components/schemas/ProtectModelInputs" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/ProtectUser" } }, "required": [ "model", "user" ], "type": "object" }, "ProtectComputeResponse": { "additionalProperties": true, "description": "Response object for /protect/compute", "properties": { "attributes": { "$ref": "#/components/schemas/FraudAttributes" }, "model": { "description": "The versioned name of the Trust Index model used for scoring.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "score": { "description": "The Trust Index score, on a 0-100 scale where higher values indicate lower risk.", "nullable": true, "type": "integer" }, "subscores": { "$ref": "#/components/schemas/ProtectComputeSubscores" } }, "required": [ "request_id" ], "type": "object" }, "ProtectComputeSubscores": { "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.", "nullable": true, "properties": { "cash_advance_bucket_0_25": { "description": "Subscore for cash advance amounts in the range $0-$25.", "nullable": true, "type": "integer" }, "cash_advance_bucket_100_200": { "description": "Subscore for cash advance amounts in the range $100-$200.", "nullable": true, "type": "integer" }, "cash_advance_bucket_200_300": { "description": "Subscore for cash advance amounts in the range $200-$300.", "nullable": true, "type": "integer" }, "cash_advance_bucket_25_50": { "description": "Subscore for cash advance amounts in the range $25-$50.", "nullable": true, "type": "integer" }, "cash_advance_bucket_300_400": { "description": "Subscore for cash advance amounts in the range $300-$400.", "nullable": true, "type": "integer" }, "cash_advance_bucket_400_500": { "description": "Subscore for cash advance amounts in the range $400-$500.", "nullable": true, "type": "integer" }, "cash_advance_bucket_50_100": { "description": "Subscore for cash advance amounts in the range $50-$100.", "nullable": true, "type": "integer" } }, "type": "object" }, "ProtectEvent": { "additionalProperties": true, "description": "Event data for Protect events.", "nullable": true, "properties": { "app_visit": { "$ref": "#/components/schemas/ProtectAppVisitEvent" }, "protect_session_id": { "description": "If present, contains the current Protect Session ID from the Plaid Pixel SDK.", "type": "string" }, "timestamp": { "description": "The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "user_sign_in": { "$ref": "#/components/schemas/ProtectUserSignInEvent" }, "user_sign_up": { "$ref": "#/components/schemas/ProtectUserSignUpEvent" } }, "required": [ "timestamp" ], "type": "object" }, "ProtectEventGetRequest": { "description": "Request object for /protect/event/get", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_id": { "description": "The event ID to retrieve information for.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "event_id" ], "type": "object" }, "ProtectEventGetResponse": { "additionalProperties": true, "description": "Response object for /protect/event/get", "properties": { "event_id": { "description": "The event ID.", "type": "string" }, "fraud_attributes": { "$ref": "#/components/schemas/FraudAttributes" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "timestamp": { "description": "The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "trust_index": { "$ref": "#/components/schemas/TrustIndex" } }, "required": [ "event_id", "timestamp", "request_id" ], "type": "object" }, "ProtectEventSendRequest": { "description": "Request object for /protect/event/send", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event": { "$ref": "#/components/schemas/ProtectEvent" }, "protect_session_id": { "description": "Protect Session ID should be provided for any event correlated with a frontend user session started via the Protect SDK.", "type": "string" }, "request_trust_index": { "description": "Whether this event should be scored with Trust Index. The default is false.", "type": "boolean" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "timestamp": { "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\"`", "format": "date-time", "type": "string" } }, "required": [ "event" ], "type": "object" }, "ProtectEventSendResponse": { "additionalProperties": true, "description": "Response object for /protect/event/send", "properties": { "event_id": { "description": "The id of the recorded event.", "type": "string" }, "fraud_attributes": { "$ref": "#/components/schemas/FraudAttributes" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "trust_index": { "$ref": "#/components/schemas/TrustIndex" } }, "required": [ "event_id", "request_id" ], "type": "object" }, "ProtectIncidentAmount": { "additionalProperties": true, "description": "The monetary amount associated with the incident.", "nullable": true, "properties": { "iso_currency_code": { "default": "USD", "description": "The ISO-4217 currency code of the incident amount. Defaults to `USD` if not specified.", "nullable": true, "type": "string" }, "value": { "description": "The monetary value of the incident amount.", "format": "double", "type": "number" } }, "required": [ "value" ], "type": "object" }, "ProtectIncidentEvent": { "additionalProperties": true, "description": "Details about the incident event.", "nullable": true, "properties": { "access_token": { "allOf": [ { "$ref": "#/components/schemas/AccessTokenNullable" } ], "description": "An access token associated with the Item related to this incident." }, "amount": { "$ref": "#/components/schemas/ProtectIncidentAmount" }, "idv_session_id": { "description": "A unique identifier for an Identity Verification session that may be associated with this incident.", "nullable": true, "type": "string" }, "internal_reference": { "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.", "nullable": true, "type": "string" }, "item_id": { "description": "An `item_id` associated with the Item related to this incident. To identify an Item when creating a report, provide `access_token`.", "nullable": true, "type": "string" }, "link_session_id": { "description": "A unique identifier for a Link session that may be associated with this incident.", "nullable": true, "type": "string" }, "protect_event_id": { "description": "A globally unique identifier representing a Protect event that may be associated with this incident.", "nullable": true, "type": "string" }, "signal_client_transaction_id": { "description": "The unique ID used to refer to a Signal transaction evaluation that may be associated with this incident.", "nullable": true, "type": "string" }, "time": { "description": "The timestamp when the incident occurred, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z').", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" }, "ProtectIncidentEventResponse": { "additionalProperties": true, "description": "Details about the incident event.", "nullable": true, "properties": { "amount": { "$ref": "#/components/schemas/ProtectIncidentAmount" }, "idv_session_id": { "description": "A unique identifier for an Identity Verification session that may be associated with this incident.", "nullable": true, "type": "string" }, "internal_reference": { "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.", "nullable": true, "type": "string" }, "item_id": { "description": "The `item_id` associated with the Item related to this incident.", "nullable": true, "type": "string" }, "link_session_id": { "description": "A unique identifier for a Link session that may be associated with this incident.", "nullable": true, "type": "string" }, "protect_event_id": { "description": "A globally unique identifier representing a Protect event that may be associated with this incident.", "nullable": true, "type": "string" }, "signal_client_transaction_id": { "description": "The unique ID used to refer to a Signal transaction evaluation that may be associated with this incident.", "nullable": true, "type": "string" }, "time": { "description": "The timestamp when the incident occurred, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z').", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" }, "ProtectLinkModelInputs": { "description": "Inputs for link session Trust Index models.", "nullable": true, "properties": { "link_session_id": { "description": "A unique identifier for the Link session, used to compute a Trust Index score and fraud attributes.", "maxLength": 128, "type": "string" }, "require_extracted_data": { "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.", "type": "boolean" } }, "required": [ "link_session_id" ], "type": "object" }, "ProtectModelInputs": { "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.", "nullable": true, "properties": { "link": { "$ref": "#/components/schemas/ProtectLinkModelInputs" }, "sdk": { "$ref": "#/components/schemas/ProtectSDKModelInputs" } }, "type": "object" }, "ProtectReport": { "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": { "ach_return_code": { "description": "ACH return code if the report type is `ACH_RETURN` (e.g. `R01`).", "nullable": true, "type": "string" }, "bank_account": { "$ref": "#/components/schemas/ProtectBankAccount" }, "created_at": { "description": "The timestamp when the report was created, in ISO 8601 format (e.g., '2020-07-24T03:26:02Z').", "format": "date-time", "type": "string" }, "incident_event": { "$ref": "#/components/schemas/ProtectIncidentEventResponse" }, "notes": { "description": "Additional context or details about the report.", "nullable": true, "type": "string" }, "report_confidence": { "$ref": "#/components/schemas/ProtectReportConfidence" }, "report_id": { "description": "A unique identifier representing the submitted report.", "type": "string" }, "report_source": { "$ref": "#/components/schemas/ProtectReportSource" }, "report_type": { "$ref": "#/components/schemas/ProtectReportType" } }, "required": [ "report_id", "incident_event", "report_confidence", "report_type", "report_source", "bank_account", "ach_return_code", "notes", "created_at" ], "type": "object" }, "ProtectReportConfidence": { "description": "The confidence level of the incident report.\n`CONFIRMED` indicates the incident has been verified and definitively occurred.\n\n`SUSPECTED` indicates the incident is believed to have occurred but has not been fully verified.", "enum": [ "CONFIRMED", "SUSPECTED" ], "type": "string" }, "ProtectReportCreateRequest": { "description": "Request object for `/protect/report/create`.\nYou 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": { "ach_return_code": { "description": "Must be a valid ACH return code (e.g. `R01`), required if `report_type` is `ACH_RETURN`.", "nullable": true, "type": "string" }, "bank_account": { "$ref": "#/components/schemas/ProtectBankAccount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "incident_event": { "$ref": "#/components/schemas/ProtectIncidentEvent" }, "notes": { "description": "Additional context or details about the report, required if `report_type` is `OTHER`.", "nullable": true, "type": "string" }, "report_confidence": { "$ref": "#/components/schemas/ProtectReportConfidence" }, "report_source": { "$ref": "#/components/schemas/ProtectReportSource" }, "report_type": { "$ref": "#/components/schemas/ProtectReportType" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "description": "The Plaid User ID associated with the report.", "type": "string" } }, "required": [ "report_confidence", "report_type", "report_source" ], "type": "object" }, "ProtectReportCreateResponse": { "additionalProperties": true, "description": "Response object for /protect/report/create", "properties": { "report_id": { "description": "A unique identifier representing the submitted report.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "report_id", "request_id" ], "type": "object" }, "ProtectReportSource": { "description": "The source that identified or reported the incident.\n\n`INTERNAL_REVIEW` - Incident was identified through internal fraud investigations or review processes.\n\n`USER_SELF_REPORTED` - Incident was reported directly by the affected user.\n\n`BANK_FEEDBACK` - Incident was identified through bank feedback, including ACH returns and connection revocations.\n\n`NETWORK_FEEDBACK` - Incident was identified through card network alerts or chargebacks.\n\n`AUTOMATED_SYSTEM` - Incident was detected by automated systems such as fraud models or rule engines.\n\n`THIRD_PARTY_ALERT` - Incident was identified through external vendor or consortium alerts.\n\n`OTHER` - Incident was identified through a source not covered by other categories.", "enum": [ "INTERNAL_REVIEW", "USER_SELF_REPORTED", "BANK_FEEDBACK", "NETWORK_FEEDBACK", "AUTOMATED_SYSTEM", "THIRD_PARTY_ALERT", "OTHER" ], "type": "string" }, "ProtectReportType": { "description": "The type of incident being reported.\n\n`USER_ACCOUNT_TAKEOVER` - Indicates that a legitimate user's account was accessed or controlled by an unauthorized party.\n\n`FALSE_IDENTITY` - Indicates that a user created an account using stolen or fabricated identity information.\n\n`STOLEN_IDENTITY` - Indicates that a user created an account using identity information belonging to a real individual without their consent.\n\n`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).\n\n`MULTIPLE_USER_ACCOUNTS` - Indicates that the same individual is operating multiple accounts in violation of policy.\n\n`SCAM_VICTIM` - Indicates that the user was tricked into authorizing or sending funds as part of a scam.\n\n`BANK_ACCOUNT_TAKEOVER` - Indicates that a user's linked bank account was accessed or misused by an unauthorized party.\n\n`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.\n\n`CARD_TESTING` - Indicates that a card was used in small or repeated transactions to test its validity.\n\n`UNAUTHORIZED_TRANSACTION` - Indicates that a transaction was made without the user's consent or authorization.\n\n`CARD_CHARGEBACK` - Indicates that a card transaction was reversed via a chargeback claim.\n\n`ACH_RETURN` - Indicates that an ACH transaction was returned or reversed by the bank.\n\n`DISPUTE` - Indicates that a user filed a dispute regarding a transaction or account activity.\n\n`FIRST_PARTY_FRAUD` - Indicates that a user intentionally misrepresented themselves or their actions for financial gain.\n\n`MISSED_PAYMENT` - Indicates that a user failed to make a required payment on time.\n\n`LOAN_STACKING` - Indicates that a user applied for or took out multiple loans simultaneously beyond their ability to repay.\n\n`MONEY_LAUNDERING` - Indicates that funds are being moved through accounts to obscure their illicit origin.\n\n`NO_FRAUD` - Indicates that an investigation determined no fraudulent activity occurred on user/event (positive label).\n\n`OTHER` - Indicates that the case involves fraud or financial risk not covered by other report types. Requires notes describing the report.", "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" ], "type": "string" }, "ProtectSDKModelInputs": { "description": "Inputs for Protect SDK Trust Index models.", "nullable": true, "properties": { "sdk_session_id": { "description": "A unique identifier for the Protect SDK session, used to compute a Trust Index score and fraud attributes.", "maxLength": 128, "type": "string" } }, "required": [ "sdk_session_id" ], "type": "object" }, "ProtectUser": { "additionalProperties": true, "description": "Represents an end user for `/protect/compute` requests.", "properties": { "client_user_id": { "description": "A unique ID representing the end user, previously passed to `/user/create`. Maximum of 128 characters. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`.", "type": "string" }, "user_id": { "description": "The Plaid User ID returned from a previous call to `/user/create`. This or `client_user_id` can be provided, not both.", "type": "string" } }, "type": "object" }, "ProtectUserEventWebhook": { "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).", "properties": { "client_user_id": { "description": "The `client_user_id` provided by the client when the user was created via `/user/create` or Link.", "nullable": true, "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "event_id": { "description": "The event ID of the user event that occurred.", "type": "string" }, "event_type": { "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).", "type": "string" }, "link_session_id": { "description": "An identifier for the Link session this event occurred in", "nullable": true, "type": "string" }, "timestamp": { "description": "The timestamp of the event, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "user_id": { "description": "The Plaid User ID.", "nullable": true, "type": "string" }, "webhook_code": { "description": "`PROTECT_USER_EVENT`", "type": "string" }, "webhook_type": { "description": "`\"PROTECT\"`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "event_id", "event_type", "timestamp", "user_id", "environment" ], "title": "ProtectUserEventWebhook", "type": "object", "x-examples": { "example-1": { "client_user_id": "your-client-user-id", "environment": "production", "event_id": "ptevt_cYNnF8xYE1v1om", "event_type": "LINK_COMPLETE", "timestamp": "2020-07-24T03:26:02Z", "user_id": "plaid-user-6009db6e", "webhook_code": "PROTECT_USER_EVENT", "webhook_type": "PROTECT" } } }, "ProtectUserInsightsGetRequest": { "description": "Request object for /protect/user/insights/get", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "description": "A unique ID representing the end user. Either `user_id` or `client_user_id` must be provided.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "description": "The Plaid User ID. Either `user_id` or `client_user_id` must be provided.", "type": "string" } }, "type": "object" }, "ProtectUserInsightsGetResponse": { "additionalProperties": true, "description": "Response object for /protect/user/insights/get", "properties": { "latest_scored_event": { "$ref": "#/components/schemas/LatestScoredEvent" }, "reports": { "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" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "user_id": { "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`.", "type": "string" } }, "required": [ "user_id", "latest_scored_event", "request_id" ], "type": "object" }, "ProtectUserSignInEvent": { "additionalProperties": true, "description": "This event type represents a user signing in to the application.", "nullable": true, "type": "object" }, "ProtectUserSignUpEvent": { "additionalProperties": true, "description": "This event type represents a user signing up for the application.", "nullable": true, "type": "object" }, "ProviderBusinessAddress": { "description": "Detailed address information for a business from data provider", "properties": { "city": { "$ref": "#/components/schemas/CityNullable" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "is_primary": { "description": "Whether this is the primary address for the business", "example": true, "type": "boolean" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/StreetNullable" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "street2", "city", "region", "postal_code", "country", "is_primary" ], "type": "object" }, "ProviderBusinessName": { "additionalProperties": true, "description": "Name associated with a business", "properties": { "is_primary": { "description": "Indicates whether this is the primary name for the business.", "example": true, "type": "boolean" }, "name": { "$ref": "#/components/schemas/BusinessNameNullable" } }, "required": [ "is_primary", "name" ], "type": "object" }, "ProxyType": { "description": "An enum indicating whether a network proxy is present and if so what type it is.\n\n`none_detected` indicates the user is not on a detectable proxy network.\n\n`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).\n\n`vpn` indicates the user is on a VPN (Virtual Private Network)\n\n`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.\n\n`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, "type": "string" }, "ReasonCode": { "description": "Specifies the reason for cancelling transfer. This is required for RfP transfers, and will be ignored for other networks.\n\n`\"AC03\"` - Invalid Creditor Account Number\n\n`\"AM09\"` - Incorrect Amount\n\n`\"CUST\"` - Requested By Customer - Cancellation requested\n\n`\"DUPL\"` - Duplicate Payment\n\n`\"FRAD\"` - Fraudulent Payment - Unauthorized or fraudulently induced\n\n`\"TECH\"` - Technical Problem - Cancellation due to system issues\n\n`\"UPAY\"` - Undue Payment - Payment was made through another channel\n\n`\"AC14\"` - Invalid or Missing Creditor Account Type\n\n`\"AM06\"` - Amount Too Low\n\n`\"BE05\"` - Unrecognized Initiating Party\n\n`\"FOCR\"` - Following Refund Request\n\n`\"MS02\"` - No Specified Reason - Customer\n\n`\"MS03\"` - No Specified Reason - Agent\n\n`\"RR04\"` - Regulatory Reason\n\n`\"RUTA\"` - Return Upon Unable To Apply", "enum": [ "AC03", "AM09", "CUST", "DUPL", "FRAD", "TECH", "UPAY", "AC14", "AM06", "BE05", "FOCR", "MS02", "MS03", "RR04", "RUTA" ], "title": "ReasonCode", "type": "string" }, "Recaptcha_RequiredError": { "additionalProperties": true, "description": "The request was flagged by Plaid's fraud system and requires additional verification to ensure the user is not a bot.", "properties": { "common_causes": { "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.", "type": "string" }, "display_message": { "nullable": true, "type": "string" }, "error_code": { "description": "`RECAPTCHA_REQUIRED`", "type": "string" }, "error_type": { "description": "`RECAPTCHA_ERROR`", "type": "string" }, "http_code": { "description": "400", "type": "integer" }, "link_user_experience": { "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.", "type": "string" }, "troubleshooting_steps": { "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.\n\nIf your user cannot verify their session, please submit a support ticket with the following identifiers: `link_session_id` or `request_id`", "type": "string" } }, "required": [ "error_type", "error_code", "display_message", "http_code" ], "title": "Recaptcha_RequiredError", "type": "object", "x-examples": { "example-1": { "display_message": null, "error_code": "RECAPTCHA_REQUIRED", "error_message": "This request requires additional verification. Please resubmit the request after completing the challenge", "error_type": "RECAPTCHA_ERROR", "http_code": 400, "request_id": "HNTDNrA8F1shFEW" } } }, "RecipientBACS": { "additionalProperties": 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.", "nullable": true, "properties": { "account": { "description": "The account number of the account. Maximum of 10 characters.", "maxLength": 10, "minLength": 1, "type": "string" }, "sort_code": { "description": "The 6-character sort code of the account.", "maxLength": 6, "minLength": 6, "type": "string" } }, "title": "RecipientBACS", "type": "object" }, "RecipientBACSNullable": { "allOf": [ { "$ref": "#/components/schemas/RecipientBACS" }, { "additionalProperties": true, "description": "The account number and sort code of the recipient's account.", "type": "object" } ], "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 }, "RecommendationString": { "description": "The recommendation result for that date.", "enum": [ "RECOMMENDED", "NOT_RECOMMENDED", "UNKNOWN" ], "title": "RecommendationString", "type": "string" }, "RecurringCancelledWebhook": { "additionalProperties": true, "description": "Fired when a recurring transfer is cancelled by Plaid.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "webhook_code": { "description": "`RECURRING_CANCELLED`", "type": "string" }, "webhook_type": { "description": "`TRANSFER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "recurring_transfer_id", "environment" ], "title": "RecurringCancelledWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "webhook_code": "RECURRING_CANCELLED", "webhook_type": "TRANSFER" } } }, "RecurringInsightsStream": { "additionalProperties": true, "description": "Insights object for recurring transactions streams.", "properties": { "average_amount": { "$ref": "#/components/schemas/TransactionStreamAmount" }, "average_days_apart": { "description": "The average number of days between each of the recurring transactions.", "format": "double", "type": "number" }, "description": { "description": "The client-provided raw description of the most recent transaction in the stream.", "type": "string" }, "frequency": { "$ref": "#/components/schemas/RecurringTransactionFrequency" }, "is_active": { "description": "Indicates whether the transaction stream is still live.", "type": "boolean" }, "merchant_name": { "description": "The merchant or primary counterparty associated with the transaction stream.", "type": "string" }, "newest_transaction_amount": { "$ref": "#/components/schemas/TransactionStreamAmount" }, "newest_transaction_date": { "description": "The posted date of the latest transaction in the stream.", "format": "date", "type": "string" }, "oldest_transaction_date": { "description": "The posted date of the earliest transaction in the stream.", "format": "date", "type": "string" }, "personal_finance_category_detailed": { "description": "The detailed category associated with the transaction stream.", "type": "string" }, "personal_finance_category_primary": { "description": "The primary category associated with the transaction stream.", "type": "string" }, "status": { "$ref": "#/components/schemas/TransactionStreamStatus" }, "stream_id": { "description": "A unique id for the stream.", "type": "string" }, "transaction_count": { "description": "The number of transactions in this stream.", "type": "integer" }, "transaction_ids": { "description": "An array of Plaid transaction IDs belonging to the stream, sorted by posted date.", "items": { "type": "string" }, "type": "array" } }, "required": [ "stream_id", "merchant_name", "average_days_apart", "is_active" ], "type": "object" }, "RecurringNewTransferWebhook": { "additionalProperties": true, "description": "Fired when a new transfer of a recurring transfer is originated.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "transfer_id": { "$ref": "#/components/schemas/TransferID" }, "webhook_code": { "description": "`RECURRING_NEW_TRANSFER`", "type": "string" }, "webhook_type": { "description": "`TRANSFER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "recurring_transfer_id", "transfer_id", "environment" ], "title": "RecurringNewTransferWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "transfer_id": "271ef220-dbf8-caeb-a7dc-a2b3e8a80963", "webhook_code": "RECURRING_NEW_TRANSFER", "webhook_type": "TRANSFER" } } }, "RecurringTransactionFrequency": { "description": "Describes the frequency of the transaction stream.\n\n`WEEKLY`: Assigned to a transaction stream that occurs approximately every week.\n\n`BIWEEKLY`: Assigned to a transaction stream that occurs approximately every 2 weeks.\n\n`SEMI_MONTHLY`: Assigned to a transaction stream that occurs approximately twice per month. This frequency is typically seen for inflow transaction streams.\n\n`MONTHLY`: Assigned to a transaction stream that occurs approximately every month.\n\n`ANNUALLY`: Assigned to a transaction stream that occurs approximately every year.\n\n`UNKNOWN`: Assigned to a transaction stream that does not fit any of the pre-defined frequencies.", "enum": [ "UNKNOWN", "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY", "ANNUALLY" ], "title": "RecurringTransactionFrequency", "type": "string" }, "RecurringTransactions": { "additionalProperties": true, "description": "Insights object for recurring transactions for `/beta/transactions/user_insights/v1/get` endpoint", "properties": { "inflow_streams": { "description": "An array of inflow transaction streams (e.g., income).", "items": { "$ref": "#/components/schemas/RecurringInsightsStream" }, "type": "array" }, "outflow_streams": { "description": "An array of outflow transaction streams (e.g., subscriptions, bills, loan payments).", "items": { "$ref": "#/components/schemas/RecurringInsightsStream" }, "type": "array" } }, "required": [ "inflow_streams", "outflow_streams" ], "type": "object" }, "RecurringTransactionsUpdateWebhook": { "additionalProperties": true, "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.\n\nAfter receipt of this webhook, the updated data can be fetched from `/transactions/recurring/get`.", "properties": { "account_ids": { "description": "A list of `account_ids` for accounts that have new or updated recurring transactions data.", "items": { "type": "string" }, "type": "array" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`RECURRING_TRANSACTIONS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "account_ids", "environment" ], "title": "RecurringTransactionsUpdateWebhook", "type": "object", "x-examples": { "example-1": { "account_ids": [ "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff" ], "environment": "production", "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "webhook_code": "RECURRING_TRANSACTIONS_UPDATE", "webhook_type": "TRANSACTIONS" } } }, "RecurringTransfer": { "additionalProperties": true, "description": "Represents a recurring transfer within the Transfers API.", "properties": { "account_id": { "description": "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.", "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "created": { "description": "The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z`", "format": "date-time", "type": "string" }, "description": { "description": "The description of the recurring transfer.", "type": "string" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponse" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "network": { "$ref": "#/components/schemas/TransferRecurringNetwork" }, "next_origination_date": { "description": "A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).\n\nThe next transfer origination date after bank holiday adjustment.", "format": "date", "nullable": true, "type": "string" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account that was used for this transfer.", "type": "string", "x-hidden-from-docs": true }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "schedule": { "$ref": "#/components/schemas/TransferRecurringSchedule" }, "status": { "$ref": "#/components/schemas/TransferRecurringStatus" }, "test_clock_id": { "description": "Plaid's unique identifier for a test clock.", "nullable": true, "type": "string" }, "transfer_ids": { "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" }, "type": "array" }, "type": { "$ref": "#/components/schemas/TransferType" }, "user": { "$ref": "#/components/schemas/TransferUserInResponse" } }, "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" ], "title": "RecurringTransfer", "type": "object" }, "RecurringTransferID": { "description": "Plaid's unique identifier for a recurring transfer.", "title": "RecurringTransferID", "type": "string" }, "RecurringTransferNullable": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/RecurringTransfer" }, { "nullable": true, "type": "object" } ], "description": "Represents a recurring transfer within the Transfers API.", "title": "RecurringTransferNullable", "type": "object" }, "RecurringTransferSkippedWebhook": { "additionalProperties": true, "description": "Fired when Plaid is unable to originate a new ACH transaction of the recurring transfer on the planned date.", "properties": { "authorization_decision": { "$ref": "#/components/schemas/TransferAuthorizationDecision" }, "authorization_decision_rationale_code": { "$ref": "#/components/schemas/TransferAuthorizationDecisionRationaleCode" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "skipped_origination_date": { "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", "type": "string" }, "webhook_code": { "description": "`RECURRING_TRANSFER_SKIPPED`", "type": "string" }, "webhook_type": { "description": "`TRANSFER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "recurring_transfer_id", "authorization_decision", "skipped_origination_date", "environment" ], "title": "RecurringTransferSkippedWebhook", "type": "object", "x-examples": { "example-1": { "authorization_decision": "declined", "authorization_decision_rationale_code": "NSF", "environment": "production", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "skipped_origination_date": "2022-11-30", "webhook_code": "RECURRING_TRANSFER_SKIPPED", "webhook_type": "TRANSFER" } } }, "RefreshResult": { "additionalProperties": true, "description": "RefreshResult represents the result status of a user refresh for a specific item.", "properties": { "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "description": "A unique identifier for the Plaid Item.", "type": "string" }, "product": { "description": "The product for which the refresh was attempted.", "type": "string" } }, "type": "object" }, "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.", "example": "IN", "nullable": true, "title": "Region", "type": "string" }, "RemovedTransaction": { "additionalProperties": true, "description": "A representation of a removed transaction", "properties": { "account_id": { "description": "The ID of the account of the removed transaction.", "type": "string" }, "transaction_id": { "description": "The ID of the removed transaction.", "type": "string" } }, "required": [ "transaction_id", "account_id" ], "title": "RemovedTransaction", "type": "object", "x-examples": {} }, "ReportType": { "description": "The report type. It can be `asset`. Income report types are not yet supported.", "enum": [ "asset" ], "nullable": false, "title": "ReportType", "type": "string" }, "ReportingInformation": { "additionalProperties": true, "description": "Information about a report identifier and a report name.", "properties": { "ReportingInformationIdentifier": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "type": "string" } }, "required": [ "ReportingInformationIdentifier" ], "title": "ReportingInformation", "type": "object" }, "RequestBusinessAddress": { "additionalProperties": true, "description": "Physical address of a business. Used for input requests.", "properties": { "city": { "$ref": "#/components/schemas/City" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/Street" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "city", "country" ], "type": "object" }, "RequestID": { "description": "A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.", "title": "RequestID", "type": "string" }, "ResponseBusinessAddress": { "additionalProperties": true, "description": "Physical address of a business. Used for response schemas.", "properties": { "city": { "$ref": "#/components/schemas/CityNullable" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/StreetNullable" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "street", "street2", "city", "region", "postal_code", "country" ], "type": "object" }, "ReviewComment": { "description": "A comment submitted by a team member as part of reviewing a watchlist screening.", "example": "These look like legitimate matches, rejecting the customer.", "nullable": true, "title": "ReviewComment", "type": "string" }, "RiskCheckBehavior": { "additionalProperties": true, "description": "Result summary object specifying values for `behavior` attributes of risk check, when available.", "nullable": true, "properties": { "bot_detected": { "$ref": "#/components/schemas/RiskCheckBehaviorBotDetectedLabel" }, "fraud_ring_detected": { "$ref": "#/components/schemas/RiskCheckBehaviorFraudRingDetectedLabel" }, "risk_level": { "$ref": "#/components/schemas/RiskLevelWithNoData" }, "user_interactions": { "$ref": "#/components/schemas/RiskCheckBehaviorUserInteractionsLabel" } }, "required": [ "user_interactions", "fraud_ring_detected", "bot_detected" ], "type": "object" }, "RiskCheckBehaviorBotDetectedLabel": { "description": "Field describing the outcome of a bot detection behavior risk check.\n\n`yes` indicates that automated activity was detected.\n\n`no` indicates that automated activity was not detected.\n\n`no_data` indicates there was not enough information available to give an accurate signal.", "enum": [ "yes", "no", "no_data" ], "type": "string" }, "RiskCheckBehaviorFraudRingDetectedLabel": { "description": "Field describing the outcome of a fraud ring behavior risk check.\n\n`yes` indicates that fraud ring activity was detected.\n\n`no` indicates that fraud ring activity was not detected.\n\n`no_data` indicates there was not enough information available to give an accurate signal.", "enum": [ "yes", "no", "no_data" ], "type": "string" }, "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.\n\n`genuine` indicates the user has high familiarity with the data they are providing, and that fraud is unlikely.\n\n`neutral` indicates some signals are present in between `risky` and `genuine`, but there are not enough clear signals to determine an outcome.\n\n`risky` indicates the user has low familiarity with the data they are providing, and that fraud is likely.\n\n`no_data` indicates there is not sufficient information to give an accurate signal.", "enum": [ "genuine", "neutral", "risky", "no_data" ], "example": "risky", "type": "string" }, "RiskCheckDetails": { "additionalProperties": true, "description": "Additional information for the `risk_check` step.", "nullable": true, "properties": { "behavior": { "$ref": "#/components/schemas/RiskCheckBehavior" }, "devices": { "description": "Array of result summary objects specifying values for `device` attributes of risk check.", "items": { "$ref": "#/components/schemas/RiskCheckDevice" }, "type": "array" }, "email": { "$ref": "#/components/schemas/RiskCheckEmail" }, "facial_duplicates": { "description": "The attributes related to the facial duplicates captured in risk check.", "items": { "$ref": "#/components/schemas/RiskCheckFacialDuplicate" }, "type": "array" }, "identity_abuse_signals": { "$ref": "#/components/schemas/RiskCheckIdentityAbuseSignals" }, "network": { "$ref": "#/components/schemas/RiskCheckNetwork" }, "phone": { "$ref": "#/components/schemas/RiskCheckPhone" }, "status": { "$ref": "#/components/schemas/IdentityVerificationStepStatus" }, "trust_index_score": { "description": "The trust index score for the `risk_check` step.", "example": 86, "nullable": true, "type": "integer" } }, "required": [ "status", "behavior", "devices", "email", "phone", "identity_abuse_signals", "facial_duplicates", "trust_index_score" ], "type": "object" }, "RiskCheckDevice": { "additionalProperties": true, "description": "Result summary object specifying values for `device` attributes of risk check.", "properties": { "factors": { "$ref": "#/components/schemas/RiskCheckFactors" }, "ip_proxy_type": { "$ref": "#/components/schemas/ProxyType" }, "ip_spam_list_count": { "description": "Count of spam lists the IP address is associated with if known.", "example": 1, "nullable": true, "type": "integer" }, "ip_timezone_offset": { "$ref": "#/components/schemas/UTCOffset" }, "risk_level": { "$ref": "#/components/schemas/RiskLevel" } }, "required": [ "ip_proxy_type", "ip_spam_list_count", "ip_timezone_offset" ], "type": "object" }, "RiskCheckEmail": { "additionalProperties": true, "description": "Result summary object specifying values for `email` attributes of risk check.", "nullable": true, "properties": { "breach_count": { "description": "Count of all known breaches of this email address if known.", "example": 1, "nullable": true, "type": "integer" }, "domain_is_custom": { "$ref": "#/components/schemas/RiskCheckEmailDomainIsCustom" }, "domain_is_disposable": { "$ref": "#/components/schemas/RiskCheckEmailDomainIsDisposable" }, "domain_is_free_provider": { "$ref": "#/components/schemas/RiskCheckEmailDomainIsFreeProvider" }, "domain_registered_at": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "factors": { "$ref": "#/components/schemas/RiskCheckFactors" }, "first_breached_at": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "includes_date_of_birth": { "$ref": "#/components/schemas/RiskCheckEmailIncludesDateOfBirth" }, "is_deliverable": { "$ref": "#/components/schemas/RiskCheckEmailIsDeliverableStatus" }, "is_edu": { "$ref": "#/components/schemas/RiskCheckEmailIsEdu" }, "last_breached_at": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "linked_services": { "description": "A list of online services where this email address has been detected to have accounts or other activity.", "example": [ "facebook" ], "items": { "$ref": "#/components/schemas/RiskCheckLinkedService" }, "type": "array", "uniqueItems": true }, "name": { "$ref": "#/components/schemas/RiskCheckEmailName" }, "risk_level": { "$ref": "#/components/schemas/RiskLevel" }, "top_level_domain_is_suspicious": { "$ref": "#/components/schemas/RiskCheckEmailTopLevelDomainIsSuspicious" } }, "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" ], "type": "object" }, "RiskCheckEmailDomainIsCustom": { "description": "Indicates whether the email address domain is custom if known, i.e. a company domain and not free or disposable.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "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.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "RiskCheckEmailDomainIsFreeProvider": { "description": "Indicates whether the email address domain is a free provider such as Gmail or Hotmail if known.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "RiskCheckEmailIncludesDateOfBirth": { "description": "Indicates whether the email address includes the date of birth or year of birth if known.", "enum": [ "yes", "no", "no_data" ], "example": "no_data", "type": "string" }, "RiskCheckEmailIsDeliverableStatus": { "description": "SMTP-MX check to confirm the email address exists if known.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "RiskCheckEmailIsEdu": { "description": "Indicates whether the email address domain is an educational institution domain if known.", "enum": [ "yes", "no", "no_data" ], "example": "no_data", "type": "string" }, "RiskCheckEmailName": { "description": "Indicates whether the provided name matches the email address according to the KYC name-matches-email inference result if known.\n\n`match` - \"The email's name identifiers match the user's name.\"\n\n`partial_match` - \"The email's name identifiers partially match the user's name.\"\n\n`no_match` - \"The email's name identifiers do not match the user's name.\"\n\n`indeterminate` - \"The email does not contain any name identifiers, and a match could not be determined.\"\n\n`no_input` - \"The user's profile does not contain the required user inputs to determine a match.\"\n\n`no_data` - \"Field could not be verified against available sources.\"", "enum": [ "no_input", "indeterminate", "no_match", "partial_match", "match", "no_data" ], "example": "match", "type": "string" }, "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.", "enum": [ "yes", "no", "no_data" ], "example": "yes", "type": "string" }, "RiskCheckFacialDuplicate": { "additionalProperties": true, "description": "Result summary object specifying values for the `facial_duplicates` attributes of risk check.", "properties": { "id": { "$ref": "#/components/schemas/IdentityVerificationID" }, "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.", "example": true, "type": "boolean" }, "similarity": { "description": "Similarity score of the match. Ranges from 0 to 100.", "example": 95, "type": "integer" } }, "required": [ "id", "similarity", "matched_after_completed" ], "type": "object" }, "RiskCheckFactors": { "description": "List of factors, when available, that contribute towards the risk level of the given risk check type.", "items": { "type": "string" }, "type": "array", "x-hidden-from-docs": true }, "RiskCheckIdentityAbuseSignals": { "additionalProperties": true, "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.", "nullable": true, "properties": { "stolen_identity": { "$ref": "#/components/schemas/RiskCheckStolenIdentity" }, "synthetic_identity": { "$ref": "#/components/schemas/RiskCheckSyntheticIdentity" } }, "required": [ "synthetic_identity", "stolen_identity" ], "type": "object" }, "RiskCheckLinkedService": { "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", "type": "string" }, "RiskCheckNetwork": { "additionalProperties": true, "description": "Result summary object specifying values for network attributes of risk check.", "nullable": true, "properties": { "factors": { "$ref": "#/components/schemas/RiskCheckFactors" }, "risk_level": { "$ref": "#/components/schemas/RiskLevel" } }, "required": [ "risk_level", "factors" ], "type": "object", "x-hidden-from-docs": true }, "RiskCheckPhone": { "additionalProperties": true, "description": "Result summary object specifying values for `phone` attributes of risk check.", "nullable": true, "properties": { "factors": { "$ref": "#/components/schemas/RiskCheckFactors" }, "linked_services": { "description": "A list of online services where this phone number has been detected to have accounts or other activity.", "example": [ "facebook" ], "items": { "$ref": "#/components/schemas/RiskCheckLinkedService" }, "type": "array", "uniqueItems": true }, "risk_level": { "$ref": "#/components/schemas/RiskLevel" } }, "required": [ "linked_services" ], "type": "object" }, "RiskCheckStolenIdentity": { "additionalProperties": true, "description": "Field containing the data used in determining the outcome of the stolen identity risk check.\n\nContains the following fields:\n\n`score` - A score from 0 to 100 indicating the likelihood that the user is a stolen identity.", "nullable": true, "properties": { "risk_level": { "$ref": "#/components/schemas/RiskLevel" }, "score": { "description": "A score from 0 to 100 indicating the likelihood that the user is a stolen identity.", "example": 0, "type": "integer" } }, "required": [ "score" ], "type": "object" }, "RiskCheckSyntheticIdentity": { "additionalProperties": true, "description": "Field containing the data used in determining the outcome of the synthetic identity risk check.\n\nContains the following fields:\n\n`score` - A score from 0 to 100 indicating the likelihood that the user is a synthetic identity.", "nullable": true, "properties": { "first_party_synthetic_fraud": { "$ref": "#/components/schemas/SyntheticFraud" }, "risk_level": { "$ref": "#/components/schemas/RiskLevel" }, "score": { "description": "A score from 0 to 100 indicating the likelihood that the user is a synthetic identity.", "example": 0, "type": "integer" }, "third_party_synthetic_fraud": { "$ref": "#/components/schemas/SyntheticFraud" } }, "required": [ "score" ], "type": "object" }, "RiskIndicators": { "additionalProperties": true, "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.", "nullable": 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" } }, "title": "RiskIndicators", "type": "object" }, "RiskLevel": { "description": "Risk level for the given risk check type.", "enum": [ "low", "medium", "high" ], "type": "string", "x-hidden-from-docs": true }, "RiskLevelWithNoData": { "description": "Risk level for the given risk check type, when available.", "enum": [ "low", "medium", "high", "no_data" ], "type": "string", "x-hidden-from-docs": true }, "RiskProfile": { "deprecated": true, "description": "RiskProfile is deprecated, use `ruleset` instead.", "nullable": true, "properties": { "key": { "description": "The key of the risk profile used for this transaction.", "type": "string" }, "outcome": { "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.", "type": "string" } }, "title": "SignalEvaluateRiskProfile", "type": "object", "x-hidden-from-docs": true }, "RiskReason": { "additionalProperties": true, "description": "This object includes a code and description to describe medium risk transactions and above on `/accounts/balance/get`.", "properties": { "code": { "description": "A code that represents the type of risk associated with the proposed transaction.\n\nThe 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" ], "title": "RiskReason", "type": "object" }, "RiskSignalDocumentReference": { "additionalProperties": true, "description": "Object containing metadata for the document", "properties": { "document_id": { "description": "An identifier of the document referenced by the document metadata.", "nullable": true, "type": "string" }, "document_name": { "description": "The name of the document", "type": "string" }, "document_type": { "$ref": "#/components/schemas/RiskSignalDocumentType" }, "file_type": { "$ref": "#/components/schemas/RiskSignalFileType" }, "status": { "$ref": "#/components/schemas/RiskSignalDocumentStatus" } }, "title": "RiskSignalDocumentReference", "type": "object" }, "RiskSignalDocumentStatus": { "description": "Status of a document for risk signal analysis", "enum": [ "PROCESSING", "PROCESSING_COMPLETE", "PROCESSING_ERROR", "PASSWORD_PROTECTED", "VIRUS_DETECTED" ], "title": "RiskSignalDocumentStatus", "type": "string" }, "RiskSignalDocumentType": { "description": "Type of a document for risk signal analysis", "enum": [ "UNKNOWN", "BANK_STATEMENT", "BENEFITS_STATEMENT", "BUSINESS_FILING", "CHECK", "DRIVING_LICENSE", "FINANCIAL_STATEMENT", "INVOICE", "PAYSLIP", "SOCIAL_SECURITY_CARD", "TAX_FORM", "UTILITY_BILL" ], "nullable": true, "title": "RiskSignalDocumentType", "type": "string" }, "RiskSignalFileType": { "description": "The file type for risk signal analysis", "enum": [ "UNKNOWN", "IMAGE_PDF", "SCAN_OCR", "TRUE_PDF", "IMAGE", "MIXED_PAGE_PDF", "EMPTY_PDF", "FLATTENED_PDF" ], "nullable": true, "title": "RiskSignalFileType", "type": "string" }, "Role": { "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" ], "title": "Role", "type": "object" }, "RoleDetail": { "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" ], "title": "RoleDetail", "type": "object" }, "Roles": { "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" ], "title": "Roles", "type": "object" }, "RoutingNumber": { "description": "The routing number of the account.", "example": "021000021", "type": "string" }, "RuleDetails": { "additionalProperties": true, "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, "properties": { "custom_action_key": { "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.", "type": "string" }, "internal_note": { "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.\"", "type": "string" } }, "title": "RuleDetails", "type": "object" }, "RuleResult": { "description": "The result of the rule that was triggered for this transaction.\n\n`ACCEPT`: Accept the transaction for processing.\n`REROUTE`: Reroute the transaction to a different payment method, as this transaction is too risky.\n`REVIEW`: Review the transaction before proceeding.", "enum": [ "ACCEPT", "REROUTE", "REVIEW" ], "type": "string" }, "Ruleset": { "additionalProperties": true, "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, "properties": { "outcome": { "deprecated": true, "description": "The evaluated outcome for this transaction. This field is deprecated, use `result` or `triggered_rule_details.custom_action_key` instead.", "type": "string", "x-hidden-from-docs": true }, "result": { "$ref": "#/components/schemas/RuleResult" }, "ruleset_key": { "description": "The key of the Ruleset used for this transaction.", "type": "string" }, "triggered_rule_details": { "$ref": "#/components/schemas/RuleDetails" } }, "required": [ "result" ], "title": "SignalEvaluateRuleset", "type": "object" }, "SMSVerification": { "additionalProperties": true, "description": "Additional information for the individual SMS verification.", "properties": { "attempt": { "description": "The attempt field begins with 1 and increments with each subsequent SMS verification.", "example": 1, "type": "integer" }, "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.", "example": 1, "type": "integer" }, "initially_sent_at": { "$ref": "#/components/schemas/TimestampNullable" }, "last_sent_at": { "$ref": "#/components/schemas/TimestampNullable" }, "phone_number": { "description": "A phone number in E.164 format.", "example": "+12345678909", "nullable": true, "type": "string" }, "redacted_at": { "$ref": "#/components/schemas/TimestampNullable" }, "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.", "example": 1, "type": "integer" }, "status": { "$ref": "#/components/schemas/SMSVerificationStatus" } }, "required": [ "status", "attempt", "phone_number", "delivery_attempt_count", "solve_attempt_count", "initially_sent_at", "last_sent_at", "redacted_at" ], "type": "object" }, "SMSVerificationStatus": { "description": "The outcome status for the individual SMS verification.", "enum": [ "pending", "success", "failed", "canceled" ], "example": "success", "type": "string" }, "SandboxBankIncomeFireWebhookRequest": { "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_code": { "$ref": "#/components/schemas/SandboxBankIncomeWebhookFireRequestWebhookCode" }, "webhook_fields": { "$ref": "#/components/schemas/SandboxBankIncomeWebhookFireRequestWebhookFields" }, "webhook_override": { "description": "The URL to which the webhook should be sent. If provided, this will override the URL set in the dashboard.", "format": "url", "type": "string" } }, "required": [ "webhook_code", "webhook_fields" ], "title": "SandboxBankIncomeFireWebhookRequest", "type": "object" }, "SandboxBankIncomeFireWebhookResponse": { "additionalProperties": true, "description": "SandboxBankIncomeFireWebhookResponse defines the response schema for `/sandbox/bank_income/fire_webhook`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxBankIncomeFireWebhookResponse", "type": "object" }, "SandboxBankIncomeWebhookFireRequestWebhookCode": { "description": "The webhook codes this endpoint can be used to test", "enum": [ "BANK_INCOME_REFRESH_UPDATE", "BANK_INCOME_REFRESH_COMPLETE" ], "type": "string" }, "SandboxBankIncomeWebhookFireRequestWebhookFields": { "description": "Optional fields which will be populated in the simulated webhook", "properties": { "bank_income_refresh_complete_result": { "$ref": "#/components/schemas/BankIncomeRefreshCompleteResult" }, "user_id": { "description": "The user id to be returned in INCOME webhooks", "type": "string" } }, "required": [ "user_id" ], "type": "object" }, "SandboxBankTransferFireWebhookRequest": { "description": "Defines the request schema for `/sandbox/bank_transfer/fire_webhook`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The URL to which the webhook should be sent.", "format": "url", "type": "string" } }, "required": [ "webhook" ], "title": "SandboxBankTransferFireWebhookRequest", "type": "object" }, "SandboxBankTransferFireWebhookResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/bank_transfer/fire_webhook`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxBankTransferFireWebhookResponse", "type": "object" }, "SandboxBankTransferSimulateRequest": { "description": "Defines the request schema for `/sandbox/bank_transfer/simulate`", "properties": { "bank_transfer_id": { "$ref": "#/components/schemas/BankTransferID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_type": { "description": "The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`.\n\nAn error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:\n\n`pending` --> `failed`\n\n`pending` --> `posted`\n\n`posted` --> `reversed`\n", "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/BankTransferFailure" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "bank_transfer_id", "event_type" ], "title": "SandboxBankTransferSimulateRequest", "type": "object" }, "SandboxBankTransferSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/bank_transfer/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxBankTransferSimulateResponse", "type": "object" }, "SandboxCraCashflowUpdatesUpdateRequest": { "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_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" }, "webhook_codes": { "description": "Webhook codes corresponding to the Cash Flow Updates events to be simulated.", "items": { "$ref": "#/components/schemas/CashFlowUpdatesEventWebhookCodes" }, "nullable": true, "type": "array" } }, "title": "SandboxCraCashflowUpdatesUpdateRequest", "type": "object" }, "SandboxCraCashflowUpdatesUpdateResponse": { "additionalProperties": true, "description": "SandboxCraCashflowUpdatesUpdateResponse defines the response schema for `sandbox/cashflow_updates/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxCraCashflowUpdatesUpdateResponse", "type": "object" }, "SandboxIncomeFireWebhookRequest": { "description": "SandboxIncomeFireWebhookRequest defines the request schema for `/sandbox/income/fire_webhook`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_id": { "description": "The Item ID associated with the verification.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "verification_status": { "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.\n\n`VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation.\n\n`VERIFICATION_STATUS_PENDING_APPROVAL`: (deprecated) The income verification has been sent to the user for review.", "enum": [ "VERIFICATION_STATUS_PROCESSING_COMPLETE", "VERIFICATION_STATUS_PROCESSING_FAILED", "VERIFICATION_STATUS_PENDING_APPROVAL" ], "type": "string" }, "webhook": { "description": "The URL to which the webhook should be sent.", "format": "url", "type": "string" }, "webhook_code": { "$ref": "#/components/schemas/SandboxIncomeWebhookFireRequestWebhookCode" } }, "required": [ "item_id", "webhook", "webhook_code" ], "title": "SandboxIncomeFireWebhookRequest", "type": "object" }, "SandboxIncomeFireWebhookResponse": { "additionalProperties": true, "description": "SandboxIncomeFireWebhookResponse defines the response schema for `/sandbox/income/fire_webhook`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxIncomeFireWebhookResponse", "type": "object" }, "SandboxIncomeWebhookFireRequestWebhookCode": { "description": "The webhook codes that can be fired by this test endpoint.", "enum": [ "INCOME_VERIFICATION", "INCOME_VERIFICATION_RISK_SIGNALS" ], "type": "string" }, "SandboxItemApplicationSeedRequest": { "description": "SandboxItemApplicationSeedRequest defines the request schema for `/sandbox/item/application/seed`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "application_id": { "$ref": "#/components/schemas/ApplicationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "application_id" ], "type": "object" }, "SandboxItemApplicationSeedResponse": { "additionalProperties": true, "description": "SandboxItemApplicationSeedResponse defines the response schema for `/sandbox/item/application/seed`", "properties": { "item_id": { "description": "The `item_id` of the newly seeded item representing the application connection.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "item_id", "request_id" ], "type": "object" }, "SandboxItemFireWebhookRequest": { "description": "SandboxItemFireWebhookRequest defines the request schema for `/sandbox/item/fire_webhook`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook_code": { "description": "The webhook codes that can be fired by this test endpoint.", "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" ], "type": "string", "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" ] }, "webhook_type": { "$ref": "#/components/schemas/WebhookType" } }, "required": [ "access_token", "webhook_code" ], "type": "object" }, "SandboxItemFireWebhookResponse": { "additionalProperties": true, "description": "SandboxItemFireWebhookResponse defines the response schema for `/sandbox/item/fire_webhook`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "webhook_fired": { "description": "Value is `true` if the test `webhook_code` was successfully fired.", "type": "boolean" } }, "required": [ "webhook_fired", "request_id" ], "type": "object" }, "SandboxItemResetLoginRequest": { "description": "SandboxItemResetLoginRequest defines the request schema for `/sandbox/item/reset_login`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "SandboxItemResetLoginResponse": { "additionalProperties": true, "description": "SandboxItemResetLoginResponse defines the response schema for `/sandbox/item/reset_login`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "reset_login": { "description": "`true` if the call succeeded", "type": "boolean" } }, "required": [ "reset_login", "request_id" ], "type": "object" }, "SandboxItemSetVerificationStatusRequest": { "description": "SandboxItemSetVerificationStatusRequest defines the request schema for `/sandbox/item/set_verification_status`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "description": "The `account_id` of the account whose verification status is to be modified", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "verification_status": { "description": "The verification status to set the account to.", "enum": [ "automatically_verified", "verification_expired" ], "type": "string" } }, "required": [ "access_token", "account_id", "verification_status" ], "type": "object" }, "SandboxItemSetVerificationStatusResponse": { "additionalProperties": true, "description": "SandboxItemSetVerificationStatusResponse defines the response schema for `/sandbox/item/set_verification_status`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "SandboxOauthSelectAccountsRequest": { "description": "Defines the request schema for `sandbox/oauth/select_accounts`", "properties": { "accounts": { "items": { "type": "string" }, "type": "array" }, "oauth_state_id": { "type": "string" } }, "required": [ "oauth_state_id", "accounts" ], "title": "SandboxOauthSelectAccountsRequest", "type": "object" }, "SandboxOauthSelectAccountsResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/oauth/select_accounts`", "title": "SandboxOauthSelectAccountsResponse", "type": "object" }, "SandboxOverridePassword": { "default": "pass_good", "description": "Test password to use for the creation of the Sandbox Item. Default value is `pass_good`.", "nullable": true, "type": "string" }, "SandboxOverrideUsername": { "default": "user_good", "description": "Test username to use for the creation of the Sandbox Item. Default value is `user_good`.", "nullable": true, "type": "string" }, "SandboxPaymentProfileResetLoginRequest": { "description": "SandboxPaymentProfileResetLoginRequest defines the request schema for `/sandbox/payment_profile/reset_login`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_profile_token": { "$ref": "#/components/schemas/PaymentProfileToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "payment_profile_token" ], "type": "object" }, "SandboxPaymentProfileResetLoginResponse": { "additionalProperties": true, "description": "SandboxPaymentProfileResetLoginResponse defines the response schema for `/sandbox/payment_profile/reset_login`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "reset_login": { "description": "`true` if the call succeeded", "type": "boolean" } }, "required": [ "reset_login", "request_id" ], "type": "object" }, "SandboxPaymentSimulateRequest": { "description": "SandboxPaymentSimulateRequest defines the request schema for `/sandbox/payment/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_id": { "description": "The ID of the payment to simulate", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "description": "The status to set the payment to.\n\nValid statuses include:\n- `PAYMENT_STATUS_INITIATED`\n- `PAYMENT_STATUS_INSUFFICIENT_FUNDS`\n- `PAYMENT_STATUS_FAILED`\n- `PAYMENT_STATUS_EXECUTED`\n- `PAYMENT_STATUS_SETTLED`\n- `PAYMENT_STATUS_CANCELLED`\n- `PAYMENT_STATUS_REJECTED`", "type": "string" }, "webhook": { "description": "The webhook url to use for any payment events triggered by the simulated status change.", "type": "string" } }, "required": [ "payment_id", "webhook", "status" ], "type": "object" }, "SandboxPaymentSimulateResponse": { "additionalProperties": true, "description": "SandboxPaymentSimulateResponse defines the response schema for `/sandbox/payment/simulate`", "properties": { "new_status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" }, "old_status": { "$ref": "#/components/schemas/PaymentInitiationPaymentStatus" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "old_status", "new_status" ], "type": "object" }, "SandboxProcessorTokenCreateRequest": { "description": "SandboxProcessorTokenCreateRequest defines the request schema for `/sandbox/processor_token/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "institution_id": { "description": "The ID of the institution the Item will be associated with", "type": "string" }, "options": { "$ref": "#/components/schemas/SandboxProcessorTokenCreateRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "institution_id" ], "type": "object" }, "SandboxProcessorTokenCreateRequestOptions": { "description": "An optional set of options to be used when configuring the Item. If specified, must not be `null`.", "properties": { "override_password": { "$ref": "#/components/schemas/SandboxOverridePassword" }, "override_username": { "$ref": "#/components/schemas/SandboxOverrideUsername" } }, "type": "object" }, "SandboxProcessorTokenCreateResponse": { "additionalProperties": true, "description": "SandboxProcessorTokenCreateResponse defines the response schema for `/sandbox/processor_token/create`", "properties": { "processor_token": { "description": "A processor token that can be used to call the `/processor/` endpoints.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "processor_token", "request_id" ], "type": "object" }, "SandboxPublicTokenCreateRequest": { "description": "SandboxPublicTokenCreateRequest defines the request schema for `/sandbox/public_token/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "initial_products": { "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, "type": "array", "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" ] }, "institution_id": { "description": "The ID of the institution the Item will be associated with", "type": "string" }, "options": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "institution_id", "initial_products" ], "type": "object" }, "SandboxPublicTokenCreateRequestIncomeVerificationBankIncome": { "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": { "description": "The number of days of data to request for the Bank Income product", "type": "integer" } }, "type": "object" }, "SandboxPublicTokenCreateRequestOptions": { "description": "An optional set of options to be used when configuring the Item. If specified, must not be `null`.", "properties": { "income_verification": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequestOptionsIncomeVerification" }, "override_password": { "$ref": "#/components/schemas/SandboxOverridePassword" }, "override_username": { "$ref": "#/components/schemas/SandboxOverrideUsername" }, "statements": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequestOptionsStatements" }, "transactions": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequestOptionsTransactions" }, "webhook": { "description": "Specify a webhook to associate with the new Item.", "format": "url", "type": "string" } }, "type": "object" }, "SandboxPublicTokenCreateRequestOptionsIncomeVerification": { "description": "A set of parameters for income verification options. This field is required if `income_verification` is included in the `initial_products` array.", "properties": { "bank_income": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequestIncomeVerificationBankIncome" }, "income_source_types": { "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" }, "type": "array" } }, "type": "object" }, "SandboxPublicTokenCreateRequestOptionsStatements": { "description": "An optional set of parameters corresponding to statements options.", "nullable": true, "properties": { "end_date": { "description": "The most recent date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "start_date": { "description": "The earliest date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "required": [ "start_date", "end_date" ], "title": "SandboxPublicTokenCreateRequestOptionsStatements", "type": "object" }, "SandboxPublicTokenCreateRequestOptionsTransactions": { "description": "An optional set of parameters corresponding to transactions options.", "nullable": true, "properties": { "days_requested": { "default": 90, "description": "The maximum number of days of transaction history to request for the Transactions product.", "maximum": 730, "minimum": 1, "type": "integer", "x-hidden-from-docs": true }, "end_date": { "description": "The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "start_date": { "description": "The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "title": "SandboxPublicTokenCreateRequestOptionsTransactions", "type": "object" }, "SandboxPublicTokenCreateResponse": { "additionalProperties": true, "description": "SandboxPublicTokenCreateResponse defines the response schema for `/sandbox/public_token/create`", "properties": { "public_token": { "description": "A public token that can be exchanged for an access token using `/item/public_token/exchange`", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "public_token", "request_id" ], "type": "object" }, "SandboxTransactionsCreateRequest": { "description": "SandboxTransactionsCreateRequest defines the request schema for `/sandbox/transactions/create`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transactions": { "description": "List of transactions to be added", "items": { "$ref": "#/components/schemas/CustomSandboxTransaction" }, "type": "array" } }, "required": [ "transactions", "access_token" ], "type": "object" }, "SandboxTransactionsCreateResponse": { "additionalProperties": true, "description": "SandboxTransactionsCreateResponse defines the response schema for `/sandbox/transactions/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "SandboxTransferFireWebhookRequest": { "description": "Defines the request schema for `/sandbox/transfer/fire_webhook`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "webhook": { "description": "The URL to which the webhook should be sent.", "format": "url", "type": "string" } }, "required": [ "webhook" ], "title": "SandboxTransferFireWebhookRequest", "type": "object" }, "SandboxTransferFireWebhookResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/fire_webhook`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferFireWebhookResponse", "type": "object" }, "SandboxTransferLedgerDepositSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/ledger/deposit/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_type": { "$ref": "#/components/schemas/TransferLedgerSweepSimulateEventType" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "sweep_id": { "$ref": "#/components/schemas/TransferSweepID" } }, "required": [ "sweep_id", "event_type" ], "title": "SandboxTransferLedgerDepositSimulateRequest", "type": "object" }, "SandboxTransferLedgerDepositSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/ledger/deposit/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferLedgerDepositSimulateResponse", "type": "object" }, "SandboxTransferLedgerSimulateAvailableRequest": { "description": "Defines the request schema for `/sandbox/transfer/ledger/simulate_available`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "ledger_id": { "description": "Specify which ledger balance to simulate converting pending balance to available balance. If this field is left blank, this will default to id of the default ledger balance.", "nullable": true, "type": "string" }, "originator_client_id": { "description": "Client ID of the end customer (i.e. the originator). Only applicable to Transfer for Platforms customers.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "webhook": { "description": "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.", "format": "url", "type": "string" } }, "title": "SandboxTransferLedgerSimulateAvailableRequest", "type": "object" }, "SandboxTransferLedgerSimulateAvailableResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/ledger/simulate_available`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferLedgerSimulateAvailableResponse", "type": "object" }, "SandboxTransferLedgerWithdrawSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/ledger/withdraw/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_type": { "$ref": "#/components/schemas/TransferLedgerSweepSimulateEventType" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "sweep_id": { "$ref": "#/components/schemas/TransferSweepID" } }, "required": [ "sweep_id", "event_type" ], "title": "SandboxTransferLedgerWithdrawSimulateRequest", "type": "object" }, "SandboxTransferLedgerWithdrawSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/ledger/withdraw/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferLedgerWithdrawSimulateResponse", "type": "object" }, "SandboxTransferRefundSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/refund/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_type": { "description": "The asynchronous event to be simulated. May be: `refund.posted`, `refund.settled`, `refund.failed`, or `refund.returned`.\n\nAn error will be returned if the event type is incompatible with the current refund status. Compatible status --> event type transitions include:\n\n`refund.pending` --> `refund.failed`\n\n`refund.pending` --> `refund.posted`\n\n`refund.posted` --> `refund.returned`\n\n`refund.posted` --> `refund.settled`\n\n`refund.posted` events can only be simulated if the refunded transfer has been transitioned to settled. This mimics the ordering of events in Production.\n", "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "refund_id": { "$ref": "#/components/schemas/TransferRefundID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "webhook": { "description": "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.", "format": "url", "type": "string" } }, "required": [ "refund_id", "event_type" ], "title": "SandboxTransferRefundSimulateRequest", "type": "object" }, "SandboxTransferRefundSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/refund/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferRefundSimulateResponse", "type": "object" }, "SandboxTransferRepaymentSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/repayment/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "SandboxTransferRepaymentSimulateRequest", "type": "object" }, "SandboxTransferRepaymentSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/repayment/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferSimulateResponse", "type": "object" }, "SandboxTransferRfpSimulateAction": { "description": "The action to simulate. Must be either `approve` or `reject`.\n\n- `approve`: Simulates bank approval, transitioning the transfer to `settled` status\n- `reject`: Simulates bank rejection, transitioning the transfer to `failed` status\n", "enum": [ "approve", "reject" ], "title": "SandboxTransferRfpSimulateAction", "type": "string" }, "SandboxTransferRfpSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/rfp/simulate`", "properties": { "action": { "$ref": "#/components/schemas/SandboxTransferRfpSimulateAction" }, "amount": { "description": "The transfer amount provided by the caller for validation purposes, must match the amount on the transfer associated with the provided `transfer_id`.\n", "type": "string" }, "client_name": { "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`.\n", "type": "string" }, "transfer_id": { "$ref": "#/components/schemas/TransferID" } }, "required": [ "transfer_id", "action", "amount", "client_name" ], "title": "SandboxTransferRfpSimulateRequest", "type": "object" }, "SandboxTransferRfpSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/rfp/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferRfpSimulateResponse", "type": "object" }, "SandboxTransferSimulateRequest": { "description": "Defines the request schema for `/sandbox/transfer/simulate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "event_type": { "description": "The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, `funds_available`, or `returned`.\n\nAn error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:\n\n`pending` --> `failed`\n\n`pending` --> `posted`\n\n`posted` --> `returned`\n\n`posted` --> `settled`\n\n`settled` --> `funds_available` (only applicable to ACH debits.)\n", "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "transfer_id": { "$ref": "#/components/schemas/TransferID" }, "webhook": { "description": "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.", "format": "url", "type": "string" } }, "required": [ "transfer_id", "event_type" ], "title": "SandboxTransferSimulateRequest", "type": "object" }, "SandboxTransferSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferSimulateResponse", "type": "object" }, "SandboxTransferSweepSimulateRequest": { "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": { "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, "type": "string" }, "webhook": { "description": "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.", "format": "url", "type": "string" } }, "title": "SandboxTransferSweepSimulateRequest", "type": "object" }, "SandboxTransferSweepSimulateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/sweep/simulate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweep": { "$ref": "#/components/schemas/SimulatedTransferSweep" } }, "required": [ "request_id" ], "title": "SandboxTransferSweepSimulateResponse", "type": "object" }, "SandboxTransferTestClockAdvanceRequest": { "description": "Defines the request schema for `/sandbox/transfer/test_clock/advance`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "new_virtual_time": { "$ref": "#/components/schemas/VirtualTime" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "$ref": "#/components/schemas/TransferTestClockID" } }, "required": [ "test_clock_id", "new_virtual_time" ], "title": "SandboxTransferTestClockAdvanceRequest", "type": "object" }, "SandboxTransferTestClockAdvanceResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/test_clock/advance`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SandboxTransferTestClockAdvanceResponse", "type": "object" }, "SandboxTransferTestClockCreateRequest": { "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": { "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`.", "format": "date-time", "nullable": true, "title": "VirtualTime", "type": "string" } }, "title": "SandboxTransferTestClockCreateRequest", "type": "object" }, "SandboxTransferTestClockCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/test_clock/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "test_clock": { "$ref": "#/components/schemas/TransferTestClock" } }, "required": [ "test_clock", "request_id" ], "title": "SandboxTransferTestClockCreateResponse", "type": "object" }, "SandboxTransferTestClockGetRequest": { "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" ], "title": "SandboxTransferTestClockGetRequest", "type": "object" }, "SandboxTransferTestClockGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/test_clock/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "test_clock": { "$ref": "#/components/schemas/TransferTestClock" } }, "required": [ "test_clock", "request_id" ], "title": "SandboxTransferTestClockGetResponse", "type": "object" }, "SandboxTransferTestClockListRequest": { "description": "Defines the request schema for `/sandbox/transfer/test_clock/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of test clocks to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_virtual_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`)", "format": "date-time", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of test clocks to skip before returning results.", "minimum": 0, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_virtual_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`)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "SandboxTransferTestClockListRequest", "type": "object" }, "SandboxTransferTestClockListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/sandbox/transfer/test_clock/list`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "test_clocks": { "items": { "$ref": "#/components/schemas/TransferTestClock" }, "type": "array" } }, "required": [ "test_clocks", "request_id" ], "title": "SandboxTransferTestClockListResponse", "type": "object" }, "SandboxUserResetLoginRequest": { "description": "SandboxUserResetLoginRequest defines the request schema for `/sandbox/user/reset_login`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_ids": { "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.", "items": { "$ref": "#/components/schemas/ItemId" }, "nullable": true, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "type": "object" }, "SandboxUserResetLoginResponse": { "additionalProperties": true, "description": "SandboxUserResetLoginResponse defines the response schema for `/sandbox/user/reset_login`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "Scopes": { "description": "The scopes object", "properties": { "accounts": { "items": { "$ref": "#/components/schemas/AccountAccess" }, "type": "array" }, "new_accounts": { "default": true, "description": "Allow access to newly opened accounts as they are opened. If unset, defaults to `true`.", "nullable": true, "type": "boolean" }, "product_access": { "$ref": "#/components/schemas/ProductAccess" } }, "type": "object" }, "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`.", "enum": [ "ENROLLMENT", "PORTAL" ], "type": "string" }, "ScopesNullable": { "allOf": [ { "$ref": "#/components/schemas/Scopes" }, { "additionalProperties": true, "type": "object" } ], "description": "The scopes object", "nullable": 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" }, "ScreeningHitAnalysis": { "additionalProperties": true, "description": "Analysis information describing why a screening hit matched the provided user information", "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": { "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, "type": "integer" } }, "required": [ "search_terms_version" ], "type": "object" }, "ScreeningHitData": { "additionalProperties": true, "description": "Information associated with the watchlist hit", "properties": { "dates_of_birth": { "description": "Dates of birth associated with the watchlist hit", "items": { "$ref": "#/components/schemas/ScreeningHitDateOfBirthItem" }, "type": "array" }, "documents": { "description": "Documents associated with the watchlist hit", "items": { "$ref": "#/components/schemas/ScreeningHitDocumentsItems" }, "type": "array" }, "locations": { "description": "Locations associated with the watchlist hit", "items": { "$ref": "#/components/schemas/GenericScreeningHitLocationItems" }, "type": "array" }, "names": { "description": "Names associated with the watchlist hit", "items": { "$ref": "#/components/schemas/ScreeningHitNamesItems" }, "type": "array" } }, "type": "object" }, "ScreeningHitDateOfBirthItem": { "additionalProperties": true, "description": "Analyzed date of birth for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/DateRange" } }, "type": "object" }, "ScreeningHitDocumentsItems": { "additionalProperties": true, "description": "Analyzed document information for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/WatchlistScreeningDocument" } }, "type": "object" }, "ScreeningHitNamesItems": { "additionalProperties": true, "description": "Analyzed name information for the associated hit", "properties": { "analysis": { "$ref": "#/components/schemas/MatchSummary" }, "data": { "$ref": "#/components/schemas/IndividualScreeningHitNames" } }, "type": "object" }, "ScreeningStatusUpdatedWebhook": { "additionalProperties": true, "description": "Fired when an individual screening status has changed, which can occur manually via the dashboard or during ongoing monitoring.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "screening_id": { "description": "The ID of the associated screening.", "type": "string" }, "webhook_code": { "description": "`STATUS_UPDATED`", "type": "string" }, "webhook_type": { "description": "`SCREENING`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "screening_id", "environment" ], "title": "ScreeningStatusUpdatedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "screening_id": "scr_52xR9LKo77r1Np", "webhook_code": "STATUS_UPDATED", "webhook_type": "SCREENING" } } }, "Security": { "additionalProperties": true, "description": "Contains details about a security", "properties": { "cfi_code": { "description": "The ISO-10962 Classification of Financial Instruments Code used to classify the security based on its structure and function.", "nullable": true, "type": "string" }, "close_price": { "description": "Price of the security at the close of the previous trading session. Null for non-public securities.\n\nIf the security is a foreign currency this field will be updated daily and will be priced in USD.\n\nIf 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.\n", "format": "double", "nullable": true, "type": "number" }, "close_price_as_of": { "description": "Date for which `close_price` is accurate. Always `null` if `close_price` is `null`.", "format": "date", "nullable": true, "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 start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform).", "nullable": true, "type": "string" }, "fixed_income": { "$ref": "#/components/schemas/FixedIncome" }, "industry": { "description": "The industry classification of the security, such as Biotechnology, Airlines, etc.\n\nFor a complete list of possible values, please refer to the [\"Sectors and Industries\" spreadsheet](https://docs.google.com/spreadsheets/d/1L7aXUdqLhxgM8qe7hK67qqKXiUdQqILpwZ0LpxvCVnc).", "nullable": true, "type": "string" }, "institution_id": { "description": "If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs.", "nullable": true, "type": "string" }, "institution_security_id": { "description": "An identifier given to the security by the institution", "nullable": true, "type": "string" }, "is_cash_equivalent": { "description": "Indicates that a security is a highly liquid asset and can be treated like cash.", "nullable": true, "type": "boolean" }, "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 start the verification process [here](https://docs.google.com/forms/d/e/1FAIpQLSd9asHEYEfmf8fxJTHZTAfAzW4dugsnSu-HS2J51f1mxwd6Sw/viewform).", "nullable": true, "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the price given. Always `null` if `unofficial_currency_code` is non-`null`.", "nullable": true, "type": "string" }, "market_identifier_code": { "description": "The ISO-10383 Market Identifier Code of the exchange or market in which the security is being traded.", "nullable": true, "type": "string" }, "name": { "description": "A descriptive name for the security, suitable for display.", "nullable": true, "type": "string" }, "option_contract": { "$ref": "#/components/schemas/OptionContract" }, "proxy_security_id": { "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.", "nullable": true, "type": "string" }, "sector": { "description": "The sector classification of the security, such as Finance, Health Technology, etc.\n\nFor a complete list of possible values, please refer to the [\"Sectors and Industries\" spreadsheet](https://docs.google.com/spreadsheets/d/1L7aXUdqLhxgM8qe7hK67qqKXiUdQqILpwZ0LpxvCVnc).", "nullable": true, "type": "string" }, "security_id": { "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.", "type": "string" }, "sedol": { "deprecated": true, "description": "(Deprecated) 7-character SEDOL, an identifier assigned to securities in the UK.", "nullable": true, "type": "string" }, "subtype": { "description": "The security subtype of the holding.\n\nIn rare instances, a null value is returned when institutional data is insufficient to determine the security subtype.\n\nPossible 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`.", "nullable": true, "type": "string" }, "ticker_symbol": { "description": "The security's trading symbol for publicly traded securities, and otherwise a short identifier if available.", "nullable": true, "type": "string" }, "type": { "description": "The security type of the holding.\n\nIn rare instances, a null value is returned when institutional data is insufficient to determine the security type.\n\nValid security types are:\n\n`cash`: Cash, currency, and money market funds\n\n`cryptocurrency`: Digital or virtual currencies\n\n`derivative`: Options, warrants, and other derivative instruments\n\n`equity`: Domestic and foreign equities\n\n`etf`: Multi-asset exchange-traded investment funds\n\n`fixed income`: Bonds and certificates of deposit (CDs)\n\n`loan`: Loans and loan receivables\n\n`mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors\n\n`other`: Unknown or other investment types", "nullable": true, "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "update_datetime": { "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`.", "format": "date-time", "nullable": true, "type": "string" } }, "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", "option_contract", "fixed_income" ], "title": "Security", "type": "object" }, "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": { "currency": { "description": "Either a valid `iso_currency_code` or `unofficial_currency_code`", "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" }, "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" }, "name": { "description": "A descriptive name for the security, suitable for display.", "type": "string" }, "sedol": { "deprecated": true, "description": "(Deprecated) 7-character SEDOL, an identifier assigned to securities in the UK.", "type": "string", "x-hidden-from-docs": true }, "ticker_symbol": { "description": "The security's trading symbol for publicly traded securities, and otherwise a short identifier if available.", "type": "string" } }, "title": "SecurityOverride", "type": "object" }, "SelfieAgeCheck": { "additionalProperties": 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.", "nullable": true, "properties": { "age_estimate_lower_bound": { "description": "Lower bound of the estimated age range from the selfie capture.", "example": 32, "type": "integer" }, "age_estimate_upper_bound": { "description": "Upper bound of the estimated age range from the selfie capture.", "example": 38, "type": "integer" }, "reported_age": { "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.", "example": 36, "nullable": true, "type": "integer" }, "status": { "$ref": "#/components/schemas/SelfieAgeCheckStatus" } }, "required": [ "status", "reported_age", "age_estimate_lower_bound", "age_estimate_upper_bound" ], "type": "object" }, "SelfieAgeCheckStatus": { "description": "An enum indicating whether the reported age aligns with the estimated selfie capture age range.\n\n`match` indicates that the reported age falls within the estimated selfie capture age range.\n\n`warning` indicates that the reported age falls outside the estimated selfie capture age range, but is close enough that the result should be reviewed.\n\n`no_match` indicates that the reported age falls far outside the estimated selfie capture age range.\n\n`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.", "enum": [ "match", "warning", "no_match", "no_data" ], "example": "match", "type": "string" }, "SelfieAnalysis": { "additionalProperties": true, "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": { "age_check": { "$ref": "#/components/schemas/SelfieAgeCheck" }, "document_comparison": { "$ref": "#/components/schemas/SelfieAnalysisDocumentComparison" }, "facial_analysis": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysis" }, "liveness_check": { "$ref": "#/components/schemas/SelfieAnalysisLivenessCheck" } }, "required": [ "document_comparison", "liveness_check" ], "type": "object" }, "SelfieAnalysisDocumentComparison": { "description": "Information about the comparison between the selfie and the document (if documentary verification also ran).", "enum": [ "match", "no_match", "no_input" ], "type": "string" }, "SelfieAnalysisFacialAnalysis": { "additionalProperties": true, "description": "Analysis of the facial features of the selfie when compared to the face in the uploaded document, if one is present.", "nullable": true, "properties": { "forehead": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "jaw": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "left_brow": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "left_cheek": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "left_eye": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "middle_forehead": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "mouth": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "nose": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "philtrum": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "right_brow": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "right_cheek": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" }, "right_eye": { "$ref": "#/components/schemas/SelfieAnalysisFacialAnalysisOutcome" } }, "required": [ "left_eye", "right_eye", "left_brow", "right_brow", "forehead", "middle_forehead", "nose", "philtrum", "mouth", "jaw", "left_cheek", "right_cheek" ], "type": "object", "x-hidden-from-docs": true }, "SelfieAnalysisFacialAnalysisOutcome": { "description": "Outcome of the facial analysis for a specific facial feature.", "enum": [ "success", "failed" ], "type": "string" }, "SelfieAnalysisLivenessCheck": { "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.", "enum": [ "success", "failed" ], "type": "string" }, "SelfieCapture": { "additionalProperties": true, "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" ], "type": "object" }, "SelfieCaptureImageURL": { "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.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.jpeg", "nullable": true, "type": "string" }, "SelfieCaptureVideoURL": { "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.", "example": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/selfie/liveness.webm", "nullable": true, "type": "string" }, "SelfieCheck": { "additionalProperties": true, "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`.", "nullable": true, "properties": { "selfies": { "description": "An array of selfies submitted to the `selfie_check` step. Each entry represents one user submission.", "items": { "$ref": "#/components/schemas/SelfieCheckSelfie" }, "type": "array" }, "status": { "$ref": "#/components/schemas/SelfieCheckStatus" } }, "required": [ "status", "selfies" ], "title": "SelfieCheck", "type": "object" }, "SelfieCheckSelfie": { "additionalProperties": true, "description": "Captures and analysis from a user's selfie.", "properties": { "analysis": { "$ref": "#/components/schemas/SelfieAnalysis" }, "attempt": { "description": "The `attempt` field begins with 1 and increments with each subsequent selfie upload.", "example": 1, "type": "integer" }, "capture": { "$ref": "#/components/schemas/SelfieCapture" }, "status": { "$ref": "#/components/schemas/SelfieStatus" } }, "required": [ "status", "attempt", "capture", "analysis" ], "type": "object" }, "SelfieCheckStatus": { "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`.", "enum": [ "success", "failed" ], "example": "success", "type": "string" }, "SelfieStatus": { "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.", "enum": [ "success", "failed" ], "example": "success", "type": "string" }, "SenderBACSNullable": { "allOf": [ { "$ref": "#/components/schemas/RecipientBACS" }, { "additionalProperties": true, "description": "The account number and sort code of the sender's account, if specified in the `/payment_initiation/payment/create` call.", "type": "object" } ], "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 }, "Service": { "additionalProperties": true, "description": "A collection of details related to a fulfillment service or product in terms of request, process and result.", "properties": { "STATUSES": { "$ref": "#/components/schemas/Statuses" }, "VERIFICATION_OF_ASSET": { "$ref": "#/components/schemas/VerificationOfAsset" } }, "required": [ "VERIFICATION_OF_ASSET", "STATUSES" ], "title": "Service", "type": "object" }, "ServiceProductFulfillment": { "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" ], "title": "ServiceProductFulfillment", "type": "object" }, "ServiceProductFulfillmentDetail": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ServiceProductFulfillmentIdentifier": { "$ref": "#/components/schemas/ServiceProductFulfillmentIdentifier" }, "VendorOrderIdentifier": { "description": "A string that uniquely identifies a type of order Verification of Asset.", "nullable": true, "type": "string" } }, "required": [ "VendorOrderIdentifier", "ServiceProductFulfillmentIdentifier" ], "title": "ServiceProductFulfillmentDetail", "type": "object" }, "ServiceProductFulfillmentIdentifier": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "enum": [ "VOA", "VOE" ], "title": "ServiceProductFulfillmentIdentifier", "type": "string" }, "ServicerAddressData": { "additionalProperties": true, "description": "The address of the student loan servicer. This is generally the remittance address to which payments should be sent.", "properties": { "city": { "description": "The full city name", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code", "nullable": true, "type": "string" }, "region": { "description": "The region or state\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "nullable": true, "type": "string" } }, "required": [ "city", "region", "street", "postal_code", "country" ], "title": "ServicerAddressData", "type": "object" }, "Services": { "additionalProperties": true, "description": "A collection of objects that describe requests and responses for services.", "properties": { "SERVICE": { "$ref": "#/components/schemas/Service" } }, "required": [ "SERVICE" ], "title": "Services", "type": "object" }, "SessionTokenCreateRequest": { "description": "SessionTokenCreateRequest defines the request schema for `/session/token/create`", "properties": { "android_package_name": { "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.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "redirect_uri": { "$ref": "#/components/schemas/LinkTokenCreateRequestRedirectUri" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "template_id": { "description": "The id of a template defined in Plaid Dashboard", "type": "string" }, "user": { "$ref": "#/components/schemas/SessionTokenCreateRequestUser" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "webhook": { "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", "type": "string" } }, "required": [ "template_id" ], "type": "object" }, "SessionTokenCreateRequestUser": { "description": "Details about the end user. Required if a root-level `user_id` is not provided.", "properties": { "client_user_id": { "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.", "type": "string" }, "user_id": { "allOf": [ { "$ref": "#/components/schemas/UserId" }, { "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`.", "type": "string" } ] } }, "required": [ "client_user_id" ], "type": "object" }, "SessionTokenCreateResponse": { "additionalProperties": true, "description": "SessionTokenCreateResponse defines the response schema for `/session/token/create`", "properties": { "link": { "$ref": "#/components/schemas/SessionTokenCreateResponseLink" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "SessionTokenCreateResponseLink": { "additionalProperties": true, "description": "Response data for `/session/token/create` intended for use with the Link SDK.", "properties": { "expiration": { "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.", "format": "date-time", "type": "string" }, "link_token": { "description": "A Link token, which can be supplied to Link in order to initialize it and receive a `public_token`.", "type": "string" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "link_token", "expiration" ], "type": "object" }, "ShareableURL": { "description": "A shareable URL that can be sent directly to the user to complete verification", "example": "https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "nullable": true, "type": "string" }, "SignalAddressData": { "additionalProperties": true, "description": "Data about the components comprising an address.", "nullable": true, "properties": { "city": { "description": "The full city name", "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code", "nullable": true, "type": "string" }, "region": { "description": "The region or state\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "type": "string" } }, "title": "AddressData", "type": "object" }, "SignalDecisionOutcome": { "description": "The payment decision from the risk assessment.\n\n`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.\n\n`REVIEW`: the transaction requires manual review\n\n`REJECT`: reject the transaction\n\n`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\n\n`NOT_EVALUATED`: if only logging the results without using them\n", "enum": [ "APPROVE", "REVIEW", "REJECT", "TAKE_OTHER_RISK_MEASURES", "NOT_EVALUATED" ], "nullable": true, "type": "string" }, "SignalDecisionReportRequest": { "description": "SignalDecisionReportRequest defines the request schema for `/signal/decision/report`", "properties": { "amount_instantly_available": { "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).", "format": "double", "nullable": true, "type": "number" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "description": "Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`", "maxLength": 36, "minLength": 1, "type": "string" }, "days_funds_on_hold": { "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.\n\nFor 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, "type": "integer" }, "decision_outcome": { "$ref": "#/components/schemas/SignalDecisionOutcome" }, "initiated": { "description": "`true` if the ACH transaction was initiated, `false` otherwise.\n\nThis 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.", "type": "boolean" }, "payment_method": { "$ref": "#/components/schemas/SignalPaymentMethod" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "submitted_at": { "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.", "format": "date-time", "type": "string", "x-hidden-from-docs": true } }, "required": [ "client_transaction_id", "initiated" ], "title": "SignalDecisionReportRequest", "type": "object" }, "SignalDecisionReportResponse": { "additionalProperties": true, "description": "SignalDecisionReportResponse defines the response schema for `/signal/decision/report`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SignalDecisionReportResponse", "type": "object" }, "SignalDevice": { "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": { "description": "The IP address of the device that initiated the transaction", "nullable": true, "type": "string" }, "user_agent": { "description": "The user agent of the device that initiated the transaction (e.g. \"Mozilla/5.0\")", "nullable": true, "type": "string" } }, "title": "SignalEvaluateDevice", "type": "object" }, "SignalEvaluateCoreAttributes": { "description": "The core attributes object contains additional data that can be used to assess the ACH return risk.\n\nIf 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:\n\n`available_balance` and `current_balance`: The balance in the ACH transaction funding account\n`days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid\n`plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days\n`plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days\n`total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid\n`is_savings_or_money_market_account`: Indicates whether the ACH transaction funding account is a savings/money market account\n\nFor 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": { "address_change_count_28d": { "description": "The number of times the account's addresses on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "address_change_count_90d": { "description": "The number of times the account's addresses on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "available_balance": { "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.", "format": "double", "nullable": true, "type": "number" }, "balance_last_updated": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "balance_to_transaction_amount_ratio": { "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.", "format": "double", "nullable": true, "type": "number" }, "credit_transactions_count_10d": { "description": "The total number of credit (inflow) transactions over the past 10 days from the account that will be debited", "nullable": true, "type": "integer" }, "credit_transactions_count_30d": { "description": "The total number of credit (inflow) transactions over the past 30 days from the account that will be debited", "nullable": true, "type": "integer" }, "credit_transactions_count_60d": { "description": "The total number of credit (inflow) transactions over the past 60 days from the account that will be debited", "nullable": true, "type": "integer" }, "credit_transactions_count_90d": { "description": "The total number of credit (inflow) transactions over the past 90 days from the account that will be debited", "nullable": true, "type": "integer" }, "current_balance": { "description": "Current balance, as of the `balance_last_updated` time. The current balance is the total amount of funds in the account.", "format": "double", "nullable": true, "type": "number" }, "days_since_account_opening": { "description": "The number of days since the bank account was opened, as reported by the financial institution", "nullable": true, "type": "integer" }, "days_since_first_plaid_connection": { "description": "The number of days since the first time the Item was connected to an application via Plaid", "nullable": true, "type": "integer" }, "days_with_negative_balance_count_90d": { "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, "type": "integer" }, "debit_transactions_count_10d": { "description": "The total number of debit (outflow) transactions over the past 10 days from the account that will be debited", "nullable": true, "type": "integer" }, "debit_transactions_count_30d": { "description": "The total number of debit (outflow) transactions over the past 30 days from the account that will be debited", "nullable": true, "type": "integer" }, "debit_transactions_count_60d": { "description": "The total number of debit (outflow) transactions over the past 60 days from the account that will be debited", "nullable": true, "type": "integer" }, "debit_transactions_count_90d": { "description": "The total number of debit (outflow) transactions over the past 90 days from the account that will be debited", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_30d": { "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, "type": "integer" }, "distinct_ip_addresses_count_3d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 3 days", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_7d": { "description": "The number of distinct IP addresses linked to the same bank account during Plaid authentication in the last 7 days", "nullable": true, "type": "integer" }, "distinct_ip_addresses_count_90d": { "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, "type": "integer" }, "distinct_ssl_tls_connection_sessions_count_30d": { "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, "type": "integer" }, "distinct_ssl_tls_connection_sessions_count_3d": { "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, "type": "integer" }, "distinct_ssl_tls_connection_sessions_count_7d": { "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, "type": "integer" }, "distinct_ssl_tls_connection_sessions_count_90d": { "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, "type": "integer" }, "distinct_user_agents_count_30d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 30 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_3d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 3 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_7d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 7 days", "nullable": true, "type": "integer" }, "distinct_user_agents_count_90d": { "description": "The number of distinct user agents linked to the same bank account during Plaid authentication in the last 90 days", "nullable": true, "type": "integer" }, "email_change_count_28d": { "description": "The number of times the account's email addresses on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "email_change_count_90d": { "description": "The number of times the account's email addresses on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "nullable": true, "type": "integer" }, "failed_plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of failed non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "nullable": true, "type": "integer" }, "is_account_closed": { "description": "Indicates if the receiver bank account is closed", "nullable": true, "type": "boolean" }, "is_account_frozen_or_restricted": { "description": "Indicates if the receiver bank account is either frozen or restricted", "nullable": true, "type": "boolean" }, "is_savings_or_money_market_account": { "description": "Indicates if the ACH transaction funding account is a savings/money market account", "nullable": true, "type": "boolean" }, "nsf_overdraft_transactions_count_30d": { "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, "type": "integer" }, "nsf_overdraft_transactions_count_60d": { "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, "type": "integer" }, "nsf_overdraft_transactions_count_7d": { "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, "type": "integer" }, "nsf_overdraft_transactions_count_90d": { "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, "type": "integer" }, "p10_eod_balance_30d": { "description": "The 10th percentile of the end-of-day available balance over the past 30 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p10_eod_balance_31d_to_60d": { "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", "format": "double", "nullable": true, "type": "number" }, "p10_eod_balance_60d": { "description": "The 10th percentile of the end-of-day available balance over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p10_eod_balance_61d_to_90d": { "description": "The 10th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p10_eod_balance_90d": { "description": "The 10th percentile of the end-of-day available balance over the past 90 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_credit_transactions_amount_28d": { "description": "The 50th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_debit_transactions_amount_28d": { "description": "The 50th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_eod_balance_30d": { "description": "The 50th percentile of the end-of-day available balance over the past 30 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_eod_balance_31d_to_60d": { "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", "format": "double", "nullable": true, "type": "number" }, "p50_eod_balance_60d": { "description": "The 50th percentile of the end-of-day available balance over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_eod_balance_61d_to_90d": { "description": "The 50th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p50_eod_balance_90d": { "description": "The 50th percentile of the end-of-day available balance over the past 90 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p90_eod_balance_30d": { "description": "The 90th percentile of the end-of-day available balance over the past 30 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p90_eod_balance_31d_to_60d": { "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", "format": "double", "nullable": true, "type": "number" }, "p90_eod_balance_60d": { "description": "The 90th percentile of the end-of-day available balance over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p90_eod_balance_61d_to_90d": { "description": "The 90th percentile of the end-of-day available balance between day 61 and day 90 over the past 60 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p90_eod_balance_90d": { "description": "The 90th percentile of the end-of-day available balance over the past 90 days of the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p95_credit_transactions_amount_28d": { "description": "The 95th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "p95_debit_transactions_amount_28d": { "description": "The 95th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "phone_change_count_28d": { "description": "The number of times the account's phone numbers on file have changed over the past 28 days", "nullable": true, "type": "integer" }, "phone_change_count_90d": { "description": "The number of times the account's phone numbers on file have changed over the past 90 days", "nullable": true, "type": "integer" }, "plaid_connections_count_30d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 30 days", "nullable": true, "type": "integer" }, "plaid_connections_count_7d": { "description": "The number of times the Item has been connected to applications via Plaid over the past 7 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_30d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 30 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_3d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 3 days", "nullable": true, "type": "integer" }, "plaid_non_oauth_authentication_attempts_count_7d": { "description": "The number of non-OAuth authentication attempts via Plaid for this bank account over the past 7 days", "nullable": true, "type": "integer" }, "total_credit_transactions_amount_10d": { "description": "The total credit (inflow) transaction amount over the past 10 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_credit_transactions_amount_30d": { "description": "The total credit (inflow) transaction amount over the past 30 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_credit_transactions_amount_60d": { "description": "The total credit (inflow) transaction amount over the past 60 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_credit_transactions_amount_90d": { "description": "The total credit (inflow) transaction amount over the past 90 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_debit_transactions_amount_10d": { "description": "The total debit (outflow) transaction amount over the past 10 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_debit_transactions_amount_30d": { "description": "The total debit (outflow) transaction amount over the past 30 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_debit_transactions_amount_60d": { "description": "The total debit (outflow) transaction amount over the past 60 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_debit_transactions_amount_90d": { "description": "The total debit (outflow) transaction amount over the past 90 days from the account that will be debited", "format": "double", "nullable": true, "type": "number" }, "total_plaid_connections_count": { "description": "The total number of times the Item has been connected to applications via Plaid", "nullable": true, "type": "integer" }, "transactions_last_updated": { "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.", "format": "date-time", "nullable": true, "type": "string" }, "unauthorized_transactions_count_30d": { "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, "type": "integer" }, "unauthorized_transactions_count_60d": { "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, "type": "integer" }, "unauthorized_transactions_count_7d": { "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, "type": "integer" }, "unauthorized_transactions_count_90d": { "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, "type": "integer" } }, "title": "SignalEvaluateCoreAttributes", "type": "object" }, "SignalEvaluateRequest": { "description": "SignalEvaluateRequest defines the request schema for `/signal/evaluate`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "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.\n\nThis 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.", "type": "string" }, "amount": { "description": "The transaction amount, in USD (e.g. `102.05`)", "format": "double", "type": "number" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "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.", "maxLength": 36, "minLength": 1, "type": "string" }, "client_user_id": { "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`.", "type": "string" }, "default_payment_method": { "description": "The default ACH payment method to complete the transaction. When using a Balance-only ruleset, this field is ignored.\n`SAME_DAY_ACH`: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day.\n`STANDARD_ACH`: Standard ACH by Nacha.\n`MULTIPLE_PAYMENT_METHODS`: If there is no default debit rail or there are multiple payment methods.\nPossible values: `SAME_DAY_ACH`, `STANDARD_ACH`, `MULTIPLE_PAYMENT_METHODS`", "nullable": true, "type": "string" }, "device": { "$ref": "#/components/schemas/SignalDevice" }, "is_recurring": { "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, "type": "boolean" }, "risk_profile_key": { "deprecated": true, "description": "Specifying `risk_profile_key` is deprecated. Please provide `ruleset` instead.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "ruleset_key": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/SignalUser" }, "user_present": { "deprecated": true, "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, "type": "boolean", "x-hidden-from-docs": true } }, "required": [ "access_token", "account_id", "client_transaction_id", "amount" ], "title": "SignalEvaluateRequest", "type": "object" }, "SignalEvaluateResponse": { "additionalProperties": true, "description": "SignalEvaluateResponse defines the response schema for `/signal/evaluate`", "properties": { "core_attributes": { "$ref": "#/components/schemas/SignalEvaluateCoreAttributes" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "risk_profile": { "$ref": "#/components/schemas/RiskProfile" }, "ruleset": { "$ref": "#/components/schemas/Ruleset" }, "scores": { "$ref": "#/components/schemas/SignalScores" }, "warnings": { "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" }, "type": "array" } }, "required": [ "request_id", "scores", "warnings" ], "title": "SignalEvaluateResponse", "type": "object" }, "SignalPaymentMethod": { "description": "The payment method to complete the transaction after the risk assessment. It may be different from the default payment method.\n\n`SAME_DAY_ACH`: Same Day ACH by Nacha. The debit transaction is processed and settled on the same day.\n\n`STANDARD_ACH`: Standard ACH by Nacha.\n\n`MULTIPLE_PAYMENT_METHODS`: if there is no default debit rail or there are multiple payment methods.\n", "enum": [ "SAME_DAY_ACH", "NEXT_DAY_ACH", "STANDARD_ACH", "MULTIPLE_PAYMENT_METHODS", null ], "nullable": true, "type": "string", "x-override-enum-values-shown": [ "SAME_DAY_ACH", "STANDARD_ACH", "MULTIPLE_PAYMENT_METHODS" ] }, "SignalPersonName": { "description": "The user's legal name", "nullable": true, "properties": { "family_name": { "description": "The user's family name / surname", "nullable": true, "type": "string" }, "given_name": { "description": "The user's given name. If the user has a one-word name, it should be provided in this field.", "nullable": true, "type": "string" }, "middle_name": { "description": "The user's middle name", "nullable": true, "type": "string" }, "prefix": { "description": "The user's name prefix (e.g. \"Mr.\")", "nullable": true, "type": "string" }, "suffix": { "description": "The user's name suffix (e.g. \"II\")", "nullable": true, "type": "string" } }, "title": "SignalPersonName", "type": "object" }, "SignalPrepareRequest": { "description": "SignalPrepareRequest defines the request schema for `/signal/prepare`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "title": "SignalPrepareRequest", "type": "object" }, "SignalPrepareResponse": { "additionalProperties": true, "description": "SignalPrepareResponse defines the response schema for `/signal/prepare`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SignalPrepareResponse", "type": "object" }, "SignalReturnReportRequest": { "description": "SignalReturnReportRequest defines the request schema for `/signal/return/report`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "description": "Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate` or `/accounts/balance/get`.", "maxLength": 36, "minLength": 1, "type": "string" }, "return_code": { "description": "Must be a valid ACH return code (e.g. \"R01\")\n\nIf formatted incorrectly, this will result in an [`INVALID_FIELD`](https://plaid.com/docs/errors/invalid-request/#invalid_field) error.", "type": "string" }, "returned_at": { "description": "Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`).", "format": "date-time", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_transaction_id", "return_code" ], "title": "SignalReturnReportRequest", "type": "object" }, "SignalReturnReportResponse": { "additionalProperties": true, "description": "SignalReturnReportResponse defines the response schema for `/signal/return/report`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "SignalReturnReportResponse", "type": "object" }, "SignalScheduleDefaultPaymentMethod": { "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`.\n\n`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.\n\n`STANDARD_ACH`: Standard ACH (as defined by Nacha), typically settled one to three business days after submission.\n\n`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.", "enum": [ "SAME_DAY_ACH", "STANDARD_ACH", "MULTIPLE_PAYMENT_METHODS" ], "title": "SignalScheduleDefaultPaymentMethod", "type": "string" }, "SignalScheduleRecommendation": { "additionalProperties": true, "description": "Conveys information on if a retry is recommended on a given date", "properties": { "date": { "description": "The specific date for submitting the debit entry, formatted in ISO 8601 (e.g., \"2025-01-17\").", "format": "date", "type": "string" }, "rank": { "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, "type": "integer" }, "recommendation": { "$ref": "#/components/schemas/RecommendationString" } }, "title": "SignalScheduleRecommendation", "type": "object" }, "SignalScheduleRequest": { "description": "SignalScheduleRequest defines the request schema for `/signal/schedule`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "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.\n\nThis 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.", "type": "string" }, "amount": { "description": "The transaction amount, in USD (e.g. `102.05`)", "format": "double", "type": "number" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_transaction_id": { "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.", "maxLength": 36, "minLength": 1, "type": "string" }, "default_payment_method": { "$ref": "#/components/schemas/SignalScheduleDefaultPaymentMethod" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "account_id", "client_transaction_id", "amount" ], "title": "SignalScheduleRequest", "type": "object" }, "SignalScheduleResponse": { "additionalProperties": true, "description": "SignalScheduleResponse defines the response schema for `/signal/schedule`", "properties": { "optimal_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.\n\nNOTE: The `default_payment_method` field specified in the request will affect the recommendation, since we're accounting for debit settlement time.\n\nThe 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`.", "format": "date", "nullable": true, "type": "string" }, "recommendations": { "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" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "warnings": { "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" }, "type": "array" } }, "required": [ "optimal_date", "recommendations", "warnings", "request_id" ], "title": "SignalScheduleResponse", "type": "object" }, "SignalScore": { "description": "A score from 1-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood.", "maximum": 99, "minimum": 1, "type": "integer" }, "SignalScores": { "additionalProperties": true, "description": "Risk scoring details broken down by risk category. When using a Balance-only ruleset, this object will not be returned.", "nullable": true, "properties": { "bank_initiated_return_risk": { "$ref": "#/components/schemas/BankInitiatedReturnRisk" }, "customer_initiated_return_risk": { "$ref": "#/components/schemas/CustomerInitiatedReturnRisk" } }, "title": "SignalEvaluateScores", "type": "object" }, "SignalUser": { "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": { "address": { "$ref": "#/components/schemas/SignalAddressData" }, "email_address": { "description": "The user's email address.", "nullable": true, "type": "string" }, "name": { "$ref": "#/components/schemas/SignalPersonName" }, "phone_number": { "description": "The user's phone number, in E.164 format: +{countrycode}{number}. For example: \"+14151234567\"", "nullable": true, "type": "string" } }, "title": "SignalUser", "type": "object" }, "SignalWarning": { "description": "Conveys information about the errors causing missing or stale bank data used to construct the `/signal/evaluate` scores and response", "properties": { "warning_code": { "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.", "type": "string" }, "warning_message": { "description": "A developer-friendly representation of the warning type. This may change over time and is not safe for programmatic use.", "type": "string" }, "warning_type": { "description": "A broad categorization of the warning. Safe for programmatic use.", "type": "string" } }, "title": "SignalWarning", "type": "object" }, "SimulatedTransferSweep": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/TransferSweep" }, { "nullable": true, "type": "object" } ], "description": "A sweep returned from the `/sandbox/transfer/sweep/simulate` endpoint.\nCan be null if there are no transfers to include in a sweep.", "title": "SimulatedTransferSweep", "type": "object" }, "SingleDocumentRiskSignal": { "additionalProperties": true, "description": "Object containing all risk signals and relevant metadata for a single document", "properties": { "document_reference": { "$ref": "#/components/schemas/RiskSignalDocumentReference" }, "risk_signals": { "description": "Array of attributes that indicate whether or not there is fraud risk with a document", "items": { "$ref": "#/components/schemas/DocumentRiskSignal" }, "type": "array" }, "risk_summary": { "$ref": "#/components/schemas/DocumentRiskSummary" } }, "required": [ "document_reference", "risk_signals", "risk_summary" ], "title": "SingleDocumentRiskSignal", "type": "object" }, "Source": { "description": "A type indicating whether a dashboard user, an API-based user, or Plaid last touched this object.", "enum": [ "dashboard", "link", "api", "system" ], "type": "string" }, "SourceUID": { "description": "The identifier provided by the source sanction or watchlist. When one is not provided by the source, this is `null`.", "example": "26192ABC", "nullable": true, "type": "string" }, "StandaloneAccountType": { "additionalProperties": true, "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).", "properties": { "credit": { "$ref": "#/components/schemas/CreditAccount" }, "depository": { "$ref": "#/components/schemas/DepositoryAccount" }, "investment": { "$ref": "#/components/schemas/InvestmentAccountSubtypeStandalone" }, "loan": { "$ref": "#/components/schemas/LoanAccount" }, "other": { "description": "Other or unknown account type.", "type": "string" }, "payroll": { "$ref": "#/components/schemas/PayrollAccount" } }, "required": [ "depository", "credit", "loan", "investment", "other" ], "title": "StandaloneAccountType", "type": "object" }, "StandaloneCurrencyCodeList": { "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" ], "title": "StandaloneCurrencyCodeList", "type": "object" }, "StandaloneInvestmentTransactionBuyType": { "description": "Buying an investment", "properties": { "assignment": { "description": "Assignment of short option holding", "type": "string" }, "buy": { "description": "Purchase to open or increase a position", "type": "string" }, "buy to cover": { "description": "Purchase to close a short position", "type": "string" }, "contribution": { "description": "Inflow of assets into a tax-advantaged account", "type": "string" }, "dividend reinvestment": { "description": "Purchase using proceeds from a cash dividend", "type": "string" }, "interest reinvestment": { "description": "Purchase using proceeds from a cash interest payment", "type": "string" }, "long-term capital gain reinvestment": { "description": "Purchase using long-term capital gain cash proceeds", "type": "string" }, "short-term capital gain reinvestment": { "description": "Purchase using short-term capital gain cash proceeds", "type": "string" } }, "title": "BuyType", "type": "string" }, "StandaloneInvestmentTransactionCashType": { "description": "Activity that modifies a cash position", "properties": { "account fee": { "description": "Fees paid for account maintenance", "type": "string" }, "contribution": { "description": "Inflow of assets into a tax-advantaged account", "type": "string" }, "deposit": { "description": "Inflow of cash into an account", "type": "string" }, "dividend": { "description": "Inflow of cash from a dividend", "type": "string" }, "interest": { "description": "Inflow of cash from interest", "type": "string" }, "legal fee": { "description": "Fees paid for legal charges or services", "type": "string" }, "long-term capital gain": { "description": "Long-term capital gain received as cash", "type": "string" }, "management fee": { "description": "Fees paid for investment management of a mutual fund or other pooled investment vehicle", "type": "string" }, "margin expense": { "description": "Fees paid for maintaining margin debt", "type": "string" }, "non-qualified dividend": { "description": "Inflow of cash from a non-qualified dividend", "type": "string" }, "non-resident tax": { "description": "Taxes paid on behalf of the investor for non-residency in investment jurisdiction", "type": "string" }, "pending credit": { "description": "Pending inflow of cash", "type": "string" }, "pending debit": { "description": "Pending outflow of cash", "type": "string" }, "qualified dividend": { "description": "Inflow of cash from a qualified dividend", "type": "string" }, "short-term capital gain": { "description": "Short-term capital gain received as cash", "type": "string" }, "stock distribution": { "description": "Inflow of stock from a distribution", "type": "string" }, "tax": { "description": "Taxes paid on behalf of the investor", "type": "string" }, "tax withheld": { "description": "Taxes withheld on behalf of the customer", "type": "string" }, "transfer fee": { "description": "Fees incurred for transfer of a holding or account", "type": "string" }, "trust fee": { "description": "Fees related to administration of a trust account", "type": "string" }, "unqualified gain": { "description": "Unqualified capital gain received as cash", "type": "string" }, "withdrawal": { "description": "Outflow of cash from an account", "type": "string" } }, "title": "CashType", "type": "string" }, "StandaloneInvestmentTransactionFeeType": { "description": "Fees on the account, e.g. commission, bookkeeping, options-related.", "properties": { "account fee": { "description": "Fees paid for account maintenance", "type": "string" }, "adjustment": { "description": "Increase or decrease in quantity of item", "type": "string" }, "dividend": { "description": "Inflow of cash from a dividend", "type": "string" }, "interest": { "description": "Inflow of cash from interest", "type": "string" }, "interest receivable": { "description": "Inflow of cash from interest receivable", "type": "string" }, "legal fee": { "description": "Fees paid for legal charges or services", "type": "string" }, "long-term capital gain": { "description": "Long-term capital gain received as cash", "type": "string" }, "management fee": { "description": "Fees paid for investment management of a mutual fund or other pooled investment vehicle", "type": "string" }, "margin expense": { "description": "Fees paid for maintaining margin debt", "type": "string" }, "non-qualified dividend": { "description": "Inflow of cash from a non-qualified dividend", "type": "string" }, "non-resident tax": { "description": "Taxes paid on behalf of the investor for non-residency in investment jurisdiction", "type": "string" }, "qualified dividend": { "description": "Inflow of cash from a qualified dividend", "type": "string" }, "return of principal": { "description": "Repayment of loan principal", "type": "string" }, "short-term capital gain": { "description": "Short-term capital gain received as cash", "type": "string" }, "stock distribution": { "description": "Inflow of stock from a distribution", "type": "string" }, "tax": { "description": "Taxes paid on behalf of the investor", "type": "string" }, "tax withheld": { "description": "Taxes withheld on behalf of the customer", "type": "string" }, "transfer fee": { "description": "Fees incurred for transfer of a holding or account", "type": "string" }, "trust fee": { "description": "Fees related to administration of a trust account", "type": "string" }, "unqualified gain": { "description": "Unqualified capital gain received as cash", "type": "string" } }, "title": "FeeType", "type": "string" }, "StandaloneInvestmentTransactionSellType": { "description": "Selling an investment", "properties": { "distribution": { "description": "Outflow of assets from a tax-advantaged account", "type": "string" }, "exercise": { "description": "Exercise of an option or warrant contract", "type": "string" }, "sell": { "description": "Sell to close or decrease an existing holding", "type": "string" }, "sell short": { "description": "Sell to open a short position", "type": "string" } }, "title": "SellType", "type": "string" }, "StandaloneInvestmentTransactionTransferType": { "description": "Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer", "properties": { "adjustment": { "description": "Increase or decrease in quantity of item", "type": "string" }, "assignment": { "description": "Assignment of short option holding", "type": "string" }, "exercise": { "description": "Exercise of an option or warrant contract", "type": "string" }, "expire": { "description": "Expiration of an option or warrant contract", "type": "string" }, "merger": { "description": "Stock exchanged at a pre-defined ratio as part of a merger between companies", "type": "string" }, "request": { "description": "Request fiat or cryptocurrency to an address or email", "type": "string" }, "send": { "description": "Inflow or outflow of fiat or cryptocurrency to an address or email", "type": "string" }, "spin off": { "description": "Inflow of stock from spin-off transaction of an existing holding", "type": "string" }, "split": { "description": "Inflow of stock from a forward split of an existing holding", "type": "string" }, "trade": { "description": "Trade of one cryptocurrency for another", "type": "string" }, "transfer": { "description": "Movement of assets into or out of an account", "type": "string" } }, "title": "TransferType", "type": "string" }, "StandaloneInvestmentTransactionType": { "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" }, "cancel": { "description": "A cancellation of a pending transaction", "type": "string" }, "cash": { "$ref": "#/components/schemas/StandaloneInvestmentTransactionCashType" }, "fee": { "$ref": "#/components/schemas/StandaloneInvestmentTransactionFeeType" }, "sell": { "$ref": "#/components/schemas/StandaloneInvestmentTransactionSellType" }, "transfer": { "$ref": "#/components/schemas/StandaloneInvestmentTransactionTransferType" } }, "required": [ "buy", "sell", "cancel", "cash", "fee", "transfer" ], "title": "StandaloneInvestmentTransactionType", "type": "object" }, "StatementsAccount": { "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.", "items": { "$ref": "#/components/schemas/StatementsStatement" }, "type": "array" } }, "required": [ "account_id", "account_name", "account_official_name", "account_subtype", "account_type", "account_mask", "statements" ], "title": "StatementsAccount", "type": "object" }, "StatementsDownloadRequest": { "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" ], "title": "StatementsDownloadRequest", "type": "object" }, "StatementsDownloadResponse": { "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.", "format": "binary", "title": "StatementsDownloadResponse", "type": "string" }, "StatementsListRequest": { "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" ], "title": "StatementsListRequest", "type": "object" }, "StatementsListResponse": { "additionalProperties": true, "description": "StatementsListResponse defines the response schema for `/statements/list`", "properties": { "accounts": { "items": { "$ref": "#/components/schemas/StatementsAccount" }, "type": "array" }, "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" ], "title": "StatementsListResponse", "type": "object" }, "StatementsRefreshCompleteResult": { "description": "The result of the statement refresh extraction\n\n`SUCCESS`: The statements were successfully extracted and can be listed via `/statements/list/` and downloaded via `/statements/download/`.\n\n`FAILURE`: The statements failed to be extracted.", "enum": [ "SUCCESS", "FAILURE" ], "type": "string" }, "StatementsRefreshCompleteWebhook": { "additionalProperties": true, "description": "Fired when refreshed statements extraction is completed or failed to be completed. Triggered by calling `/statements/refresh`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "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" }, "result": { "$ref": "#/components/schemas/StatementsRefreshCompleteResult" }, "webhook_code": { "description": "`STATEMENTS_REFRESH_COMPLETE`", "type": "string" }, "webhook_type": { "description": "`STATEMENTS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "result", "environment" ], "title": "StatementsRefreshCompleteWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "result": "SUCCESS", "webhook_code": "STATEMENTS_REFRESH_COMPLETE", "webhook_type": "STATEMENTS" } } }, "StatementsRefreshRequest": { "description": "StatementsRefreshRequest defines the request schema for `/statements/refresh`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "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.", "format": "date", "type": "string" }, "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.", "format": "date", "type": "string" } }, "required": [ "access_token", "start_date", "end_date" ], "title": "StatementsRefreshRequest", "type": "object" }, "StatementsRefreshResponse": { "additionalProperties": true, "description": "StatementsRefreshResponse defines the response schema for `/statements/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "StatementsRefreshResponse", "type": "object" }, "StatementsStatement": { "additionalProperties": true, "description": "A statement's metadata associated with an account", "properties": { "date_posted": { "description": "Date when the statement was posted by the FI, if known", "format": "date", "nullable": true, "type": "string" }, "month": { "description": "Month of the year. Possible values: 1 through 12 (January through December).", "type": "integer" }, "statement_id": { "description": "Plaid's unique identifier for the statement.", "type": "string" }, "year": { "description": "The year of the statement, e.g. 2024.", "minimum": 2010, "type": "integer" } }, "required": [ "statement_id", "month", "year" ], "title": "StatementsStatement", "type": "object" }, "Status": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "StatusCode": { "description": "Status Code.", "nullable": true, "type": "string" }, "StatusDescription": { "description": "Status Description.", "nullable": true, "type": "string" } }, "required": [ "StatusCode", "StatusDescription" ], "title": "Status", "type": "object" }, "Statuses": { "additionalProperties": true, "description": "A collection of STATUS containers.", "properties": { "STATUS": { "$ref": "#/components/schemas/Status" } }, "required": [ "STATUS" ], "title": "Statuses", "type": "object" }, "Strategy": { "description": "An instruction specifying what steps the new Identity Verification attempt should require the user to complete:\n\n\n`reset` - Restart the user at the beginning of the session, regardless of whether they successfully completed part of their previous session.\n\n`incomplete` - Start the new session at the step that the user failed in the previous session, skipping steps that have already been successfully completed.\n\n`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.\n\n`custom` - Start the new session with a custom configuration, specified by the value of the `steps` field\n\nNote:\n\nThe `incomplete` strategy cannot be applied if the session's failing step is `screening` or `risk_check`.\n\nThe `infer` strategy cannot be applied if the session's status is still `active`", "enum": [ "reset", "incomplete", "infer", "custom" ], "type": "string" }, "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.", "example": "123 Main St.", "title": "Street", "type": "string" }, "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.", "example": "Unit 42", "nullable": true, "title": "Street2", "type": "string" }, "StreetNullable": { "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.", "example": "123 Main St.", "nullable": true, "title": "Street", "type": "string" }, "StudentLoan": { "additionalProperties": true, "description": "Contains details about a student loan account", "properties": { "account_id": { "description": "The ID of the account that this liability belongs to. Each account can only contain one liability.", "nullable": true, "type": "string" }, "account_number": { "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, "type": "string" }, "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).", "items": { "format": "date", "type": "string" }, "nullable": true, "type": "array" }, "expected_payoff_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).", "format": "date", "nullable": true, "type": "string" }, "guarantor": { "description": "The guarantor of the student loan.", "nullable": true, "type": "string" }, "interest_rate_percentage": { "description": "The interest rate on the loan as a percentage.", "format": "double", "type": "number" }, "is_overdue": { "description": "`true` if a payment is currently overdue. Availability for this field is limited.", "nullable": true, "type": "boolean" }, "last_payment_amount": { "description": "The amount of the last payment.", "format": "double", "nullable": true, "type": "number" }, "last_payment_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).", "format": "date", "nullable": true, "type": "string" }, "last_statement_balance": { "description": "The total amount owed as of the last statement issued", "format": "double", "nullable": true, "type": "number" }, "last_statement_issue_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).", "format": "date", "nullable": true, "type": "string" }, "loan_name": { "description": "The type of loan, e.g., \"Consolidation Loans\".", "nullable": true, "type": "string" }, "loan_status": { "$ref": "#/components/schemas/StudentLoanStatus" }, "minimum_payment_amount": { "description": "The minimum payment due for the next billing cycle. There are some exceptions:\nSome 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`).\nFirstmark (`ins_116295` ) and Navient (`ins_116248`) will display as $0 if there is an autopay program in effect.", "format": "double", "nullable": true, "type": "number" }, "next_payment_due_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).", "format": "date", "nullable": true, "type": "string" }, "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).\n", "format": "date", "nullable": true, "type": "string" }, "origination_principal_amount": { "description": "The original principal balance of the loan.", "format": "double", "nullable": true, "type": "number" }, "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`.", "format": "double", "nullable": true, "type": "number" }, "payment_reference_number": { "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, "type": "string" }, "pslf_status": { "$ref": "#/components/schemas/PSLFStatus" }, "repayment_plan": { "$ref": "#/components/schemas/StudentRepaymentPlan" }, "sequence_number": { "description": "The sequence number of the student loan. Heartland ECSI (`ins_116948`) does not make this field available.", "nullable": true, "type": "string" }, "servicer_address": { "$ref": "#/components/schemas/ServicerAddressData" }, "ytd_interest_paid": { "description": "The year to date (YTD) interest paid. Availability for this field is limited.", "format": "double", "nullable": true, "type": "number" }, "ytd_principal_paid": { "description": "The year to date (YTD) principal paid. Availability for this field is limited.", "format": "double", "nullable": true, "type": "number" } }, "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" ], "title": "StudentLoan", "type": "object" }, "StudentLoanRepaymentModel": { "additionalProperties": true, "description": "Student loan repayment information used to configure Sandbox test data for the Liabilities product", "properties": { "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" }, "type": { "description": "The only currently supported value for this field is `standard`.", "type": "string" } }, "required": [ "type", "non_repayment_months", "repayment_months" ], "title": "StudentLoanRepaymentModel", "type": "object" }, "StudentLoanStatus": { "additionalProperties": true, "description": "An object representing the status of the student loan", "properties": { "end_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).\n", "format": "date", "nullable": true, "type": "string" }, "type": { "description": "The status type of the student loan", "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" ], "nullable": true, "type": "string" } }, "required": [ "end_date", "type" ], "title": "StudentLoanStatus", "type": "object" }, "StudentRepaymentPlan": { "additionalProperties": true, "description": "An object representing the repayment plan for the student loan", "properties": { "description": { "description": "The description of the repayment plan as provided by the servicer.", "nullable": true, "type": "string" }, "type": { "description": "The type of the repayment plan.", "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 ], "nullable": true, "type": "string" } }, "required": [ "description", "type" ], "title": "StudentRepaymentPlan", "type": "object" }, "SweepDescription": { "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.", "maxLength": 10, "nullable": true, "title": "SweepDescription", "type": "string" }, "SweepFailure": { "additionalProperties": true, "description": "The failure reason if the status for a sweep is `\"failed\"` or `\"returned\"`. Null value otherwise.", "nullable": true, "properties": { "description": { "description": "A human-readable description of the reason for the failure or reversal.", "nullable": true, "type": "string" }, "failure_code": { "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.", "nullable": true, "type": "string" } }, "title": "SweepFailure", "type": "object" }, "SweepStatus": { "description": "The status of a sweep transfer\n\n`\"pending\"` - The sweep is currently pending\n`\"posted\"` - The sweep has been posted\n`\"settled\"` - The sweep has settled. This is the terminal state of a successful credit sweep.\n`\"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.\n`\"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.\n`\"failed\"` - The sweep has failed. This is the terminal state of a failed sweep.", "enum": [ "pending", "posted", "settled", "funds_available", "returned", "failed", null ], "nullable": true, "title": "SweepStatus", "type": "string" }, "SweepTrigger": { "description": "The trigger of the sweep\n\n`\"manual\"` - The sweep is created manually by the customer\n`\"incoming\"` - The sweep is created by incoming funds flow (e.g. Incoming Wire)\n`\"balance_threshold\"` - The sweep is created by balance threshold setting\n`\"automatic_aggregate\"` - The sweep is created by the Plaid automatic aggregation process. These funds did not pass through the Plaid Ledger balance.", "enum": [ "manual", "incoming", "balance_threshold", "automatic_aggregate" ], "nullable": true, "title": "SweepTrigger", "type": "string" }, "SyncUpdatesAvailableWebhook": { "additionalProperties": true, "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`.\n\nAfter receipt of this webhook, the new changes can be fetched for the Item from `/transactions/sync`.\n\nNote 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.\n\nThis 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`.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "historical_update_complete": { "description": "Indicates if historical pull information (maximum transaction history requested, up to 2 years) is available.", "type": "boolean" }, "initial_update_complete": { "description": "Indicates if initial pull information (most recent 30 days of transaction history) is available.", "type": "boolean" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`SYNC_UPDATES_AVAILABLE`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "initial_update_complete", "historical_update_complete", "environment" ], "title": "SyncUpdatesAvailableWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "historical_update_complete": false, "initial_update_complete": true, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "SYNC_UPDATES_AVAILABLE", "webhook_type": "TRANSACTIONS" } } }, "SyntheticFraud": { "additionalProperties": true, "description": "Field containing the data used in determining the outcome of a synthetic fraud risk check.", "nullable": true, "properties": { "risk_level": { "$ref": "#/components/schemas/RiskLevel" } }, "required": [ "risk_level" ], "type": "object", "x-hidden-from-docs": true }, "Taxform": { "additionalProperties": true, "description": "Data about an official document used to report the user's income to the IRS.", "properties": { "doc_id": { "description": "An identifier of the document referenced by the document metadata.", "type": "string" }, "document_type": { "description": "The type of tax document. Currently, the only supported value is `w2`.", "type": "string" }, "w2": { "$ref": "#/components/schemas/W2" } }, "required": [ "document_type" ], "title": "Taxform", "type": "object" }, "TaxpayerID": { "additionalProperties": true, "description": "Taxpayer ID of the individual receiving the paystub.", "properties": { "id_mask": { "description": "ID mask; i.e. last 4 digits of the taxpayer ID", "nullable": true, "type": "string" }, "id_type": { "description": "Type of ID, e.g. 'SSN'", "nullable": true, "type": "string" }, "last_4_digits": { "deprecated": true, "description": "Last 4 digits of unique number of ID.", "maxLength": 4, "minLength": 4, "nullable": true, "type": "string" } }, "title": "TaxpayerID", "type": "object" }, "TaxpayerIdentifier": { "additionalProperties": true, "description": "Information about the Taxpayer identification values assigned to the individual or legal entity.", "properties": { "TaxpayerIdentifierType": { "$ref": "#/components/schemas/TaxpayerIdentifierType" }, "TaxpayerIdentifierValue": { "description": "The value of the taxpayer identifier as assigned by the IRS to the individual or legal entity.", "nullable": true, "type": "string" } }, "required": [ "TaxpayerIdentifierType", "TaxpayerIdentifierValue" ], "title": "TaxpayerIdentifier", "type": "object" }, "TaxpayerIdentifierType": { "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" ], "nullable": true, "title": "TaxpayerIdentifierType", "type": "string" }, "TaxpayerIdentifiers": { "additionalProperties": true, "description": "The collection of `TAXPAYER_IDENTIFICATION` elements", "properties": { "TAXPAYER_IDENTIFIER": { "$ref": "#/components/schemas/TaxpayerIdentifier" } }, "required": [ "TAXPAYER_IDENTIFIER" ], "title": "TaxpayerIdentifiers", "type": "object" }, "ThirdPartyUserToken": { "description": "The third-party user token associated with the requested User data.", "title": "ThirdPartyUserToken", "type": "string", "x-hidden-from-docs": true }, "Timestamp": { "description": "An ISO8601 formatted timestamp.", "example": "2020-07-24T03:26:02Z", "format": "date-time", "title": "Timestamp", "type": "string" }, "TimestampNullable": { "description": "An ISO8601 formatted timestamp.", "example": "2020-07-24T03:26:02Z", "format": "date-time", "nullable": true, "title": "Timestamp", "type": "string" }, "Total": { "additionalProperties": true, "deprecated": true, "description": "An object representing both the current pay period and year to date amount for a category.", "properties": { "canonical_description": { "$ref": "#/components/schemas/TotalCanonicalDescription" }, "current_pay": { "$ref": "#/components/schemas/Pay" }, "description": { "description": "Text of the line item as printed on the paystub.", "nullable": true, "type": "string" }, "ytd_pay": { "$ref": "#/components/schemas/Pay" } }, "title": "Total", "type": "object" }, "TotalCanonicalDescription": { "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 ], "nullable": true, "type": "string" }, "TotalInflowAmount": { "additionalProperties": true, "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.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalInflowAmount30d": { "additionalProperties": true, "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.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalInflowAmount60d": { "additionalProperties": true, "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.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalInflowAmount90d": { "additionalProperties": true, "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.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalMonthlyIncomeInsights": { "additionalProperties": true, "description": "Details about the total monthly income", "properties": { "baseline_amount": { "deprecated": true, "description": "The aggregated income for the 30 days prior to subscription date", "nullable": true, "type": "number", "x-hidden-from-docs": true }, "current_amount": { "description": "The aggregated income of the last 30 days", "type": "number" } }, "required": [ "current_amount" ], "title": "TotalMonthlyIncomeInsights", "type": "object" }, "TotalOutflowAmount": { "additionalProperties": true, "description": "Total amount of credit transactions into the account in the time period of the report. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalOutflowAmount30d": { "additionalProperties": true, "description": "Total amount of credit transactions into the account in the last 30 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalOutflowAmount60d": { "additionalProperties": true, "description": "Total amount of credit transactions into the account in the last 60 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalOutflowAmount90d": { "additionalProperties": true, "description": "Total amount of credit transactions into the account in the last 90 days. This field will be empty for non-depository accounts. This field only takes into account USD transactions from the account.", "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportInflowAmount": { "additionalProperties": true, "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.", "example": { "amount": -2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportInflowAmount30d": { "additionalProperties": true, "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.", "example": { "amount": -1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportInflowAmount60d": { "additionalProperties": true, "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.", "example": { "amount": -2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportInflowAmount90d": { "additionalProperties": true, "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.", "example": { "amount": -2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportOutflowAmount": { "additionalProperties": true, "description": "Total amount of credit transactions into the report's accounts in the time period of the report. This field only takes into account USD transactions from the accounts.", "example": { "amount": 2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportOutflowAmount30d": { "additionalProperties": true, "description": "Total amount of credit transactions into the report's accounts in the last 30 days. This field only takes into account USD transactions from the accounts.", "example": { "amount": 1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportOutflowAmount60d": { "additionalProperties": true, "description": "Total amount of credit transactions into the report's accounts in the last 60 days. This field only takes into account USD transactions from the accounts.", "example": { "amount": 2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "TotalReportOutflowAmount90d": { "additionalProperties": true, "description": "Total amount of credit transactions into the report's accounts in the last 90 days. This field only takes into account USD transactions from the accounts.", "example": { "amount": 2500, "iso_currency_code": "USD", "unofficial_currency_code": null }, "nullable": true, "properties": { "amount": { "description": "Value of amount with up to 2 decimal places.", "type": "number" }, "iso_currency_code": { "$ref": "#/components/schemas/CreditIsoCurrencyCode" }, "unofficial_currency_code": { "$ref": "#/components/schemas/CreditUnofficialCurrencyCode" } }, "required": [ "amount", "iso_currency_code", "unofficial_currency_code" ], "type": "object" }, "Transaction": { "allOf": [ { "$ref": "#/components/schemas/TransactionBase" }, { "additionalProperties": true, "properties": { "authorized_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` ).", "format": "date", "nullable": true, "type": "string" }, "authorized_datetime": { "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.\n\nThis 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.", "format": "date-time", "nullable": true, "type": "string" }, "business_finance_category": { "$ref": "#/components/schemas/BusinessFinanceCategory" }, "client_customization": { "$ref": "#/components/schemas/ClientCustomization" }, "counterparties": { "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" }, "type": "array" }, "datetime": { "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.\n\nThis 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.", "format": "date-time", "nullable": true, "type": "string" }, "merchant_entity_id": { "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, "type": "string" }, "payment_channel": { "description": "The channel used to make a payment.\n`online:` transactions that took place online.\n\n`in store:` transactions that were made at a physical location.\n\n`other:` transactions that relate to banks, e.g. fees or deposits.\n\nThis field replaces the `transaction_type` field.\n", "enum": [ "online", "in store", "other" ], "type": "string" }, "personal_finance_category": { "$ref": "#/components/schemas/PersonalFinanceCategory" }, "personal_finance_category_icon_url": { "description": "The URL of an icon associated with the primary personal finance category. The icon will always be 100\u00d7100 pixel PNG file.", "type": "string" }, "transaction_code": { "$ref": "#/components/schemas/TransactionCode" } }, "required": [ "account_owner", "pending_transaction_id", "payment_channel", "payment_meta", "name", "location", "authorized_date", "authorized_datetime", "datetime", "transaction_code" ], "type": "object" } ], "description": "A representation of a transaction", "title": "Transaction", "x-examples": {} }, "TransactionBase": { "additionalProperties": true, "description": "A representation of a transaction", "properties": { "account_id": { "description": "The ID of the account in which this transaction occurred.", "type": "string" }, "account_owner": { "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, "type": "string" }, "amount": { "description": "The settled value of the transaction, denominated in the transactions's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. For all products except Income: Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative. For Income endpoints, values are positive when representing income.", "format": "double", "type": "number" }, "category": { "deprecated": 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).\n\nAll Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization.\n\nIf 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.", "items": { "type": "string" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "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).\n\nAll Transactions implementations are recommended to use the new `personal_finance_category` instead of `category`, as it provides greater accuracy and more meaningful categorization.\n\nIf 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, "type": "string", "x-hidden-from-docs": true }, "check_number": { "description": "The check number of the transaction. This field is only populated for check transactions.", "nullable": true, "type": "string" }, "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.", "format": "date", "type": "string" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.", "nullable": true, "type": "string" }, "location": { "$ref": "#/components/schemas/Location" }, "logo_url": { "description": "The URL of a logo associated with this transaction, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "merchant_name": { "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, "type": "string" }, "name": { "deprecated": true, "description": "The merchant name or transaction description.\n\nNote: 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.\n\nIf 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.", "type": "string" }, "original_description": { "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, "type": "string" }, "payment_meta": { "$ref": "#/components/schemas/PaymentMeta" }, "pending": { "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.", "type": "boolean" }, "pending_transaction_id": { "description": "The ID of a posted transaction's associated pending transaction, where applicable. Not all institutions provide pending transactions.", "nullable": true, "type": "string" }, "transaction_id": { "description": "The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.", "type": "string" }, "transaction_type": { "deprecated": true, "description": "Please use the `payment_channel` field, `transaction_type` will be deprecated in the future.\n\n`digital:` transactions that took place online.\n\n`place:` transactions that were made at a physical location.\n\n`special:` transactions that relate to banks, e.g. fees or deposits.\n\n`unresolved:` transactions that do not fit into the other three types.\n", "enum": [ "digital", "place", "special", "unresolved" ], "type": "string" }, "unofficial_currency_code": { "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.\n\nSee 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, "type": "string" }, "website": { "description": "The website associated with this transaction, if available.", "nullable": true, "type": "string" } }, "required": [ "transaction_id", "pending", "date", "unofficial_currency_code", "iso_currency_code", "amount", "account_id" ], "title": "TransactionBase", "type": "object", "x-examples": {} }, "TransactionCode": { "description": "An identifier classifying the transaction type.\n\nThis 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`.\n\n`adjustment:` Bank adjustment\n\n`atm:` Cash deposit or withdrawal via an automated teller machine\n\n`bank charge:` Charge or fee levied by the institution\n\n`bill payment`: Payment of a bill\n\n`cash:` Cash deposit or withdrawal\n\n`cashback:` Cash withdrawal while making a debit card purchase\n\n`cheque:` Document ordering the payment of money to another person or organization\n\n`direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval\n\n`interest:` Interest earned or incurred\n\n`payment:` One-off outbound payment not classified as a bill payment, direct debit, or standing order\n\n`purchase:` Purchase made with a debit or credit card\n\n`refund:` Merchant credit or return, such as a refund of a prior purchase\n\n`standing order:` Payment instructed by the account holder to a third party at a regular interval\n\n`transfer:` Transfer of money between accounts", "enum": [ "adjustment", "atm", "bank charge", "bill payment", "cash", "cashback", "cheque", "direct debit", "interest", "payment", "purchase", "refund", "standing order", "transfer", null ], "nullable": true, "title": "transaction_code", "type": "string" }, "TransactionCounterparty": { "additionalProperties": true, "description": "The counterparty, such as the merchant or financial institution, is extracted by Plaid from the raw description.", "properties": { "account_numbers": { "$ref": "#/components/schemas/CounterpartyNumbers" }, "confidence_level": { "description": "A description of how confident we are that the provided counterparty is involved in the transaction.\n\n`VERY_HIGH`: We recognize this counterparty and we are more than 98% confident that it is involved in this transaction.\n`HIGH`: We recognize this counterparty and we are more than 90% confident that it is involved in this transaction.\n`MEDIUM`: We are moderately confident that this counterparty was involved in this transaction, but some details may differ from our records.\n`LOW`: We didn't find a matching counterparty in our records, so we are returning a cleansed name parsed out of the request description.\n`UNKNOWN`: We don't know the confidence level for this counterparty.", "nullable": true, "type": "string" }, "entity_id": { "description": "A unique, stable, Plaid-generated ID that maps to the counterparty.", "nullable": true, "type": "string" }, "logo_url": { "description": "The URL of a logo associated with the counterparty, if available. The logo will always be 100\u00d7100 pixel PNG file.", "nullable": true, "type": "string" }, "name": { "description": "The name of the counterparty, such as the merchant or the financial institution, as extracted by Plaid from the raw description.", "type": "string" }, "type": { "$ref": "#/components/schemas/CounterpartyType" }, "website": { "description": "The website associated with the counterparty.", "nullable": true, "type": "string" } }, "required": [ "name", "type", "logo_url", "website" ], "title": "Counterparty", "type": "object" }, "TransactionData": { "additionalProperties": true, "description": "Information about the matched direct deposit transaction used to verify a user's payroll information.", "nullable": true, "properties": { "account_id": { "description": "A unique identifier for the end user's account.", "type": "string" }, "amount": { "description": "The amount of the transaction.", "format": "double", "type": "number" }, "date": { "description": "The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (\"yyyy-mm-dd\").", "format": "date", "type": "string" }, "description": { "description": "The description of the transaction.", "type": "string" }, "transaction_id": { "description": "A unique identifier for the transaction.", "type": "string" } }, "required": [ "description", "amount", "date", "account_id", "transaction_id" ], "title": "TransactionData", "type": "object" }, "TransactionOverride": { "additionalProperties": true, "description": "Data to populate as test transaction data. If not specified, random transactions will be generated instead.", "properties": { "amount": { "description": "The transaction amount. Can be negative.", "format": "double", "type": "number" }, "currency": { "description": "The ISO-4217 format currency code for the transaction.", "type": "string" }, "date_posted": { "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.", "format": "date", "type": "string" }, "date_transacted": { "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.", "format": "date", "type": "string" }, "description": { "description": "The transaction description.", "type": "string" } }, "required": [ "date_transacted", "date_posted", "amount", "description" ], "title": "TransactionOverride", "type": "object" }, "TransactionStream": { "additionalProperties": true, "description": "A grouping of related transactions", "properties": { "account_id": { "description": "The ID of the account to which the stream belongs", "type": "string" }, "average_amount": { "$ref": "#/components/schemas/TransactionStreamAmount" }, "category": { "deprecated": true, "description": "A hierarchical array of the categories to which this transaction belongs. See [Categories](https://plaid.com/docs/api/products/transactions/#categoriesget).\n\nAll 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" }, "nullable": true, "type": "array", "x-hidden-from-docs": true }, "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).\n\nAll implementations are encouraged to use the new `personal_finance_category` instead of `category`. `personal_finance_category` provides more meaningful categorization and greater accuracy.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "description": { "description": "A description of the transaction stream.", "type": "string" }, "first_date": { "description": "The posted date of the earliest transaction in the stream.", "format": "date", "type": "string" }, "frequency": { "$ref": "#/components/schemas/RecurringTransactionFrequency" }, "is_active": { "description": "Indicates whether the transaction stream is still live.", "type": "boolean" }, "is_user_modified": { "deprecated": true, "description": "As the ability to modify transactions streams has been discontinued, this field will always be `false`.", "type": "boolean" }, "last_amount": { "$ref": "#/components/schemas/TransactionStreamAmount" }, "last_date": { "description": "The posted date of the latest transaction in the stream.", "format": "date", "type": "string" }, "last_user_modified_datetime": { "deprecated": true, "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", "type": "string", "x-hidden-from-docs": true }, "merchant_name": { "description": "The merchant associated with the transaction stream.", "nullable": true, "type": "string" }, "personal_finance_category": { "$ref": "#/components/schemas/PersonalFinanceCategory" }, "predicted_next_date": { "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, "type": "string" }, "status": { "$ref": "#/components/schemas/TransactionStreamStatus" }, "stream_id": { "description": "A unique id for the stream", "type": "string" }, "transaction_ids": { "description": "An array of Plaid transaction IDs belonging to the stream, sorted by posted date.", "items": { "type": "string" }, "type": "array" } }, "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" ], "title": "TransactionStream", "type": "object", "x-examples": {} }, "TransactionStreamAmount": { "additionalProperties": true, "description": "Object with data pertaining to an amount on the transaction stream.", "properties": { "amount": { "description": "Represents the numerical value of an amount.", "format": "double", "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.\n\nSee 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, "type": "string" }, "unofficial_currency_code": { "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, "type": "string" } }, "title": "TransactionStreamAmount", "type": "object" }, "TransactionStreamStatus": { "description": "The current status of the transaction stream.\n\n`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).\n\n`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`.\n\n`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.\n\n`UNKNOWN`: A stream is assigned an `UNKNOWN` status when none of the other statuses are applicable.", "enum": [ "UNKNOWN", "MATURE", "EARLY_DETECTION", "TOMBSTONED" ], "title": "TransactionStreamStatus", "type": "string" }, "TransactionsCategoryRule": { "description": "A representation of a transactions category rule.", "properties": { "created_at": { "description": "Date and time when a rule was created in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ).\n", "format": "date-time", "type": "string" }, "id": { "description": "A unique identifier of the rule created", "type": "string" }, "pfc_detailed_category": { "$ref": "#/components/schemas/PfcDetailedCategory" }, "pfc_primary_category": { "$ref": "#/components/schemas/PfcPrimaryCategory" }, "rule_details": { "$ref": "#/components/schemas/TransactionsRuleDetails" }, "updated_at": { "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` ).\n", "format": "date-time", "type": "string" }, "user_id": { "description": "The Plaid-generated unique identifier for the end user this rule belongs to.", "type": "string" } }, "title": "TransactionsCategoryRule", "type": "object", "x-examples": {} }, "TransactionsEnhanceGetRequest": { "description": "TransactionsEnhanceGetRequest defines the request schema for `/beta/transactions/v1/enhance`.", "properties": { "account_type": { "description": "The type of account for the requested transactions (`depository` or `credit`).", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transactions": { "description": "An array of raw transactions to be enhanced.", "items": { "$ref": "#/components/schemas/ClientProvidedRawTransaction" }, "type": "array" } }, "required": [ "account_type", "transactions" ], "type": "object" }, "TransactionsEnhanceGetResponse": { "additionalProperties": true, "description": "TransactionsEnhanceGetResponse defines the response schema for `/beta/transactions/v1/enhance`.", "properties": { "enhanced_transactions": { "description": "An array of enhanced transactions.", "items": { "$ref": "#/components/schemas/ClientProvidedEnhancedTransaction" }, "type": "array" } }, "required": [ "enhanced_transactions" ], "type": "object", "x-examples": {} }, "TransactionsEnrichRequest": { "description": "TransactionsEnrichRequest defines the request schema for `/transactions/enrich`.", "properties": { "account_type": { "description": "The account type for the requested transactions (either `depository` or `credit`).", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/TransactionsEnrichRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transactions": { "description": "An array of transaction objects to be enriched by Plaid. Maximum of 100 transactions per request.", "items": { "$ref": "#/components/schemas/ClientProvidedTransaction" }, "type": "array" } }, "required": [ "account_type", "transactions" ], "type": "object" }, "TransactionsEnrichRequestOptions": { "description": "An optional object to be used with the request.", "properties": { "include_legacy_category": { "default": false, "description": "Include `legacy_category` and `legacy_category_id` in the response (in addition to the default `personal_finance_category`).\n\nCategories 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).", "type": "boolean" }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" } }, "type": "object" }, "TransactionsEnrichResponse": { "additionalProperties": true, "description": "TransactionsEnrichResponse defines the response schema for `/transactions/enrich`.", "properties": { "enriched_transactions": { "description": "A list of enriched transactions.", "items": { "$ref": "#/components/schemas/ClientProvidedEnrichedTransaction" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "enriched_transactions" ], "type": "object", "x-examples": {} }, "TransactionsGetRequest": { "description": "TransactionsGetRequest defines the request schema for `/transactions/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "end_date": { "description": "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "options": { "$ref": "#/components/schemas/TransactionsGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.", "format": "date", "type": "string" } }, "required": [ "access_token", "start_date", "end_date" ], "type": "object" }, "TransactionsGetRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "account_ids": { "description": "A list of `account_ids` to retrieve for the Item\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" }, "count": { "default": 100, "description": "The number of transactions to fetch.", "exclusiveMinimum": false, "maximum": 500, "minimum": 1, "type": "integer" }, "days_requested": { "default": 90, "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.\n\nIf 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.\n\nIf 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.\n\nCustomers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results.", "maximum": 730, "minimum": 1, "type": "integer" }, "include_logo_and_counterparty_beta": { "default": false, "deprecated": true, "description": "Counterparties and extra merchant fields are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "include_original_description": { "default": false, "description": "Include the raw unparsed transaction description from the financial institution.", "nullable": true, "type": "boolean" }, "include_personal_finance_category": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "include_personal_finance_category_beta": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "offset": { "default": 0, "description": "The number of transactions to skip. The default value is 0.", "minimum": 0, "type": "integer" }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" } }, "type": "object" }, "TransactionsGetResponse": { "additionalProperties": true, "description": "TransactionsGetResponse defines the response schema for `/transactions/get`", "properties": { "accounts": { "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" }, "type": "array" }, "item": { "$ref": "#/components/schemas/Item" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "total_transactions": { "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.", "type": "integer" }, "transactions": { "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" }, "type": "array" } }, "required": [ "accounts", "transactions", "total_transactions", "item", "request_id" ], "type": "object" }, "TransactionsRecurringCreateInput": { "description": "TransactionsRecurringCreateInput defines a single input to the `/transactions/recurring/streams/create` endpoint.", "properties": { "transaction_ids": { "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" }, "type": "array" } }, "required": [ "stream_ids" ], "type": "object" }, "TransactionsRecurringCreateRequest": { "description": "TransactionsRecurringCreateRequest defined the request schema for `/transactions/recurring/streams/create` endpoint.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "inputs": { "description": "A list of all the operations to be performed. This will either all succeed or all fail.", "items": { "$ref": "#/components/schemas/TransactionsRecurringCreateInput" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "inputs" ], "type": "object" }, "TransactionsRecurringCreateResponse": { "additionalProperties": true, "description": "TransactionsRecurringCreateResponse defines the response schema for the `/transactions/recurring/streams/create` endpoint.", "properties": { "added_streams": { "description": "Streams created as a result of the operation.", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "modified_streams": { "description": "Other streams with transactions removed from them as a result of the operation (in no particular order).", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "removed_stream_ids": { "description": "The ids of streams that are no longer qualified as recurring transaction streams (in no particular order).", "items": { "description": "ID of the removed stream", "type": "string" }, "type": "array" } }, "required": [ "added_streams" ], "type": "object" }, "TransactionsRecurringGetRequest": { "description": "TransactionsRecurringGetRequest defines the request schema for `/transactions/recurring/get`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_ids": { "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.\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "items": { "type": "string" }, "type": "array" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "options": { "$ref": "#/components/schemas/TransactionsRecurringGetRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "TransactionsRecurringGetRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "include_personal_finance_category": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" } }, "type": "object" }, "TransactionsRecurringGetResponse": { "additionalProperties": true, "description": "TransactionsRecurringGetResponse defines the response schema for `/transactions/recurring/get`", "properties": { "inflow_streams": { "description": "An array of depository transaction streams.", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "outflow_streams": { "description": "An array of expense transaction streams.", "items": { "$ref": "#/components/schemas/TransactionStream" }, "type": "array" }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "updated_datetime": { "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", "format": "date-time", "type": "string" } }, "required": [ "inflow_streams", "outflow_streams", "updated_datetime", "request_id" ], "type": "object" }, "TransactionsRecurringMergeInput": { "description": "TransactionsRecurringMergeInput defines a single input to the `/transactions/recurring/streams/merge` endpoint.", "properties": { "stream_ids": { "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" }, "type": "array" } }, "required": [ "stream_ids" ], "type": "object" }, "TransactionsRecurringMergeRequest": { "description": "TransactionsRecurringMergeRequest defined the request schema for `/transactions/recurring/streams/merge` endpoint.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "inputs": { "description": "A list of all the operations to be performed. This will either all succeed or all fail.", "items": { "$ref": "#/components/schemas/TransactionsRecurringMergeInput" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "inputs" ], "type": "object" }, "TransactionsRecurringMergeResponse": { "additionalProperties": true, "description": "TransactionsRecurringMergeResponse defines the response schema for the `/transactions/recurring/streams/merge` endpoint.", "properties": { "modified_streams": { "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" }, "type": "array" }, "removed_stream_ids": { "description": "The ids of streams that are no longer qualified as recurring transaction streams (in no particular order).", "items": { "description": "ID of the removed stream", "type": "string" }, "type": "array" } }, "required": [ "modified_streams" ], "type": "object" }, "TransactionsRecurringUpdateInput": { "description": "TransactionsRecurringUpdateInput defines a single operation to the `/transactions/recurring/streams/update` endpoint.", "properties": { "stream_id": { "description": "ID of the stream that all the transactions will be added in to.", "type": "string" }, "transaction_ids": { "description": "IDs of all the transactions that will be added into the stream. If any transaction currently exist in another stream, it will be removed from the other stream.", "items": { "type": "string" }, "type": "array" } }, "required": [ "stream_id", "transaction_ids" ], "type": "object" }, "TransactionsRecurringUpdateRequest": { "description": "TransactionsRecurringUpdateRequest defined the request schema for `/transactions/recurring/streams/update` endpoint.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "inputs": { "description": "A list of all the operations to be performed. This will either all succeed or all fail.", "items": { "$ref": "#/components/schemas/TransactionsRecurringUpdateInput" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "inputs" ], "type": "object" }, "TransactionsRecurringUpdateResponse": { "additionalProperties": true, "description": "TransactionsRecurringUpdateResponse defines the response schema for the `/transactions/recurring/streams/update` endpoint.", "properties": { "modified_streams": { "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" }, "type": "array" }, "removed_stream_ids": { "description": "The ids of streams that are no longer qualified as recurring transaction streams (in no particular order).", "items": { "description": "ID of the removed stream", "type": "string" }, "type": "array" } }, "required": [ "modified_streams" ], "type": "object" }, "TransactionsRefreshRequest": { "description": "TransactionsRefreshRequest defines the request schema for `/transactions/refresh`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "TransactionsRefreshResponse": { "additionalProperties": true, "description": "TransactionsRefreshResponse defines the response schema for `/transactions/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "TransactionsRemovedWebhook": { "additionalProperties": true, "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.\n\nThis 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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "removed_transactions": { "description": "An array of `transaction_ids` corresponding to the removed transactions", "items": { "type": "string" }, "type": "array" }, "webhook_code": { "description": "`TRANSACTIONS_REMOVED`", "type": "string" }, "webhook_type": { "description": "`TRANSACTIONS`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "removed_transactions", "item_id", "environment" ], "title": "TransactionsRemovedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "removed_transactions": [ "yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6", "kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no" ], "webhook_code": "TRANSACTIONS_REMOVED", "webhook_type": "TRANSACTIONS" } } }, "TransactionsRuleDetails": { "description": "A representation of transactions rule details.", "properties": { "field": { "$ref": "#/components/schemas/TransactionsRuleField" }, "query": { "description": "For `TRANSACTION_ID` field, provide `transaction_id`. For `NAME` field, provide a string pattern.\n", "type": "string" }, "type": { "$ref": "#/components/schemas/TransactionsRuleType" } }, "required": [ "field", "type", "query" ], "title": "TransactionsRuleDetails", "type": "object", "x-examples": {} }, "TransactionsRuleField": { "description": "Transaction field for which the rule is defined.", "enum": [ "TRANSACTION_ID", "MERCHANT_NAME" ], "title": "TransactionsRuleField", "type": "string" }, "TransactionsRuleType": { "description": "Transaction rule's match type. For `TRANSACTION_ID` field, `EXACT_MATCH` is available.\nMatches are case sensitive.\n", "enum": [ "EXACT_MATCH", "SUBSTRING_MATCH" ], "title": "TransactionsRuleType", "type": "string" }, "TransactionsRulesCreateRequest": { "description": "TransactionsRulesCreateRequest defines the request schema for `beta/transactions/rules/v1/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "description": "A unique ID representing the end user. This ID is used to associate rules with a specific user.", "type": "string" }, "pfc_detailed_category": { "$ref": "#/components/schemas/PfcDetailedCategory" }, "pfc_primary_category": { "$ref": "#/components/schemas/PfcPrimaryCategory" }, "rule_details": { "$ref": "#/components/schemas/TransactionsRuleDetails" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_user_id", "pfc_primary_category", "pfc_detailed_category", "rule_details" ], "type": "object" }, "TransactionsRulesCreateResponse": { "additionalProperties": true, "description": "TransactionsRulesCreateResponse defines the response schema for `/beta/transactions/rules/v1/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "rule": { "$ref": "#/components/schemas/TransactionsCategoryRule" } }, "required": [ "rule", "request_id" ], "type": "object" }, "TransactionsRulesListRequest": { "description": "TransactionsRulesListRequest defines the request schema for `/beta/transactions/rules/v1/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "description": "A unique ID representing the end user whose rules should be listed.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_user_id" ], "type": "object" }, "TransactionsRulesListResponse": { "additionalProperties": true, "description": "TransactionsRulesListResponse defines the response schema for `/beta/transactions/rules/v1/list`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "rules": { "description": "A list of the user's transaction rules", "items": { "$ref": "#/components/schemas/TransactionsCategoryRule" }, "type": "array" } }, "required": [ "rules", "request_id" ], "type": "object" }, "TransactionsRulesRemoveRequest": { "description": "TransactionsRulesRemoveRequest defines the request schema for `/beta/transactions/rules/v1/remove`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "description": "A unique ID representing the end user the rule belongs to.", "type": "string" }, "rule_id": { "description": "A rule's unique identifier", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_user_id", "rule_id" ], "type": "object" }, "TransactionsRulesRemoveResponse": { "additionalProperties": true, "description": "TransactionsRulesRemoveResponse defines the response schema for `/beta/transactions/rules/v1/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "TransactionsSyncRequest": { "description": "TransactionsSyncRequest defines the request schema for `/transactions/sync`", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 100, "description": "The number of transaction updates to fetch.", "exclusiveMinimum": false, "maximum": 500, "minimum": 1, "type": "integer" }, "cursor": { "description": "The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update.\nIf 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`.\n\nThe upper-bound length of this cursor is 256 characters of base64.", "type": "string" }, "options": { "$ref": "#/components/schemas/TransactionsSyncRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token" ], "type": "object" }, "TransactionsSyncRequestOptions": { "description": "An optional object to be used with the request. If specified, `options` must not be `null`.", "properties": { "account_id": { "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`.\n\nIf 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.\n\nNote: An error will be returned if a provided `account_id` is not associated with the Item.", "type": "string" }, "days_requested": { "default": 90, "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.\n\nIf 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.\n\nIf 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.\n\nCustomers using [Recurring Transactions](https://plaid.com/docs/api/products/transactions/#transactionsrecurringget) should request at least 180 days of history for optimal results.", "maximum": 730, "minimum": 1, "type": "integer" }, "include_logo_and_counterparty_beta": { "default": false, "deprecated": true, "description": "Counterparties and extra merchant fields are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "include_original_description": { "default": false, "description": "Include the raw unparsed transaction description from the financial institution.", "nullable": true, "type": "boolean" }, "include_personal_finance_category": { "default": false, "deprecated": true, "description": "Personal finance categories are now returned by default.", "type": "boolean", "x-hidden-from-docs": true }, "personal_finance_category_version": { "$ref": "#/components/schemas/PersonalFinanceCategoryVersion" } }, "type": "object" }, "TransactionsSyncResponse": { "additionalProperties": true, "description": "TransactionsSyncResponse defines the response schema for `/transactions/sync`", "properties": { "accounts": { "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" }, "type": "array" }, "added": { "description": "Transactions that have been added to the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/Transaction" }, "type": "array" }, "has_more": { "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.", "type": "boolean" }, "modified": { "description": "Transactions that have been modified on the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/Transaction" }, "type": "array" }, "next_cursor": { "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.\n\nIf `account_id` is included in the request, the returned cursor will reflect updates for that specific account.", "type": "string" }, "removed": { "description": "Transactions that have been removed from the Item since `cursor` ordered by ascending last modified time.", "items": { "$ref": "#/components/schemas/RemovedTransaction" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "transactions_update_status": { "$ref": "#/components/schemas/TransactionsUpdateStatus" } }, "required": [ "accounts", "added", "modified", "removed", "next_cursor", "has_more", "request_id", "transactions_update_status" ], "type": "object" }, "TransactionsUpdateStatus": { "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.\n\n`TRANSACTIONS_UPDATE_STATUS_UNKNOWN`: Unable to fetch transactions update status for Item.\n`NOT_READY`: The Item is pending transaction pull.\n`INITIAL_UPDATE_COMPLETE`: Initial pull for the Item is complete, historical pull is pending.\n`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" ], "title": "TransactionsUpdateStatus", "type": "string" }, "TransactionsUserInsightsGetRequest": { "description": "TransactionsUserInsightsGetRequest defines the request schema for `/beta/transactions/user_insights/v1/get`.", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "description": "A unique client-provided `client_user_id` to retrieve insights for.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "client_user_id" ], "type": "object" }, "TransactionsUserInsightsGetResponse": { "additionalProperties": true, "description": "TransactionsUserInsightsGetResponse defines the response schema for `/beta/transactions/user_insights/v1/get`.", "properties": { "category_insights": { "$ref": "#/components/schemas/CategoryInsights" }, "counterparty_insights": { "$ref": "#/components/schemas/CounterpartyInsights" }, "recurring_transactions": { "$ref": "#/components/schemas/RecurringTransactions" }, "user_data_overview": { "$ref": "#/components/schemas/UserDataOverview" } }, "required": [ "user_data_overview" ], "type": "object" }, "Transfer": { "additionalProperties": true, "description": "Represents a transfer within the Transfers API.", "properties": { "account_id": { "description": "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.", "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "authorization_id": { "$ref": "#/components/schemas/TransferAuthorizationID" }, "cancellable": { "description": "When `true`, you can still cancel this transfer.", "type": "boolean" }, "created": { "description": "The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z`", "format": "date-time", "type": "string" }, "credit_funds_source": { "allOf": [ { "$ref": "#/components/schemas/TransferCreditFundsSource" } ], "deprecated": true }, "description": { "description": "The description of the transfer.", "type": "string" }, "expected_funds_available_date": { "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, "type": "string" }, "expected_settlement_date": { "deprecated": true, "description": "Deprecated for Plaid Ledger clients, use `expected_funds_available_date` instead.", "format": "date", "nullable": true, "type": "string" }, "expected_sweep_settlement_schedule": { "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" }, "type": "array" }, "facilitator_fee": { "$ref": "#/components/schemas/TransferFacilitatorFee" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponseNullable" }, "guarantee_decision": { "allOf": [ { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecision" } ], "deprecated": true }, "guarantee_decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale" }, "guarantee_details": { "$ref": "#/components/schemas/TransferGuaranteeDetails" }, "id": { "$ref": "#/components/schemas/TransferID" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "ledger_id": { "$ref": "#/components/schemas/TransferLedgerID" }, "metadata": { "$ref": "#/components/schemas/TransferMetadata" }, "network": { "$ref": "#/components/schemas/TransferNetwork" }, "network_trace_id": { "$ref": "#/components/schemas/TransferNetworkTraceID" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account that was used for this transfer.", "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "recurring_transfer_id": { "description": "The id of the recurring transfer if this transfer belongs to a recurring transfer.", "nullable": true, "type": "string" }, "refunds": { "description": "A list of refunds associated with this transfer.", "items": { "$ref": "#/components/schemas/TransferRefund" }, "type": "array" }, "standard_return_window": { "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, "type": "string" }, "status": { "$ref": "#/components/schemas/TransferStatus" }, "sweep_status": { "$ref": "#/components/schemas/TransferSweepStatus" }, "type": { "$ref": "#/components/schemas/TransferType" }, "unauthorized_return_window": { "description": "The date 61 business days from settlement date indicating the following ACH returns can no longer happen: R05, R07, R10, R11, R51, R33, R37, R38, R51, R52, R53. This will be of the form YYYY-MM-DD.", "format": "date", "nullable": true, "type": "string" }, "user": { "$ref": "#/components/schemas/TransferUserInResponse" }, "wire_details": { "$ref": "#/components/schemas/TransferWireDetails" } }, "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" ], "title": "Transfer", "type": "object" }, "TransferACHNetwork": { "description": "The ACH networks used for the funds flow.\n\nFor 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" ], "title": "TransferACHNetwork", "type": "string" }, "TransferAccessToken": { "description": "The Plaid `access_token` for the account that will be debited or credited.", "type": "string" }, "TransferAccountID": { "description": "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.", "type": "string" }, "TransferAmount": { "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.", "title": "TransferAmount", "type": "string" }, "TransferAuthorization": { "additionalProperties": true, "description": "Contains the authorization decision for a proposed transfer.", "properties": { "created": { "description": "The datetime representing when the authorization was created, in the format `2006-01-02T15:04:05Z`.", "format": "date-time", "type": "string" }, "decision": { "$ref": "#/components/schemas/TransferAuthorizationDecision" }, "decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationDecisionRationale" }, "guarantee_decision": { "allOf": [ { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecision" } ], "deprecated": true }, "guarantee_decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale" }, "guarantee_details": { "$ref": "#/components/schemas/AuthorizationGuaranteeDetails" }, "id": { "$ref": "#/components/schemas/TransferAuthorizationID" }, "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" ], "title": "TransferAuthorization", "type": "object" }, "TransferAuthorizationCancelRequest": { "description": "Defines the request schema for `/transfer/authorization/cancel`", "properties": { "authorization_id": { "$ref": "#/components/schemas/TransferAuthorizationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "authorization_id" ], "title": "TransferAuthorizationCancelRequest", "type": "object" }, "TransferAuthorizationCancelResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/authorization/cancel`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferAuthorizationCancelResponse", "type": "object" }, "TransferAuthorizationCreateRequest": { "description": "Defines the request schema for `/transfer/authorization/create`", "properties": { "access_token": { "$ref": "#/components/schemas/TransferAccessToken" }, "account_id": { "$ref": "#/components/schemas/TransferAccountID" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "beacon_session_id": { "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.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "credit_funds_source": { "allOf": [ { "$ref": "#/components/schemas/TransferCreditFundsSource" } ], "deprecated": true, "x-hidden-from-docs": true }, "custom_attributes": { "$ref": "#/components/schemas/TransferAuthorizationCustomAttributes" }, "device": { "$ref": "#/components/schemas/TransferAuthorizationDevice" }, "funding_account_id": { "$ref": "#/components/schemas/TransferMigratedFundingAccountIDRequest" }, "idempotency_key": { "$ref": "#/components/schemas/TransferAuthorizationIdempotencyKey" }, "iso_currency_code": { "description": "The currency of the transfer amount. The default value is \"USD\".", "type": "string" }, "ledger_id": { "description": "Specify which ledger balance should be used to fund the transfer. You can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance.", "nullable": true, "type": "string" }, "network": { "$ref": "#/components/schemas/TransferNetwork" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account for this authorization. If not specified, the default account will be used.", "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "payment_profile_token": { "$ref": "#/components/schemas/TransferPaymentProfileToken" }, "request_guarantee": { "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.", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "ruleset_key": { "description": "The key of the Ruleset for the transaction. If not provided, Signal will use the `default` ruleset.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "type": { "$ref": "#/components/schemas/TransferType" }, "user": { "$ref": "#/components/schemas/TransferAuthorizationUserInRequest" }, "user_present": { "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.", "nullable": true, "type": "boolean" }, "wire_details": { "$ref": "#/components/schemas/TransferWireDetails" }, "with_guarantee": { "default": true, "deprecated": true, "description": "If set to `false`, Plaid will not offer a `guarantee_decision` for this request (Guarantee customers only). This field is deprecated in favor for `guarantee`.", "nullable": true, "type": "boolean", "x-hidden-from-docs": true } }, "required": [ "type", "network", "amount", "user", "access_token", "account_id" ], "title": "TransferAuthorizationCreateRequest", "type": "object" }, "TransferAuthorizationCreateResponse": { "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" ], "title": "TransferAuthorizationCreateResponse", "type": "object" }, "TransferAuthorizationCustomAttributes": { "additionalProperties": { "maxLength": 500, "type": "string" }, "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.\n\nThe following limitations apply:\nKeys must match the regular expression `^[A-Za-z0-9_.-]{1,40}$`\nValues must be strings (no nested objects, arrays, numbers, or booleans allowed; stringify non-string values client-side)\nMaximum of 50 key/value pairs\nMaximum value length of 500 characters\n\nDo not include personally identifiable information or other sensitive data.\n", "maxProperties": 50, "nullable": true, "title": "TransferAuthorizationCustomAttributes", "type": "object" }, "TransferAuthorizationDecision": { "description": "\nA decision regarding the proposed transfer.\n\n`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.\n\n`declined` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details.\n\n`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.\n\nFor `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" ], "type": "string" }, "TransferAuthorizationDecisionRationale": { "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.", "nullable": true, "properties": { "code": { "$ref": "#/components/schemas/TransferAuthorizationDecisionRationaleCode" }, "description": { "description": "A human-readable description of the code associated with a transfer approval or transfer decline.", "type": "string" } }, "required": [ "code", "description" ], "title": "TransferAuthorizationDecisionRationale", "type": "object" }, "TransferAuthorizationDecisionRationaleCode": { "description": "A code representing the rationale for approving or declining the proposed transfer.\n\nIf the `rationale_code` is `null`, the transfer passed the authorization check.\n\nAny 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:\n\n`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.\n\n`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`.\n\n`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.\n\n`MIGRATED_ACCOUNT_ITEM` - Item created via `/transfer/migrate_account` endpoint, limited information available.\n\n`ERROR` - Unable to collect the account information due to an unspecified error.\n\nThe following codes indicate that the authorization decision was `declined`:\n\n`NSF` - Transaction likely to result in a return due to insufficient funds.\n\n`RISK` - Transaction is high-risk.\n\n`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.", "enum": [ "NSF", "RISK", "TRANSFER_LIMIT_REACHED", "MANUALLY_VERIFIED_ITEM", "ITEM_LOGIN_REQUIRED", "PAYMENT_PROFILE_LOGIN_REQUIRED", "ERROR", "MIGRATED_ACCOUNT_ITEM", null ], "type": "string" }, "TransferAuthorizationDevice": { "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": { "description": "The IP address of the device being used to initiate the authorization.", "type": "string" }, "user_agent": { "description": "The user agent of the device being used to initiate the authorization.", "type": "string" } }, "title": "TransferAuthorizationDevice", "type": "object" }, "TransferAuthorizationGuaranteeDecision": { "deprecated": 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 ], "nullable": true, "type": "string", "x-hidden-from-docs": true }, "TransferAuthorizationGuaranteeDecisionRationale": { "additionalProperties": true, "deprecated": true, "description": "The rationale for Plaid's decision to not guarantee a transfer. Will be `null` unless `guarantee_decision` is `NOT_GUARANTEED`.", "nullable": true, "properties": { "code": { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecisionRationaleCode" }, "description": { "description": "A human-readable description of why the transfer cannot be guaranteed.", "type": "string" } }, "required": [ "code", "description" ], "title": "TransferAuthorizationGuaranteeDecisionRationale", "type": "object", "x-hidden-from-docs": true }, "TransferAuthorizationGuaranteeDecisionRationaleCode": { "description": "A code representing the reason Plaid declined to guarantee this transfer:\n\n`RETURN_BANK`: The risk of a bank-initiated return (for example, an R01/NSF) is too high to guarantee this transfer.\n\n`RETURN_CUSTOMER`: The risk of a customer-initiated return (for example, a R10/Unauthorized) is too high to guarantee this transfer.\n\n`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.\n\n`RISK_ESTIMATE_UNAVAILABLE`: A risk estimate is unavailable for this Item.\n\n`REQUIRED_PARAM_MISSING`: Required fields are missing.", "enum": [ "RETURN_BANK", "RETURN_CUSTOMER", "GUARANTEE_LIMIT_REACHED", "RISK_ESTIMATE_UNAVAILABLE", "REQUIRED_PARAM_MISSING" ], "type": "string", "x-hidden-from-docs": true }, "TransferAuthorizationID": { "description": "Plaid's unique identifier for a transfer authorization.", "title": "TransferAuthorizationID", "type": "string" }, "TransferAuthorizationIdempotencyKey": { "description": "A random key provided by the client, per unique authorization, which expires after 48 hours. Maximum of 50 characters.\n\nThe 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.\n\nIdempotency 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`.\n\nThis idempotency key expires after 48 hours, after which the same key can be reused. Failure to provide this key may result in duplicate charges.", "maxLength": 50, "nullable": true, "title": "TransferAuthorizationIdempotencyKey", "type": "string" }, "TransferAuthorizationPaymentRisk": { "additionalProperties": true, "deprecated": true, "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.", "nullable": true, "properties": { "bank_initiated_return_score": { "description": "A score from 1-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood.\n\nThe 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\",\n\"R16\", \"R17\", \"R20\", \"R23\". These returns have a turnaround time of 2 banking days.", "maximum": 99, "minimum": 1, "nullable": true, "type": "integer" }, "customer_initiated_return_score": { "description": "A score from 1-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood.\n\nThe score evaluates the transaction return risk of an unauthorized debit and covers return codes: \"R05\", \"R07\", \"R10\", \"R11\", \"R29\".\nThese returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized.", "maximum": 99, "minimum": 1, "nullable": true, "type": "integer" }, "risk_level": { "$ref": "#/components/schemas/TransferAuthorizationRiskLevel" }, "warnings": { "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" }, "type": "array" } }, "required": [ "bank_initiated_return_score", "customer_initiated_return_score", "risk_level", "warnings" ], "title": "TransferAuthorizationPaymentRisk", "type": "object", "x-hidden-from-docs": true }, "TransferAuthorizationProposedTransfer": { "additionalProperties": true, "description": "Details regarding the proposed transfer.", "properties": { "account_id": { "description": "The Plaid `account_id` for the account that will be debited or credited.", "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "credit_funds_source": { "allOf": [ { "$ref": "#/components/schemas/TransferCreditFundsSource" } ], "deprecated": true }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponseNullable" }, "iso_currency_code": { "description": "The currency of the transfer amount. The default value is \"USD\".", "type": "string" }, "ledger_id": { "$ref": "#/components/schemas/TransferLedgerID" }, "network": { "description": "The network or rails used for the transfer.", "type": "string" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account that was used for this transfer.", "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "requested_amount": { "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.", "type": "string" }, "type": { "$ref": "#/components/schemas/TransferType" }, "user": { "$ref": "#/components/schemas/TransferUserInResponse" }, "wire_details": { "$ref": "#/components/schemas/TransferWireDetails" } }, "required": [ "type", "user", "amount", "requested_amount", "network", "origination_account_id", "iso_currency_code", "originator_client_id", "funding_account_id", "credit_funds_source" ], "title": "TransferAuthorizationProposedTransfer", "type": "object" }, "TransferAuthorizationRiskLevel": { "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" ], "nullable": true, "type": "string" }, "TransferAuthorizationUserInRequest": { "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": { "address": { "$ref": "#/components/schemas/TransferUserAddressInRequest" }, "email_address": { "description": "The user's email address.", "type": "string" }, "legal_name": { "description": "The user's legal name. If the user is a business, provide the business name.", "type": "string" }, "phone_number": { "description": "The user's phone number.", "type": "string" } }, "required": [ "legal_name" ], "title": "TransferAuthorizationUserInRequest", "type": "object" }, "TransferBalance": { "additionalProperties": true, "description": "Information about the balance held with Plaid.", "properties": { "available": { "description": "The amount of this balance available for use (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "current": { "description": "The available balance, plus amount of pending funds that in processing (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "type": { "$ref": "#/components/schemas/TransferBalanceType" } }, "required": [ "available", "type" ], "title": "TransferBalance", "type": "object" }, "TransferBalanceGetRequest": { "description": "Defines the request schema for `/transfer/balance/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "deprecated": true, "description": "Client ID of the end customer.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "type": { "$ref": "#/components/schemas/TransferBalanceType" } }, "title": "TransferBalanceGetRequest", "type": "object" }, "TransferBalanceGetResponse": { "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" ], "title": "TransferBalanceGetResponse", "type": "object" }, "TransferBalanceType": { "description": "The type of balance.\n\n`prefunded_rtp_credits` - Your prefunded RTP credit balance with Plaid\n`prefunded_ach_credits` - Your prefunded ACH credit balance with Plaid", "enum": [ "prefunded_rtp_credits", "prefunded_ach_credits" ], "title": "TransferBalanceType", "type": "string" }, "TransferCancelRequest": { "description": "Defines the request schema for `/transfer/cancel`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "deprecated": true, "description": "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS).", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "reason_code": { "$ref": "#/components/schemas/ReasonCode" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transfer_id": { "$ref": "#/components/schemas/TransferID" } }, "required": [ "transfer_id" ], "title": "TransferCancelRequest", "type": "object" }, "TransferCancelResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/cancel`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferCancelResponse", "type": "object" }, "TransferCapabilitiesGetRTP": { "additionalProperties": true, "description": "Contains the supported service types in RTP", "properties": { "credit": { "default": false, "description": "When `true`, the linked Item's institution supports RTP credit transfer.", "nullable": false, "type": "boolean" } }, "title": "TransferCapabilitiesGetRTP", "type": "object" }, "TransferCapabilitiesGetRequest": { "description": "Defines the request schema for `/transfer/capabilities/get`", "properties": { "access_token": { "$ref": "#/components/schemas/TransferAccessToken" }, "account_id": { "$ref": "#/components/schemas/TransferAccountID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "payment_profile_token": { "$ref": "#/components/schemas/PaymentProfileToken" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "access_token", "account_id" ], "title": "TransferCapabilitiesGetRequest", "type": "object" }, "TransferCapabilitiesGetResponse": { "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" ], "title": "TransferCapabilitiesGetResponse", "type": "object" }, "TransferCapabilitiesGetRfP": { "additionalProperties": true, "description": "Contains the supported service types in RfP", "properties": { "debit": { "default": false, "description": "When `true`, the linked Item's institution supports RfP debit transfer.", "nullable": false, "type": "boolean" }, "iso_currency_code": { "description": "The currency of the `max_amount`, e.g. \"USD\".", "nullable": true, "type": "string" }, "max_amount": { "description": "The maximum amount (decimal string with two digits of precision e.g. \"10.00\") for originating RfP transfers with the given institution.", "nullable": true, "type": "string" } }, "title": "TransferCapabilitiesGetRfP", "type": "object" }, "TransferConfigurationGetRequest": { "description": "Defines the request schema for `/transfer/configuration/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "TransferConfigurationGetRequest", "type": "object" }, "TransferConfigurationGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/configuration/get`", "properties": { "iso_currency_code": { "description": "The currency of the dollar amount, e.g. \"USD\".", "type": "string" }, "max_daily_credit_amount": { "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\").", "type": "string" }, "max_daily_debit_amount": { "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\").", "type": "string" }, "max_monthly_amount": { "deprecated": true, "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\").", "type": "string", "x-hidden-from-docs": true }, "max_monthly_credit_amount": { "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\").", "type": "string" }, "max_monthly_debit_amount": { "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\").", "type": "string" }, "max_single_transfer_amount": { "deprecated": true, "description": "The max limit of dollar amount of a single transfer (decimal string with two digits of precision e.g. \"10.00\").", "type": "string", "x-hidden-from-docs": true }, "max_single_transfer_credit_amount": { "description": "The max limit of dollar amount of a single credit transfer (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "max_single_transfer_debit_amount": { "description": "The max limit of dollar amount of a single debit transfer (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "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" ], "title": "TransferConfigurationGetResponse", "type": "object" }, "TransferCreateIdempotencyKey": { "deprecated": true, "description": "Deprecated. `authorization_id` is now used as idempotency instead.\n\nA random key provided by the client, per unique transfer. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "TransferCreateIdempotencyKey", "type": "string", "x-hidden-from-docs": true }, "TransferCreateRequest": { "description": "Defines the request schema for `/transfer/create`", "properties": { "access_token": { "$ref": "#/components/schemas/TransferAccessToken" }, "account_id": { "$ref": "#/components/schemas/TransferAccountID" }, "ach_class": { "allOf": [ { "$ref": "#/components/schemas/ACHClass" } ], "deprecated": true, "x-hidden-from-docs": true }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "authorization_id": { "description": "Plaid's unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an idempotency identifier.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "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).\n\nIf 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, "type": "string" }, "facilitator_fee": { "$ref": "#/components/schemas/TransferFacilitatorFee" }, "idempotency_key": { "$ref": "#/components/schemas/TransferCreateIdempotencyKey" }, "iso_currency_code": { "deprecated": true, "description": "The currency of the transfer amount. The default value is \"USD\".", "type": "string", "x-hidden-from-docs": true }, "metadata": { "$ref": "#/components/schemas/TransferMetadata" }, "network": { "allOf": [ { "$ref": "#/components/schemas/TransferNetwork" } ], "deprecated": true, "x-hidden-from-docs": true }, "origination_account_id": { "deprecated": 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.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "type": { "allOf": [ { "$ref": "#/components/schemas/TransferType" } ], "deprecated": true, "x-hidden-from-docs": true }, "user": { "$ref": "#/components/schemas/TransferUserInRequestDeprecated" } }, "required": [ "access_token", "account_id", "authorization_id", "description" ], "title": "TransferCreateRequest", "type": "object" }, "TransferCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer": { "$ref": "#/components/schemas/Transfer" } }, "required": [ "transfer", "request_id" ], "title": "TransferCreateResponse", "type": "object" }, "TransferCreditFundsSource": { "description": "This field is now deprecated. You may ignore it for transfers created on and after 12/01/2023.\n\nSpecifies 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.\n\n`sweep` - Sweep funds from your funding account\n`prefunded_rtp_credits` - Use your prefunded RTP credit balance with Plaid\n`prefunded_ach_credits` - Use your prefunded ACH credit balance with Plaid", "enum": [ "sweep", "prefunded_rtp_credits", "prefunded_ach_credits", null ], "nullable": true, "title": "TransferCreditFundsSource", "type": "string" }, "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.", "nullable": true, "properties": { "expected_average_amount": { "description": "The originator's expected average amount per credit.", "type": "string" }, "expected_frequency": { "$ref": "#/components/schemas/OriginatorExpectedTransferFrequency" }, "expected_highest_amount": { "description": "The originator's expected highest amount for a single credit transfer.", "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:\n\n`\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts\n\n`\"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.\n\n`\"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.", "items": { "$ref": "#/components/schemas/CreditACHClass" }, "type": "array" } }, "required": [ "expected_frequency", "expected_highest_amount", "expected_average_amount", "expected_monthly_amount", "sec_codes" ], "type": "object" }, "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.", "nullable": true, "properties": { "expected_average_amount": { "description": "The originator's expected average amount per debit.", "type": "string" }, "expected_frequency": { "$ref": "#/components/schemas/OriginatorExpectedTransferFrequency" }, "expected_highest_amount": { "description": "The originator's expected highest amount for a single debit transfer.", "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:\n\n`\"ccd\"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts\n\n`\"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.\n\n`\"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.\n\n`\"tel\"` - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call.", "items": { "$ref": "#/components/schemas/ACHClass" }, "type": "array" } }, "required": [ "expected_frequency", "expected_highest_amount", "expected_average_amount", "expected_monthly_amount", "sec_codes" ], "type": "object" }, "TransferDevice": { "additionalProperties": true, "description": "Information about the device being used to initiate the authorization.", "properties": { "ip_address": { "description": "The IP address of the device being used to initiate the authorization.", "type": "string" }, "user_agent": { "description": "The user agent of the device being used to initiate the authorization.", "type": "string" } }, "required": [ "ip_address", "user_agent" ], "title": "TransferDevice", "type": "object" }, "TransferDiligenceDocumentUploadRequest": { "description": "Defines the request schema for `/transfer/diligence/document/upload`", "properties": { "file": { "description": "A file to upload. The file size must be less than 20MB. Supported file extensions: .pdf.", "format": "binary", "type": "string" }, "originator_client_id": { "description": "The Client ID of the originator whose document that you want to upload.", "type": "string" }, "purpose": { "$ref": "#/components/schemas/TransferDocumentPurpose" } }, "required": [ "originator_client_id", "file", "purpose" ], "title": "TransferDiligenceDocumentUploadRequest", "type": "object" }, "TransferDiligenceDocumentUploadResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/diligence/document/upload`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferDiligenceDocumentUploadResponse", "type": "object" }, "TransferDiligenceStatus": { "description": "Originator's diligence status.", "enum": [ "not_submitted", "submitted", "under_review", "approved", "denied", "more_information_required" ], "title": "TransferDiligenceStatus", "type": "string" }, "TransferDiligenceSubmitRequest": { "description": "Defines the request schema for `/transfer/diligence/submit`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "description": "Client ID of the originator whose diligence that you want to submit.", "type": "string" }, "originator_diligence": { "$ref": "#/components/schemas/TransferOriginatorDiligence" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "originator_client_id", "originator_diligence" ], "title": "TransferDiligenceSubmitRequest", "type": "object" }, "TransferDiligenceSubmitResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/diligence/submit`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferDiligenceSubmitResponse", "type": "object" }, "TransferDocumentPurpose": { "description": "Specifies the purpose of the uploaded file.\n\n`\"DUE_DILIGENCE\"` - The transfer due diligence document of the originator.", "enum": [ "DUE_DILIGENCE" ], "title": "purpose", "type": "string" }, "TransferEvent": { "additionalProperties": true, "description": "Represents an event in the Transfers API.", "properties": { "account_id": { "description": "The account ID associated with the transfer. This field is omitted for Plaid Ledger Sweep events.", "type": "string" }, "event_id": { "description": "Plaid's unique identifier for this event. IDs are sequential unsigned 64-bit integers.", "minimum": 0, "type": "integer" }, "event_type": { "$ref": "#/components/schemas/TransferEventType" }, "failure_reason": { "$ref": "#/components/schemas/TransferFailure" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponseNullable" }, "intent_id": { "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.", "nullable": true, "type": "string" }, "ledger_id": { "$ref": "#/components/schemas/TransferLedgerID" }, "origination_account_id": { "deprecated": true, "description": "The ID of the origination account that this balance belongs to.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "refund_id": { "description": "Plaid's unique identifier for a refund. A non-null value indicates the event is for the associated refund of the transfer.", "nullable": true, "type": "string" }, "sweep_amount": { "$ref": "#/components/schemas/TransferSweepAmount" }, "sweep_id": { "$ref": "#/components/schemas/TransferSweepIDNullable" }, "timestamp": { "description": "The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.", "format": "date-time", "type": "string" }, "transfer_amount": { "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.", "title": "TransferAmount", "type": "string" }, "transfer_id": { "description": "Plaid's unique identifier for a transfer. This field is an empty string for Plaid Ledger Sweep events.", "type": "string" }, "transfer_type": { "$ref": "#/components/schemas/OmittableTransferType" }, "wire_return_fee": { "description": "The fee amount deducted from the original transfer during a wire return, if applicable.", "nullable": true, "type": "string" } }, "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" ], "title": "TransferEvent", "type": "object" }, "TransferEventListRequest": { "description": "Defines the request schema for `/transfer/event/list`", "properties": { "account_id": { "description": "The account ID to get events for all transactions to/from an account.", "nullable": true, "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "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.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_date": { "description": "The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "event_types": { "description": "Filter events by event type.", "items": { "$ref": "#/components/schemas/TransferEventType" }, "type": "array" }, "funding_account_id": { "description": "Filter transfer events to only those with the specified `funding_account_id`.", "nullable": true, "type": "string" }, "offset": { "default": 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.", "minimum": 0, "nullable": true, "type": "integer" }, "origination_account_id": { "deprecated": true, "description": "The origination account ID to get events for transfers from a specific origination account.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "description": "Filter transfer events to only those with the specified originator client.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "sweep_id": { "description": "Plaid's unique identifier for a sweep.", "type": "string" }, "transfer_id": { "description": "Plaid's unique identifier for a transfer.", "nullable": true, "title": "TransferID", "type": "string" }, "transfer_type": { "$ref": "#/components/schemas/TransferEventListTransferType" } }, "title": "TransferEventListRequest", "type": "object" }, "TransferEventListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/event/list`", "properties": { "has_more": { "description": "Whether there are more events to be pulled from the endpoint that have not already been returned", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer_events": { "items": { "$ref": "#/components/schemas/TransferEvent" }, "type": "array" } }, "required": [ "transfer_events", "has_more", "request_id" ], "title": "TransferEventListResponse", "type": "object" }, "TransferEventListTransferType": { "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 ], "nullable": true, "title": "TransferType", "type": "string" }, "TransferEventSyncRequest": { "description": "Defines the request schema for `/transfer/event/sync`", "properties": { "after_id": { "description": "The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.", "minimum": 0, "type": "integer" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 100, "description": "The maximum number of transfer events to return.", "maximum": 500, "minimum": 1, "nullable": true, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "after_id" ], "title": "TransferEventSyncRequest", "type": "object" }, "TransferEventSyncResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/event/sync`", "properties": { "has_more": { "description": "Whether there are more events to be pulled from the endpoint that have not already been returned", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer_events": { "items": { "$ref": "#/components/schemas/TransferEvent" }, "type": "array" } }, "required": [ "transfer_events", "has_more", "request_id" ], "title": "TransferEventSyncResponse", "type": "object" }, "TransferEventType": { "description": "The type of event that this transfer represents. Event types with prefix `sweep` represents events for Plaid Ledger sweeps.\n\n`pending`: A new transfer was created; it is in the pending state.\n\n`cancelled`: The transfer was cancelled by the client.\n\n`failed`: The transfer failed, no funds were moved.\n\n`posted`: The transfer has been successfully submitted to the payment network.\n\n`settled`: The transfer has been successfully completed by the payment network.\n\n`funds_available`: Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.)\n\n`returned`: A posted transfer was returned.\n\n`swept`: The transfer was swept to / from the sweep account.\n\n`swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account.\n\n`return_swept`: Due to the transfer being returned, funds were pulled from or pushed back to the sweep account.\n\n`sweep.pending`: A new ledger sweep was created; it is in the pending state.\n\n`sweep.posted`: The ledger sweep has been successfully submitted to the payment network.\n\n`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.\n\n`sweep.returned`: A posted ledger sweep was returned.\n\n`sweep.failed`: The ledger sweep failed, no funds were moved.\n\n`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.\n\n`refund.pending`: A new refund was created; it is in the pending state.\n\n`refund.cancelled`: The refund was cancelled.\n\n`refund.failed`: The refund failed, no funds were moved.\n\n`refund.posted`: The refund has been successfully submitted to the payment network.\n\n`refund.settled`: The refund transaction has settled in the Plaid linked account.\n\n`refund.returned`: A posted refund was returned.\n\n`refund.swept`: The refund was swept from the sweep account.\n\n`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", "returned", "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" ], "title": "TransferEventType", "type": "string" }, "TransferEventsUpdateWebhook": { "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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "webhook_code": { "description": "`TRANSFER_EVENTS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`TRANSFER`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "environment" ], "title": "TransferEventsUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "webhook_code": "TRANSFER_EVENTS_UPDATE", "webhook_type": "TRANSFER" } } }, "TransferExpectedSweepSettlementScheduleItem": { "additionalProperties": true, "description": "Defines an expected sweep date and amount.", "properties": { "sweep_settlement_date": { "description": "The settlement date of a sweep for this transfer.", "format": "date", "type": "string" }, "swept_settled_amount": { "description": "The accumulated amount that has been swept by `sweep_settlement_date`.", "type": "string" } }, "required": [ "sweep_settlement_date", "swept_settled_amount" ], "title": "TransferExpectedSweepSettlementScheduleItem", "type": "object" }, "TransferFacilitatorFee": { "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`.", "title": "TransferFacilitatorFee", "type": "string" }, "TransferFailure": { "additionalProperties": true, "description": "The failure reason if the event type for a transfer is `\"failed\"` or `\"returned\"`. Null value otherwise.", "nullable": true, "properties": { "ach_return_code": { "deprecated": 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).", "nullable": true, "type": "string" }, "description": { "description": "A human-readable description of the reason for the failure or reversal.", "type": "string" }, "failure_code": { "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.", "nullable": true, "type": "string" } }, "title": "TransferFailure", "type": "object" }, "TransferFundingAccount": { "description": "The originator's funding account, linked with Plaid Link or `/transfer/migrate_account`.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "account_id": { "description": "The Plaid `account_id` for the newly created Item.", "type": "string" } }, "required": [ "access_token", "account_id" ], "title": "TransferFundingAccount", "type": "object" }, "TransferFundingAccountIDResponse": { "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.", "type": "string" }, "TransferFundingAccountIDResponseNullable": { "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, "type": "string" }, "TransferFundingAccountWithDisplayName": { "allOf": [ { "$ref": "#/components/schemas/TransferFundingAccount" }, { "properties": { "display_name": { "description": "The name for the funding account that is displayed in the Plaid dashboard.", "type": "string" } }, "type": "object" } ], "description": "The originator's funding account, linked with Plaid Link or `/transfer/migrate_account`.", "title": "TransferFundingAccount", "type": "object" }, "TransferGetRequest": { "description": "Defines the request schema for `/transfer/get`", "properties": { "authorization_id": { "$ref": "#/components/schemas/TransferAuthorizationID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "deprecated": true, "description": "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS).", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transfer_id": { "$ref": "#/components/schemas/TransferID" } }, "title": "TransferGetRequest", "type": "object" }, "TransferGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer": { "$ref": "#/components/schemas/Transfer" } }, "required": [ "transfer", "request_id" ], "title": "TransferGetResponse", "type": "object" }, "TransferGuaranteeDetails": { "additionalProperties": true, "description": "Adaptive guarantee details for a transfer, including the guaranteed amount and settlement schedule. Omitted when no guarantee was attempted.", "nullable": true, "properties": { "guaranteed_amount": { "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.", "type": "string" }, "schedule": { "description": "The adaptive guarantee settlement schedule for this transfer.", "items": { "$ref": "#/components/schemas/TransferGuaranteeScheduleItem" }, "type": "array" } }, "required": [ "guaranteed_amount", "schedule" ], "title": "TransferGuaranteeDetails", "type": "object" }, "TransferGuaranteeOutcome": { "description": "The adaptive guarantee outcome for a transfer.\n\n`FULL_INSTANT`: The full transfer amount is guaranteed and funds are available instantly.\n\n`PARTIAL_INSTANT_ONLY`: A partial amount is guaranteed and available instantly; the remainder is not guaranteed.\n\n`PARTIAL_INSTANT_WITH_OBSERVATION_WINDOW`: A partial amount is guaranteed instantly; an additional amount is conditionally guaranteed subject to an observation window.\n\n`NOT_GUARANTEED`: Plaid did not provide a guarantee for this transfer.", "enum": [ "FULL_INSTANT", "PARTIAL_INSTANT_ONLY", "PARTIAL_INSTANT_WITH_OBSERVATION_WINDOW", "NOT_GUARANTEED" ], "type": "string" }, "TransferGuaranteeScheduleItem": { "allOf": [ { "$ref": "#/components/schemas/AuthorizationGuaranteeScheduleItem" }, { "additionalProperties": true, "properties": { "observation_window_expiration_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`.", "format": "date-time", "nullable": true, "type": "string" } }, "type": "object" } ], "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.", "title": "TransferGuaranteeScheduleItem" }, "TransferID": { "description": "Plaid's unique identifier for a transfer.", "title": "TransferID", "type": "string" }, "TransferIDForRefund": { "description": "The ID of the transfer to refund.", "title": "TransferID", "type": "string" }, "TransferIntentAuthorizationDecision": { "description": "\nA decision regarding the proposed transfer.\n\n`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.\n\n`DECLINED` - Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details.", "enum": [ "APPROVED", "DECLINED" ], "nullable": true, "type": "string" }, "TransferIntentCreate": { "additionalProperties": true, "description": "Represents a transfer intent within Transfer UI.", "properties": { "account_id": { "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, "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "created": { "description": "The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`.", "format": "date-time", "type": "string" }, "description": { "description": "A description for the underlying transfer. Maximum of 8 characters.", "type": "string" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponse" }, "id": { "description": "Plaid's unique identifier for the transfer intent object.", "type": "string" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "metadata": { "$ref": "#/components/schemas/TransferMetadata" }, "mode": { "$ref": "#/components/schemas/TransferIntentCreateMode" }, "network": { "$ref": "#/components/schemas/TransferIntentCreateNetwork" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used.", "type": "string", "x-hidden-from-docs": true }, "require_guarantee": { "description": "When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only).", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "status": { "$ref": "#/components/schemas/TransferIntentStatus" }, "user": { "$ref": "#/components/schemas/TransferUserInResponse" } }, "required": [ "id", "created", "status", "origination_account_id", "funding_account_id", "amount", "mode", "user", "description", "iso_currency_code" ], "title": "TransferIntentCreate", "type": "object" }, "TransferIntentCreateMode": { "description": "The direction of the flow of transfer funds.\n\n`PAYMENT`: Transfers funds from an end user's account to your business account.\n\n`DISBURSEMENT`: Transfers funds from your business account to an end user's account.", "enum": [ "PAYMENT", "DISBURSEMENT" ], "title": "TransferIntentCreateMode", "type": "string" }, "TransferIntentCreateNetwork": { "default": "same-day-ach", "description": "The network or rails used for the transfer. Defaults to `same-day-ach`.\n\nFor transfers submitted using `ach`, the Standard ACH cutoff is 8:30 PM Eastern Time.\n\nFor 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.\n\nFor 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" ], "title": "TransferIntentCreateNetwork", "type": "string" }, "TransferIntentCreateRequest": { "description": "Defines the request schema for `/transfer/intent/create`", "properties": { "account_id": { "description": "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.", "nullable": true, "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "description": "A description for the underlying transfer. Maximum of 15 characters.", "maxLength": 15, "minLength": 1, "type": "string" }, "funding_account_id": { "$ref": "#/components/schemas/TransferMigratedFundingAccountIDRequest" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "metadata": { "$ref": "#/components/schemas/TransferMetadata" }, "mode": { "$ref": "#/components/schemas/TransferIntentCreateMode" }, "network": { "$ref": "#/components/schemas/TransferIntentCreateNetwork" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account for the intent. If not provided, the default account will be used.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "require_guarantee": { "default": false, "description": "When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only).", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user": { "$ref": "#/components/schemas/TransferUserInRequest" } }, "required": [ "mode", "amount", "description", "user" ], "title": "TransferIntentCreateRequest", "type": "object" }, "TransferIntentCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/intent/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer_intent": { "$ref": "#/components/schemas/TransferIntentCreate" } }, "required": [ "transfer_intent", "request_id" ], "title": "TransferIntentCreateResponse", "type": "object" }, "TransferIntentGet": { "additionalProperties": true, "description": "Represents a transfer intent within Transfer UI.", "properties": { "account_id": { "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, "type": "string" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "authorization_decision": { "$ref": "#/components/schemas/TransferIntentAuthorizationDecision" }, "authorization_decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationDecisionRationale" }, "created": { "description": "The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`.", "format": "date-time", "type": "string" }, "description": { "description": "A description for the underlying transfer. Maximum of 8 characters.", "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/TransferIntentGetFailureReason" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponse" }, "guarantee_decision": { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecision" }, "guarantee_decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationGuaranteeDecisionRationale" }, "id": { "description": "Plaid's unique identifier for a transfer intent object.", "type": "string" }, "iso_currency_code": { "description": "The currency of the transfer amount, e.g. \"USD\"", "type": "string" }, "metadata": { "$ref": "#/components/schemas/TransferMetadata" }, "mode": { "$ref": "#/components/schemas/TransferIntentCreateMode" }, "network": { "$ref": "#/components/schemas/TransferIntentCreateNetwork" }, "origination_account_id": { "deprecated": true, "description": "Plaid's unique identifier for the origination account used for the transfer.", "type": "string", "x-hidden-from-docs": true }, "require_guarantee": { "description": "When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only).", "nullable": true, "type": "boolean", "x-hidden-from-docs": true }, "status": { "$ref": "#/components/schemas/TransferIntentStatus" }, "transfer_id": { "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, "type": "string" }, "user": { "$ref": "#/components/schemas/TransferUserInResponse" } }, "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" ], "title": "TransferIntentGet", "type": "object" }, "TransferIntentGetFailureReason": { "additionalProperties": true, "description": "The reason for a failed transfer intent. Returned only if the transfer intent status is `failed`. Null otherwise.", "nullable": true, "properties": { "error_code": { "description": "A code representing the reason for a failed transfer intent (i.e., an API error or the authorization being declined).", "type": "string" }, "error_message": { "description": "A human-readable description of the code associated with a failed transfer intent.", "type": "string" }, "error_type": { "description": "A broad categorization of the error.", "type": "string" } }, "title": "TransferIntentGetFailureReason", "type": "object" }, "TransferIntentGetRequest": { "description": "Defines the request schema for `/transfer/intent/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transfer_intent_id": { "description": "Plaid's unique identifier for a transfer intent object.", "type": "string" } }, "required": [ "transfer_intent_id" ], "title": "TransferIntentGetRequest", "type": "object" }, "TransferIntentGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/intent/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfer_intent": { "$ref": "#/components/schemas/TransferIntentGet" } }, "required": [ "transfer_intent", "request_id" ], "title": "TransferIntentGetResponse", "type": "object" }, "TransferIntentStatus": { "description": "The status of the transfer intent.\n\n`PENDING`: The transfer intent is pending.\n`SUCCEEDED`: The transfer intent was successfully created.\n`FAILED`: The transfer intent was unable to be created.", "enum": [ "PENDING", "SUCCEEDED", "FAILED" ], "type": "string" }, "TransferLedgerBalance": { "additionalProperties": true, "description": "Information about the balance of the ledger held with Plaid.", "properties": { "available": { "description": "The amount of this balance available for use (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "pending": { "description": "The amount of pending funds that are in processing (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" } }, "required": [ "available", "pending" ], "title": "TransferLedgerBalance", "type": "object" }, "TransferLedgerDepositRequest": { "description": "Defines the request schema for `/transfer/ledger/deposit`", "properties": { "amount": { "description": "A positive amount of how much will be deposited into ledger (decimal string with two digits of precision e.g. \"5.50\").", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "$ref": "#/components/schemas/SweepDescription" }, "funding_account_id": { "$ref": "#/components/schemas/TransferLedgerFundingAccountIDRequest" }, "idempotency_key": { "$ref": "#/components/schemas/LedgerDepositIdempotencyKey" }, "ledger_id": { "description": "Specify which ledger balance to deposit to. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance.", "nullable": true, "type": "string" }, "network": { "$ref": "#/components/schemas/TransferACHNetwork" }, "originator_client_id": { "$ref": "#/components/schemas/TransferOriginatorClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "amount", "idempotency_key", "network" ], "title": "TransferLedgerDepositRequest", "type": "object" }, "TransferLedgerDepositResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/ledger/deposit`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweep": { "$ref": "#/components/schemas/TransferSweep" } }, "required": [ "sweep", "request_id" ], "title": "TransferLedgerDepositResponse", "type": "object" }, "TransferLedgerDistributeRequest": { "description": "Defines the request schema for `/transfer/ledger/distribute`", "properties": { "amount": { "description": "The amount to move (decimal string with two digits of precision e.g. \"10.00\"). Amount must be positive.", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "description": "An optional description for the ledger distribute operation.", "type": "string" }, "from_ledger_id": { "description": "The Ledger to pull money from.", "type": "string" }, "idempotency_key": { "$ref": "#/components/schemas/LedgerDistributeIdempotencyKey" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "to_ledger_id": { "description": "The Ledger to credit money to.", "type": "string" } }, "required": [ "from_ledger_id", "to_ledger_id", "amount", "idempotency_key" ], "title": "TransferLedgerDistributeRequest", "type": "object" }, "TransferLedgerDistributeResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/ledger/distribute`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferLedgerDistributeResponse", "type": "object" }, "TransferLedgerEvent": { "additionalProperties": true, "description": "Represents a ledger event in the Transfers API.", "properties": { "amount": { "description": "The amount of the ledger event as a decimal string.", "type": "string" }, "available_balance": { "description": "The new available balance after this event.", "type": "string" }, "description": { "description": "A description of the ledger event.", "type": "string" }, "ledger_event_id": { "description": "Plaid's unique identifier for this ledger event.", "type": "string" }, "ledger_id": { "description": "The ID of the ledger this event belongs to.", "type": "string" }, "pending_balance": { "description": "The new pending balance after this event.", "type": "string" }, "refund_id": { "description": "The ID of the refund source that triggered this ledger event.", "nullable": true, "type": "string" }, "sweep_id": { "description": "The ID of the sweep source that triggered this ledger event.", "nullable": true, "type": "string" }, "timestamp": { "description": "The datetime when this ledger event occurred.", "format": "date-time", "type": "string" }, "transfer_id": { "description": "The ID of the transfer source that triggered this ledger event.", "nullable": true, "type": "string" }, "type": { "description": "The type of balance that was impacted by this event.", "type": "string" } }, "required": [ "ledger_event_id", "ledger_id", "amount", "type", "description", "pending_balance", "available_balance", "timestamp" ], "title": "TransferLedgerEvent", "type": "object" }, "TransferLedgerEventListRequest": { "description": "Defines the request schema for `/transfer/ledger/event/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "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.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_date": { "description": "The end created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z)", "format": "date-time", "nullable": true, "type": "string" }, "ledger_event_id": { "description": "Plaid's unique identifier for the ledger event.", "nullable": true, "type": "string" }, "ledger_id": { "description": "Plaid's unique identifier for a Plaid Ledger Balance.", "nullable": true, "type": "string" }, "offset": { "default": 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.", "minimum": 0, "nullable": true, "type": "integer" }, "originator_client_id": { "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, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "source_id": { "description": "Plaid's unique identifier for a transfer, sweep, or refund.", "nullable": true, "type": "string" }, "source_type": { "$ref": "#/components/schemas/LedgerEventSourceType" }, "start_date": { "description": "The start created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "TransferLedgerEventListRequest", "type": "object" }, "TransferLedgerEventListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/ledger/event/list`", "properties": { "has_more": { "description": "Whether there are more events to be pulled from the endpoint that have not already been returned", "type": "boolean" }, "ledger_events": { "items": { "$ref": "#/components/schemas/TransferLedgerEvent" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "ledger_events", "has_more", "request_id" ], "title": "TransferLedgerEventListResponse", "type": "object" }, "TransferLedgerFundingAccountIDRequest": { "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, "type": "string" }, "TransferLedgerGetRequest": { "description": "Defines the request schema for `/transfer/ledger/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "ledger_id": { "description": "Specify which ledger balance to get. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance.", "nullable": true, "type": "string" }, "originator_client_id": { "description": "Client ID of the end customer.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "TransferLedgerGetRequest", "type": "object" }, "TransferLedgerGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/ledger/get`", "properties": { "balance": { "$ref": "#/components/schemas/TransferLedgerBalance" }, "is_default": { "description": "Whether this Ledger is the client's default ledger.", "type": "boolean" }, "ledger_id": { "description": "The unique identifier of the Ledger that was returned.", "type": "string" }, "name": { "description": "The name of the Ledger", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "ledger_id", "balance", "name", "is_default", "request_id" ], "title": "TransferLedgerGetResponse", "type": "object" }, "TransferLedgerID": { "description": "Plaid's unique identifier for a Plaid Ledger Balance.", "nullable": true, "title": "TransferLedgerID", "type": "string" }, "TransferLedgerSweepSimulateEventType": { "description": "The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, or `returned`.\n\nAn error will be returned if the event type is incompatible with the current ledger sweep status. Compatible status --> event type transitions include:\n\n`sweep.pending` --> `sweep.posted`\n\n`sweep.pending` --> `sweep.failed`\n\n`sweep.posted` --> `sweep.settled`\n\n`sweep.posted` --> `sweep.returned`\n\n`sweep.settled` --> `sweep.returned`\n", "enum": [ "sweep.posted", "sweep.settled", "sweep.returned", "sweep.failed" ], "title": "TransferLedgerSweepSimulateEventType", "type": "string" }, "TransferLedgerWithdrawRequest": { "description": "Defines the request schema for `/transfer/ledger/withdraw`", "properties": { "amount": { "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\").", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "$ref": "#/components/schemas/SweepDescription" }, "funding_account_id": { "$ref": "#/components/schemas/TransferLedgerFundingAccountIDRequest" }, "idempotency_key": { "$ref": "#/components/schemas/LedgerWithdrawIdempotencyKey" }, "ledger_id": { "description": "Specify which ledger balance to withdraw from. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid Dashboard. If this field is left blank, this will default to id of the default ledger balance.", "nullable": true, "type": "string" }, "network": { "$ref": "#/components/schemas/TransferNetwork" }, "originator_client_id": { "$ref": "#/components/schemas/TransferOriginatorClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "amount", "idempotency_key", "network" ], "title": "TransferLedgerWithdrawRequest", "type": "object" }, "TransferLedgerWithdrawResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/ledger/withdraw`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweep": { "$ref": "#/components/schemas/TransferSweep" } }, "required": [ "sweep", "request_id" ], "title": "TransferLedgerWithdrawResponse", "type": "object" }, "TransferListRequest": { "description": "Defines the request schema for `/transfer/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of transfers to return.", "maximum": 25, "minimum": 1, "type": "integer" }, "end_date": { "description": "The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "funding_account_id": { "description": "Filter transfers to only those with the specified `funding_account_id`.", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of transfers to skip before returning results.", "minimum": 0, "type": "integer" }, "origination_account_id": { "deprecated": true, "description": "Filter transfers to only those originated through the specified origination account.", "nullable": true, "type": "string", "x-hidden-from-docs": true }, "originator_client_id": { "description": "Filter transfers to only those with the specified originator client.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "TransferListRequest", "type": "object" }, "TransferListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/list`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "transfers": { "items": { "$ref": "#/components/schemas/Transfer" }, "type": "array" } }, "required": [ "transfers", "request_id" ], "title": "TransferListResponse", "type": "object" }, "TransferMetadata": { "additionalProperties": { "type": "string" }, "description": "The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:\nThe JSON values must be Strings (no nested JSON objects allowed)\nOnly ASCII characters may be used\nMaximum of 50 key/value pairs\nMaximum key length of 40 characters\nMaximum value length of 500 characters\n", "maxProperties": 50, "nullable": true, "title": "TransferMetadata", "type": "object" }, "TransferMetricsGetAuthorizationUsage": { "additionalProperties": true, "description": "Details regarding authorization usage.", "nullable": true, "properties": { "daily_credit_utilization": { "description": "The daily credit utilization formatted as a decimal.", "type": "string" }, "daily_debit_utilization": { "description": "The daily debit utilization formatted as a decimal.", "type": "string" }, "monthly_credit_utilization": { "description": "The monthly credit utilization formatted as a decimal.", "type": "string" }, "monthly_debit_utilization": { "description": "The monthly debit utilization formatted as a decimal.", "type": "string" } }, "title": "TransferMetricsGetAuthorizationUsage", "type": "object" }, "TransferMetricsGetRequest": { "description": "Defines the request schema for `/transfer/metrics/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "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).", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "TransferMetricsGetRequest", "type": "object" }, "TransferMetricsGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/metrics/get`", "properties": { "authorization_usage": { "$ref": "#/components/schemas/TransferMetricsGetAuthorizationUsage" }, "daily_credit_transfer_volume": { "description": "Sum of dollar amount of credit transfers in last 24 hours (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "daily_debit_transfer_volume": { "description": "Sum of dollar amount of debit transfers in last 24 hours (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "iso_currency_code": { "description": "The currency of the dollar amount, e.g. \"USD\".", "type": "string" }, "monthly_credit_transfer_volume": { "description": "Sum of dollar amount of credit transfers in current calendar month (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "monthly_debit_transfer_volume": { "description": "Sum of dollar amount of debit transfers in current calendar month (decimal string with two digits of precision e.g. \"10.00\").", "type": "string" }, "monthly_transfer_volume": { "deprecated": true, "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\").", "type": "string", "x-hidden-from-docs": true }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "return_rates": { "$ref": "#/components/schemas/TransferMetricsGetReturnRates" } }, "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" ], "title": "TransferMetricsGetResponse", "type": "object" }, "TransferMetricsGetReturnRates": { "additionalProperties": true, "description": "Details regarding return rates.", "nullable": true, "properties": { "last_60d": { "$ref": "#/components/schemas/TransferMetricsGetReturnRatesOverInterval" } }, "title": "TransferMetricsGetReturnRates", "type": "object" }, "TransferMetricsGetReturnRatesOverInterval": { "additionalProperties": true, "description": "Details regarding return rates.", "nullable": true, "properties": { "administrative_return_rate": { "description": "The administrative return rate.", "type": "string" }, "overall_return_rate": { "description": "The overall return rate.", "type": "string" }, "unauthorized_return_rate": { "description": "The unauthorized return rate.", "type": "string" } }, "title": "TransferMetricsGetReturnRatesOverInterval", "type": "object" }, "TransferMigrateAccountRequest": { "description": "Defines the request schema for `/transfer/migrate_account`", "properties": { "account_number": { "description": "The user's account number.", "type": "string" }, "account_type": { "description": "The type of the bank account (`checking` or `savings`).", "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "routing_number": { "description": "The user's routing number.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wire_routing_number": { "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.", "type": "string" } }, "required": [ "account_number", "routing_number", "account_type" ], "title": "TransferMigrateAccountRequest", "type": "object" }, "TransferMigrateAccountResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/migrate_account`", "properties": { "access_token": { "description": "The Plaid `access_token` for the newly created Item.", "type": "string" }, "account_id": { "description": "The Plaid `account_id` for the newly created Item.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "access_token", "account_id", "request_id" ], "title": "TransferMigrateAccountResponse", "type": "object" }, "TransferMigratedFundingAccountIDRequest": { "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, "type": "string", "x-hidden-from-docs": true }, "TransferNetwork": { "description": "The network or rails used for the transfer.\n\nFor transfers submitted as `ach` or `same-day-ach`, the Standard ACH cutoff is 8:30 PM Eastern Time.\n\nFor 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.\n\nFor 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`.\n\nWire transfers are currently in early availability. To request access to `wire` as a payment network, contact your account manager. For transfers submitted as `wire`, the `type` must be `credit`; wire debits are not supported. The cutoff to submit a wire payment is 6:30 PM Eastern Time on a business day; wires submitted after that time will be processed on the next business day. The transaction limit for a wire is $999,999.99. Authorization requests sent with an amount greater than $999,999.99 will fail.", "enum": [ "ach", "same-day-ach", "rtp", "wire" ], "title": "TransferNetwork", "type": "string" }, "TransferNetworkTraceID": { "description": "The trace identifier for the transfer based on its network. This will only be set after the transfer has posted.\n\nFor `ach` or `same-day-ach` transfers, this is the ACH trace number.\nFor `rtp` transfers, this is the Transaction Identification number.\nFor `wire` transfers, this is the IMAD (Input Message Accountability Data) number.", "nullable": true, "title": "TransferNetworkTraceID", "type": "string" }, "TransferOriginatorAddress": { "description": "The originator's address.", "properties": { "city": { "description": "The full city name.", "type": "string" }, "country_code": { "description": "ISO-3166-1 alpha-2 country code standard.", "type": "string" }, "postal_code": { "description": "The postal code (e.g., \"94103\").", "type": "string" }, "region": { "description": "The two-letter code for the state or province (e.g., \"CA\").", "type": "string" }, "street": { "description": "The full street address.", "type": "string" } }, "required": [ "city", "street", "region", "postal_code", "country_code" ], "type": "object" }, "TransferOriginatorClientID": { "description": "Client ID of the customer that owns the Ledger balance. This is so Plaid knows which of your customers to payout or collect funds. Only applicable for [Platform customers](https://plaid.com/docs/transfer/application/#originators-vs-platforms). Do not include if you're paying out to yourself.", "nullable": true, "type": "string" }, "TransferOriginatorCreateRequest": { "description": "Defines the request schema for `/transfer/originator/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "company_name": { "description": "The company name of the end customer being created. This will be displayed in public-facing surfaces, e.g. Plaid Dashboard.", "minLength": 1, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "company_name" ], "title": "TransferOriginatorCreateRequest", "type": "object" }, "TransferOriginatorCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/originator/create`", "properties": { "company_name": { "description": "The company name of the end customer.", "type": "string" }, "originator_client_id": { "description": "Client ID of the originator. This identifier will be used when creating transfers and should be stored associated with end user information.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "originator_client_id", "company_name", "request_id" ], "title": "TransferOriginatorCreateResponse", "type": "object" }, "TransferOriginatorDiligence": { "description": "The diligence information for the originator.", "properties": { "address": { "$ref": "#/components/schemas/TransferOriginatorAddress" }, "credit_usage_configuration": { "$ref": "#/components/schemas/TransferCreditUsageConfiguration" }, "dba": { "description": "The business name of the originator.", "type": "string" }, "debit_usage_configuration": { "$ref": "#/components/schemas/TransferDebitUsageConfiguration" }, "funding_account": { "$ref": "#/components/schemas/TransferFundingAccount" }, "naics_code": { "description": "The NAICS code of the originator.", "maxLength": 6, "minLength": 6, "type": "string" }, "tax_id": { "description": "The tax ID of the originator.", "minLength": 1, "type": "string" }, "website": { "description": "The website of the originator.", "format": "url", "type": "string" } }, "required": [ "dba", "tax_id", "address", "website", "naics_code", "funding_account" ], "type": "object" }, "TransferOriginatorFundingAccountCreateRequest": { "description": "Defines the request schema for `/transfer/originator/funding_account/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "funding_account": { "$ref": "#/components/schemas/TransferFundingAccountWithDisplayName" }, "originator_client_id": { "description": "The Plaid client ID of the transfer originator.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "funding_account", "originator_client_id" ], "title": "TransferOriginatorFundingAccountCreateRequest", "type": "object" }, "TransferOriginatorFundingAccountCreateResponse": { "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" ], "title": "TransferOriginatorFundingAccountCreateResponse", "type": "object" }, "TransferOriginatorFundingAccountUpdateRequest": { "description": "Defines the request schema for `/transfer/originator/funding_account/update`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "funding_account": { "$ref": "#/components/schemas/TransferFundingAccount" }, "originator_client_id": { "description": "The Plaid client ID of the transfer originator.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "funding_account", "originator_client_id" ], "title": "TransferOriginatorFundingAccountUpdateRequest", "type": "object" }, "TransferOriginatorFundingAccountUpdateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/originator/funding_account/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferOriginatorFundingAccountUpdateResponse", "type": "object" }, "TransferOriginatorGetRequest": { "description": "Defines the request schema for `/transfer/originator/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "description": "Client ID of the end customer (i.e. the originator).", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "originator_client_id" ], "title": "TransferOriginatorGetRequest", "type": "object" }, "TransferOriginatorGetResponse": { "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" ], "title": "TransferOriginatorGetResponse", "type": "object" }, "TransferOriginatorListRequest": { "description": "Defines the request schema for `/transfer/originator/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of originators to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "offset": { "default": 0, "description": "The number of originators to skip before returning results.", "minimum": 0, "nullable": true, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "title": "TransferOriginatorListRequest", "type": "object" }, "TransferOriginatorListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/originator/list`", "properties": { "originators": { "items": { "$ref": "#/components/schemas/Originator" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "originators", "request_id" ], "title": "TransferOriginatorListResponse", "type": "object" }, "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 }, "TransferPlatformOnboardingUpdateWebhook": { "additionalProperties": true, "description": "Fired when the status of an onboarding originator has been updated. Call `/transfer/originator/get` to check the latest status", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "originator_client_id": { "$ref": "#/components/schemas/TransferPlatformOriginatorClientID" }, "webhook_code": { "description": "`\"PLATFORM_ONBOARDING_UPDATE\"`", "type": "string" }, "webhook_type": { "description": "`\"TRANSFER\"`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "originator_client_id", "environment" ], "title": "TransferPlatformOnboardingUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "originator_client_id": "5fd92e38107d160013b02a37", "webhook_code": "PLATFORM_ONBOARDING_UPDATE", "webhook_type": "TRANSFER" } } }, "TransferPlatformOriginatorClientID": { "description": "The client ID of the originator", "type": "string" }, "TransferPlatformOriginatorCreateRequest": { "description": "Defines the request schema for `/transfer/platform/originator/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "$ref": "#/components/schemas/TransferPlatformOriginatorClientID" }, "originator_reviewed_at": { "description": "ISO8601 timestamp indicating the most recent time the platform collected onboarding data from the originator", "format": "date-time", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "tos_acceptance_metadata": { "$ref": "#/components/schemas/TransferPlatformTOSAcceptanceMetadata" }, "webhook": { "description": "The webhook URL to which a `PLATFORM_ONBOARDING_UPDATE` webhook should be sent.", "format": "url", "type": "string" } }, "required": [ "originator_client_id", "tos_acceptance_metadata", "originator_reviewed_at" ], "title": "TransferPlatformOriginatorCreateRequest", "type": "object" }, "TransferPlatformOriginatorCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/platform/originator/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferPlatformOriginatorCreateResponse", "type": "object" }, "TransferPlatformPersonAddress": { "description": "Home address of a person", "properties": { "city": { "description": "The full city name.", "type": "string" }, "country": { "description": "Valid, capitalized, two-letter ISO code representing the country of this object. Must be in ISO 3166-1 alpha-2 form.", "type": "string" }, "postal_code": { "description": "The postal code of the address.", "type": "string" }, "region": { "description": "An ISO 3166-2 subdivision code.\nRelated terms would be \"state\", \"province\", \"prefecture\", \"zone\", \"subdivision\", etc.", "type": "string" }, "street": { "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.", "type": "string" }, "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.", "type": "string" } }, "required": [ "city", "country", "postal_code", "region", "street" ], "title": "TransferPlatformPersonAddress", "type": "object" }, "TransferPlatformPersonCreateRequest": { "description": "Defines the request schema for `/transfer/platform/person/create`", "properties": { "address": { "$ref": "#/components/schemas/TransferPlatformPersonAddress" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "date_of_birth": { "description": "The date of birth of the person. Formatted as YYYY-MM-DD.", "format": "date", "type": "string" }, "email_address": { "description": "A valid email address. Must not have leading or trailing spaces.", "example": "user@example.com", "type": "string" }, "id_number": { "$ref": "#/components/schemas/TransferPlatformPersonIDNumber" }, "name": { "$ref": "#/components/schemas/TransferPlatformPersonName" }, "originator_client_id": { "$ref": "#/components/schemas/TransferPlatformOriginatorClientID" }, "ownership_percentage": { "description": "The percentage of ownership this person has in the onboarding business. Only applicable to beneficial owners with 25% or more ownership.", "maximum": 100, "minimum": 25, "type": "integer" }, "phone_number": { "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.", "example": "+12345678909", "type": "string" }, "relationship_to_originator": { "description": "The relationship between this person and the originator they are related to.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "title": { "description": "The title of the person at the business. Only applicable to control persons - for example, \"CEO\", \"President\", \"Owner\", etc.", "type": "string" } }, "required": [ "originator_client_id" ], "type": "object" }, "TransferPlatformPersonCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/platform/person/create`", "properties": { "person_id": { "description": "An ID that should be used when submitting additional requirements that are associated with this person.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id", "person_id" ], "title": "TransferPlatformPersonCreateResponse", "type": "object" }, "TransferPlatformPersonIDNumber": { "description": "ID number of the person", "properties": { "type": { "$ref": "#/components/schemas/IDNumberType" }, "value": { "description": "Value of the person's ID Number. Alpha-numeric, with all formatting characters stripped.", "example": "123456789", "title": "IDNumberValue", "type": "string" } }, "required": [ "value", "type" ], "type": "object" }, "TransferPlatformPersonName": { "description": "The person's legal name", "properties": { "family_name": { "$ref": "#/components/schemas/FamilyNameField" }, "given_name": { "$ref": "#/components/schemas/GivenNameField" } }, "required": [ "given_name", "family_name" ], "type": "object" }, "TransferPlatformRequirement": { "additionalProperties": true, "description": "A piece of information that is required for originator onboarding.", "properties": { "person_id": { "description": "UUID of the person associated with the requirement. Only present for individual-scoped requirements.", "nullable": true, "type": "string" }, "requirement_type": { "description": "The type of requirement.", "type": "string" } }, "title": "TransferPlatformRequirement", "type": "object" }, "TransferPlatformRequirementSubmission": { "description": "A single requirement submission", "properties": { "person_id": { "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.", "format": "uuid", "type": "string" }, "requirement_type": { "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.", "type": "string" }, "value": { "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.", "type": "string" } }, "required": [ "requirement_type", "value" ], "title": "RequirementSubmission", "type": "object" }, "TransferPlatformRequirementSubmitRequest": { "description": "Defines the request schema for `/transfer/platform/requirement/submit`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "description": "The client ID of the originator", "type": "string" }, "requirement_submissions": { "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, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "originator_client_id", "requirement_submissions" ], "title": "TransferPlatformRequirementSubmitRequest", "type": "object" }, "TransferPlatformRequirementSubmitResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/platform/requirement/submit`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferPlatformRequirementSubmitResponse", "type": "object" }, "TransferPlatformTOSAcceptanceMetadata": { "description": "Metadata related to the acceptance of Terms of Service", "properties": { "agreement_accepted": { "description": "Indicates whether the TOS agreement was accepted", "type": "boolean" }, "agreement_accepted_at": { "description": "ISO8601 timestamp indicating when the originator accepted the TOS", "format": "date-time", "type": "string" }, "originator_ip_address": { "description": "The IP address of the originator when they accepted the TOS. Formatted as an IPv4 or IPv6 IP address", "type": "string" } }, "required": [ "agreement_accepted", "originator_ip_address", "agreement_accepted_at" ], "title": "TOSAcceptanceMetadata", "type": "object" }, "TransferQuestionnaireCreateRequest": { "description": "Defines the request schema for `/transfer/questionnaire/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "originator_client_id": { "description": "Client ID of the end customer.", "type": "string" }, "redirect_uri": { "description": "URL the end customer will be redirected to after completing questions in Plaid-hosted onboarding flow.", "format": "url", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "originator_client_id", "redirect_uri" ], "title": "TransferQuestionnaireCreateRequest", "type": "object" }, "TransferQuestionnaireCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/questionnaire/create`", "properties": { "onboarding_url": { "description": "Plaid-hosted onboarding URL that you will redirect the end customer to.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "onboarding_url", "request_id" ], "title": "TransferQuestionnaireCreateResponse", "type": "object" }, "TransferRecurringCancelRequest": { "description": "Defines the request schema for `/transfer/recurring/cancel`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "recurring_transfer_id" ], "title": "TransferRecurringCancelRequest", "type": "object" }, "TransferRecurringCancelResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/recurring/cancel`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferRecurringCancelResponse", "type": "object" }, "TransferRecurringCreateRequest": { "description": "Defines the request schema for `/transfer/recurring/create`", "properties": { "access_token": { "$ref": "#/components/schemas/TransferAccessToken" }, "account_id": { "$ref": "#/components/schemas/TransferAccountID" }, "ach_class": { "$ref": "#/components/schemas/ACHClass" }, "amount": { "$ref": "#/components/schemas/TransferAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "description": { "description": "The description of the recurring transfer.", "type": "string" }, "device": { "$ref": "#/components/schemas/TransferDevice" }, "funding_account_id": { "deprecated": true, "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, "type": "string", "x-hidden-from-docs": true }, "idempotency_key": { "$ref": "#/components/schemas/TransferRecurringIdempotencyKey" }, "iso_currency_code": { "deprecated": true, "description": "The currency of the transfer amount. The default value is \"USD\".", "type": "string", "x-hidden-from-docs": true }, "network": { "$ref": "#/components/schemas/TransferRecurringNetwork" }, "schedule": { "$ref": "#/components/schemas/TransferRecurringSchedule" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "test_clock_id": { "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, "type": "string" }, "type": { "$ref": "#/components/schemas/TransferType" }, "user": { "$ref": "#/components/schemas/TransferUserInRequest" }, "user_present": { "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`.", "nullable": true, "type": "boolean" } }, "required": [ "access_token", "idempotency_key", "account_id", "type", "network", "amount", "user", "schedule", "description" ], "title": "TransferRecurringCreateRequest", "type": "object" }, "TransferRecurringCreateResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/recurring/create`", "properties": { "decision": { "$ref": "#/components/schemas/TransferAuthorizationDecision" }, "decision_rationale": { "$ref": "#/components/schemas/TransferAuthorizationDecisionRationale" }, "recurring_transfer": { "$ref": "#/components/schemas/RecurringTransferNullable" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "decision", "request_id" ], "title": "TransferRecurringCreateResponse", "type": "object" }, "TransferRecurringGetRequest": { "description": "Defines the request schema for `/transfer/recurring/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "recurring_transfer_id": { "$ref": "#/components/schemas/RecurringTransferID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "recurring_transfer_id" ], "title": "TransferRecurringGetRequest", "type": "object" }, "TransferRecurringGetResponse": { "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" ], "title": "TransferRecurringGetResponse", "type": "object" }, "TransferRecurringIdempotencyKey": { "description": "A random key provided by the client, per unique recurring transfer. Maximum of 50 characters.\n\nThe API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a recurring fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single recurring transfer is created.", "maxLength": 50, "title": "TransferRecurringIdempotencyKey", "type": "string" }, "TransferRecurringListRequest": { "description": "Defines the request schema for `/transfer/recurring/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of recurring transfers to return.", "maximum": 25, "minimum": 1, "type": "integer" }, "end_time": { "description": "The end `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" }, "funding_account_id": { "description": "Filter recurring transfers to only those with the specified `funding_account_id`.", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of recurring transfers to skip before returning results.", "minimum": 0, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_time": { "description": "The start `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)", "format": "date-time", "nullable": true, "type": "string" } }, "title": "TransferRecurringListRequest", "type": "object" }, "TransferRecurringListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/recurring/list`", "properties": { "recurring_transfers": { "items": { "$ref": "#/components/schemas/RecurringTransfer" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "recurring_transfers", "request_id" ], "title": "TransferRecurringListResponse", "type": "object" }, "TransferRecurringNetwork": { "description": "Networks eligible for recurring transfers.", "enum": [ "ach", "same-day-ach", "rtp" ], "title": "TransferRecurrinngNetwork", "type": "string" }, "TransferRecurringSchedule": { "description": "The schedule that the recurring transfer will be executed on.", "properties": { "end_date": { "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`.\nIf 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.", "format": "date", "nullable": true, "type": "string" }, "interval_count": { "$ref": "#/components/schemas/TransferScheduleIntervalCount" }, "interval_execution_day": { "description": "The day of the interval on which to schedule the transfer.\n\nIf the `interval_unit` is `week`, `interval_execution_day` should be an integer from 1 (Monday) to 5 (Friday).\n\nIf 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.\n\nThe transfer will be originated on the next available banking day if the designated day is a non banking day.", "type": "integer" }, "interval_unit": { "$ref": "#/components/schemas/TransferScheduleIntervalUnit" }, "start_date": { "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`.\n\nFor `rtp` recurring transfers, `start_date` must be in the future.\nOtherwise, 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.", "format": "date", "type": "string" } }, "required": [ "interval_unit", "interval_count", "interval_execution_day", "start_date" ], "title": "TransferRecurringSchedule", "type": "object" }, "TransferRecurringStatus": { "description": "The status of the recurring transfer.\n\n`active`: The recurring transfer is currently active.\n`cancelled`: The recurring transfer was cancelled by the client or Plaid.\n`expired`: The recurring transfer has completed all originations according to its recurring schedule.", "enum": [ "active", "cancelled", "expired" ], "title": "TransferRecurringStatus", "type": "string" }, "TransferRefund": { "additionalProperties": true, "description": "Represents a refund within the Transfers API.", "properties": { "amount": { "$ref": "#/components/schemas/TransferRefundAmount" }, "created": { "description": "The datetime when this refund was created. This will be of the form `2006-01-02T15:04:05Z`", "format": "date-time", "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/TransferRefundFailure" }, "id": { "$ref": "#/components/schemas/TransferRefundID" }, "ledger_id": { "$ref": "#/components/schemas/TransferLedgerID" }, "network_trace_id": { "$ref": "#/components/schemas/TransferNetworkTraceID" }, "status": { "$ref": "#/components/schemas/TransferRefundStatus" }, "transfer_id": { "$ref": "#/components/schemas/TransferIDForRefund" } }, "required": [ "id", "transfer_id", "amount", "status", "created", "failure_reason" ], "title": "TransferRefund", "type": "object" }, "TransferRefundAmount": { "description": "The amount of the refund (decimal string with two digits of precision e.g. \"10.00\").", "title": "TransferRefundAmount", "type": "string" }, "TransferRefundCancelRequest": { "description": "Defines the request schema for `/transfer/refund/cancel`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "refund_id": { "$ref": "#/components/schemas/TransferRefundID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "refund_id" ], "title": "TransferRefundCancelRequest", "type": "object" }, "TransferRefundCancelResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/refund/cancel`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "title": "TransferRefundCancelResponse", "type": "object" }, "TransferRefundCreateRequest": { "description": "Defines the request schema for `/transfer/refund/create`", "properties": { "amount": { "$ref": "#/components/schemas/TransferRefundAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "idempotency_key": { "$ref": "#/components/schemas/TransferRefundIdempotencyKey" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transfer_id": { "$ref": "#/components/schemas/TransferIDForRefund" } }, "required": [ "transfer_id", "idempotency_key", "amount" ], "title": "TransferRefundCreateRequest", "type": "object" }, "TransferRefundCreateResponse": { "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" ], "title": "TransferRefundCreateResponse", "type": "object" }, "TransferRefundFailure": { "additionalProperties": true, "description": "The failure reason if the event type for a refund is `\"failed\"` or `\"returned\"`. Null value otherwise.", "nullable": true, "properties": { "ach_return_code": { "deprecated": 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.", "nullable": true, "type": "string" }, "description": { "description": "A human-readable description of the reason for the failure or reversal.", "type": "string" }, "failure_code": { "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.", "nullable": true, "type": "string" } }, "title": "TransferRefundFailure", "type": "object" }, "TransferRefundGetRequest": { "description": "Defines the request schema for `/transfer/refund/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "refund_id": { "$ref": "#/components/schemas/TransferRefundID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "refund_id" ], "title": "TransferRefundGetRequest", "type": "object" }, "TransferRefundGetResponse": { "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" ], "title": "TransferRefundCreateResponse", "type": "object" }, "TransferRefundID": { "description": "Plaid's unique identifier for a refund.", "title": "TransferRefundID", "type": "string" }, "TransferRefundIdempotencyKey": { "description": "A random key provided by the client, per unique refund. Maximum of 50 characters.\n\nThe 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.", "maxLength": 50, "title": "TransferRefundIdempotencyKey", "type": "string" }, "TransferRefundStatus": { "description": "The status of the refund.\n\n`pending`: A new refund was created; it is in the pending state.\n`posted`: The refund has been successfully submitted to the payment network.\n`settled`: Credits have been refunded to the Plaid linked account.\n`cancelled`: The refund was cancelled by the client.\n`failed`: The refund has failed.\n`returned`: The refund was returned.", "enum": [ "pending", "posted", "cancelled", "failed", "settled", "returned" ], "title": "TransferRefundStatus", "type": "string" }, "TransferRepayment": { "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.\n\nRepayments are sent over ACH, with funds typically available on the next banking day.", "properties": { "amount": { "description": "Decimal amount of the repayment as it appears on your account ledger.", "type": "string" }, "created": { "description": "The datetime when the repayment occurred, in RFC 3339 format.", "format": "date-time", "type": "string" }, "iso_currency_code": { "description": "The currency of the repayment, e.g. \"USD\".", "type": "string" }, "repayment_id": { "description": "Identifier of the repayment.", "type": "string" } }, "required": [ "repayment_id", "created", "amount", "iso_currency_code" ], "title": "TransferRepayment", "type": "object" }, "TransferRepaymentListRequest": { "description": "Defines the request schema for `/transfer/repayment/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of repayments to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_date": { "description": "The end `created` datetime of repayments to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of repayments to skip before returning results.", "minimum": 0, "type": "integer" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start `created` datetime of repayments to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" } }, "title": "TransferRepaymentListRequest", "type": "object" }, "TransferRepaymentListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/repayment/list`", "properties": { "repayments": { "items": { "$ref": "#/components/schemas/TransferRepayment" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "repayments", "request_id" ], "title": "TransferRepaymentListResponse", "type": "object" }, "TransferRepaymentReturn": { "additionalProperties": true, "description": "Represents a return on a Guaranteed ACH transfer that is included in the specified repayment.", "properties": { "amount": { "description": "The value of the returned transfer.", "type": "string" }, "event_id": { "description": "The unique identifier of the corresponding `returned` transfer event.", "minimum": 0, "type": "integer" }, "iso_currency_code": { "description": "The currency of the repayment, e.g. \"USD\".", "type": "string" }, "transfer_id": { "description": "The unique identifier of the guaranteed transfer that was returned.", "type": "string" } }, "required": [ "transfer_id", "event_id", "amount", "iso_currency_code" ], "title": "TransferRepaymentReturn", "type": "object" }, "TransferRepaymentReturnListRequest": { "description": "Defines the request schema for `/transfer/repayment/return/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of repayments to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "offset": { "default": 0, "description": "The number of repayments to skip before returning results.", "minimum": 0, "type": "integer" }, "repayment_id": { "description": "Identifier of the repayment to query.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "repayment_id" ], "title": "TransferRepaymentReturnListRequest", "type": "object" }, "TransferRepaymentReturnListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/repayment/return/list`", "properties": { "repayment_returns": { "items": { "$ref": "#/components/schemas/TransferRepaymentReturn" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "repayment_returns", "request_id" ], "title": "TransferRepaymentReturnListResponse", "type": "object" }, "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`.\nFor example, to schedule a recurring transfer which originates once every two weeks, set `interval_unit` = `week` and `interval_count` = 2.", "title": "TransferScheduleIntervalCount", "type": "integer" }, "TransferScheduleIntervalUnit": { "description": "The unit of the recurring interval.", "enum": [ "week", "month" ], "minLength": 1, "title": "TransferScheduleIntervalUnit", "type": "string" }, "TransferStatus": { "description": "The status of the transfer.\n\n`pending`: A new transfer was created; it is in the pending state.\n`posted`: The transfer has been successfully submitted to the payment network.\n`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.\n`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.\n`cancelled`: The transfer was cancelled by the client. This is the terminal state of a cancelled transfer.\n`failed`: The transfer failed, no funds were moved. This is the terminal state of a failed transfer.\n`returned`: A posted transfer was returned. This is the terminal state of a returned transfer.", "enum": [ "pending", "posted", "settled", "funds_available", "cancelled", "failed", "returned" ], "title": "TransferStatus", "type": "string" }, "TransferSweep": { "additionalProperties": true, "description": "Describes a sweep of funds to / from the sweep account.\n\nA 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`.\n\n`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.\n\nThe 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": { "amount": { "description": "Signed decimal amount of the sweep as it appears on your sweep account ledger (e.g. \"-10.00\")\n\nIf amount is not present, the sweep was net-settled to zero and outstanding debits and credits between the sweep account and Plaid are balanced.", "type": "string" }, "created": { "description": "The datetime when the sweep occurred, in RFC 3339 format.", "format": "date-time", "type": "string" }, "description": { "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.", "type": "string" }, "expected_funds_available_date": { "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, "type": "string" }, "failure_reason": { "$ref": "#/components/schemas/SweepFailure" }, "funding_account_id": { "$ref": "#/components/schemas/TransferFundingAccountIDResponse" }, "id": { "description": "Identifier of the sweep.", "type": "string" }, "iso_currency_code": { "description": "The currency of the sweep, e.g. \"USD\".", "type": "string" }, "ledger_id": { "$ref": "#/components/schemas/TransferLedgerID" }, "network_trace_id": { "$ref": "#/components/schemas/TransferNetworkTraceID" }, "settled": { "description": "The date when the sweep settled, in the YYYY-MM-DD format.", "format": "date", "nullable": true, "type": "string" }, "status": { "$ref": "#/components/schemas/SweepStatus" }, "trigger": { "$ref": "#/components/schemas/SweepTrigger" } }, "required": [ "id", "created", "amount", "iso_currency_code", "settled", "funding_account_id" ], "title": "TransferSweep", "type": "object" }, "TransferSweepAmount": { "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, "title": "TransferSweepAmount", "type": "string" }, "TransferSweepGetRequest": { "description": "Defines the request schema for `/transfer/sweep/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "sweep_id": { "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).", "type": "string" } }, "required": [ "sweep_id" ], "title": "TransferSweepGetRequest", "type": "object" }, "TransferSweepGetResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/sweep/get`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweep": { "$ref": "#/components/schemas/TransferSweep" } }, "required": [ "sweep", "request_id" ], "title": "TransferSweepGetResponse", "type": "object" }, "TransferSweepID": { "description": "Plaid's unique identifier for a sweep.", "title": "TransferSweepID", "type": "string" }, "TransferSweepIDNullable": { "description": "Plaid's unique identifier for a sweep.", "nullable": true, "title": "TransferSweepID", "type": "string" }, "TransferSweepListRequest": { "description": "Defines the request schema for `/transfer/sweep/list`", "properties": { "amount": { "description": "Filter sweeps to only those with the specified amount.", "nullable": true, "type": "string" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 25, "description": "The maximum number of sweeps to return.", "maximum": 25, "minimum": 1, "nullable": true, "type": "integer" }, "end_date": { "description": "The end `created` datetime of sweeps to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" }, "funding_account_id": { "description": "Filter sweeps to only those with the specified `funding_account_id`.", "nullable": true, "type": "string" }, "offset": { "default": 0, "description": "The number of sweeps to skip before returning results.", "minimum": 0, "type": "integer" }, "originator_client_id": { "description": "Filter sweeps to only those with the specified originator client.", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "start_date": { "description": "The start `created` datetime of sweeps to return (RFC 3339 format).", "format": "date-time", "nullable": true, "type": "string" }, "status": { "$ref": "#/components/schemas/SweepStatus" }, "transfer_id": { "description": "Filter sweeps to only those with the included `transfer_id`.", "nullable": true, "type": "string" }, "trigger": { "$ref": "#/components/schemas/SweepTrigger" } }, "title": "TransferSweepListRequest", "type": "object" }, "TransferSweepListResponse": { "additionalProperties": true, "description": "Defines the response schema for `/transfer/sweep/list`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "sweeps": { "items": { "$ref": "#/components/schemas/TransferSweep" }, "type": "array" } }, "required": [ "sweeps", "request_id" ], "title": "TransferSweepListResponse", "type": "object" }, "TransferSweepStatus": { "description": "The status of the sweep for the transfer.\n\n`unswept`: The transfer hasn't been swept yet.\n`swept`: The transfer was swept to the sweep account.\n`swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer's business checking account.\n`return_swept`: The transfer was returned, funds were pulled back or pushed back to the sweep account.\n`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" ], "nullable": true, "title": "TransferSweepStatus", "type": "string" }, "TransferTestClock": { "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" ], "title": "TransferTestClock", "type": "object" }, "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).", "title": "TransferTestClockID", "type": "string" }, "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" ], "title": "TransferType", "type": "string" }, "TransferUnmigratedFundingAccountIDRequest": { "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, "type": "string" }, "TransferUserAddressInRequest": { "description": "The address associated with the account holder.", "properties": { "city": { "description": "Ex. \"San Francisco\"", "type": "string" }, "country": { "description": "A two-letter country code (e.g., \"US\").", "type": "string" }, "postal_code": { "description": "The postal code (e.g., \"94103\").", "type": "string" }, "region": { "description": "The state or province (e.g., \"CA\").", "type": "string" }, "street": { "description": "The street number and name (i.e., \"100 Market St.\").", "type": "string" } }, "title": "TransferUserAddressInRequest", "type": "object" }, "TransferUserAddressInResponse": { "additionalProperties": true, "description": "The address associated with the account holder.", "nullable": true, "properties": { "city": { "description": "Ex. \"San Francisco\"", "nullable": true, "type": "string" }, "country": { "description": "A two-letter country code (e.g., \"US\").", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code (e.g., \"94103\").", "nullable": true, "type": "string" }, "region": { "description": "The state or province (e.g., \"CA\").", "nullable": true, "type": "string" }, "street": { "description": "The street number and name (i.e., \"100 Market St.\").", "nullable": true, "type": "string" } }, "required": [ "street", "city", "region", "postal_code", "country" ], "title": "TransferUserAddressInResponse", "type": "object" }, "TransferUserInRequest": { "description": "The legal name and other information for the account holder.", "properties": { "address": { "$ref": "#/components/schemas/TransferUserAddressInRequest" }, "email_address": { "description": "The user's email address.", "type": "string" }, "legal_name": { "description": "The user's legal name.", "type": "string" }, "phone_number": { "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.", "type": "string" } }, "required": [ "legal_name" ], "title": "TransferUserInRequest", "type": "object" }, "TransferUserInRequestDeprecated": { "deprecated": true, "description": "The legal name and other information for the account holder.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/TransferUserAddressInRequest" }, "email_address": { "description": "The user's email address.", "type": "string" }, "legal_name": { "description": "The user's legal name.", "type": "string" }, "phone_number": { "description": "The user's phone number.", "type": "string" } }, "title": "TransferUserInRequestDeprecated", "type": "object", "x-hidden-from-docs": true }, "TransferUserInResponse": { "additionalProperties": true, "description": "The legal name and other information for the account holder.", "properties": { "address": { "$ref": "#/components/schemas/TransferUserAddressInResponse" }, "email_address": { "description": "The user's email address.", "nullable": true, "type": "string" }, "legal_name": { "description": "The user's legal name.", "type": "string" }, "phone_number": { "description": "The user's phone number.", "nullable": true, "type": "string" } }, "required": [ "legal_name", "phone_number", "email_address", "address" ], "title": "TransferUserInResponse", "type": "object" }, "TransferWireDetails": { "description": "Information specific to wire transfers.", "nullable": true, "properties": { "message_to_beneficiary": { "description": "Additional information from the wire originator to the beneficiary. Max 140 characters.", "nullable": true, "type": "string" }, "wire_return_fee": { "description": "The fee amount deducted from the original transfer during a wire return, if applicable.", "nullable": true, "type": "string" } }, "title": "TransferWireDetails", "type": "object" }, "TrustIndex": { "additionalProperties": true, "description": "Represents a calculated Trust Index Score.", "nullable": true, "properties": { "model": { "description": "The versioned name of the Trust Index model used for scoring.", "type": "string" }, "score": { "description": "The overall trust index score.", "type": "integer" }, "subscores": { "$ref": "#/components/schemas/TrustIndexSubscores" } }, "required": [ "score", "model", "subscores" ], "type": "object" }, "TrustIndexSubscore": { "additionalProperties": true, "description": "Represents Trust Index Subscore.", "nullable": true, "properties": { "score": { "description": "The subscore score.", "type": "integer" } }, "required": [ "score" ], "type": "object" }, "TrustIndexSubscores": { "additionalProperties": true, "description": "Contains sub-score metadata.", "nullable": true, "properties": { "bank_account_insights": { "$ref": "#/components/schemas/TrustIndexSubscore" }, "device_and_connection": { "$ref": "#/components/schemas/TrustIndexSubscore" } }, "type": "object" }, "TrustedDeviceData": { "description": "Trusted Device data associated with the previous Link session.", "properties": { "device_id": { "$ref": "#/components/schemas/DeviceId" }, "trust_level": { "type": "integer" } }, "type": "object" }, "URL": { "description": "An 'http' or 'https' URL (must begin with either of those).", "example": "https://example.com", "format": "uri", "title": "URL", "type": "string" }, "URLNullable": { "description": "An 'http' or 'https' URL (must begin with either of those).", "example": "https://example.com", "format": "uri", "nullable": true, "title": "URL", "type": "string" }, "UTCOffset": { "description": "UTC offset of the timezone associated with the IP address.", "example": "+06:00:00", "nullable": true, "type": "string" }, "UnofficialCurrencyCodeList": { "description": "List of unofficial currency codes", "properties": { "ADA": { "description": "Cardano", "type": "string" }, "BAT": { "description": "Basic Attention Token", "type": "string" }, "BCH": { "description": "Bitcoin Cash", "type": "string" }, "BNB": { "description": "Binance Coin", "type": "string" }, "BSV": { "description": "Bitcoin Satoshi Vision", "type": "string" }, "BTC": { "description": "Bitcoin", "type": "string" }, "BTG": { "description": "Bitcoin Gold", "type": "string" }, "CNH": { "description": "Chinese Yuan (offshore)", "type": "string" }, "DASH": { "description": "Dash", "type": "string" }, "DOGE": { "description": "Dogecoin", "type": "string" }, "ETC": { "description": "Ethereum Classic", "type": "string" }, "ETH": { "description": "Ethereum", "type": "string" }, "GBX": { "description": "Pence sterling, i.e. British penny", "type": "string" }, "LSK": { "description": "Lisk", "type": "string" }, "NEO": { "description": "Neo", "type": "string" }, "OMG": { "description": "OmiseGO", "type": "string" }, "QTUM": { "description": "Qtum", "type": "string" }, "USDT": { "description": "Tether", "type": "string" }, "XLM": { "description": "Stellar Lumen", "type": "string" }, "XMR": { "description": "Monero", "type": "string" }, "XRP": { "description": "Ripple", "type": "string" }, "ZEC": { "description": "Zcash", "type": "string" }, "ZRX": { "description": "0x", "type": "string" } }, "required": [ "ADA", "BAT", "BCH", "BNB", "BTC", "BTG", "CNH", "DASH", "DOGE", "ETC", "ETH", "GBX", "LSK", "NEO", "OMG", "QTUM", "USDT", "XLM", "XMR", "XRP", "ZEC", "ZRX" ], "title": "UnofficialCurrencyCodeList", "type": "string" }, "UpdateEntityScreeningRequestSearchTerms": { "description": "Search terms for editing an entity watchlist screening", "nullable": true, "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValue" }, "email_address": { "$ref": "#/components/schemas/EmailAddress" }, "entity_watchlist_program_id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "legal_name": { "$ref": "#/components/schemas/EntityWatchlistScreeningName" }, "phone_number": { "$ref": "#/components/schemas/WatchlistScreeningPhoneNumber" }, "url": { "$ref": "#/components/schemas/URL" } }, "required": [ "entity_watchlist_program_id" ], "type": "object" }, "UpdateIndividualScreeningRequestSearchTerms": { "description": "Search terms for editing an individual watchlist screening", "nullable": true, "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValue" }, "legal_name": { "$ref": "#/components/schemas/WatchlistScreeningIndividualName" }, "watchlist_program_id": { "$ref": "#/components/schemas/WatchlistProgramID" } }, "type": "object" }, "UpdatedAtTimestamp": { "description": "An ISO8601 formatted timestamp. This field indicates the last time the resource was modified.", "example": "2020-07-24T03:26:02Z", "format": "date-time", "title": "Timestamp", "type": "string" }, "UserAccountIdentity": { "additionalProperties": true, "description": "The identity data permissioned by the end user during the authorization flow.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/UserAccountIdentityAddress" }, "date_of_birth": { "description": "The user's date of birth.", "nullable": true, "type": "string" }, "email": { "description": "The user's email address.\n\nNote: email is currently not returned.", "nullable": true, "type": "string" }, "name": { "$ref": "#/components/schemas/UserAccountIdentityName" }, "phone_number": { "description": "The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format", "type": "string" }, "ssn": { "description": "The user's Social Security number.", "nullable": true, "type": "string" }, "ssn_last_4": { "description": "The last 4 digits of the user's Social Security number.", "nullable": true, "type": "string" } }, "type": "object" }, "UserAccountIdentityAddress": { "additionalProperties": true, "description": "The user's address.", "nullable": true, "properties": { "city": { "description": "The full city name", "nullable": true, "type": "string" }, "country": { "description": "The ISO 3166-1 alpha-2 country code", "nullable": true, "type": "string" }, "postal_code": { "description": "The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.", "nullable": true, "type": "string" }, "region": { "description": "The region or state.\nExample: `\"NC\"`", "nullable": true, "type": "string" }, "street": { "description": "The full street address\nExample: `\"564 Main Street, APT 15\"`", "nullable": true, "type": "string" }, "street2": { "description": "The second line street address", "nullable": true, "type": "string" } }, "type": "object" }, "UserAccountIdentityEditCounts": { "additionalProperties": true, "description": "Edit counts over various time periods.", "properties": { "edits_1d": { "description": "Number of edits in the last 1 day", "type": "integer" }, "edits_30d": { "description": "Number of edits in the last 30 days", "type": "integer" }, "edits_365d": { "description": "Number of edits in the last 365 days", "type": "integer" }, "edits_all_time": { "description": "Total number of edits", "type": "integer" }, "edits_current": { "description": "Number of edits in the current session", "type": "integer" } }, "type": "object" }, "UserAccountIdentityEditHistory": { "additionalProperties": true, "description": "Statistics tracking the number of edits made to identity fields over various time periods.", "nullable": true, "properties": { "address": { "$ref": "#/components/schemas/UserAccountIdentityEditCounts" }, "date_of_birth": { "$ref": "#/components/schemas/UserAccountIdentityEditCounts" }, "email": { "$ref": "#/components/schemas/UserAccountIdentityEditCounts" }, "name": { "$ref": "#/components/schemas/UserAccountIdentityEditCounts" }, "official_document": { "$ref": "#/components/schemas/UserAccountIdentityOfficialDocument" } }, "type": "object" }, "UserAccountIdentityName": { "additionalProperties": true, "description": "The user's first name and last name.", "nullable": true, "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" } }, "type": "object" }, "UserAccountIdentityOfficialDocument": { "additionalProperties": true, "description": "Official identity document edit statistics.", "nullable": true, "properties": { "ssn": { "$ref": "#/components/schemas/UserAccountIdentityEditCounts" } }, "type": "object" }, "UserAccountItem": { "additionalProperties": true, "description": "An Item created during a Layer authorization session.", "properties": { "access_token": { "$ref": "#/components/schemas/AccessToken" }, "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" } }, "type": "object" }, "UserAccountRevokedWebhook": { "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.\n\nIf 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.\n\nYou 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.\n\nAfter the user has re-granted access, Auth customers should call the auth endpoint again to obtain the new TAN.", "properties": { "account_id": { "description": "The external account ID of the affected account", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`USER_ACCOUNT_REVOKED`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "account_id", "environment" ], "title": "UserAccountRevokedWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J", "environment": "production", "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "USER_ACCOUNT_REVOKED", "webhook_type": "ITEM" } } }, "UserAccountSessionEvent": { "description": "Event data for user account session tracking", "properties": { "name": { "description": "The name of the event.", "type": "string" }, "outcome": { "description": "Optional outcome of the event.", "type": "string" }, "timestamp": { "description": "The timestamp when the event occurred in ISO 8601 format.", "format": "date-time", "type": "string" } }, "required": [ "name", "timestamp" ], "type": "object" }, "UserAccountSessionEventSendRequest": { "description": "UserAccountSessionEventSendRequest defines the request schema for `/user_account/session/event/send`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cohort_id": { "description": "Optional cohort identifier for the user session.", "type": "string" }, "event": { "$ref": "#/components/schemas/UserAccountSessionEvent" }, "link_session_id": { "description": "The Link session identifier.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "link_session_id", "event" ], "type": "object" }, "UserAccountSessionEventSendResponse": { "additionalProperties": true, "description": "UserAccountSessionEventSendResponse defines the response schema for `/user_account/session/event/send`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserAccountSessionGetRequest": { "description": "UserAccountSessionGetRequest defines the request schema for `/user_account/session/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "public_token": { "description": "The public token generated by the end user Layer session.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "public_token" ], "type": "object" }, "UserAccountSessionGetResponse": { "additionalProperties": true, "description": "UserAccountSessionGetResponse defines the response schema for `/user_account/session/get`", "properties": { "identity": { "$ref": "#/components/schemas/UserAccountIdentity" }, "identity_edit_history": { "$ref": "#/components/schemas/UserAccountIdentityEditHistory" }, "items": { "items": { "$ref": "#/components/schemas/UserAccountItem" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "identity", "items", "request_id" ], "type": "object" }, "UserAddress": { "additionalProperties": true, "description": "Home address for the user. Supported values are: not provided, address with only country code or full address.\n\nFor 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, "properties": { "city": { "$ref": "#/components/schemas/CityNullable" }, "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "postal_code": { "$ref": "#/components/schemas/PostalCode" }, "region": { "$ref": "#/components/schemas/Region" }, "street": { "$ref": "#/components/schemas/StreetNullable" }, "street2": { "$ref": "#/components/schemas/Street2" } }, "required": [ "country" ], "type": "object" }, "UserBasedProducts": { "description": "A list of user-based products. User-based products include Financial Management products, Protect products, CRA products, and subscription products.", "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" ], "title": "UserBasedProducts", "type": "string" }, "UserCreateRequest": { "description": "UserCreateRequest defines the request schema for `/user/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "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`.", "maxLength": 128, "minLength": 1, "type": "string" }, "consumer_report_user_identity": { "$ref": "#/components/schemas/ConsumerReportUserIdentity" }, "end_customer": { "description": "A unique ID representing a CRA reseller's end customer. Maximum of 128 characters.", "maxLength": 128, "minLength": 0, "type": "string", "x-hidden-from-docs": true }, "identity": { "$ref": "#/components/schemas/ClientUserIdentity" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "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" ], "type": "object" }, "UserCreateResponse": { "additionalProperties": true, "description": "UserCreateResponse defines the response schema for `/user/create`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "user_id", "request_id" ], "type": "object" }, "UserCustomPassword": { "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.", "properties": { "force_error": { "description": "An error code to force on Item creation. Possible values are:\n\n`\"INSTITUTION_NOT_RESPONDING\"`\n`\"INSTITUTION_NO_LONGER_SUPPORTED\"`\n`\"INVALID_CREDENTIALS\"`\n`\"INVALID_MFA\"`\n`\"ITEM_LOCKED\"`\n`\"ITEM_LOGIN_REQUIRED\"`\n`\"ITEM_NOT_SUPPORTED\"`\n`\"INVALID_LINK_TOKEN\"`\n`\"MFA_NOT_SUPPORTED\"`\n`\"NO_ACCOUNTS\"`\n`\"PLAID_ERROR\"`\n`\"USER_INPUT_TIMEOUT\"`\n`\"USER_SETUP_REQUIRED\"`", "type": "string" }, "mfa": { "$ref": "#/components/schemas/MFA" }, "override_accounts": { "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" }, "type": "array" }, "recaptcha": { "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.", "type": "string" }, "seed": { "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.\n\nNote 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.", "type": "string" }, "version": { "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, "type": "string" } }, "required": [ "seed", "override_accounts", "mfa", "recaptcha", "force_error" ], "title": "UserCustomPassword", "type": "object", "x-examples": {} }, "UserDataOverview": { "additionalProperties": true, "description": "metadata for the set of insights provided in `TransactionsUserInsightsGetResponse`", "properties": { "days_available": { "description": "The range of days of transactions available.", "type": "integer" }, "newest_transaction_date": { "description": "The date of the newest transaction processed to generate insights.", "format": "date", "type": "string" }, "oldest_transaction_date": { "description": "The date of the oldest transaction processed to generate insights.", "format": "date", "type": "string" }, "total_inflows": { "description": "Sum of inflow amounts.", "format": "double", "type": "number" }, "total_outflows": { "description": "Sum of outflow amounts.", "format": "double", "type": "number" }, "transaction_count": { "description": "The total number of transactions.", "type": "integer" } }, "required": [ "transaction_count", "days_available", "total_outflows", "total_inflows" ], "type": "object" }, "UserFinancialDataRefreshRequest": { "description": "UserFinancialDataRefreshRequest defines the request schema for `user/financial_data/refresh`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "description": "A Plaid-generated ID that identifies the end user.", "type": "string" } }, "required": [ "user_id" ], "type": "object" }, "UserFinancialDataRefreshResponse": { "additionalProperties": true, "description": "UserFinancialDataRefreshResponse defines the response schema for `user/financial_data/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "results": { "items": { "$ref": "#/components/schemas/RefreshResult" }, "type": "array" }, "user_id": { "description": "The user ID associated with the refresh request.", "type": "string" } }, "type": "object" }, "UserGetRequest": { "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" ], "type": "object" }, "UserGetResponse": { "additionalProperties": true, "description": "UserGetResponse defines the response schema for `/user/get`.", "properties": { "client_user_id": { "description": "Client provided user ID.", "nullable": true, "type": "string" }, "created_at": { "description": "Timestamp of user creation.", "format": "date-time", "type": "string" }, "identity": { "$ref": "#/components/schemas/ClientUserIdentity" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "updated_at": { "description": "Timestamp of last user update.", "format": "date-time", "type": "string" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "request_id", "user_id", "client_user_id", "created_at" ], "type": "object" }, "UserIDNumber": { "additionalProperties": true, "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.", "nullable": true, "properties": { "type": { "$ref": "#/components/schemas/IDNumberType" }, "value": { "$ref": "#/components/schemas/IDNumberValue" } }, "required": [ "value", "type" ], "type": "object" }, "UserId": { "description": "The Plaid `user_id` of the User associated with this webhook, warning, or error.", "title": "UserId", "type": "string" }, "UserIdentityRemoveRequest": { "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" ], "type": "object" }, "UserIdentityRemoveResponse": { "additionalProperties": true, "description": "UserIdentityRemoveResponse defines the response schema for `/user/identity/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserInsightsId": { "description": "A unique ID identifying a User Monitoring Insights Report. Like all Plaid identifiers, this ID is case sensitive.", "title": "UserInsightsId", "type": "string" }, "UserItemsAssociateRequest": { "description": "UserItemsAssociateRequest defines the request schema for `/user/items/associate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_ids": { "description": "An array of `item_id`s to be associated with the `user_id`.", "items": { "$ref": "#/components/schemas/ItemId" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "user_id", "item_ids" ], "type": "object" }, "UserItemsAssociateResponse": { "additionalProperties": true, "description": "UserItemsAssociateResponse defines the response schema for `/user/items/associate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserItemsGetRequest": { "description": "UserItemsGetRequest defines the request schema for `/user/items/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "type": "object" }, "UserItemsGetResponse": { "additionalProperties": true, "description": "UserItemsGetResponse defines the response schema for `/user/items/get`", "properties": { "items": { "items": { "$ref": "#/components/schemas/Item" }, "type": "array" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "items", "request_id" ], "type": "object" }, "UserItemsRemoveRequest": { "description": "UserItemsRemoveRequest defines the request schema for `/user/items/remove`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "item_ids": { "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.", "items": { "$ref": "#/components/schemas/ItemId" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "item_ids" ], "type": "object" }, "UserItemsRemoveResponse": { "additionalProperties": true, "description": "UserItemsRemoveResponse defines the response schema for `/user/items/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserPermissionRevokedWebhook": { "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.\n\nNote 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.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "user_id": { "$ref": "#/components/schemas/UserId" }, "webhook_code": { "description": "`USER_PERMISSION_REVOKED`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "environment" ], "title": "UserPermissionRevokedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": { "display_message": null, "error_code": "USER_PERMISSION_REVOKED", "error_message": "the holder of this account has revoked their permission for your application to access it", "error_type": "ITEM_ERROR", "status": 400 }, "item_id": "gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ", "user_id": "usr_9nSp2KuZ2x4JDw", "webhook_code": "USER_PERMISSION_REVOKED", "webhook_type": "ITEM" } } }, "UserProductsTerminateReasonCode": { "allOf": [ { "$ref": "#/components/schemas/ProductsTerminateReasonCode" } ], "description": "The reason for terminating user-based products." }, "UserProductsTerminateRequest": { "description": "UserProductsTerminateRequest defines the request schema for `/user/products/terminate`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "reason_code": { "$ref": "#/components/schemas/UserProductsTerminateReasonCode" }, "reason_note": { "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`.", "maxLength": 512, "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" } }, "required": [ "user_id", "reason_code" ], "type": "object" }, "UserProductsTerminateResponse": { "additionalProperties": true, "description": "UserProductsTerminateResponse defines the response schema for `/user/products/terminate`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserRemoveRequest": { "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" } }, "type": "object" }, "UserRemoveResponse": { "additionalProperties": true, "description": "UserRemoveResponse defines the response schema for `/user/remove`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "UserStatedIncomeSourceCategory": { "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" ], "type": "string" }, "UserStatedIncomeSourceFrequency": { "description": "The pay frequency of a specified income source", "enum": [ "UNKNOWN", "WEEKLY", "BIWEEKLY", "SEMI_MONTHLY", "MONTHLY" ], "type": "string" }, "UserStatedIncomeSourcePayType": { "description": "The pay type - `GROSS`, `NET`, or `UNKNOWN` for a specified income source", "enum": [ "UNKNOWN", "GROSS", "NET" ], "type": "string" }, "UserThirdPartyTokenCreateRequest": { "description": "UserThirdPartyTokenCreateRequest defines the request schema for `/user/third_party_token/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "expiration_time": { "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", "nullable": true, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "third_party_client_id": { "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.", "type": "string" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "required": [ "third_party_client_id" ], "type": "object", "x-hidden-from-docs": true }, "UserThirdPartyTokenCreateResponse": { "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" ], "type": "object", "x-hidden-from-docs": true }, "UserThirdPartyTokenRemoveRequest": { "description": "UserThirdPartyTokenCreateRequest 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" ], "type": "object", "x-hidden-from-docs": true }, "UserThirdPartyTokenRemoveResponse": { "additionalProperties": true, "description": "UserThirdPartyTokenCreateResponse defines the response schema for `/user/third_party_token/remove`", "properties": { "removed": { "description": "`true` if the third-party user token was successfully removed.", "type": "boolean" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "removed", "request_id" ], "type": "object", "x-hidden-from-docs": true }, "UserToken": { "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).", "title": "UserToken", "type": "string" }, "UserTransactionsRefreshRequest": { "description": "UserTransactionsRefreshRequest defines the request schema for `user/transactions/refresh`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "description": "A Plaid-generated ID that identifies the end user.", "type": "string" } }, "required": [ "user_id" ], "type": "object" }, "UserTransactionsRefreshResponse": { "additionalProperties": true, "description": "UserTransactionsRefreshResponse defines the response schema for `user/transactions/refresh`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "results": { "items": { "$ref": "#/components/schemas/RefreshResult" }, "type": "array" }, "user_id": { "description": "The user ID associated with the refresh request.", "type": "string" } }, "type": "object" }, "UserUpdateRequest": { "description": "UserUpdateRequest defines the request schema for `/user/update`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "consumer_report_user_identity": { "$ref": "#/components/schemas/ConsumerReportUserIdentity" }, "identity": { "$ref": "#/components/schemas/ClientUserIdentity" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "user_id": { "$ref": "#/components/schemas/NewUserID" }, "user_token": { "$ref": "#/components/schemas/UserToken" } }, "type": "object" }, "UserUpdateResponse": { "additionalProperties": true, "description": "UserUpdateResponse defines the response schema for `/user/update`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "request_id" ], "type": "object" }, "ValidationSource": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "ValidationSourceName": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "nullable": true, "type": "string" }, "ValidationSourceReferenceIdentifier": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "nullable": true, "type": "string" } }, "required": [ "ValidationSourceName", "ValidationSourceReferenceIdentifier" ], "title": "ValidationSource", "type": "object" }, "ValidationSources": { "additionalProperties": true, "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "properties": { "VALIDATION_SOURCE": { "description": "Documentation not found in the MISMO model viewer and not provided by Freddie Mac.", "items": { "$ref": "#/components/schemas/ValidationSource" }, "type": "array" } }, "required": [ "VALIDATION_SOURCE" ], "title": "ValidationSources", "type": "object" }, "VerificationExpiredWebhook": { "additionalProperties": true, "description": "Fired when an Item was not verified via automated micro-deposits after seven days since the automated micro-deposit was made.", "properties": { "account_id": { "description": "The `account_id` of the account associated with the webhook", "type": "string" }, "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "webhook_code": { "description": "`VERIFICATION_EXPIRED`", "type": "string" }, "webhook_type": { "description": "`AUTH`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "account_id", "environment" ], "title": "VerificationExpiredWebhook", "type": "object", "x-examples": { "example-1": { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "environment": "production", "error": null, "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "webhook_code": "VERIFICATION_EXPIRED", "webhook_type": "AUTH" } } }, "VerificationOfAsset": { "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" ], "title": "VerificationOfAsset", "type": "object" }, "VerificationOfAssetResponse": { "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" ], "title": "VerificationOfAssetResponse", "type": "object" }, "VerificationRefreshStatus": { "description": "The verification refresh status. One of the following:\n\n`\"VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED\"` User presence is required to refresh an income verification.\n`\"VERIFICATION_REFRESH_SUCCESSFUL\"` The income verification refresh was successful.\n`\"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" ], "title": "VerificationRefreshStatus", "type": "string" }, "VerificationStatus": { "description": "The verification status. One of the following:\n\n`\"VERIFIED\"`: The information was successfully verified.\n\n`\"UNVERIFIED\"`: The verification has not yet been performed.\n\n`\"NEEDS_INFO\"`: The verification was attempted but could not be completed due to missing information.\n\n\"`UNABLE_TO_VERIFY`\": The verification was performed and the information could not be verified.\n\n`\"UNKNOWN\"`: The verification status is unknown.", "enum": [ "VERIFIED", "UNVERIFIED", "NEEDS_INFO", "UNABLE_TO_VERIFY", "UNKNOWN" ], "title": "VerificationStatus", "type": "string" }, "VerifySMSDetails": { "additionalProperties": true, "description": "Additional information for the `verify_sms` step.", "nullable": true, "properties": { "status": { "$ref": "#/components/schemas/VerifySMSDetailsStatus" }, "verifications": { "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" }, "type": "array" } }, "required": [ "status", "verifications" ], "type": "object" }, "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`.", "enum": [ "success", "failed" ], "example": "success", "type": "string" }, "VirtualTime": { "description": "The virtual timestamp on the test clock. This will be of the form `2006-01-02T15:04:05Z`.", "format": "date-time", "title": "VirtualTime", "type": "string" }, "W2": { "additionalProperties": true, "description": "W2 is an object that represents income data taken from a W2 tax document.", "properties": { "allocated_tips": { "description": "Allocated tips.", "nullable": true, "type": "string" }, "box_12": { "items": { "$ref": "#/components/schemas/W2Box12" }, "type": "array" }, "box_9": { "description": "Contents from box 9 on the W2.", "nullable": true, "type": "string" }, "dependent_care_benefits": { "description": "Dependent care benefits.", "nullable": true, "type": "string" }, "employee": { "$ref": "#/components/schemas/Employee" }, "employer": { "$ref": "#/components/schemas/PaystubEmployer" }, "employer_id_number": { "description": "An employee identification number or EIN.", "nullable": true, "type": "string" }, "federal_income_tax_withheld": { "description": "Federal income tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_tax_withheld": { "description": "Medicare tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_wages_and_tips": { "description": "Wages and tips from medicare.", "nullable": true, "type": "string" }, "nonqualified_plans": { "description": "Nonqualified plans.", "nullable": true, "type": "string" }, "other": { "description": "Other.", "nullable": true, "type": "string" }, "retirement_plan": { "description": "Retirement plan.", "nullable": true, "type": "string" }, "social_security_tax_withheld": { "description": "Social Security tax withheld for the tax year.", "nullable": true, "type": "string" }, "social_security_tips": { "description": "Tips from Social Security.", "nullable": true, "type": "string" }, "social_security_wages": { "description": "Wages from Social Security.", "nullable": true, "type": "string" }, "state_and_local_wages": { "items": { "$ref": "#/components/schemas/W2StateAndLocalWages" }, "type": "array" }, "statutory_employee": { "description": "Statutory employee.", "nullable": true, "type": "string" }, "tax_year": { "description": "The tax year of the W2 document.", "nullable": true, "type": "string" }, "third_party_sick_pay": { "description": "Third party sick pay.", "nullable": true, "type": "string" }, "wages_tips_other_comp": { "description": "Wages from tips and other compensation.", "nullable": true, "type": "string" } }, "title": "W2", "type": "object" }, "W2Box12": { "additionalProperties": true, "description": "Data on the W2 Box 12", "properties": { "amount": { "description": "W2 Box 12 amount.", "nullable": true, "type": "string" }, "code": { "description": "W2 Box 12 code.", "nullable": true, "type": "string" } }, "title": "W2Box12", "type": "object" }, "W2Box12Override": { "additionalProperties": true, "description": "Data on the W2 Box 12", "properties": { "amount": { "description": "W2 Box 12 amount.", "nullable": true, "type": "string" }, "code": { "description": "W2 Box 12 code.", "nullable": true, "type": "string" } }, "title": "W2Box12Override", "type": "object" }, "W2Override": { "additionalProperties": true, "description": "W2 is an object that represents income data taken from a W2 tax document.", "properties": { "allocated_tips": { "description": "Allocated tips.", "nullable": true, "type": "string" }, "box_12": { "items": { "$ref": "#/components/schemas/W2Box12Override" }, "type": "array" }, "box_9": { "description": "Contents from box 9 on the W2.", "nullable": true, "type": "string" }, "dependent_care_benefits": { "description": "Dependent care benefits.", "nullable": true, "type": "string" }, "employee": { "$ref": "#/components/schemas/PaystubOverrideEmployee" }, "employer": { "$ref": "#/components/schemas/PaystubOverrideEmployer" }, "employer_id_number": { "description": "An employer identification number or EIN.", "nullable": true, "type": "string" }, "federal_income_tax_withheld": { "description": "Federal income tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_tax_withheld": { "description": "Medicare tax withheld for the tax year.", "nullable": true, "type": "string" }, "medicare_wages_and_tips": { "description": "Wages and tips from medicare.", "nullable": true, "type": "string" }, "nonqualified_plans": { "description": "Nonqualified plans.", "nullable": true, "type": "string" }, "other": { "description": "Other.", "nullable": true, "type": "string" }, "retirement_plan": { "description": "Retirement plan.", "nullable": true, "type": "string" }, "social_security_tax_withheld": { "description": "Social Security tax withheld for the tax year.", "nullable": true, "type": "string" }, "social_security_tips": { "description": "Tips from Social Security.", "nullable": true, "type": "string" }, "social_security_wages": { "description": "Wages from Social Security.", "nullable": true, "type": "string" }, "state_and_local_wages": { "items": { "$ref": "#/components/schemas/W2StateAndLocalWagesOverride" }, "type": "array" }, "statutory_employee": { "description": "Statutory employee.", "nullable": true, "type": "string" }, "tax_year": { "description": "The tax year of the W2 document.", "nullable": true, "type": "string" }, "third_party_sick_pay": { "description": "Third party sick pay.", "nullable": true, "type": "string" }, "wages_tips_other_comp": { "description": "Wages from tips and other compensation.", "nullable": true, "type": "string" } }, "title": "W2Override", "type": "object" }, "W2StateAndLocalWages": { "additionalProperties": true, "description": "W2 state and local wages", "properties": { "employer_state_id_number": { "description": "State identification number of the employer.", "nullable": true, "type": "string" }, "local_income_tax": { "description": "Income tax from the locality.", "nullable": true, "type": "string" }, "local_wages_tips": { "description": "Wages and tips from the locality.", "nullable": true, "type": "string" }, "locality_name": { "description": "Name of the locality.", "nullable": true, "type": "string" }, "state": { "description": "State associated with the wage.", "nullable": true, "type": "string" }, "state_income_tax": { "description": "Income tax from the specified state.", "nullable": true, "type": "string" }, "state_wages_tips": { "description": "Wages and tips from the specified state.", "nullable": true, "type": "string" } }, "title": "W2StateAndLocalWages", "type": "object" }, "W2StateAndLocalWagesOverride": { "additionalProperties": true, "description": "W2 state and local wages", "properties": { "employer_state_id_number": { "description": "State identification number of the employer.", "nullable": true, "type": "string" }, "local_income_tax": { "description": "Income tax from the locality.", "nullable": true, "type": "string" }, "local_wages_tips": { "description": "Wages and tips from the locality.", "nullable": true, "type": "string" }, "locality_name": { "description": "Name of the locality.", "nullable": true, "type": "string" }, "state": { "description": "State associated with the wage.", "nullable": true, "type": "string" }, "state_income_tax": { "description": "Income tax from the specified state.", "nullable": true, "type": "string" }, "state_wages_tips": { "description": "Wages and tips from the specified state.", "nullable": true, "type": "string" } }, "title": "W2StateAndLocalWagesOverride", "type": "object" }, "Wallet": { "additionalProperties": true, "description": "An object representing the e-wallet", "properties": { "balance": { "$ref": "#/components/schemas/WalletBalance" }, "numbers": { "$ref": "#/components/schemas/WalletNumbers" }, "recipient_id": { "description": "The ID of the recipient that corresponds to the e-wallet account numbers", "type": "string" }, "status": { "$ref": "#/components/schemas/WalletStatus" }, "wallet_id": { "description": "A unique ID identifying the e-wallet", "type": "string" } }, "required": [ "wallet_id", "balance", "numbers", "status" ], "title": "Wallet", "type": "object" }, "WalletBalance": { "additionalProperties": true, "description": "An object representing the e-wallet balance", "properties": { "available": { "description": "The total amount of funds in the account after subtracting pending debit transaction amounts", "format": "double", "type": "number" }, "current": { "description": "The total amount of funds in the account", "format": "double", "type": "number" }, "iso_currency_code": { "description": "The ISO-4217 currency code of the balance", "type": "string" } }, "required": [ "iso_currency_code", "current", "available" ], "title": "WalletBalance", "type": "object" }, "WalletCreateRequest": { "description": "WalletCreateRequest defines the request schema for `/wallet/create`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "iso_currency_code": { "$ref": "#/components/schemas/WalletISOCurrencyCode" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "iso_currency_code" ], "type": "object" }, "WalletCreateResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/Wallet" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "WalletCreateResponse defines the response schema for `/wallet/create`", "required": [ "wallet_id", "balance", "request_id" ], "type": "object" }, "WalletGetRequest": { "description": "WalletGetRequest defines the request schema for `/wallet/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wallet_id": { "description": "The ID of the e-wallet", "minLength": 1, "type": "string" } }, "required": [ "wallet_id" ], "type": "object" }, "WalletGetResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/Wallet" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "WalletGetResponse defines the response schema for `/wallet/get`", "required": [ "wallet_id", "balance", "request_id" ], "type": "object" }, "WalletISOCurrencyCode": { "description": "An ISO-4217 currency code, used with e-wallets and transactions.", "enum": [ "GBP", "EUR" ], "maxLength": 3, "minLength": 3, "title": "ISO Currency Code", "type": "string" }, "WalletListRequest": { "description": "WalletListRequest defines the request schema for `/wallet/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 10, "description": "The number of e-wallets to fetch", "maximum": 20, "minimum": 1, "type": "integer" }, "cursor": { "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.", "maxLength": 1024, "type": "string" }, "iso_currency_code": { "$ref": "#/components/schemas/WalletISOCurrencyCode" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "WalletListResponse": { "additionalProperties": true, "description": "WalletListResponse defines the response schema for `/wallet/list`", "properties": { "next_cursor": { "description": "Cursor used for fetching e-wallets created before the latest e-wallet provided in this response", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "wallets": { "description": "An array of e-wallets", "items": { "$ref": "#/components/schemas/Wallet" }, "type": "array" } }, "required": [ "wallets", "request_id" ], "type": "object" }, "WalletNumbers": { "additionalProperties": true, "description": "An object representing the e-wallet account numbers", "properties": { "bacs": { "$ref": "#/components/schemas/RecipientBACS" }, "international": { "$ref": "#/components/schemas/NumbersInternationalIBAN" } }, "title": "WalletNumbers", "type": "object" }, "WalletPaymentScheme": { "description": "The payment scheme used to execute this transaction. This is present only for transaction types `PAYOUT` and `REFUND`.\n\n`FASTER_PAYMENTS`: The standard payment scheme within the UK.\n\n`SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area.\n\n`SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment to a beneficiary within the SEPA area.", "enum": [ null, "FASTER_PAYMENTS", "SEPA_CREDIT_TRANSFER", "SEPA_CREDIT_TRANSFER_INSTANT" ], "nullable": true, "type": "string" }, "WalletStatus": { "description": "The status of the wallet.\n\n`UNKNOWN`: The wallet status is unknown.\n\n`ACTIVE`: The wallet is active and ready to send money to and receive money from.\n\n`CLOSED`: The wallet is closed. Any transactions made to or from this wallet will error.", "enum": [ "UNKNOWN", "ACTIVE", "CLOSED" ], "type": "string" }, "WalletTransaction": { "additionalProperties": true, "description": "The transaction details", "properties": { "amount": { "$ref": "#/components/schemas/WalletTransactionAmount" }, "counterparty": { "$ref": "#/components/schemas/WalletTransactionCounterparty" }, "created_at": { "description": "Timestamp when the transaction was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.", "format": "date-time", "type": "string" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "failure_reason": { "$ref": "#/components/schemas/WalletTransactionFailureReason" }, "last_status_update": { "description": "The date and time of the last time the `status` was updated, in IS0 8601 format", "format": "date-time", "type": "string" }, "payee_verification_status": { "$ref": "#/components/schemas/WalletTransactionPayeeVerificationStatus" }, "payment_id": { "description": "The payment id that this transaction is associated with, if any. This is present only for transaction types `PIS_PAY_IN` and `REFUND`.", "nullable": true, "type": "string" }, "reference": { "description": "A reference for the transaction", "type": "string" }, "related_transactions": { "description": "A list of wallet transactions that this transaction is associated with, if any.", "items": { "$ref": "#/components/schemas/WalletTransactionRelation" }, "type": "array" }, "scheme": { "$ref": "#/components/schemas/WalletPaymentScheme" }, "status": { "$ref": "#/components/schemas/WalletTransactionStatus" }, "transaction_id": { "description": "A unique ID identifying the transaction", "type": "string" }, "type": { "description": "The type of the transaction. The supported transaction types that are returned are:\n`BANK_TRANSFER:` a transaction which credits an e-wallet through an external bank transfer.\n\n`PAYOUT:` a transaction which debits an e-wallet by disbursing funds to a counterparty.\n\n`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/).\n\n`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/).\n\n`FUNDS_SWEEP`: an automated transaction which debits funds from an e-wallet to a designated client-owned account.\n\n`RETURN`: an automated transaction where a debit transaction was reversed and money moved back to originating account.\n\n`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.\n\n`ACCOUNT_FUNDING`: an incoming transfer from an allowlisted account. Not automatically refunded.\n\n`AUTO_REFUND`: an outgoing refund automatically initiated by Plaid in response to an unexpected `BANK_TRANSFER`.", "enum": [ "BANK_TRANSFER", "PAYOUT", "PIS_PAY_IN", "REFUND", "FUNDS_SWEEP", "RETURN", "RECALL", "ACCOUNT_FUNDING", "AUTO_REFUND" ], "type": "string" }, "wallet_id": { "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.", "type": "string" } }, "required": [ "transaction_id", "wallet_id", "reference", "type", "amount", "counterparty", "status", "created_at", "last_status_update" ], "title": "WalletTransaction", "type": "object" }, "WalletTransactionAmount": { "additionalProperties": true, "description": "The amount and currency of a transaction", "properties": { "iso_currency_code": { "$ref": "#/components/schemas/WalletISOCurrencyCode" }, "value": { "description": "The amount of the transaction. Must contain at most two digits of precision e.g. `1.23`.", "format": "double", "minimum": 0.01, "type": "number" } }, "required": [ "iso_currency_code", "value" ], "title": "WalletTransactionAmount", "type": "object" }, "WalletTransactionCounterparty": { "additionalProperties": true, "description": "An object representing the e-wallet transaction's counterparty", "properties": { "address": { "$ref": "#/components/schemas/PaymentInitiationAddress" }, "date_of_birth": { "description": "The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.", "format": "date", "nullable": true, "type": "string" }, "name": { "description": "The name of the counterparty", "minLength": 1, "type": "string" }, "numbers": { "$ref": "#/components/schemas/WalletTransactionCounterpartyNumbers" } }, "required": [ "name", "numbers" ], "title": "WalletTransactionCounterparty", "type": "object" }, "WalletTransactionCounterpartyBACS": { "allOf": [ { "$ref": "#/components/schemas/RecipientBACS" }, { "additionalProperties": true, "type": "object" } ], "description": "The account number and sort code of the counterparty's account" }, "WalletTransactionCounterpartyInternational": { "additionalProperties": true, "description": "International Bank Account Number for a Wallet Transaction", "nullable": true, "properties": { "iban": { "$ref": "#/components/schemas/NumbersIBAN" } }, "type": "object" }, "WalletTransactionCounterpartyNumbers": { "additionalProperties": true, "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" } }, "title": "WalletTransactionCounterpartyNumbers", "type": "object" }, "WalletTransactionExecuteRequest": { "description": "WalletTransactionExecuteRequest defines the request schema for `/wallet/transaction/execute`", "properties": { "amount": { "$ref": "#/components/schemas/WalletTransactionAmount" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "counterparty": { "$ref": "#/components/schemas/WalletTransactionCounterparty" }, "idempotency_key": { "$ref": "#/components/schemas/WalletTransactionIdempotencyKey" }, "originating_fund_source": { "$ref": "#/components/schemas/OriginatingFundSource" }, "reference": { "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.\nEnsure that the `reference` field is unique for each transaction.", "maxLength": 18, "minLength": 6, "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wallet_id": { "description": "The ID of the e-wallet to debit from", "minLength": 1, "type": "string" } }, "required": [ "idempotency_key", "wallet_id", "counterparty", "amount", "reference" ], "type": "object" }, "WalletTransactionExecuteResponse": { "additionalProperties": true, "description": "WalletTransactionExecuteResponse defines the response schema for `/wallet/transaction/execute`", "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" }, "status": { "$ref": "#/components/schemas/WalletTransactionStatus" }, "transaction_id": { "description": "A unique ID identifying the transaction", "type": "string" } }, "required": [ "transaction_id", "status", "request_id" ], "type": "object" }, "WalletTransactionFailureReason": { "description": "The error code of a failed transaction. Error codes include:\n`EXTERNAL_SYSTEM`: The transaction was declined by an external system.\n`EXPIRED`: The transaction request has expired.\n`CANCELLED`: The transaction request was rescinded.\n`INVALID`: The transaction did not meet certain criteria, such as an inactive account or no valid counterparty, etc.\n`ACCOUNT_INVALID`: The transaction could not be processed because the wallet account is invalid or inactive.\n`AUTHENTICATION_FAILED`: The transaction could not be processed because authentication with the wallet provider failed.\n`UNKNOWN`: The transaction was unsuccessful, but the exact cause is unknown.", "enum": [ "EXTERNAL_SYSTEM", "EXPIRED", "CANCELLED", "INVALID", "ACCOUNT_INVALID", "AUTHENTICATION_FAILED", "UNKNOWN" ], "nullable": true, "type": "string" }, "WalletTransactionGetRequest": { "description": "WalletTransactionGetRequest defines the request schema for `/wallet/transaction/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "transaction_id": { "description": "The ID of the transaction to fetch", "minLength": 1, "type": "string" } }, "required": [ "transaction_id" ], "type": "object" }, "WalletTransactionGetResponse": { "additionalProperties": true, "allOf": [ { "$ref": "#/components/schemas/WalletTransaction" }, { "properties": { "request_id": { "$ref": "#/components/schemas/RequestID" } }, "type": "object" } ], "description": "WalletTransactionGetResponse defines the response schema for `/wallet/transaction/get`", "required": [ "transaction_id", "reference", "type", "amount", "counterparty", "status", "created_at", "request_id" ], "title": "WalletTransactionGetResponse", "type": "object" }, "WalletTransactionIdempotencyKey": { "description": "A random key provided by the client, per unique wallet transaction. Maximum of 128 characters.\n\nThe 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.", "maxLength": 128, "minLength": 1, "title": "WalletTransactionIdempotencyKey", "type": "string" }, "WalletTransactionListRequest": { "description": "WalletTransactionListRequest defines the request schema for `/wallet/transaction/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 10, "description": "The number of transactions to fetch", "maximum": 200, "minimum": 1, "type": "integer" }, "cursor": { "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.", "maxLength": 256, "type": "string" }, "options": { "$ref": "#/components/schemas/WalletTransactionListRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wallet_id": { "description": "The ID of the e-wallet to fetch transactions from", "minLength": 1, "type": "string" } }, "required": [ "wallet_id" ], "type": "object" }, "WalletTransactionListRequestOptions": { "description": "Additional wallet transaction options", "nullable": true, "properties": { "end_time": { "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", "type": "string" }, "start_time": { "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", "type": "string" } }, "type": "object" }, "WalletTransactionListResponse": { "additionalProperties": true, "description": "WalletTransactionListResponse defines the response schema for `/wallet/transaction/list`", "properties": { "next_cursor": { "description": "The value that, when used as the optional `cursor` parameter to `/wallet/transaction/list`, will return the corresponding transaction as its first entry.", "type": "string" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "transactions": { "description": "An array of transactions of an e-wallet, associated with the given `wallet_id`", "items": { "$ref": "#/components/schemas/WalletTransaction" }, "type": "array" } }, "required": [ "transactions", "request_id" ], "type": "object" }, "WalletTransactionPayeeVerificationStatus": { "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.\n\n`FULL_MATCH`: The payee name fully matches the account holder.\n\n`PARTIAL_MATCH`: The payee name partially matches the account holder.\n\n`NO_MATCH`: The payee name does not match the account holder.\n\n`ERROR`: An error occurred during payee verification.\n\n`CHECK_NOT_POSSIBLE`: Payee verification could not be performed.\n\nThis 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" ], "nullable": true, "type": "string" }, "WalletTransactionRelation": { "additionalProperties": true, "description": "Transactions are related when they have a logical connection.\n\nFor 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.\n\nThese 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.\n\nThis field is only populated for transactions of type `RETURN`, `FUNDS_SWEEP`, `REFUND` and `PAYOUT`.\n\nThe relationship between a `PIS_PAY_IN` payment and its corresponding `REFUND` transactions is only available through `refund_ids` property in the payment object. See[`/payment_initiation/payment/get`](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-get-response-refund-ids).", "properties": { "id": { "description": "The ID of the related transaction.", "type": "string" }, "type": { "description": "The type of the transaction.", "enum": [ "PAYOUT", "RETURN", "REFUND", "FUNDS_SWEEP" ], "type": "string" } }, "title": "WalletTransactionRelation", "type": "object" }, "WalletTransactionStatus": { "description": "The status of the transaction.\n\n`AUTHORISING`: The transaction is being processed for validation and compliance.\n\n`INITIATED`: The transaction has been initiated and is currently being processed.\n\n`EXECUTED`: The transaction has been successfully executed and is considered complete. This is only applicable for debit transactions.\n\n`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.\n\n`FAILED`: The transaction failed to process successfully. This is a terminal status.\n\n`BLOCKED`: The transaction has been blocked for violating compliance rules. This is a terminal status.", "enum": [ "AUTHORISING", "INITIATED", "EXECUTED", "SETTLED", "BLOCKED", "FAILED" ], "type": "string" }, "WalletTransactionStatusUpdateWebhook": { "additionalProperties": true, "description": "Fired when the status of a wallet transaction has changed.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "failure_reason": { "$ref": "#/components/schemas/WalletTransactionFailureReason" }, "new_status": { "$ref": "#/components/schemas/WalletTransactionStatus" }, "old_status": { "$ref": "#/components/schemas/WalletTransactionStatus" }, "payment_id": { "description": "The `payment_id` associated with the transaction. This will be present in case of `REFUND` and `PIS_PAY_IN`.", "nullable": true, "type": "string" }, "timestamp": { "description": "The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `\"2017-09-14T14:42:19.350Z\"`", "format": "date-time", "type": "string" }, "transaction_id": { "description": "The `transaction_id` for the wallet transaction being updated", "type": "string" }, "wallet_id": { "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.", "type": "string" }, "webhook_code": { "description": "`WALLET_TRANSACTION_STATUS_UPDATE`", "type": "string" }, "webhook_type": { "description": "`WALLET`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "transaction_id", "new_status", "old_status", "timestamp", "environment" ], "title": "WalletTransactionStatusUpdateWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "new_status": "SETTLED", "old_status": "INITIATED", "payment_id": "payment-id-production-feca8a7a-5591-4aef-9297-f3062bb735d3", "timestamp": "2017-09-14T14:42:19.350Z", "transaction_id": "wallet-transaction-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88", "webhook_code": "WALLET_TRANSACTION_STATUS_UPDATE", "webhook_type": "WALLET" } } }, "WalletTransactionsListRequest": { "description": "WalletTransactionListRequest defines the request schema for `/wallet/transaction/list`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "count": { "default": 10, "description": "The number of transactions to fetch", "maximum": 200, "minimum": 1, "type": "integer" }, "cursor": { "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.", "maxLength": 256, "type": "string" }, "options": { "$ref": "#/components/schemas/WalletTransactionListRequestOptions" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "wallet_id": { "description": "The ID of the e-wallet to fetch transactions from", "minLength": 1, "type": "string" } }, "required": [ "wallet_id" ], "type": "object" }, "Warning": { "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": { "cause": { "$ref": "#/components/schemas/Cause" }, "warning_code": { "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.", "enum": [ "OWNERS_UNAVAILABLE", "INVESTMENTS_UNAVAILABLE", "TRANSACTIONS_UNAVAILABLE" ], "type": "string" }, "warning_type": { "description": "The warning type, which will always be `ASSET_REPORT_WARNING`", "type": "string" } }, "required": [ "warning_type", "warning_code", "cause" ], "title": "Warning", "type": "object", "x-examples": { "example-1": { "cause": { "display_message": null, "error_code": "PRODUCTS_NOT_SUPPORTED", "error_message": "The following products are not supported by this institution: Identity", "error_type": "ITEM_ERROR", "http_code": 400, "request_id": "s32PXYOyplhGTHd" }, "warning_code": "OWNERS_UNAVAILABLE", "warning_type": "ASSET_REPORT_WARNING" } } }, "WatchlistProgramID": { "description": "ID of the associated program.", "example": "prg_2eRPsDnL66rZ7H", "title": "WatchlistProgramID", "type": "string" }, "WatchlistScreeningAuditTrail": { "additionalProperties": true, "description": "Information about the last change made to the parent object specifying what caused the change as well as when it occurred.", "properties": { "dashboard_user_id": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "source": { "$ref": "#/components/schemas/Source" }, "timestamp": { "$ref": "#/components/schemas/Timestamp" } }, "required": [ "source", "dashboard_user_id", "timestamp" ], "title": "WatchlistScreeningAuditTrail", "type": "object" }, "WatchlistScreeningDocument": { "additionalProperties": true, "description": "An official document, usually issued by a governing body or institution, with an associated identifier.", "properties": { "number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValue" }, "type": { "$ref": "#/components/schemas/WatchlistScreeningDocumentType" } }, "required": [ "type", "number" ], "title": "WatchlistScreeningDocument", "type": "object" }, "WatchlistScreeningDocumentType": { "description": "The kind of official document represented by this object.\n\n`birth_certificate` - A certificate of birth\n\n`drivers_license` - A license to operate a motor vehicle\n\n`immigration_number` - Immigration or residence documents\n\n`military_id` - Identification issued by a military group\n\n`other` - Any document not covered by other categories\n\n`passport` - An official passport issued by a government\n\n`personal_identification` - Any generic personal identification that is not covered by other categories\n\n`ration_card` - Identification that entitles the holder to rations\n\n`ssn` - United States Social Security Number\n\n`student_id` - Identification issued by an educational institution\n\n`tax_id` - Identification issued for the purpose of collecting taxes\n\n`travel_document` - Visas, entry permits, refugee documents, etc.\n\n`voter_id` - Identification issued for the purpose of voting", "enum": [ "birth_certificate", "drivers_license", "immigration_number", "military_id", "other", "passport", "personal_identification", "ration_card", "ssn", "student_id", "tax_id", "travel_document", "voter_id" ], "example": "passport", "title": "WatchlistScreeningDocumentType", "type": "string" }, "WatchlistScreeningDocumentValue": { "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.", "example": "C31195855", "title": "WatchlistScreeningDocumentValue", "type": "string" }, "WatchlistScreeningDocumentValueNullable": { "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.", "example": "C31195855", "nullable": true, "title": "WatchlistScreeningDocumentValue", "type": "string" }, "WatchlistScreeningEntityCreateRequest": { "description": "Request input for creating an entity screening review", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "search_terms": { "$ref": "#/components/schemas/EntityWatchlistSearchTerms" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "search_terms" ], "type": "object" }, "WatchlistScreeningEntityCreateResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/EntityWatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityGetResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/EntityWatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityHistoryListResponse": { "additionalProperties": true, "description": "Paginated list of entity watchlist screenings", "properties": { "entity_watchlist_screenings": { "description": "List of entity watchlist screening", "items": { "$ref": "#/components/schemas/EntityWatchlistScreening" }, "type": "array" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityHitListResponse": { "additionalProperties": true, "description": "Paginated list of entity watchlist screening hits", "properties": { "entity_watchlist_screening_hits": { "description": "List of entity watchlist screening hits", "items": { "$ref": "#/components/schemas/EntityWatchlistScreeningHit" }, "type": "array" }, "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", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "entity_watchlist_program_id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "entity_watchlist_program_id" ], "type": "object" }, "WatchlistScreeningEntityListResponse": { "additionalProperties": true, "description": "Paginated list of entity watchlist screenings", "properties": { "entity_watchlist_screenings": { "description": "List of entity watchlist screening", "items": { "$ref": "#/components/schemas/EntityWatchlistScreening" }, "type": "array" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "entity_watchlist_program_id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "entity_watchlist_program_id" ], "type": "object" }, "WatchlistScreeningEntityProgramGetResponse": { "additionalProperties": true, "description": "A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of entities.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/EntityWatchlistProgramID" }, "is_archived": { "$ref": "#/components/schemas/ProgramArchived" }, "is_rescanning_enabled": { "description": "Indicator specifying whether the program is enabled and will perform daily rescans.", "example": true, "type": "boolean" }, "lists_enabled": { "description": "Watchlists enabled for the associated program", "example": [ "EU_CON" ], "items": { "$ref": "#/components/schemas/EntityWatchlistCode" }, "type": "array", "uniqueItems": true }, "name": { "$ref": "#/components/schemas/EntityWatchlistScreeningProgramName" }, "name_sensitivity": { "$ref": "#/components/schemas/ProgramNameSensitivity" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "WatchlistScreeningEntityProgramListResponse": { "additionalProperties": true, "description": "Paginated list of entity watchlist screening programs", "properties": { "entity_watchlist_programs": { "description": "List of entity watchlist screening programs", "items": { "$ref": "#/components/schemas/EntityWatchlistProgram" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "entity_watchlist_programs", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningEntityReviewCreateRequest": { "description": "Request input for creating a review for an entity screening", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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.", "items": { "$ref": "#/components/schemas/EntityWatchlistScreeningHitID" }, "type": "array" }, "dismissed_hits": { "description": "Hits to mark as a false positive after thorough manual review. These hits will never recur or be updated once dismissed.", "items": { "$ref": "#/components/schemas/EntityWatchlistScreeningHitID" }, "type": "array" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "confirmed_hits", "dismissed_hits", "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityReviewCreateResponse": { "additionalProperties": true, "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\nagainst hits attached to the watchlist screening, or both.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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" }, "type": "array" }, "dismissed_hits": { "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" }, "type": "array" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningReviewID" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityReviewListResponse": { "additionalProperties": true, "description": "Paginated list of entity watchlist screening reviews", "properties": { "entity_watchlist_screening_reviews": { "description": "List of entity watchlist screening reviews", "items": { "$ref": "#/components/schemas/EntityWatchlistScreeningReview" }, "type": "array" }, "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" } }, "required": [ "entity_watchlist_screening_reviews", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningEntityUpdateRequest": { "description": "Request input for editing an entity watchlist screening", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "entity_watchlist_screening_id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "reset_fields": { "$ref": "#/components/schemas/WatchlistScreeningEntityUpdateRequestResettableFieldList" }, "search_terms": { "$ref": "#/components/schemas/UpdateEntityScreeningRequestSearchTerms" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "entity_watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningEntityUpdateRequestResettableField": { "description": "The name of a field that can be reset back to null", "enum": [ "assignee" ], "type": "string" }, "WatchlistScreeningEntityUpdateRequestResettableFieldList": { "description": "A list of fields to reset back to null", "items": { "$ref": "#/components/schemas/WatchlistScreeningEntityUpdateRequestResettableField" }, "nullable": true, "type": "array" }, "WatchlistScreeningEntityUpdateResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/EntityWatchlistScreeningID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/EntityWatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "id", "search_terms", "assignee", "status", "client_user_id", "audit_trail", "request_id" ], "type": "object" }, "WatchlistScreeningHit": { "additionalProperties": true, "description": "Data from a government watchlist or PEP list that has been attached to the screening.", "properties": { "analysis": { "$ref": "#/components/schemas/ScreeningHitAnalysis" }, "data": { "$ref": "#/components/schemas/ScreeningHitData" }, "first_active": { "$ref": "#/components/schemas/Timestamp" }, "historical_since": { "$ref": "#/components/schemas/TimestampNullable" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningHitID" }, "inactive_since": { "$ref": "#/components/schemas/TimestampNullable" }, "list_code": { "$ref": "#/components/schemas/IndividualWatchlistCode" }, "plaid_uid": { "$ref": "#/components/schemas/InternalUID" }, "review_status": { "$ref": "#/components/schemas/WatchlistScreeningHitStatus" }, "source_uid": { "$ref": "#/components/schemas/SourceUID" }, "sub_programs": { "description": "Sub-program designations that may be attached to the watchlist entry by the issuing authority. For OFAC SDN\nentries these are the program codes published in the SDN list (for example `SDGT` for Specially\nDesignated Global Terrorists, `SDNTK` for Specially Designated Narcotics Trafficking Kingpins,\n`IRAN`, `RUSSIA-EO14024`). New codes are added by sanctioning authorities without prior notice,\nso callers should treat unknown values as opaque strings rather than enum members.\n", "example": [ "SDGT", "SDNTK" ], "items": { "example": "SDGT", "type": "string" }, "type": "array" } }, "required": [ "id", "review_status", "first_active", "inactive_since", "historical_since", "list_code", "plaid_uid", "source_uid", "sub_programs" ], "title": "WatchlistScreeningHit", "type": "object" }, "WatchlistScreeningHitID": { "description": "ID of the associated screening hit.", "example": "scrhit_52xR9LKo77r1Np", "title": "WatchlistScreeningHitID", "type": "string" }, "WatchlistScreeningHitLocations": { "additionalProperties": true, "description": "Location information for the associated individual watchlist hit", "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "full": { "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.", "example": "Florida, US", "type": "string" } }, "required": [ "full", "country" ], "type": "object" }, "WatchlistScreeningHitStatus": { "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.", "enum": [ "confirmed", "pending_review", "dismissed" ], "example": "pending_review", "title": "WatchlistScreeningHitStatus", "type": "string" }, "WatchlistScreeningIndividual": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" }, "search_terms": { "$ref": "#/components/schemas/WatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "id", "search_terms", "assignee", "status", "client_user_id", "audit_trail" ], "title": "WatchlistScreeningIndividual", "type": "object" }, "WatchlistScreeningIndividualCreateRequest": { "description": "Request input for creating an individual watchlist screening", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "search_terms": { "$ref": "#/components/schemas/WatchlistScreeningRequestSearchTerms" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "search_terms" ], "type": "object" }, "WatchlistScreeningIndividualCreateResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/WatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualGetResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/WatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualHistoryListResponse": { "additionalProperties": true, "description": "Paginated list of individual watchlist screenings.", "properties": { "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "watchlist_screenings": { "description": "List of individual watchlist screenings", "items": { "$ref": "#/components/schemas/WatchlistScreeningIndividual" }, "type": "array" } }, "required": [ "watchlist_screenings", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningIndividualHitListRequest": { "description": "Request input for listing hits for an individual watchlist screening", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualHitListResponse": { "additionalProperties": true, "description": "Paginated list of individual watchlist screening hits", "properties": { "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "watchlist_screening_hits": { "description": "List of individual watchlist screening hits", "items": { "$ref": "#/components/schemas/WatchlistScreeningHit" }, "type": "array" } }, "required": [ "watchlist_screening_hits", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningIndividualID": { "description": "ID of the associated screening.", "example": "scr_52xR9LKo77r1Np", "title": "WatchlistScreeningIndividualID", "type": "string" }, "WatchlistScreeningIndividualIDNullable": { "description": "ID of the associated screening.", "example": "scr_52xR9LKo77r1Np", "nullable": true, "title": "WatchlistScreeningIndividualID", "type": "string" }, "WatchlistScreeningIndividualListRequest": { "description": "Request input for listing watchlist screenings for individuals", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" }, "watchlist_program_id": { "$ref": "#/components/schemas/WatchlistProgramID" } }, "required": [ "watchlist_program_id" ], "type": "object" }, "WatchlistScreeningIndividualListResponse": { "additionalProperties": true, "description": "Paginated list of individual watchlist screenings.", "properties": { "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "watchlist_screenings": { "description": "List of individual watchlist screenings", "items": { "$ref": "#/components/schemas/WatchlistScreeningIndividual" }, "type": "array" } }, "required": [ "watchlist_screenings", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningIndividualName": { "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.", "example": "Aleksey Potemkin", "title": "WatchlistScreeningIndividualName", "type": "string" }, "WatchlistScreeningIndividualProgramGetRequest": { "description": "Request input for fetching an individual watchlist program", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_program_id": { "$ref": "#/components/schemas/WatchlistProgramID" } }, "required": [ "watchlist_program_id" ], "type": "object" }, "WatchlistScreeningIndividualProgramGetResponse": { "additionalProperties": true, "description": "A program that configures the active lists, search parameters, and other behavior for initial and ongoing screening of individuals.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "created_at": { "$ref": "#/components/schemas/Timestamp" }, "id": { "$ref": "#/components/schemas/WatchlistProgramID" }, "is_archived": { "$ref": "#/components/schemas/ProgramArchived" }, "is_rescanning_enabled": { "description": "Indicator specifying whether the program is enabled and will perform daily rescans.", "example": true, "type": "boolean" }, "lists_enabled": { "description": "Watchlists enabled for the associated program", "example": [ "US_SDN" ], "items": { "$ref": "#/components/schemas/IndividualWatchlistCode" }, "type": "array", "uniqueItems": true }, "name": { "$ref": "#/components/schemas/IndividualWatchlistScreeningProgramName" }, "name_sensitivity": { "$ref": "#/components/schemas/ProgramNameSensitivity" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "type": "object" }, "WatchlistScreeningIndividualProgramListResponse": { "additionalProperties": true, "description": "Paginated list of individual watchlist screening programs", "properties": { "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "watchlist_programs": { "description": "List of individual watchlist screening programs", "items": { "$ref": "#/components/schemas/IndividualWatchlistProgram" }, "type": "array" } }, "required": [ "watchlist_programs", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningIndividualReviewCreateRequest": { "description": "Request input for creating a screening review", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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.", "items": { "$ref": "#/components/schemas/WatchlistScreeningHitID" }, "type": "array" }, "dismissed_hits": { "description": "Hits to mark as a false positive after thorough manual review. These hits will never recur or be updated once dismissed.", "items": { "$ref": "#/components/schemas/WatchlistScreeningHitID" }, "type": "array" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "confirmed_hits", "dismissed_hits", "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualReviewCreateResponse": { "additionalProperties": true, "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\nagainst hits attached to the watchlist screening, or both.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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" }, "type": "array" }, "dismissed_hits": { "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" }, "type": "array" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningReviewID" }, "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", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "cursor": { "$ref": "#/components/schemas/Cursor" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualReviewListResponse": { "additionalProperties": true, "description": "Paginated list of screening reviews", "properties": { "next_cursor": { "$ref": "#/components/schemas/Cursor" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "watchlist_screening_reviews": { "description": "List of screening reviews", "items": { "$ref": "#/components/schemas/WatchlistScreeningReview" }, "type": "array" } }, "required": [ "watchlist_screening_reviews", "next_cursor", "request_id" ], "type": "object" }, "WatchlistScreeningIndividualUpdateRequest": { "description": "Request input for editing an individual watchlist screening", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserID" }, "client_id": { "$ref": "#/components/schemas/APIClientID" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserID" }, "reset_fields": { "$ref": "#/components/schemas/WatchlistScreeningIndividualUpdateRequestResettableFieldList" }, "search_terms": { "$ref": "#/components/schemas/UpdateIndividualScreeningRequestSearchTerms" }, "secret": { "$ref": "#/components/schemas/APISecret" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" }, "watchlist_screening_id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" } }, "required": [ "watchlist_screening_id" ], "type": "object" }, "WatchlistScreeningIndividualUpdateRequestResettableField": { "description": "The name of a field that can be reset back to null", "enum": [ "assignee" ], "type": "string" }, "WatchlistScreeningIndividualUpdateRequestResettableFieldList": { "description": "A list of fields to reset back to null", "items": { "$ref": "#/components/schemas/WatchlistScreeningIndividualUpdateRequestResettableField" }, "nullable": true, "type": "array" }, "WatchlistScreeningIndividualUpdateResponse": { "additionalProperties": true, "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.", "properties": { "assignee": { "$ref": "#/components/schemas/DashboardUserIDNullable" }, "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "client_user_id": { "$ref": "#/components/schemas/ClientUserIDNullable" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningIndividualID" }, "request_id": { "$ref": "#/components/schemas/RequestID" }, "search_terms": { "$ref": "#/components/schemas/WatchlistScreeningSearchTerms" }, "status": { "$ref": "#/components/schemas/WatchlistScreeningStatus" } }, "required": [ "id", "search_terms", "assignee", "status", "client_user_id", "audit_trail", "request_id" ], "type": "object" }, "WatchlistScreeningPhoneNumber": { "description": "A phone number in E.164 format.", "example": "+14025671234", "title": "WatchlistScreeningPhoneNumber", "type": "string" }, "WatchlistScreeningPhoneNumberNullable": { "description": "A phone number in E.164 format.", "example": "+14025671234", "nullable": true, "title": "WatchlistScreeningPhoneNumber", "type": "string" }, "WatchlistScreeningRequestSearchTerms": { "description": "Search inputs for creating a watchlist screening", "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCode" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601Date" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValue" }, "legal_name": { "$ref": "#/components/schemas/WatchlistScreeningIndividualName" }, "watchlist_program_id": { "$ref": "#/components/schemas/WatchlistProgramID" } }, "required": [ "watchlist_program_id", "legal_name" ], "type": "object" }, "WatchlistScreeningReview": { "additionalProperties": true, "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\nagainst hits attached to the watchlist screening, or both.", "properties": { "audit_trail": { "$ref": "#/components/schemas/WatchlistScreeningAuditTrail" }, "comment": { "$ref": "#/components/schemas/ReviewComment" }, "confirmed_hits": { "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" }, "type": "array" }, "dismissed_hits": { "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" }, "type": "array" }, "id": { "$ref": "#/components/schemas/WatchlistScreeningReviewID" } }, "required": [ "id", "confirmed_hits", "dismissed_hits", "comment", "audit_trail" ], "title": "WatchlistScreeningReview", "type": "object" }, "WatchlistScreeningReviewID": { "description": "ID of the associated review.", "example": "rev_aCLNRxK3UVzn2r", "title": "WatchlistScreeningReviewID", "type": "string" }, "WatchlistScreeningSearchTerms": { "additionalProperties": true, "description": "Search terms for creating an individual watchlist screening", "properties": { "country": { "$ref": "#/components/schemas/GenericCountryCodeNullable" }, "date_of_birth": { "$ref": "#/components/schemas/ISO8601DateNullable" }, "document_number": { "$ref": "#/components/schemas/WatchlistScreeningDocumentValueNullable" }, "legal_name": { "$ref": "#/components/schemas/WatchlistScreeningIndividualName" }, "version": { "description": "The current version of the search terms. Starts at `1` and increments with each edit to `search_terms`.", "example": 1, "type": "integer" }, "watchlist_program_id": { "$ref": "#/components/schemas/WatchlistProgramID" } }, "required": [ "watchlist_program_id", "legal_name", "date_of_birth", "document_number", "country", "version" ], "type": "object" }, "WatchlistScreeningStatus": { "description": "A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.", "enum": [ "rejected", "pending_review", "cleared" ], "example": "cleared", "title": "WatchlistScreeningStatus", "type": "string" }, "WeakAliasDetermination": { "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`.", "enum": [ "none", "source", "plaid" ], "example": "none", "title": "WeakAliasDetermination", "type": "string" }, "WebhookEnvironmentValues": { "description": "The Plaid environment the webhook was sent from", "enum": [ "sandbox", "production" ], "nullable": false, "type": "string" }, "WebhookType": { "description": "The webhook types that can be fired by this test endpoint.", "enum": [ "AUTH", "HOLDINGS", "INVESTMENTS_TRANSACTIONS", "ITEM", "LIABILITIES", "TRANSACTIONS", "ASSETS" ], "type": "string" }, "WebhookUpdateAcknowledgedWebhook": { "additionalProperties": true, "description": "Fired when an Item's webhook is updated. This will be sent to the newly specified webhook.", "properties": { "environment": { "$ref": "#/components/schemas/WebhookEnvironmentValues" }, "error": { "$ref": "#/components/schemas/PlaidError" }, "item_id": { "$ref": "#/components/schemas/ItemId" }, "new_webhook_url": { "description": "The new webhook URL", "type": "string" }, "webhook_code": { "description": "`WEBHOOK_UPDATE_ACKNOWLEDGED`", "type": "string" }, "webhook_type": { "description": "`ITEM`", "type": "string" } }, "required": [ "webhook_type", "webhook_code", "item_id", "new_webhook_url", "environment" ], "title": "WebhookUpdateAcknowledgedWebhook", "type": "object", "x-examples": { "example-1": { "environment": "production", "error": null, "item_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "new_webhook_url": "https://plaid.com/example/webhook", "webhook_code": "WEBHOOK_UPDATE_ACKNOWLEDGED", "webhook_type": "ITEM" } } }, "WebhookVerificationKeyGetRequest": { "description": "WebhookVerificationKeyGetRequest defines the request schema for `/webhook_verification_key/get`", "properties": { "client_id": { "$ref": "#/components/schemas/APIClientID" }, "key_id": { "description": "The key ID ( `kid` ) from the JWT header.", "type": "string" }, "secret": { "$ref": "#/components/schemas/APISecret" } }, "required": [ "key_id" ], "type": "object" }, "WebhookVerificationKeyGetResponse": { "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" ], "type": "object" }, "YTDGrossIncomeSummaryFieldNumber": { "allOf": [ { "$ref": "#/components/schemas/IncomeSummaryFieldNumber" }, { "additionalProperties": true, "description": "Year-to-date pre-tax earnings, as reported on the paystub.", "type": "object" } ], "description": "Year-to-date pre-tax earnings, as reported on the paystub." }, "YTDNetIncomeSummaryFieldNumber": { "allOf": [ { "$ref": "#/components/schemas/IncomeSummaryFieldNumber" }, { "additionalProperties": true, "description": "Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub.", "type": "object" } ], "description": "Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub." }, "YieldRate": { "additionalProperties": true, "description": "Details about a fixed income security's expected rate of return.", "nullable": true, "properties": { "percentage": { "description": "The fixed income security's expected rate of return.", "format": "double", "type": "number" }, "type": { "$ref": "#/components/schemas/YieldRateType" } }, "required": [ "percentage", "type" ], "title": "YieldRate", "type": "object" }, "YieldRateType": { "description": "The type of rate which indicates how the predicted yield was calculated. It is one of:\n\n`coupon`: the annualized interest rate for securities with a one-year term or longer, such as treasury notes and bonds.\n\n`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.\n\n`discount`: the rate at which the present value or cost is discounted from the future value upon maturity, also known as the face value.\n\n`yield`: the total predicted rate of return factoring in both the discount rate and the coupon rate, applicable to securities such as exchange-traded bonds which can both be interest-bearing as well as sold at a discount off its face value.", "enum": [ "coupon", "coupon_equivalent", "discount", "yield", null ], "nullable": true, "title": "YieldRateType", "type": "string" } }, "securitySchemes": { "clientId": { "in": "header", "name": "PLAID-CLIENT-ID", "type": "apiKey" }, "plaidVersion": { "in": "header", "name": "Plaid-Version", "type": "apiKey" }, "secret": { "in": "header", "name": "PLAID-SECRET", "type": "apiKey" } } }, "info": { "contact": { "name": "Plaid Developer Team", "url": "https://plaid.com" }, "description": "The Plaid REST API. Please see https://plaid.com/docs/api for more details.", "termsOfService": "https://plaid.com/legal/", "title": "The Plaid API", "version": "2020-09-14_1.698.7" }, "openapi": "3.0.0", "paths": { "/accounts/balance/get": { "post": { "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.\n\nNote: 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).", "externalDocs": { "url": "/api/products/signal/#accountsbalanceget" }, "operationId": "accountsBalanceGet", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "string", "client_id": "string", "options": { "account_ids": [ "string" ] }, "secret": "string" } } }, "schema": { "$ref": "#/components/schemas/AccountsBalanceGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "identity", "investments" ], "billed_products": [ "assets", "auth", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "request_id": "qk5Bxes3gDfv4F2" } } }, "schema": { "$ref": "#/components/schemas/AccountsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve real-time balance data", "tags": [ "plaid" ] } }, "/accounts/get": { "post": { "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.\nTo 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.\n\n`/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.\n\nFor real-time balance information, use the paid endpoints `/accounts/balance/get` or `/signal/evaluate` instead.", "externalDocs": { "url": "/api/accounts/#accountsget" }, "operationId": "accountsGet", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "string", "client_id": "string", "options": { "account_ids": [ "string" ] }, "secret": "string" } } }, "schema": { "$ref": "#/components/schemas/AccountsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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": { "auth_method": "INSTANT_AUTH", "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" }, "request_id": "bkVE1BHWMAZ9Rnr" } } }, "schema": { "$ref": "#/components/schemas/AccountsGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve accounts", "tags": [ "plaid" ] } }, "/application/get": { "post": { "description": "Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences", "operationId": "applicationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve information about a Plaid application", "tags": [ "plaid" ] } }, "/asset_report/audit_copy/create": { "post": { "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\u2122 program or utilize Freddie Mac's Loan Product Advisor\u00ae (LPA\u00ae) Asset and Income Modeler (AIM). An Audit Copy contains the same underlying data as the Asset Report.\n\nTo 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.", "externalDocs": { "url": "/api/products/assets/#asset_reportaudit_copycreate" }, "operationId": "assetReportAuditCopyCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_copy_token": "a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4", "request_id": "Iam3b" } } }, "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Asset Report Audit Copy", "tags": [ "plaid" ] } }, "/asset_report/audit_copy/get": { "post": { "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`.", "externalDocs": { "url": "/none/" }, "operationId": "assetReportAuditCopyGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve an Asset Report Audit Copy", "tags": [ "plaid" ] } }, "/asset_report/audit_copy/pdf/get": { "post": { "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.\n\nThe response to `/asset_report/audit_copy/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.\n\n[View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).", "externalDocs": { "url": "/none/" }, "operationId": "assetReportAuditCopyPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyPdfGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/pdf": { "examples": { "example-1": { "value": "JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O..." } }, "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyPdfGetResponse" } } }, "description": "A PDF of the Asset Report Audit Copy" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a PDF Asset Report Audit Copy", "tags": [ "plaid" ] } }, "/asset_report/audit_copy/remove": { "post": { "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.", "externalDocs": { "url": "/api/products/assets/#asset_reportaudit_copyremove" }, "operationId": "assetReportAuditCopyRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyRemoveRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "removed": true, "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/AssetReportAuditCopyRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove Asset Report Audit Copy", "tags": [ "plaid" ] } }, "/asset_report/create": { "post": { "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.\n\nThe 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).\n\nThe `/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.", "externalDocs": { "url": "/api/products/assets/#asset_reportcreate" }, "operationId": "assetReportCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "asset_report_id": "1f414183-220c-44f5-b0c8-bc0e6d4053bb", "asset_report_token": "assets-sandbox-6f12f5bb-22dd-4855-b918-f47ec439198a", "request_id": "Iam3b" } } }, "schema": { "$ref": "#/components/schemas/AssetReportCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create an Asset Report", "tags": [ "plaid" ] } }, "/asset_report/filter": { "post": { "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.\n\nTo 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.\n\nBecause 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.\n\nPlaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/products/assets/#product_ready) webhook once generation of the filtered Asset Report has completed.", "externalDocs": { "url": "/api/products/assets/#asset_reportfilter" }, "operationId": "assetReportFilter", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportFilterRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "asset_report_id": "fdc09207-0cef-4d88-b5eb-0d970758ebd9", "asset_report_token": "assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c", "request_id": "qEg07" } } }, "schema": { "$ref": "#/components/schemas/AssetReportFilterResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Filter Asset Report", "tags": [ "plaid" ] } }, "/asset_report/get": { "post": { "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.\n\nBy default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call `/asset_report/get` endpoint with `include_insights` set to `true`.\n\nFor 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.", "externalDocs": { "url": "/api/products/assets/#asset_reportget" }, "operationId": "assetReportGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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, "iso_currency_code": "USD", "limit": null, "margin_loan_amount": null, "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", "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": "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, "iso_currency_code": "USD", "limit": null, "margin_loan_amount": null, "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", "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": "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": [] } } }, "schema": { "$ref": "#/components/schemas/AssetReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve an Asset Report", "tags": [ "plaid" ] } }, "/asset_report/pdf/get": { "post": { "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.\n\nThe response to `/asset_report/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.\n\n[View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).", "externalDocs": { "url": "/api/products/assets/#asset_reportpdfget" }, "operationId": "assetReportPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportPDFGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/pdf": { "schema": { "$ref": "#/components/schemas/AssetReportPDFGetResponse" } } }, "description": "A PDF of the Asset Report" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a PDF Asset Report", "tags": [ "plaid" ] } }, "/asset_report/refresh": { "post": { "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.\n\nThe 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.", "externalDocs": { "url": "/api/products/assets/#asset_reportrefresh" }, "operationId": "assetReportRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportRefreshRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/AssetReportRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh an Asset Report", "tags": [ "plaid" ] } }, "/asset_report/remove": { "post": { "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.\n\nThe `/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.", "externalDocs": { "url": "/api/products/assets/#asset_reportremove" }, "operationId": "assetReportRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportRemoveRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "removed": true, "request_id": "I6zHN" } } }, "schema": { "$ref": "#/components/schemas/AssetReportRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Delete an Asset Report", "tags": [ "plaid" ] } }, "/auth/get": { "post": { "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.\n\nVersioning 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).", "externalDocs": { "url": "/api/products/auth/#authget" }, "operationId": "authGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/AuthGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "accounts": [ { "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "balances": { "available": 100, "current": 110, "iso_currency_code": "USD", "limit": null, "unofficial_currency_code": null }, "mask": "9606", "name": "Plaid Checking", "official_name": "Plaid Gold Checking", "subtype": "checking", "type": "depository" } ], "item": { "auth_method": "INSTANT_AUTH", "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" }, "numbers": { "ach": [ { "account": "9900009606", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "is_tokenized_account_number": false, "routing": "011401533", "wire_routing": "021000021" } ], "bacs": [ { "account": "31926819", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "sort_code": "601613" } ], "eft": [ { "account": "111122223333", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "branch": "01140", "institution": "021" } ], "international": [ { "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "bic": "NWBKGB21", "iban": "GB29NWBK60161331926819" } ] }, "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/AuthGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Default error" } }, "summary": "Retrieve auth data", "tags": [ "plaid" ] } }, "/auth/verify": { "post": { "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.\n\nThis endpoint is currently in Early Availability; contact sales or your Plaid account manager to request access.", "externalDocs": { "url": "/api/products/auth/#authverify" }, "operationId": "authVerify", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/AuthVerifyRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "item_id": "DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6", "request_id": "m8MDnv9okwxFNBV", "verification_insights": { "account_number_format": "valid", "name_match_score": 85, "network_status": { "has_numbers_match": true, "is_numbers_match_verified": true }, "previous_returns": { "has_previous_administrative_return": false } }, "verification_status": "database_insights_pass" } } }, "schema": { "$ref": "#/components/schemas/AuthVerifyResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Default error" } }, "summary": "Verify auth data", "tags": [ "plaid" ] } }, "/bank_transfer/balance/get": { "post": { "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.\n\nThe 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.\n\nNote 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.", "externalDocs": { "url": "/bank-transfers/reference#bank_transferbalanceget" }, "operationId": "bankTransferBalanceGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferBalanceGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "balance": { "available": "1721.70", "transactable": "721.70" }, "origination_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/BankTransferBalanceGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get balance of your Bank Transfer account", "tags": [ "plaid" ] } }, "/bank_transfer/cancel": { "post": { "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`.", "externalDocs": { "url": "/bank-transfers/reference#bank_transfercancel" }, "operationId": "bankTransferCancel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferCancelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/BankTransferCancelResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Cancel a bank transfer", "tags": [ "plaid" ] } }, "/bank_transfer/create": { "post": { "description": "Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.", "externalDocs": { "url": "/bank-transfers/reference#bank_transfercreate" }, "operationId": "bankTransferCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/BankTransferCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a bank transfer", "tags": [ "plaid" ] } }, "/bank_transfer/event/list": { "post": { "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/).", "externalDocs": { "url": "/api/products/auth#bank_transfereventlist" }, "operationId": "bankTransferEventList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferEventListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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": "", "timestamp": "2020-08-06T17:27:15Z" } ], "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/BankTransferEventListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List bank transfer events", "tags": [ "plaid" ] } }, "/bank_transfer/event/sync": { "post": { "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/).", "externalDocs": { "url": "/api/products/auth/#bank_transfereventsync" }, "operationId": "bankTransferEventSync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferEventSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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": "", "timestamp": "2020-08-06T17:27:15Z" } ], "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/BankTransferEventSyncResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Sync bank transfer events", "tags": [ "plaid" ] } }, "/bank_transfer/get": { "post": { "description": "The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.", "externalDocs": { "url": "/bank-transfers/reference#bank_transferget" }, "operationId": "bankTransferGet", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/BankTransferGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/BankTransferGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a bank transfer", "tags": [ "plaid" ] } }, "/bank_transfer/list": { "post": { "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.\n", "externalDocs": { "url": "/bank-transfers/reference#bank_transferlist" }, "operationId": "bankTransferList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/BankTransferListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List bank transfers", "tags": [ "plaid" ] } }, "/bank_transfer/migrate_account": { "post": { "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.", "externalDocs": { "url": "/bank-transfers/reference#bank_transfermigrate_account" }, "operationId": "bankTransferMigrateAccount", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTransferMigrateAccountRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0", "account_id": "zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN", "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/BankTransferMigrateAccountResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Migrate account into Bank Transfers", "tags": [ "plaid" ] } }, "/bank_transfer/sweep/get": { "post": { "description": "The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.", "externalDocs": { "url": "/api/products/transfer/#bank_transfersweepget" }, "operationId": "bankTransferSweepGet", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/BankTransferSweepGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweep": { "amount": "12.34", "created_at": "2020-08-06T17:27:15Z", "id": "d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d", "iso_currency_code": "USD" } } } }, "schema": { "$ref": "#/components/schemas/BankTransferSweepGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a sweep", "tags": [ "plaid" ] } }, "/bank_transfer/sweep/list": { "post": { "description": "The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.", "externalDocs": { "url": "/api/products/transfer/#bank_transfersweeplist" }, "operationId": "bankTransferSweepList", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/BankTransferSweepListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweeps": [ { "amount": "12.34", "created_at": "2020-08-06T17:27:15Z", "id": "d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d", "iso_currency_code": "USD" } ] } } }, "schema": { "$ref": "#/components/schemas/BankTransferSweepListResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List sweeps", "tags": [ "plaid" ] } }, "/beacon/account_risk/v1/evaluate": { "post": { "description": "Use `/beacon/account_risk/v1/evaluate` to get risk insights for a linked account.", "externalDocs": { "url": "none" }, "operationId": "beaconAccountRiskEvaluate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "accounts": [ { "account_id": "mbVr0axYMECQ07NJ5gXnHRM9DeD2RJCxm9roR", "attributes": { "days_since_first_plaid_connection": 510, "plaid_connections_count_30d": 7, "plaid_connections_count_7d": 6, "total_plaid_connections_count": 15 }, "subtype": "checking", "type": "depository" } ], "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/BeaconAccountRiskEvaluateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Evaluate risk of a bank account", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beacon/duplicate/get": { "post": { "description": "Returns a Beacon Duplicate for a given Beacon Duplicate id.\n\nA Beacon Duplicate represents a pair of similar Beacon Users within your organization.\n\nTwo Beacon User revisions are returned for each Duplicate record in either the `beacon_user1` or `beacon_user2` response fields.\n\nThe `analysis` field in the response indicates which fields matched between `beacon_user1` and `beacon_user2`.\n", "externalDocs": { "url": "/api/products/beacon/#beaconduplicateget" }, "operationId": "beaconDuplicateGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconDuplicateGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "analysis": { "address": "match", "date_of_birth": "match", "email_address": "match", "id_number": "match", "ip_address": "match", "name": "match", "phone_number": "match" }, "beacon_user1": { "id": "becusr_42cF1MNo42r9Xj", "version": 1 }, "beacon_user2": { "id": "becusr_42cF1MNo42r9Xj", "version": 1 }, "id": "becdup_11111111111111", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/BeaconDuplicateGetResponse" } } }, "description": "OK" } }, "summary": "Get a Beacon Duplicate", "tags": [ "plaid" ] } }, "/beacon/report/create": { "post": { "description": "Create a fraud report for a given Beacon User.", "externalDocs": { "url": "/api/products/beacon/#beaconreportcreate" }, "operationId": "beaconReportCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconReportCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "created_at": "2020-07-24T03:26:02Z", "event_date": "1990-05-29", "fraud_amount": { "iso_currency_code": "USD", "value": 100 }, "fraud_date": "1990-05-29", "id": "becrpt_11111111111111", "request_id": "saKrIBuEB9qJZng", "type": "first_party" } } }, "schema": { "$ref": "#/components/schemas/BeaconReportCreateResponse" } } }, "description": "OK" } }, "summary": "Create a Beacon Report", "tags": [ "plaid" ] } }, "/beacon/report/get": { "post": { "description": "Returns a Beacon Report for a given Beacon Report ID.", "externalDocs": { "url": "/api/products/beacon/#beaconreportget" }, "operationId": "beaconReportGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconReportGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "created_at": "2020-07-24T03:26:02Z", "event_date": "1990-05-29", "fraud_amount": { "iso_currency_code": "USD", "value": 100 }, "fraud_date": "1990-05-29", "id": "becrpt_11111111111111", "request_id": "saKrIBuEB9qJZng", "type": "first_party" } } }, "schema": { "$ref": "#/components/schemas/BeaconReportGetResponse" } } }, "description": "OK" } }, "summary": "Get a Beacon Report", "tags": [ "plaid" ] } }, "/beacon/report/list": { "post": { "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" }, "operationId": "beaconReportList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconReportListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_reports": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "created_at": "2020-07-24T03:26:02Z", "event_date": "1990-05-29", "fraud_amount": { "iso_currency_code": "USD", "value": 100 }, "fraud_date": "1990-05-29", "id": "becrpt_11111111111111", "type": "first_party" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/BeaconReportListResponse" } } }, "description": "OK" } }, "summary": "List Beacon Reports for a Beacon User", "tags": [ "plaid" ] } }, "/beacon/report_syndication/get": { "post": { "description": "Returns a Beacon Report Syndication for a given Beacon Report Syndication id.", "externalDocs": { "url": "/api/products/beacon/#beaconreport_syndicationget" }, "operationId": "beaconReportSyndicationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconReportSyndicationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "analysis": { "address": "match", "date_of_birth": "match", "depository_accounts": [ { "account_mask": "4000", "match_status": "match", "routing_number": "021000021" } ], "email_address": "match", "id_number": "match", "ip_address": "match", "name": "match", "phone_number": "match" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "id": "becrsn_11111111111111", "report": { "created_at": "2020-07-24T03:26:02Z", "event_date": "1990-05-29", "fraud_date": "1990-05-29", "id": "becrpt_11111111111111", "type": "first_party" }, "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/BeaconReportSyndicationGetResponse" } } }, "description": "OK" } }, "summary": "Get a Beacon Report Syndication", "tags": [ "plaid" ] } }, "/beacon/report_syndication/list": { "post": { "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" }, "operationId": "beaconReportSyndicationList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconReportSyndicationListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_report_syndications": [ { "analysis": { "address": "match", "date_of_birth": "match", "depository_accounts": [ { "account_mask": "4000", "match_status": "match", "routing_number": "021000021" } ], "email_address": "match", "id_number": "match", "ip_address": "match", "name": "match", "phone_number": "match" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "id": "becrsn_11111111111111", "report": { "created_at": "2020-07-24T03:26:02Z", "event_date": "1990-05-29", "fraud_date": "1990-05-29", "id": "becrpt_11111111111111", "type": "first_party" } } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/BeaconReportSyndicationListResponse" } } }, "description": "OK" } }, "summary": "List Beacon Report Syndications for a Beacon User", "tags": [ "plaid" ] } }, "/beacon/user/account_insights/get": { "post": { "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" }, "operationId": "beaconUserAccountInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserAccountInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "bank_account_insights": { "accounts": [ { "account_id": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo", "attributes": { "address_change_count_28d": 1, "address_change_count_90d": 3, "days_since_account_opening": 365, "days_since_first_observed_transaction": 180, "days_since_first_plaid_connection": 1, "distinct_ip_addresses_count_30d": 1, "distinct_ip_addresses_count_3d": 1, "distinct_ip_addresses_count_7d": 1, "distinct_ip_addresses_count_90d": 1, "distinct_user_agents_count_30d": 1, "distinct_user_agents_count_3d": 1, "distinct_user_agents_count_7d": 1, "distinct_user_agents_count_90d": 1, "email_change_count_28d": 2, "email_change_count_90d": 4, "failed_plaid_non_oauth_authentication_attempts_count_30d": 1, "failed_plaid_non_oauth_authentication_attempts_count_3d": 1, "failed_plaid_non_oauth_authentication_attempts_count_7d": 1, "is_account_closed": false, "is_account_frozen_or_restricted": false, "phone_change_count_28d": 1, "phone_change_count_90d": 2, "plaid_connections_count_30d": 1, "plaid_connections_count_7d": 1, "plaid_non_oauth_authentication_attempts_count_30d": 1, "plaid_non_oauth_authentication_attempts_count_3d": 1, "plaid_non_oauth_authentication_attempts_count_7d": 1, "total_plaid_connections_count": 1 }, "subtype": "checking", "type": "depository" } ], "item_id": "515cd85321d3649aecddc015" }, "beacon_user_id": "becusr_42cF1MNo42r9Xj", "created_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "updated_at": "2020-07-24T03:26:02Z" } } }, "schema": { "$ref": "#/components/schemas/BeaconUserAccountInsightsGetResponse" } } }, "description": "OK" } }, "summary": "Get Account Insights for a Beacon User", "tags": [ "plaid" ] } }, "/beacon/user/create": { "post": { "description": "Create and scan a Beacon User against your Beacon Program, according to your program's settings.\n\nWhen you submit a new user to `/beacon/user/create`, several checks are performed immediately:\n\n - 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`.\n\n - 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`.\n\n - Finally, the user's PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.", "externalDocs": { "url": "/api/products/beacon/#beaconusercreate" }, "operationId": "beaconUserCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "created_at": "2020-07-24T03:26:02Z", "id": "becusr_42cF1MNo42r9Xj", "item_ids": [ "515cd85321d3649aecddc015" ], "program_id": "becprg_11111111111111", "request_id": "saKrIBuEB9qJZng", "status": "cleared", "updated_at": "2020-07-24T03:26:02Z", "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "depository_accounts": [ { "account_mask": "4000", "added_at": "2020-07-24T03:26:02Z", "routing_number": "021000021" } ], "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+19876543212" }, "version": 1 } } }, "schema": { "$ref": "#/components/schemas/BeaconUserCreateResponse" } } }, "description": "OK" } }, "summary": "Create a Beacon User", "tags": [ "plaid" ] } }, "/beacon/user/get": { "post": { "description": "Fetch a Beacon User.\n\nThe Beacon User is returned with all of their associated information and a `status` based on the Beacon Network duplicate record and fraud checks.\n", "externalDocs": { "url": "/api/products/beacon/#beaconuserget" }, "operationId": "beaconUserGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "created_at": "2020-07-24T03:26:02Z", "id": "becusr_42cF1MNo42r9Xj", "item_ids": [ "515cd85321d3649aecddc015" ], "program_id": "becprg_11111111111111", "request_id": "saKrIBuEB9qJZng", "status": "cleared", "updated_at": "2020-07-24T03:26:02Z", "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "depository_accounts": [ { "account_mask": "4000", "added_at": "2020-07-24T03:26:02Z", "routing_number": "021000021" } ], "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+19876543212" }, "version": 1 } } }, "schema": { "$ref": "#/components/schemas/BeaconUserGetResponse" } } }, "description": "OK" } }, "summary": "Get a Beacon User", "tags": [ "plaid" ] } }, "/beacon/user/history/list": { "post": { "description": "List all changes to the Beacon User in reverse-chronological order.", "externalDocs": { "url": "/api/products/beacon/#beaconuserhistorylist" }, "operationId": "beaconUserHistoryList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserHistoryListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_users": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "created_at": "2020-07-24T03:26:02Z", "id": "becusr_42cF1MNo42r9Xj", "item_ids": [ "515cd85321d3649aecddc015" ], "program_id": "becprg_11111111111111", "status": "cleared", "updated_at": "2020-07-24T03:26:02Z", "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "depository_accounts": [ { "account_mask": "4000", "added_at": "2020-07-24T03:26:02Z", "routing_number": "021000021" } ], "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+19876543212" }, "version": 1 } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/BeaconUserHistoryListResponse" } } }, "description": "OK" } }, "summary": "List a Beacon User's history", "tags": [ "plaid" ] } }, "/beacon/user/review": { "post": { "description": "Update the status of a Beacon User.\n\nWhen 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:\n\n1. Whether there are any associated Beacon Reports connected to the Beacon User, and\n2. Whether there are any confirmed Beacon Report Syndications connected to the Beacon User.\n\nWhen 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.\nWhen 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`.\nThere are no restrictions on updating a Beacon User's status to `pending_review`.\n\nIf these conditions are not met, the request will be rejected with an error explaining the issue.", "externalDocs": { "url": "/api/products/beacon/#beaconuserreview" }, "operationId": "beaconUserReview", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserReviewRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "created_at": "2020-07-24T03:26:02Z", "id": "becusr_42cF1MNo42r9Xj", "item_ids": [ "515cd85321d3649aecddc015" ], "program_id": "becprg_11111111111111", "request_id": "saKrIBuEB9qJZng", "status": "cleared", "updated_at": "2020-07-24T03:26:02Z", "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "depository_accounts": [ { "account_mask": "4000", "added_at": "2020-07-24T03:26:02Z", "routing_number": "021000021" } ], "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+19876543212" }, "version": 1 } } }, "schema": { "$ref": "#/components/schemas/BeaconUserGetResponse" } } }, "description": "OK" } }, "summary": "Review a Beacon User", "tags": [ "plaid" ] } }, "/beacon/user/update": { "post": { "description": "Update the identity data for a Beacon User in your Beacon Program or add new accounts to the Beacon User.\n\nSimilar to `/beacon/user/create`, several checks are performed immediately when you submit an identity data change to `/beacon/user/update`:\n\n - 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`.\n\n - 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`.\n\n - Finally, the user's PII is searched against all fraud report shared with the Beacon Network by other companies. If a matching fraud report is found, the user will be returned with a `pending_review` status if your program has enabled automatic flagging based on network fraud.\n\nPlaid 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" }, "operationId": "beaconUserUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BeaconUserUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "created_at": "2020-07-24T03:26:02Z", "id": "becusr_42cF1MNo42r9Xj", "item_ids": [ "515cd85321d3649aecddc015" ], "program_id": "becprg_11111111111111", "request_id": "saKrIBuEB9qJZng", "status": "cleared", "updated_at": "2020-07-24T03:26:02Z", "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "depository_accounts": [ { "account_mask": "4000", "added_at": "2020-07-24T03:26:02Z", "routing_number": "021000021" } ], "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+19876543212" }, "version": 1 } } }, "schema": { "$ref": "#/components/schemas/BeaconUserUpdateResponse" } } }, "description": "OK" } }, "summary": "Update the identity data of a Beacon User", "tags": [ "plaid" ] } }, "/beta/credit/v1/bank_employment/get": { "post": { "description": "`/beta/credit/v1/bank_employment/get` returns the employment report(s) derived from bank transaction data for a specified user.", "externalDocs": { "url": "/api/products/income/#creditbank_employmentget" }, "operationId": "creditBankEmploymentGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankEmploymentGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "bank_employment_reports": [ { "bank_employment_report_id": "0a7eaed6-5da7-4846-baaf-ad787306575e", "days_requested": 120, "generated_time": "2023-01-23T22:47:53Z", "items": [ { "bank_employment_accounts": [ { "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9", "mask": "8888", "name": "Plaid Checking Account", "official_name": "Plaid Checking Account", "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" } ] } ], "subtype": "checking", "type": "depository" } ], "bank_employments": [ { "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9", "bank_employment_id": "f17efbdd-caab-4278-8ece-963511cd3d51", "earliest_deposit_date": "2022-01-15", "employer": { "name": "Plaid Inc." }, "latest_deposit_date": "2023-01-15" } ], "institution_id": "ins_0", "institution_name": "Plaid Bank", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "last_updated_time": "2023-01-23T22:47:53Z" } ], "warnings": [] } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditBankEmploymentGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve information from the bank accounts used for employment verification", "tags": [ "plaid" ] } }, "/beta/ewa_report/v1/get": { "post": { "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.\n\nThe 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.\n\nScore range: 1-99\n\nInterpretation: Higher scores indicate a greater likelihood of repayment.\n\nThis endpoint enables clients to assess repayment risk and make data-driven decisions when determining eligibility or limits for earned wage advances.", "externalDocs": { "url": "/api/products/beta/#betaewareportv1get" }, "operationId": "betaEwaReportV1Get", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "access-sandbox-71e02f71-0960-4a27-abd2-5631e04f2175" } } }, "schema": { "$ref": "#/components/schemas/BetaEwaReportV1GetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "ewa_report_id": "bbfc5174-5433-4648-8d93-9fec6a0c0966", "ewa_scores": [ { "highest_amount": 25, "lowest_amount": 0, "score": 75 }, { "highest_amount": 40, "lowest_amount": 25, "score": 72 }, { "highest_amount": 100, "lowest_amount": 50, "score": 68 }, { "highest_amount": 200, "lowest_amount": 100, "score": 65 }, { "highest_amount": 300, "lowest_amount": 200, "score": 60 }, { "highest_amount": 400, "lowest_amount": 300, "score": 55 }, { "highest_amount": 500, "lowest_amount": 400, "score": 50 } ], "generation_time": "2025-10-29T03:32:11Z", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/BetaEwaReportV1GetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get EWA Score Report", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beta/partner/customer/v1/create": { "post": { "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.", "externalDocs": { "url": "/api/partner/#partnercustomercreate" }, "operationId": "betaPartnerCustomerV1Create", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "address": { "city": "New York", "country_code": "US", "postal_code": "12345", "region": "NY", "street": "123 Main St" }, "application_name": "Plaid", "billing_contact": { "email": "bob.jones@example.com", "family_name": "Jones", "given_name": "Bob" }, "client_id": "7f57eb3d2a9j6480121fx361", "company_name": "Plaid", "create_link_customization": true, "customer_support_info": { "contact_url": "example.com/contact", "email": "support@example.com", "link_update_url": "example.com/update", "phone_number": "1234567890" }, "legal_entity_name": "Plaid", "products": [ "auth", "identity" ], "redirect_uris": [ "http://localhost/oauth.html", "https://www.example.com/oauth.html" ], "secret": "79g03eoofwl8240v776r2h667442119", "technical_contact": { "email": "alice.smith@example.com", "family_name": "Smith", "given_name": "Alice" }, "website": "plaid.com" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1CreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer": { "client_id": "7f57eb3d2a9j6480121fx361", "company_name": "Plaid", "product_statuses": { "cra_base_report": "MORE_INFORMATION_NEEDED" }, "requirements_due": [ "is_diligence_attested", "bank_addendum_acceptance", "questionnaires.cra" ], "secrets": { "production": "79g03eoofwl8240v776r2h667442119", "sandbox": "b60b5201d006ca5a7081d27c824d77" }, "status": "MORE_INFORMATION_NEEDED" }, "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1CreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Creates a new end customer for a Plaid reseller.", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beta/partner/customer/v1/enable": { "post": { "description": "The `/beta/partner/customer/v1/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.", "externalDocs": { "url": "/api/partner/#partnercustomerenable" }, "operationId": "betaPartnerCustomerV1Enable", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "634758733ebb4f00134b85ea", "products": [ "auth" ], "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1EnableRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer_client_id": "634758733ebb4f00134b85ea", "product_statuses": { "auth": "ACTIVE", "cra_base_report": "PENDING_ENABLEMENT" }, "production_secret": "79g03eoofwl8240v776r2h667442119", "request_id": "4zlKapIkTm8p5KM", "status": "ACTIVE" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1EnableResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Enables a Plaid reseller's end customer in the Production environment.", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beta/partner/customer/v1/get": { "post": { "description": "The `/beta/partner/customer/v1/get` endpoint is used by reseller partners to retrieve data about a single end customer.", "externalDocs": { "url": "/api/partner/#partnercustomerget" }, "operationId": "betaPartnerCustomerV1Get", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "634758733ebb4f00134b85ea", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1GetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer": { "client_id": "634758733ebb4f00134b85ea", "company_name": "Plaid", "product_statuses": { "cra_base_report": "MORE_INFORMATION_NEEDED" }, "requirements_due": [ "is_diligence_attested", "bank_addendum_acceptance", "questionnaires.cra" ], "status": "MORE_INFORMATION_NEEDED" }, "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1GetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieves the details of a Plaid reseller's end customer.", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beta/partner/customer/v1/update": { "post": { "description": "The `/beta/partner/customer/v1/update` endpoint updates an existing end customer record.", "externalDocs": { "url": "/api/partner/#partnercustomercreate" }, "operationId": "betaPartnerCustomerV1Update", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "bank_addendum_acceptance": { "customer_accepted": true, "customer_agreement_timestamp": "2025-01-01T01:00:00Z", "customer_ip_address": "127.0.0.1" }, "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "634758733ebb4f00134b85ea", "questionnaires": { "cra": { "is_technical_service_provider_involved": true, "is_third_party_involved": true, "purposes": { "WRITTEN_INSTRUCTION": { "use_cases": [ "CREDIT_UNDERWRITING", "TENANT_SCREENING" ] } } } }, "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1UpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer": { "client_id": "634758733ebb4f00134b85ea", "company_name": "Plaid", "product_statuses": { "cra_base_report": "PENDING_ENABLEMENT" }, "status": "PENDING_ENABLEMENT" }, "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/BetaPartnerCustomerV1UpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Updates an existing end customer.", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/beta/transactions/rules/v1/create": { "post": { "description": "The `/beta/transactions/rules/v1/create` endpoint creates transaction categorization rules.\n\nRules will be applied on the Item's transactions returned in `/transactions/get` response.\n\nThe product is currently in beta. To request access, contact transactions-feedback@plaid.com.", "operationId": "transactionsRulesCreate", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "client_user_id": "your-client-user-id", "pfc_detailed_category": "FOOD_AND_DRINK_FAST_FOOD", "pfc_primary_category": "FOOD_AND_DRINK", "rule_details": { "field": "MERCHANT_NAME", "query": "Burger Shack", "type": "SUBSTRING_MATCH" }, "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "rule": { "created_at": "2022-02-28T11:00:00Z", "id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNo", "pfc_detailed_category": "FOOD_AND_DRINK_FAST_FOOD", "pfc_primary_category": "FOOD_AND_DRINK", "rule_details": { "field": "MERCHANT_NAME", "query": "Burger Shack", "type": "SUBSTRING_MATCH" }, "updated_at": "2022-02-28T11:00:00Z", "user_id": "usr_9nSp2KuZ2x4JDw" } } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create transaction category rule", "tags": [ "plaid" ] } }, "/beta/transactions/rules/v1/list": { "post": { "description": "The `/beta/transactions/rules/v1/list` returns a list of transaction rules created for the Item associated with the access token.", "operationId": "transactionsRulesList", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "client_user_id": "your-client-user-id", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "rules": [ { "created_at": "2022-02-28T11:00:00Z", "id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNo", "pfc_detailed_category": "FOOD_AND_DRINK_FAST_FOOD", "pfc_primary_category": "FOOD_AND_DRINK", "rule_details": { "field": "MERCHANT_NAME", "query": "Burger Shack", "type": "SUBSTRING_MATCH" }, "updated_at": "2022-02-28T11:00:00Z", "user_id": "usr_9nSp2KuZ2x4JDw" }, { "created_at": "2022-02-27T14:50:00Z", "id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBF", "pfc_detailed_category": "TRANSFER_IN_ACCOUNT_TRANSFER", "pfc_primary_category": "TRANSFER_IN", "rule_details": { "field": "TRANSACTION_ID", "query": "kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no", "type": "EXACT_MATCH" }, "updated_at": "2022-02-27T14:50:00Z", "user_id": "usr_9nSp2KuZ2x4JDw" } ] } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Return a list of rules created for the Item associated with the access token.", "tags": [ "plaid" ] } }, "/beta/transactions/rules/v1/remove": { "post": { "description": "The `/beta/transactions/rules/v1/remove` endpoint is used to remove a transaction rule.", "operationId": "transactionsRulesRemove", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "client_user_id": "your-client-user-id", "rule_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBF", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRulesRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove transaction rule", "tags": [ "plaid" ] } }, "/beta/transactions/user_insights/v1/get": { "post": { "description": "The `/beta/transactions/user_insights/v1/get` gets user insights for clients who have enriched data with `/transactions/enrich`.\n\nThe product is currently in beta.", "externalDocs": { "url": "/api/products/enrich/#userinsightsget" }, "operationId": "transactionsUserInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionsUserInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "category_insights": { "detailed_category_insights": [ { "name": "GENERAL_MERCHANDISE_SUPERSTORES", "top_counterparties": [ "Costco" ], "total_inflows": 24.99, "total_outflows": 997.11, "transaction_count": 3 } ], "primary_category_insights": [ { "name": "GENERAL_MERCHANDISE", "top_counterparties": [ "Costco" ], "total_inflows": 24.99, "total_outflows": 1025.23, "transaction_count": 7 }, { "name": "RENT_AND_UTILITIES", "top_counterparties": [ "PG&E" ], "total_inflows": 0, "total_outflows": 123.01, "transaction_count": 1 } ] }, "counterparty_insights": { "financial_institution_insights": [ { "detected_accounts": [ { "account_subtype": null, "account_type": "depository", "newest_transaction_amount": 500, "newest_transaction_date": "2023-01-05", "oldest_transaction_date": "2022-01-24", "total_inflows": 0, "total_outflows": 503, "transaction_count": 1 } ], "entity_id": "o2Ry34bq605MvmEed3yjqjkYWwqRQYpnkjd0O", "name": "Chase", "website": "chase.com" } ], "merchant_insights": [ { "entity_id": "pBowAoZJMM9DKR37jvNmzM4yWBBXyMzV2rM3A", "name": "Costco", "personal_finance_category_detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "personal_finance_category_primary": "GENERAL_MERCHANDISE", "total_inflows": 24.99, "total_outflows": 953.46, "transaction_count": 2, "website": "costco.com" }, { "entity_id": "6gEJJBrw8daLroaYgBAkpa65v9jVby69vejY0", "name": "PG&E", "personal_finance_category_detailed": "RENT_AND_UTILITIES_GAS_AND_ELECTRICITY", "personal_finance_category_primary": "RENT_AND_UTILITIES", "total_inflows": 0, "total_outflows": 123.01, "transaction_count": 1, "website": "pge.com" } ] }, "recurring_transactions": { "inflow_streams": [ { "average_amount": { "amount": 1000.91, "iso_currency_code": "USD", "unofficial_currency_code": null }, "average_days_apart": 7, "description": "Payroll * Plaid", "frequency": "WEEKLY", "is_active": true, "last_amount": { "amount": 1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "merchant_name": "Plaid", "newest_transaction_date": "2023-08-02", "oldest_transaction_date": "2020-02-04", "personal_finance_category_detailed": "INCOME_WAGES", "personal_finance_category_primary": "INCOME", "status": "MATURE", "stream_id": "yhnUVSIfe7SfeU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_count": 5, "transaction_ids": [ "nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw", "EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL", "ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd", "QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK", "uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF" ] } ], "outflow_streams": [ { "average_amount": { "amount": 85, "iso_currency_code": "USD", "unofficial_currency_code": null }, "average_days_apart": 29, "description": "ConEd Bill Payment", "frequency": "MONTHLY", "is_active": true, "last_amount": { "amount": 100, "iso_currency_code": "USD", "unofficial_currency_code": null }, "merchant_name": "ConEd", "newest_transaction_date": "2022-05-02", "oldest_transaction_date": "2022-02-04", "personal_finance_category_detailed": "RENT_AND_UTILITIES_GAS_AND_ELECTRICITY", "personal_finance_category_primary": "RENT_AND_UTILITIES", "status": "MATURE", "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd", "transaction_count": 4, "transaction_ids": [ "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR", "jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L", "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l" ] } ] }, "user_data_overview": { "days_available": 31, "newest_transaction_date": "2023-01-31", "oldest_transaction_date": "2023-01-01", "total_inflows": 2300.12, "total_outflows": 1245.11, "transaction_count": 21 } } } }, "schema": { "$ref": "#/components/schemas/TransactionsUserInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Obtain user insights based on transactions sent through /transactions/enrich", "tags": [ "plaid" ], "x-hidden-from-docs": true }, "x-hidden-from-docs": true }, "/beta/transactions/v1/enhance": { "post": { "description": "The `/beta/transactions/v1/enhance` endpoint enriches raw transaction data provided directly by clients.\n\nThe product is currently in beta.", "operationId": "transactionsEnhance", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionsEnhanceGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "enhanced_transactions": [ { "amount": 2307.21, "description": "Debit purchase Apple 1235", "enhancements": { "category": [ "Shops", "Computers and Electronics" ], "category_id": "19013000", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "logo_url": "https://plaid-merchant-logos.plaid.com/apple_63.png", "name": "Apple", "phone_number": null, "type": "merchant", "website": "apple.com" } ], "location": { "address": "300 Post St", "city": "San Francisco", "country": "US", "lat": 40.740352, "lon": -74.001761, "postal_code": "94108", "region": "CA", "store_number": "1235" }, "logo_url": "https://plaid-merchant-logos.plaid.com/apple_63.png", "merchant_name": "Apple", "payment_channel": "in store", "personal_finance_category": { "detailed": "GENERAL_MERCHANDISE_ELECTRONICS", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "phone_number": null, "website": "apple.com" }, "id": "6135818adda16500147e7c1d", "iso_currency_code": "USD" } ] } } }, "schema": { "$ref": "#/components/schemas/TransactionsEnhanceGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Enhance locally-held transaction data", "tags": [ "plaid" ] } }, "/business_verification/create": { "post": { "description": "Create a new business verification to check a business's identity and risk profile.", "externalDocs": { "url": "/api/products/business-verification/#businessverificationcreate" }, "operationId": "businessVerificationCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessVerificationCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "digital_presence_check": { "address": { "summary": "match" }, "email_address": { "summary": "match" }, "phone_number": { "summary": "match" }, "score": 55, "status": "success", "website": { "summary": "match" }, "website_analysis": { "email_is_deliverable": "yes", "is_parked": "no", "ssl": { "is_valid": "yes" }, "website_build_status": "active", "whois_record": { "domain_created_at": "1995-08-16T00:00:00Z", "domain_expires_at": "2026-08-15T00:00:00Z", "domain_updated_at": "2025-07-11T00:00:00Z", "registrar": "GANDI SAS" } } }, "id": "busver_52xR9LKo77r1Np", "kyb_check": { "address": { "summary": "match" }, "match_details": { "addresses": [ { "city": "Pawnee", "country": "US", "is_primary": true, "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" } ], "email_addresses": [ { "email_address": "business@example.com" } ], "entity_type": "llc", "formation_date": "1990-05-29", "names": [ { "is_primary": true, "name": "Acme Corporation" }, { "is_primary": false, "name": "Acme Widgets" } ], "phone_numbers": [ { "number": "+12345678909" } ], "websites": [ { "url": "https://example.com" } ] }, "name": { "summary": "match" }, "score": 85, "status": "success", "website": { "summary": "match" } }, "redacted_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "risk_check": { "industry_prediction": { "code": 518210, "title": "Data Processing, Hosting, and Related Services" }, "score": 92, "status": "success" }, "search_terms": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "alternative_names": [ "Acme Widgets" ], "email_address": "user@example.com", "name": "Acme Corporation", "phone_number": "+14025671234", "website": "https://example.com" }, "shareable_url": "https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success" } } }, "schema": { "$ref": "#/components/schemas/BusinessVerificationCreateResponse" } } }, "description": "OK" } }, "summary": "Create a Business Verification", "tags": [ "plaid" ], "x-hidden-from-docs": true } }, "/business_verification/get": { "post": { "description": "Retrieve the current state of a specific business verification.", "externalDocs": { "url": "/api/products/business-verification/#businessverificationget" }, "operationId": "businessVerificationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessVerificationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "digital_presence_check": { "address": { "summary": "match" }, "email_address": { "summary": "match" }, "phone_number": { "summary": "match" }, "score": 55, "status": "success", "website": { "summary": "match" }, "website_analysis": { "email_is_deliverable": "yes", "is_parked": "no", "ssl": { "is_valid": "yes" }, "website_build_status": "active", "whois_record": { "domain_created_at": "1995-08-16T00:00:00Z", "domain_expires_at": "2026-08-15T00:00:00Z", "domain_updated_at": "2025-07-11T00:00:00Z", "registrar": "GANDI SAS" } } }, "id": "busver_52xR9LKo77r1Np", "kyb_check": { "address": { "summary": "match" }, "match_details": { "addresses": [ { "city": "Pawnee", "country": "US", "is_primary": true, "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" } ], "email_addresses": [ { "email_address": "business@example.com" } ], "entity_type": "llc", "formation_date": "1990-05-29", "names": [ { "is_primary": true, "name": "Acme Corporation" }, { "is_primary": false, "name": "Acme Widgets" } ], "phone_numbers": [ { "number": "+12345678909" } ], "websites": [ { "url": "https://example.com" } ] }, "name": { "summary": "match" }, "score": 85, "status": "success", "website": { "summary": "match" } }, "redacted_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "risk_check": { "industry_prediction": { "code": 518210, "title": "Data Processing, Hosting, and Related Services" }, "score": 92, "status": "success" }, "search_terms": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "alternative_names": [ "Acme Widgets" ], "email_address": "user@example.com", "name": "Acme Corporation", "phone_number": "+14025671234", "website": "https://example.com" }, "shareable_url": "https://verify.plaid.com/busver_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success" } } }, "schema": { "$ref": "#/components/schemas/BusinessVerificationGetResponse" } } }, "description": "OK" } }, "summary": "Get a Business Verification", "tags": [ "plaid" ], "x-hidden-from-docs": true } }, "/cashflow_report/get": { "post": { "description": "The `/cashflow_report/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions.\nTransactions 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).\nDue 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.\nNote 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.", "externalDocs": { "url": "/api/products/transactions/#cashflowReportGet" }, "operationId": "cashflowReportGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/CashflowReportGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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", "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" } ] } ], "subtype": "checking", "type": "depository" } ], "has_more": true, "item": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "identity", "investments" ], "billed_products": [ "assets", "auth", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "last_successful_update_time": "2025-07-02T00:00:00Z", "next_cursor": "eu4rIDi328130dKJEoqieej", "request_id": "45QSn", "total_transactions": 2, "transactions": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" }, { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 72.1, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ] } } }, "schema": { "$ref": "#/components/schemas/CashflowReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Gets transaction data in `cashflow_report`", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/cashflow_report/insights/get": { "post": { "description": "The `/cashflow_report/insights/get` endpoint retrieves insights data associated with an Item. Insights are only calculated on credit and depository accounts.", "externalDocs": { "url": "/api/products/transactions/#cashflowReportInsightsGet" }, "operationId": "cashflowReportInsightsGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/CashflowReportInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "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": [ { "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_inflow_transaction_count": 6, "average_daily_net_cashflow_amount": { "amount": 2800, "iso_currency_code": "USD", "unofficial_currency_code": null }, "average_daily_outflow_amount": { "amount": 250, "iso_currency_code": "USD", "unofficial_currency_code": null }, "average_daily_outflow_transaction_count": 2, "end_date": "2023-06-30", "ending_balance": null, "negative_ending_balance_day_count": 0, "nsf_transaction_count": 0, "overdraft_transaction_count": 1, "start_date": "2023-06-01", "starting_balance": null, "total_loan_payment": { "amount": 1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "total_payroll": { "amount": 200, "iso_currency_code": "USD", "unofficial_currency_code": null }, "total_revenue": { "amount": 16200, "iso_currency_code": "USD", "unofficial_currency_code": null }, "total_variable_expense": { "amount": 250, "iso_currency_code": "USD", "unofficial_currency_code": null } } ] }, "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", "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" } ], "item": { "auth_method": "INSTANT_AUTH", "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" }, "last_generated_time": "2023-06-04T10:34:50Z", "request_id": "45QSn" } } }, "schema": { "$ref": "#/components/schemas/CashflowReportInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Gets insights data in Cashflow Report", "tags": [ "plaid" ] } }, "/cashflow_report/refresh": { "post": { "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`.\n\nAfter 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.\n\nNote 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.\n\nAs 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.", "externalDocs": { "url": "/api/products/transactions/#cashflowReportRefresh" }, "operationId": "cashflowReportRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CashflowReportRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/CashflowReportRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh transaction data in `cashflow_report`", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/cashflow_report/transactions/get": { "post": { "description": "The `/cashflow_report/transactions/get` endpoint retrieves transactions data associated with an Item. Transactions data is standardized across financial institutions.\nTransactions 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).\nDue 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.\nNote 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.", "externalDocs": { "url": "/api/products/transactions/#cashflowReportTransactionsGet" }, "operationId": "cashflowReportTransactionsGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/CashflowReportTransactionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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", "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" } ], "has_more": true, "item": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "identity", "investments" ], "billed_products": [ "assets", "auth", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "next_cursor": "eu4rIDi328130dKJEoqieej", "request_id": "45QSn", "total_transactions": 2, "transactions": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" }, { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 72.1, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ] } } }, "schema": { "$ref": "#/components/schemas/CashflowReportTransactionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Gets transaction data in `cashflow_report`", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/categories/get": { "post": { "deprecated": true, "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.\n\nAll 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.", "externalDocs": { "url": "/api/products/transactions/#categoriesget" }, "operationId": "categoriesGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategoriesGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/CategoriesGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "security": [], "summary": "(Deprecated) Get legacy categories", "tags": [ "plaid" ] } }, "/consent/events/get": { "post": { "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.", "externalDocs": { "url": "/api/consent/#consenteventsget" }, "operationId": "consentEventsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConsentEventsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "consent_events": [ { "consented_accounts": [], "consented_data_scopes": [], "consented_use_cases": [], "created_at": "2019-02-15T15:51:39Z", "event_code": "USER_AGREEMENT", "event_type": "CONSENT_GRANTED", "initiator": "END_USER", "institution_id": "ins_123456", "institution_name": "Platypus bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" }, { "consented_accounts": [], "consented_data_scopes": [], "consented_use_cases": [ "Send and receive money", "Track and manage your finances" ], "created_at": "2019-02-15T15:52:39Z", "event_code": "USE_CASES", "event_type": "CONSENT_GRANTED", "initiator": "END_USER", "institution_id": "ins_123456", "institution_name": "Platypus bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" }, { "consented_accounts": [], "consented_data_scopes": [ "account_balance_info", "contact_info", "account_routing_number" ], "consented_use_cases": [], "created_at": "2019-02-15T15:52:39Z", "event_code": "DATA_SCOPES", "event_type": "CONSENT_GRANTED", "initiator": "END_USER", "institution_id": "ins_123456", "institution_name": "Platypus bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" }, { "consented_accounts": [ { "account_id": "blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo", "mask": "0000", "name": "Plaid Checking", "official_name": "Plaid Gold Standard 0% Interest Checking", "subtype": "checking", "type": "depository" } ], "consented_data_scopes": [], "consented_use_cases": [], "created_at": "2019-02-15T15:53:39Z", "event_code": "ACCOUNT_SCOPES", "event_type": "CONSENT_GRANTED", "initiator": "END_USER", "institution_id": "ins_123456", "institution_name": "Platypus bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" }, { "consented_accounts": [], "consented_data_scopes": [], "consented_use_cases": [], "created_at": "2020-02-20T15:53:39Z", "event_code": "REVOCATION", "event_type": "CONSENT_REVOKED", "initiator": "END_USER", "institution_id": "ins_123456", "institution_name": "Platypus bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" } ], "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ConsentEventsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "List a historical log of item consent events", "tags": [ "plaid" ] } }, "/consumer_report/pdf/get": { "post": { "description": "Retrieves all existing CRB Bank Income and Base reports for the consumer in PDF format.\n\nResponse is PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.", "externalDocs": { "url": "/none/" }, "operationId": "consumerReportPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConsumerReportPDFGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/pdf": { "schema": { "$ref": "#/components/schemas/ConsumerReportPDFGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve PDF Reports", "tags": [ "plaid" ] } }, "/cra/check_report/base_report/get": { "post": { "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`.", "externalDocs": { "url": "/api/products/check/#cracheck_reportbase_reportget" }, "operationId": "craCheckReportBaseReportGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportBaseReportGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "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 } }, "date_generated": "2024-07-16T01:52:42.912331716Z", "days_requested": 365, "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": { "end_date": "2024-07-16", "start_date": "2024-01-01" }, "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" }, "request_id": "FibfL8t3s71KJnj", "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportBaseReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a Base Report", "tags": [ "plaid" ] } }, "/cra/check_report/cashflow_insights/get": { "post": { "description": "This endpoint allows you to retrieve the Cashflow Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.\n\nIf you did not initialize Link with the `cra_cashflow_insights` product or have generated a report using `/cra/check_report/create`, we will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.", "externalDocs": { "url": "/api/products/check/#cracheck_reportcashflow_insightsget" }, "operationId": "craCheckReportCashflowInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportCashflowInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "attributes": { "cash_reliance_atm_withdrawal_amt_cv_90d": 180.1 }, "generated_time": "2022-01-31T22:47:53Z", "report_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D" }, "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportCashflowInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve cash flow insights from your user's banking data", "tags": [ "plaid" ] } }, "/cra/check_report/create": { "post": { "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.", "externalDocs": { "url": "/api/products/check/#cracheck_reportcreate" }, "operationId": "craCheckReportCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh or create a Consumer Report", "tags": [ "plaid" ] } }, "/cra/check_report/income_insights/get": { "post": { "description": "This endpoint allows you to retrieve the Income Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.\n\nNOTE: 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).", "externalDocs": { "url": "/api/products/check/#cracheck_reportincome_insightsget" }, "operationId": "craCheckReportIncomeInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportIncomeInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "days_requested": 365, "generated_time": "2022-01-31T22:47:53Z", "income_streams": [ { "description": "PLAID INC DIRECT DEP PPD", "end_date": "2022-01-15", "income_metrics": { "current": { "annual": { "gross_income": 4680, "net_income": 3600 }, "monthly": { "gross_income": 390, "net_income": 300 } }, "iso_currency_code": "USD", "projected": { "annual": { "gross_income": 3600, "net_income": 3600 }, "monthly": { "gross_income": 300, "net_income": 300 } }, "unofficial_currency_code": null }, "income_stream_id": "f17efbdd-caab-4278-8ece-963511cd3d51", "insights": { "income_category": { "primary": "EARNED_INCOME", "secondary": "SALARY" }, "income_provider": { "is_normalized": true, "name": "Plaid Inc" }, "next_payment": { "date": "2022-12-15" }, "pay_frequency": "MONTHLY", "status": "ACTIVE" }, "start_date": "2021-11-15", "transactions": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "amount": 100, "date": "2021-11-15", "iso_currency_code": "USD", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "original_description": "PLAID_INC_DIRECT_DEP_PPD 123A", "outlier": { "is_outlier": false }, "transaction_id": "aH5klwqG3B19OMT7D6F24Syv8pdnJXmtZoKQ5", "unofficial_currency_code": null }, { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "amount": 100, "date": "2021-12-15", "iso_currency_code": "USD", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "original_description": "PLAID_INC_DIRECT_DEP_PPD 123B", "outlier": { "is_outlier": false }, "transaction_id": "mN3rQ5iH8BC41T6UjKL9oD2vWJpZqXFomGwY1", "unofficial_currency_code": null }, { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "amount": 100, "date": "2022-01-31", "iso_currency_code": "USD", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "original_description": "PLAID_INC_DIRECT_DEP_PPD 123C", "outlier": { "is_outlier": false }, "transaction_id": "zK9lDoR8uBH51PNQ3W4T6Mjy2VFXpGtJwsL4", "unofficial_currency_code": null } ] } ], "items": [ { "accounts": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "mask": "8888", "metadata": { "end_date": "2024-07-16", "start_date": "2024-01-01" }, "name": "Plaid Checking Account", "official_name": "Plaid Checking Account", "owners": [], "subtype": "checking", "type": "depository" } ], "bank_income_accounts": [], "bank_income_sources": [], "institution_id": "ins_0", "institution_name": "Plaid Bank", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "last_updated_time": "2022-01-31T22:47:53Z" } ], "report_id": "bbfc5174-5433-4648-8d93-9fec6a0c0966", "user_summary": { "income_metrics": [ { "current": { "annual": { "gross_income": 4680, "net_income": 3600 }, "monthly": { "gross_income": 390, "net_income": 300 } }, "iso_currency_code": "USD", "projected": { "annual": { "gross_income": 3600, "net_income": 3600 }, "monthly": { "gross_income": 300, "net_income": 300 } }, "unofficial_currency_code": null } ] } }, "request_id": "LhQf0THi8SH1yJm", "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportIncomeInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve cash flow information from your user's banks", "tags": [ "plaid" ] } }, "/cra/check_report/lend_score/get": { "post": { "description": "This endpoint allows you to retrieve the LendScore report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the insights, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.\n\nIf you did not initialize Link with the `cra_lend_score` product or call `/cra/check_report/create` with the `cra_lend_score` product, Plaid will generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.", "externalDocs": { "url": "/api/products/check/#cracheck_reportlend_scoreget" }, "operationId": "craCheckReportLendScoreGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportLendScoreGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "generated_time": "2022-01-31T22:47:53Z", "lend_score": { "reason_codes": [ "PCS0221", "PCS0223" ], "score": 80 }, "report_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D" }, "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportLendScoreGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve the LendScore from your user's banking data", "tags": [ "plaid" ] } }, "/cra/check_report/network_insights/get": { "post": { "description": "This endpoint allows you to retrieve the Network Insights product for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.\n\nIf you did not initialize Link with the `cra_network_insights` product or have generated a report using `/cra/check_report/create`, Plaid will generate the attributes when you call this endpoint.", "externalDocs": { "url": "/api/products/check/#cracheck_reportnetwork_insightsget" }, "operationId": "craCheckReportNetworkInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportNetworkInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "generated_time": "2022-01-31T22:47:53Z", "items": [ { "institution_id": "ins_0", "institution_name": "Plaid Bank", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7" } ], "network_attributes": { "plaid_conn_user_lifetime_cash_advance_primary_count": 0, "plaid_conn_user_lifetime_lending_count": 5, "plaid_conn_user_lifetime_personal_lending_flag": 1 }, "report_id": "ee093cb0-e3f2-42d1-9dbc-8d8408964194" }, "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportNetworkInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve network attributes for the user", "tags": [ "plaid" ] } }, "/cra/check_report/partner_insights/get": { "post": { "description": "This endpoint allows you to retrieve the Partner Insights report for your user. You should call this endpoint after you've received a `CHECK_REPORT_READY` or a `USER_CHECK_REPORT_READY` webhook, either after the Link session for the user or after calling `/cra/check_report/create`. If the most recent consumer report for the user doesn't have sufficient data to generate the base report, or the consumer report has expired, you will receive an error indicating that you should create a new consumer report by calling `/cra/check_report/create`.\n\nIf you did not initialize Link with the `credit_partner_insights` product or have generated a report using `/cra/check_report/create`, we will call our partners to generate the insights when you call this endpoint. In this case, you may optionally provide parameters under `options` to configure which insights you want to receive.", "externalDocs": { "url": "/api/products/check/#cracheck_reportpartner_insightsget" }, "operationId": "craCheckReportPartnerInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportPartnerInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "client_report_id": "client_report_id_1221", "generated_time": "2022-01-31T22:47:53Z", "items": [ { "accounts": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "mask": "8888", "metadata": { "end_date": "2022-01-31", "start_date": "2022-01-01" }, "name": "Plaid Checking Account", "official_name": "Plaid Checking Account", "owners": [], "subtype": "checking", "type": "depository" } ], "institution_id": "ins_109508", "institution_name": "Plaid Bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" } ], "prism": { "cash_score": { "metadata": { "l1m_credit_value_cnt": 0, "l1m_debit_value_cnt": 40, "max_age": 20, "max_age_credit": 0, "max_age_debit": 20, "min_age": 1, "min_age_credit": 0, "min_age_debit": 1, "num_trxn_credit": 0, "num_trxn_debit": 40 }, "model_version": "3", "reason_codes": [ "CS03038" ], "score": 900, "version": 3 }, "first_detect": { "metadata": { "l1m_credit_value_cnt": 0, "l1m_debit_value_cnt": 40, "max_age": 20, "max_age_credit": 0, "max_age_debit": 20, "min_age": 1, "min_age_credit": 0, "min_age_debit": 1, "num_trxn_credit": 0, "num_trxn_debit": 40 }, "model_version": "3", "reason_codes": [ "CS03038" ], "score": 900, "version": 3 }, "insights": { "result": { "l6m_cumbal_acc": 1 }, "version": 3 }, "status": "SUCCESS" }, "report_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D" }, "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportPartnerInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve cash flow insights from partners", "tags": [ "plaid" ] } }, "/cra/check_report/pdf/get": { "post": { "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.", "externalDocs": { "url": "/api/products/check/#cracheck_reportpdfget" }, "operationId": "craCheckReportPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportPDFGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/pdf": { "examples": { "example-1": { "value": "JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O..." } }, "schema": { "$ref": "#/components/schemas/CraCheckReportPDFGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a Consumer Report as a PDF", "tags": [ "plaid" ] } }, "/cra/check_report/verification/get": { "post": { "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`.\n\nYou 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`.\n\nIf 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`.", "externalDocs": { "url": "/api/products/check/#cracheck_reportverificationget" }, "operationId": "craCheckReportVerificationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportVerificationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "client_report_id": "client_report_id_1221", "employment_refresh": { "days_requested": 60, "generated_time": "2023-03-30T18:27:37Z", "items": [ { "accounts": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "name": "Plaid Money Market", "official_name": "Plaid Platinum Standard 1.85% Interest Money Market", "subtype": "money market", "transactions": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "date": "2023-03-30", "original_description": "ACH Electronic CreditGUSTO PAY 123456", "pending": false, "transaction_id": "gGQgjoeyqBF89PND6K14Sow1wddZBmtLomJ78" } ], "type": "depository" }, { "account_id": "eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v", "name": "Plaid Checking", "official_name": "Plaid Gold Standard 0% Interest Checking", "subtype": "checking", "transactions": [ { "account_id": "eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v", "date": "2023-03-29", "original_description": "United Airlines **** REFUND ****", "pending": false, "transaction_id": "xG9jbv3eMoFWepzB7wQLT3LoLggX5Duy1Gbe5" } ], "type": "depository" } ], "institution_id": "ins_109508", "institution_name": "First Platypus Bank", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "last_update_time": "2023-03-30T18:25:26Z" } ] }, "report_id": "028e8404-a013-4a45-ac9e-002482f9cafc", "voa": { "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 } }, "days_requested": 90, "generated_time": "2023-03-30T18:27:37Z", "items": [ { "accounts": [ { "account_id": "eG7pNLjknrFpWvP7Dkbdf3Pq6GVBPKTaQJK5v", "balances": { "available": 100, "average_balance_30_days": 200, "average_balance_60_days": 150, "average_balance_90_days": 125, "current": 110, "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 } ], "iso_currency_code": "USD", "nsf_overdraft_transactions_count": 0, "unofficial_currency_code": null }, "consumer_disputes": [], "days_available": 90, "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": "+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_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" }, "type": "depository" } ], "institution_id": "ins_109508", "institution_name": "First Platypus Bank", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "last_update_time": "2023-03-30T18:25:26Z" } ] } }, "request_id": "LhQf0THi8SH1yJm", "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/CraCheckReportVerificationGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve various home lending reports for a user", "tags": [ "plaid" ] } }, "/cra/check_report/verification/pdf/get": { "post": { "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.\n\nThe response to `/cra/check_report/verification/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.", "externalDocs": { "url": "/api/products/check/#cracheck_reportverificationpdfget" }, "operationId": "craCheckReportVerificationPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCheckReportVerificationPdfGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/pdf": { "examples": { "example-1": { "value": "JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggNDY2MS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nF2SyY4cMRBF94VdzI0O..." } }, "schema": { "$ref": "#/components/schemas/CraCheckReportVerificationPdfGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a Consumer Report as a Verification PDF", "tags": [ "plaid" ] } }, "/cra/credit_profile/report/get": { "post": { "description": "`/cra/credit_profile/report/get` retrieves a credit profile report for a user.", "externalDocs": { "url": "/none/" }, "operationId": "craCreditProfileReportGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraCreditProfileReportGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": { "cashflow_insights_attributes": {}, "client_report_id": "loan-app-12345", "date_retrieved": "2024-01-15T10:30:00Z", "inquiry_type": "SOFT_INQUIRY", "lend_scores": [], "metadata": null, "network_insights_attributes": {} }, "request_id": "eYupqX1mZkEuQRx", "user_id": "usr_123456abcdef", "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/CraCreditProfileReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve the credit profile report for a user", "tags": [ "plaid" ] } }, "/cra/loans/applications/register": { "post": { "description": "`/cra/loans/applications/register` registers loan applications and decisions.", "externalDocs": { "url": "/none/" }, "operationId": "craLoansApplicationsRegister", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraLoansApplicationsRegisterRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraLoansApplicationsRegisterResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Register loan applications and decisions", "tags": [ "plaid" ] } }, "/cra/loans/register": { "post": { "description": "`/cra/loans/register` registers a list of loans to their applicants.", "externalDocs": { "url": "/none/" }, "operationId": "craLoansRegister", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRALoansRegisterRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraLoansRegisterResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Register a list of loans to their applicants", "tags": [ "plaid" ] } }, "/cra/loans/unregister": { "post": { "description": "`/cra/loans/unregister` indicates the loans have reached a final status and no further updates are expected.", "externalDocs": { "url": "/none/" }, "operationId": "craLoansUnregister", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraLoansUnregisterRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraLoanUnregisterResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Unregister a list of loans", "tags": [ "plaid" ] } }, "/cra/loans/update": { "post": { "description": "`/cra/loans/update` updates loan information such as the status and payment history.", "externalDocs": { "url": "/none/" }, "operationId": "craLoansUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraLoansUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraLoansUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update loan data", "tags": [ "plaid" ] } }, "/cra/monitoring_insights/get": { "post": { "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.", "externalDocs": { "url": "/api/products/check/#cramonitoring_insightsget" }, "operationId": "craMonitoringInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "items": [ { "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": { "end_date": "2024-07-16", "start_date": "2024-01-01" }, "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_generated": "2023-03-30T18:27:37Z", "insights": { "income": { "forecasted_monthly_income": { "current_amount": 12000 }, "historical_annual_income": { "current_amount": 144000 }, "income_sources": [ { "income_category": "SALARY", "income_description": "PLAID_INC_DIRECT_DEP_PPD", "income_source_id": "f17efbdd-caab-4278-8ece-963511cd3d51", "last_transaction_date": "2023-03-30" } ], "income_sources_counts": { "current_count": 1 }, "total_monthly_income": { "current_amount": 20000.31 } }, "loans": { "loan_disbursements_count": 1, "loan_payment_merchants_counts": { "current_count": 1 }, "loan_payments_counts": { "current_count": 1 } } }, "institution_id": "ins_0", "institution_name": "Plaid Bank", "item_id": "AZMP7JrGXgtPd3AQMeg7hwMKgk5E8qU1V5ME7", "status": { "status_code": "AVAILABLE" } } ], "request_id": "m8MDnv9okwxFNBV", "user_insights_id": "028e8404-a013-4a45-ac9e-002482f9cafc" } } }, "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a Monitoring Insights Report", "tags": [ "plaid" ] } }, "/cra/monitoring_insights/subscribe": { "post": { "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.", "externalDocs": { "url": "/api/products/check/#cramonitoring_insightssubscribe" }, "operationId": "craMonitoringInsightsSubscribe", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsSubscribeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "GVzMdiDd8DDAQK4", "subscription_id": "f17efbdd-caab-4278-8ece-963511cd3d51" } } }, "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsSubscribeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Subscribe to Monitoring Insights", "tags": [ "plaid" ] } }, "/cra/monitoring_insights/unsubscribe": { "post": { "description": "This endpoint allows you to unsubscribe from previously subscribed Monitoring Insights.", "externalDocs": { "url": "/api/products/check/#cramonitoring_insightsunsubscribe" }, "operationId": "craMonitoringInsightsUnsubscribe", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsUnsubscribeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "GVzMdiDd8DDAQK4" } } }, "schema": { "$ref": "#/components/schemas/CraMonitoringInsightsUnsubscribeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Unsubscribe from Monitoring Insights", "tags": [ "plaid" ] } }, "/cra/partner_insights/get": { "post": { "description": "`/cra/partner_insights/get` returns cash flow insights for a specified user.", "externalDocs": { "url": "/api/products/income/#crapartner_insightsget" }, "operationId": "craPartnerInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CraPartnerInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report": [ { "generated_time": "2022-01-31T22:47:53Z", "items": [ { "accounts": [ { "account_id": "1qKRXQjk8xUWDJojNwPXTj8gEmR48piqRNye8", "mask": "8888", "metadata": { "end_date": "2024-07-16", "start_date": "2024-01-01" }, "name": "Plaid Checking Account", "official_name": "Plaid Checking Account", "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" } ] } ], "subtype": "checking", "type": "depository" } ], "institution_id": "ins_0", "institution_name": "Plaid Bank", "item_id": "mxdmo1gw8DIW8AM1yG6JtRxbVeRkN8cL9PmQE" } ], "prism": { "cash_score": { "metadata": { "l1m_credit_value_cnt": 0, "l1m_debit_value_cnt": 40, "max_age": 20, "max_age_credit": 0, "max_age_debit": 20, "min_age": 1, "min_age_credit": 0, "min_age_debit": 1, "num_trxn_credit": 0, "num_trxn_debit": 40 }, "model_version": "3", "reason_codes": [ "CS03038" ], "score": 900, "version": 3 }, "first_detect": { "metadata": { "l1m_credit_value_cnt": 0, "l1m_debit_value_cnt": 40, "max_age": 20, "max_age_credit": 0, "max_age_debit": 20, "min_age": 1, "min_age_credit": 0, "min_age_debit": 1, "num_trxn_credit": 0, "num_trxn_debit": 40 }, "model_version": "3", "reason_codes": [ "CS03038" ], "score": 900, "version": 3 }, "insights": { "result": { "l6m_cumbal_acc": 1 }, "version": 3 }, "status": "SUCCESS" }, "report_id": "ef41dd05-b91e-45a6-9b2c-6c51d552f8f0" } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CraPartnerInsightsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve cash flow insights from the bank accounts used for income verification", "tags": [ "plaid" ] } }, "/credit/asset_report/freddie_mac/get": { "post": { "description": "The `/credit/asset_report/freddie_mac/get` endpoint retrieves the Asset Report in Freddie Mac's JSON format.", "externalDocs": { "url": "/none/" }, "operationId": "creditAssetReportFreddieMacGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssetReportFreddieGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "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": { "STATUSES": { "STATUS": { "StatusCode": "success", "StatusDescription": null } }, "VERIFICATION_OF_ASSET": { "REPORTING_INFORMATION": { "ReportingInformationIdentifier": "a-prod-kol4xb5y4nf2zecqalb2d55mze" }, "SERVICE_PRODUCT_FULFILLMENT": { "SERVICE_PRODUCT_FULFILLMENT_DETAIL": { "ServiceProductFulfillmentIdentifier": "VOA", "VendorOrderIdentifier": "PLAID" } }, "VERIFICATION_OF_ASSET_RESPONSE": { "ASSETS": { "ASSET": [ { "ASSET_DETAIL": { "AssetAccountIdentifier": "3847", "AssetAsOfDate": "2022-07-27", "AssetAvailableBalanceAmount": 2073.99, "AssetCurrentBalanceAmount": 2007.09, "AssetDaysRequestedCount": 61, "AssetDescription": "Unlimited Cash Rewards Visa Signature", "AssetOwnershipType": null, "AssetType": "Other", "AssetTypeAdditionalDescription": "credit card", "AssetUniqueIdentifier": "c251a55e-c503-471b-a3b1-11a9243bc189" }, "ASSET_HOLDER": { "NAME": { "FullName": "Wells Fargo" } }, "ASSET_OWNERS": { "ASSET_OWNER": [ { "AssetOwnerText": "Alberta Bobbeth Charleson" } ] }, "ASSET_TRANSACTIONS": { "ASSET_TRANSACTION": [ { "ASSET_TRANSACTION_DESCRIPTON": [ { "AssetTransactionDescription": "TONYS PIZZA NAPOLETANA SAN FRANCISCOCA" } ], "ASSET_TRANSACTION_DETAIL": { "AssetInvestmentTransactionTypeDescription": null, "AssetTransactionAmount": 34.43, "AssetTransactionCategoryType": "FoodDining", "AssetTransactionDate": "2022-07-19", "AssetTransactionPaidByName": null, "AssetTransactionPostDate": "2022-07-19", "AssetTransactionType": "Debit", "AssetTransactionTypeAdditionalDescription": null, "AssetTransactionUniqueIdentifier": "7jagxo9Eq6cXPKM8eMNJUgeeNnbgQdSDw6zgN", "FinancialInstitutionTransactionIdentifier": null } } ] }, "VALIDATION_SOURCES": { "VALIDATION_SOURCE": [ { "ValidationSourceName": "", "ValidationSourceReferenceIdentifier": "" } ] } } ] } } } } } }, "SchemaVersion": 1, "request_id": "eYupqX1mZkEuQRx" } } }, "schema": { "$ref": "#/components/schemas/AssetReportFreddieGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.", "tags": [ "plaid" ] } }, "/credit/audit_copy_token/create": { "post": { "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\u2122 program or utilize Freddie Mac's Loan Product Advisor\u00ae (LPA\u00ae) 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`).\n\nUse the `/credit/audit_copy_token/create` endpoint to create an `audit_copy_token` and then pass that token to the GSE who needs access.", "externalDocs": { "url": "/api/products/income/#creditaudit_copy_tokencreate" }, "operationId": "creditAuditCopyTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_copy_token": "a-production-3tau2cwvybdvrhucaaai27ulu4", "request_id": "Iam3b" } } }, "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Asset or Income Report Audit Copy Token", "tags": [ "plaid" ] } }, "/credit/audit_copy_token/remove": { "post": { "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.", "externalDocs": { "url": "/api/products/income/#creditaudit_copy_tokenremove" }, "operationId": "creditReportAuditCopyRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenRemoveRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "removed": true, "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove an Audit Copy token", "tags": [ "plaid" ] } }, "/credit/audit_copy_token/update": { "post": { "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.", "externalDocs": { "url": "/none/" }, "operationId": "creditAuditCopyTokenUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "eYupqX1mZkEuQRx", "updated": true } } }, "schema": { "$ref": "#/components/schemas/CreditAuditCopyTokenUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update an Audit Copy Token", "tags": [ "plaid" ] } }, "/credit/bank_income/get": { "post": { "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.", "externalDocs": { "url": "/api/products/income/#creditbank_incomeget" }, "operationId": "creditBankIncomeGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankIncomeGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/CreditBankIncomeGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve information from the bank accounts used for income verification", "tags": [ "plaid" ] } }, "/credit/bank_income/pdf/get": { "post": { "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).", "externalDocs": { "url": "/api/products/income/#creditbank_incomepdfget" }, "operationId": "creditBankIncomePdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankIncomePDFGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/pdf": { "schema": { "$ref": "#/components/schemas/CreditBankIncomePDFGetResponse" } } }, "description": "A PDF of the Bank Income Report" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve information from the bank accounts used for income verification in PDF format", "tags": [ "plaid" ] } }, "/credit/bank_income/refresh": { "post": { "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`.", "externalDocs": { "url": "/api/products/income/#creditbank_incomerefresh" }, "operationId": "creditBankIncomeRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankIncomeRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditBankIncomeRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh a user's bank income information", "tags": [ "plaid" ] } }, "/credit/bank_income/webhook/update": { "post": { "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.\n\nIf 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.", "externalDocs": { "url": "/api/products/income/#creditbank_incomewebhookupdate" }, "operationId": "creditBankIncomeWebhookUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankIncomeWebhookUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditBankIncomeWebhookUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Subscribe and unsubscribe to proactive notifications for a user's income profile", "tags": [ "plaid" ] } }, "/credit/bank_statements/uploads/get": { "post": { "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.", "externalDocs": { "url": "/api/products/income/#creditbank_statementsuploadsget" }, "operationId": "creditBankStatementsUploadsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditBankStatementsUploadsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "items": [ { "bank_statements": [ { "bank_accounts": [ { "account_id": "c6778d3f-e44c-4348-874e-71507c1ac12d", "account_number": "000009752", "account_type": "CHECKING", "bank_name": "CHASE", "name": "CHASE CHECKING", "owner": { "address": { "city": "SAN FRANCISCO", "country": "US", "postal_code": "94133", "region": "CA", "street": "2140 TAYLOR ST" }, "name": "JANE DOE" }, "periods": [ { "end_date": "2023-02-01", "ending_balance": 3500, "start_date": "2023-01-01", "starting_balance": 2500 } ] } ], "document_id": "2jkflanbd", "document_metadata": { "document_type": "BANK_STATEMENT", "download_url": null, "name": "statement_01.pdf", "page_count": 2, "status": "PROCESSING_COMPLETE" }, "transactions": [ { "account_id": "c6778d3f-e44c-4348-874e-71507c1ac12d", "amount": -1000, "date": "2023-01-01", "original_description": "PAYCHECK" } ] } ], "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "status": { "processing_status": "PROCESSING_COMPLETE" }, "updated_at": "2023-02-01T21:14:54Z" } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditBankStatementsUploadsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve data for a user's uploaded bank statements", "tags": [ "plaid" ] } }, "/credit/employment/get": { "post": { "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.", "externalDocs": { "url": "/api/products/income/#creditemploymentget" }, "operationId": "creditEmploymentGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditEmploymentGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "items": [ { "employments": [ { "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9", "employee_type": "FULL_TIME", "employer": { "name": "Plaid Inc" }, "end_date": null, "last_paystub_date": "2022-01-15", "platform_ids": { "employee_id": "1234567", "payroll_id": "1234567", "position_id": "8888" }, "start_date": "2020-01-01", "status": "ACTIVE", "title": "Software Engineer" } ], "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6" } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditEmploymentGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a summary of an individual's employment information", "tags": [ "plaid" ] } }, "/credit/freddie_mac/reports/get": { "post": { "description": "The `/credit/freddie_mac/reports/get` endpoint retrieves the Verification of Assets and Verification of Employment reports.", "externalDocs": { "url": "/none/" }, "operationId": "creditFreddieMacReportsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditFreddieMacReportsGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "DEAL": { "LOANS": { "LOAN": { "LOAN_IDENTIFIERS": { "LOAN_IDENTIFIER": [ { "LoanIdentifier": "100016746", "LoanIdentifierType": "LenderLoan" } ] }, "LoanRoleType": "SubjectLoan" } }, "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": { "STATUSES": { "STATUS": { "StatusCode": "success", "StatusDescription": null } }, "VERIFICATION_OF_ASSET": [ { "REPORTING_INFORMATION": { "ReportDateTime": "", "ReportIdentifierType": "ReportID", "ReportingInformationIdentifier": "assets-prod-20746587-2ad7-407f-a201-0669e1368cf7", "ReportingInformationParentIdentifier": "a-prod-kol4xb5y4nf2zecqalb2d55mze" }, "SERVICE_PRODUCT_FULFILLMENT": { "SERVICE_PRODUCT_FULFILLMENT_DETAIL": { "ServiceProductFulfillmentIdentifier": "VOE", "VendorOrderIdentifier": "PLAID" } }, "VERIFICATION_OF_ASSET_RESPONSE": { "ASSETS": { "ASSET": [ { "ASSET_DETAIL": { "AssetAccountIdentifier": "3847", "AssetAsOfDate": "2022-07-27", "AssetAvailableBalanceAmount": 0, "AssetCurrentBalanceAmount": 0, "AssetDaysRequestedCount": 61, "AssetDescription": "Unlimited Cash Rewards Visa Signature", "AssetOwnershipType": null, "AssetType": "Other", "AssetTypeAdditionalDescription": "credit card", "AssetUniqueIdentifier": "c251a55e-c503-471b-a3b1-11a9243bc189" }, "ASSET_HOLDER": { "NAME": { "FullName": "Wells Fargo" } }, "ASSET_OWNERS": { "ASSET_OWNER": [ { "AssetOwnerText": "Alberta Bobbeth Charleson" } ] }, "ASSET_TRANSACTIONS": { "ASSET_TRANSACTION": [ { "ASSET_TRANSACTION_DESCRIPTION": [ { "AssetTransactionDescription": "UNITED AIRLINES SAN FRANCISCOCA" } ], "ASSET_TRANSACTION_DETAIL": { "AssetInvestmentTransactionTypeDescription": null, "AssetTransactionAmount": 0, "AssetTransactionCategoryType": "Reimbursement", "AssetTransactionDate": "2022-07-28", "AssetTransactionPaidByName": null, "AssetTransactionPaidToName": null, "AssetTransactionPostDate": "2022-07-28", "AssetTransactionType": "Credit", "AssetTransactionTypeAdditionalDescription": null, "AssetTransactionUniqueIdentifier": "8XQ2rJzjagxp87SJLNPKM8eMNJUgeeNnbg", "FinancialInstitutionTransactionIdentifier": null } } ] }, "VALIDATION_SOURCES": { "VALIDATION_SOURCE": [ { "ValidationSourceName": "", "ValidationSourceReferenceIdentifier": "" } ] } } ] } } }, { "REPORTING_INFORMATION": { "ReportDateTime": "", "ReportIdentifierType": "ReportID", "ReportingInformationIdentifier": "assets-prod-20746587-2ad7-407f-a201-0669e1368cf7", "ReportingInformationParentIdentifier": "a-prod-kol4xb5y4nf2zecqalb2d55mze" }, "SERVICE_PRODUCT_FULFILLMENT": { "SERVICE_PRODUCT_FULFILLMENT_DETAIL": { "ServiceProductFulfillmentIdentifier": "VOA", "VendorOrderIdentifier": "PLAID" } }, "VERIFICATION_OF_ASSET_RESPONSE": { "ASSETS": { "ASSET": [ { "ASSET_DETAIL": { "AssetAccountIdentifier": "3847", "AssetAsOfDate": "2022-07-27", "AssetAvailableBalanceAmount": 2073.99, "AssetCurrentBalanceAmount": 2007.09, "AssetDaysRequestedCount": 61, "AssetDescription": "Unlimited Cash Rewards Visa Signature", "AssetOwnershipType": null, "AssetType": "Other", "AssetTypeAdditionalDescription": "credit card", "AssetUniqueIdentifier": "c251a55e-c503-471b-a3b1-11a9243bc189" }, "ASSET_HOLDER": { "NAME": { "FullName": "Wells Fargo" } }, "ASSET_OWNERS": { "ASSET_OWNER": [ { "AssetOwnerText": "Alberta Bobbeth Charleson" } ] }, "ASSET_TRANSACTIONS": { "ASSET_TRANSACTION": [ { "ASSET_TRANSACTION_DESCRIPTION": [ { "AssetTransactionDescription": "TONYS PIZZA NAPOLETANA SAN FRANCISCOCA" } ], "ASSET_TRANSACTION_DETAIL": { "AssetInvestmentTransactionTypeDescription": null, "AssetTransactionAmount": 34.43, "AssetTransactionCategoryType": "FoodDining", "AssetTransactionDate": "2022-07-19", "AssetTransactionPaidByName": null, "AssetTransactionPostDate": "2022-07-19", "AssetTransactionType": "Debit", "AssetTransactionTypeAdditionalDescription": null, "AssetTransactionUniqueIdentifier": "7jagxo9Eq6cXPKM8eMNJUgeeNnbgQdSDw6zgN", "FinancialInstitutionTransactionIdentifier": null } } ] }, "VALIDATION_SOURCES": { "VALIDATION_SOURCE": [ { "ValidationSourceName": "", "ValidationSourceReferenceIdentifier": "" } ] } } ] } } } ] } } }, "SchemaVersion": 2.4, "request_id": "eYupqX1mZkEuQRx" } } }, "schema": { "$ref": "#/components/schemas/CreditFreddieMacReportsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "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.", "tags": [ "plaid" ] } }, "/credit/payroll_income/get": { "post": { "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.", "externalDocs": { "url": "/api/products/income/#creditpayroll_incomeget" }, "operationId": "creditPayrollIncomeGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "items": [ { "accounts": [ { "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9", "pay_frequency": "BIWEEKLY", "rate_of_pay": { "pay_amount": 100000, "pay_rate": "ANNUAL" } } ], "institution_id": "ins_92", "institution_name": "ADP", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "payroll_income": [ { "account_id": "GeooLPBGDEunl54q7N3ZcyD5aLPLEai1nkzM9", "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 } ], "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_id": "2jkflanbd", "document_metadata": { "document_type": "PAYSTUB", "download_url": null, "name": "paystub.pdf", "status": "PROCESSING_COMPLETE" }, "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" }, "marital_status": "SINGLE", "name": "ANNA CHARLESTON", "taxpayer_id": { "id_mask": "3333", "id_type": "SSN" } }, "employer": { "address": { "city": "SAN FRANCISCO", "country": "US", "postal_code": "94111", "region": "CA", "street": "1098 HARRISON ST" }, "name": "PLAID INC" }, "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_id": "1pkflebk4", "document_metadata": { "document_type": "US_TAX_W2", "download_url": null, "name": "w_2.pdf", "status": "PROCESSING_COMPLETE" }, "employee": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94103", "region": "CA", "street": "1234 Grand St" }, "marital_status": "SINGLE", "name": "Josie Georgia Harrison", "taxpayer_id": { "id_mask": "1234", "id_type": "SSN" } }, "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" } ] } ], "status": { "processing_status": "PROCESSING_COMPLETE" }, "updated_at": "2022-08-02T21:14:54Z" } ], "request_id": "2pxQ59buGdsHRef" } } }, "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a user's payroll information", "tags": [ "plaid" ] } }, "/credit/payroll_income/parsing_config/update": { "post": { "description": "`/credit/payroll_income/parsing_config/update` updates the parsing configuration for a document income verification.", "externalDocs": { "url": "/api/products/income/#creditpayroll_incomeparsing_configupdate" }, "operationId": "creditPayrollIncomeParsingConfigUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeParsingConfigUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeParsingConfigUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update the parsing configuration for a document income verification", "tags": [ "plaid" ] } }, "/credit/payroll_income/precheck": { "post": { "deprecated": true, "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.\n\nWhile all request fields are optional, providing `employer` data will increase the chance of receiving a useful result.\n\nWhen 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.", "externalDocs": { "url": "/api/products/income/#creditpayroll_incomeprecheck" }, "operationId": "creditPayrollIncomePrecheck", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditPayrollIncomePrecheckRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "confidence": "HIGH", "request_id": "lMjeOeu9X1VUh1F" } } }, "schema": { "$ref": "#/components/schemas/CreditPayrollIncomePrecheckResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Check income verification eligibility and optimize conversion", "tags": [ "plaid" ] } }, "/credit/payroll_income/refresh": { "post": { "description": "`/credit/payroll_income/refresh` refreshes a given digital payroll income verification.", "externalDocs": { "url": "/api/products/income/#creditpayroll_incomerefresh" }, "operationId": "creditPayrollIncomeRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "nTkbCH41HYmpbm5", "verification_refresh_status": "USER_PRESENCE_REQUIRED" } } }, "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeRefreshResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Refresh a digital payroll income verification", "tags": [ "plaid" ] } }, "/credit/payroll_income/risk_signals/get": { "post": { "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.\n\nTo 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.\n\n`/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.", "externalDocs": { "url": "/api/products/income/#creditpayroll_incomerisk_signalsget" }, "operationId": "creditPayrollIncomeRiskSignalsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeRiskSignalsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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_signals": [ { "actual_value": "0.00", "expected_value": "25.09", "field": null, "has_fraud_risk": true, "institution_metadata": { "item_id": "testItemID" }, "page_number": 1, "signal_description": null, "type": "MASKING" }, { "actual_value": null, "expected_value": null, "field": null, "has_fraud_risk": true, "institution_metadata": null, "page_number": 0, "signal_description": "Creation date and modification date do not match", "type": "METADATA_DATES_OUTSIDE_WINDOW" } ], "risk_summary": { "risk_score": 70 } } ] } ] } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/CreditPayrollIncomeRiskSignalsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve fraud insights for a user's manually uploaded document(s).", "tags": [ "plaid" ] } }, "/credit/relay/create": { "post": { "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`.\n\nTo 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.", "externalDocs": { "url": "/api/products/assets/#creditrelaycreate" }, "operationId": "creditRelayCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRelayCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "relay_token": "credit-relay-production-3TAU2CWVYBDVRHUCAAAI27ULU4", "request_id": "Iam3b" } } }, "schema": { "$ref": "#/components/schemas/CreditRelayCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a relay token to share an Asset Report with a partner client", "tags": [ "plaid" ] } }, "/credit/relay/get": { "post": { "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.", "externalDocs": { "url": "/api/products/assets/#creditrelayget" }, "operationId": "creditRelayGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRelayGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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, "iso_currency_code": "USD", "limit": null, "margin_loan_amount": null, "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", "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": "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, "iso_currency_code": "USD", "limit": null, "margin_loan_amount": null, "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", "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": "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": [] } } }, "schema": { "$ref": "#/components/schemas/AssetReportGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve the reports associated with a relay token that was shared with you", "tags": [ "plaid" ] } }, "/credit/relay/pdf/get": { "post": { "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.\n\nThe `/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.\n\nThe response to `/credit/relay/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.\n\n[View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).", "externalDocs": { "url": "/api/products/assets/#creditrelaypdfget" }, "operationId": "creditRelayPdfGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRelayPDFGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/pdf": { "schema": { "$ref": "#/components/schemas/CreditRelayPDFGetResponse" } } }, "description": "A PDF of the Asset Report" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve the pdf reports associated with a relay token that was shared with you (beta)", "tags": [ "plaid" ] } }, "/credit/relay/refresh": { "post": { "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.", "externalDocs": { "url": "/api/products/assets/#creditrelayrefresh" }, "operationId": "creditRelayRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRelayRefreshRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "asset_report_id": "bf3a0490-344c-4620-a219-2693162e4b1d", "relay_token": "credit-relay-sandbox-8218d5f8-6d6d-403d-92f5-13a9afaa4398", "request_id": "NBZaq" } } }, "schema": { "$ref": "#/components/schemas/CreditRelayRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh a report of a relay token", "tags": [ "plaid" ] } }, "/credit/relay/remove": { "post": { "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`.", "externalDocs": { "url": "/api/products/assets/#creditrelayremove" }, "operationId": "creditRelayRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditRelayRemoveRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "removed": true, "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/CreditRelayRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove relay token", "tags": [ "plaid" ] } }, "/credit/sessions/get": { "post": { "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.\n\nThese 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).", "externalDocs": { "url": "/api/products/income/#creditsessionsget" }, "operationId": "creditSessionsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreditSessionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b", "sessions": [ { "link_session_id": "356dbb28-7f98-44d1-8e6d-0cec580f3171", "results": { "bank_income_results": [ { "institution_id": "ins_56", "item_id": "M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op", "status": "APPROVED" } ], "item_add_results": [ { "institution_id": "ins_56", "item_id": "M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op", "public_token": "public-sandbox-5c224a01-8314-4491-a06f-39e193d5cddc" } ] }, "session_start_time": "2022-09-30T23:40:30.946225Z" }, { "link_session_id": "f742cae8-31e4-49cc-a621-6cafbdb26fb9", "results": { "payroll_income_results": [ { "institution_id": "ins_92", "num_paystubs_retrieved": 2, "num_w2s_retrieved": 1 } ] }, "session_start_time": "2022-09-26T23:40:30.946225Z" } ] } } }, "schema": { "$ref": "#/components/schemas/CreditSessionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Link sessions for your user", "tags": [ "plaid" ] } }, "/dashboard_user/get": { "post": { "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.", "externalDocs": { "url": "/api/kyc-aml-users/#dashboard_userget" }, "operationId": "dashboardUserGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardUserGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "created_at": "2020-07-24T03:26:02Z", "email_address": "user@example.com", "id": "54350110fedcbaf01234ffee", "request_id": "saKrIBuEB9qJZng", "status": "active" } } }, "schema": { "$ref": "#/components/schemas/DashboardUserGetResponse" } } }, "description": "OK" } }, "summary": "Retrieve a Dashboard user", "tags": [ "plaid" ] } }, "/dashboard_user/list": { "post": { "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.", "externalDocs": { "url": "/api/kyc-aml-users/#dashboard_userlist" }, "operationId": "dashboardUserList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardUserListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "dashboard_users": [ { "created_at": "2020-07-24T03:26:02Z", "email_address": "user@example.com", "id": "54350110fedcbaf01234ffee", "status": "active" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/DashboardUserListResponse" } } }, "description": "OK" } }, "summary": "List Dashboard users", "tags": [ "plaid" ] } }, "/employers/search": { "post": { "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.\n\nThe 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.", "externalDocs": { "url": "/api/employers/#employerssearch" }, "operationId": "employersSearch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmployersSearchRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "employers": [ { "address": { "city": "San Francisco", "country": "US", "postal_code": "94103", "region": "CA", "street": "1098 Harrison St" }, "confidence_score": 1, "employer_id": "emp_1", "name": "Plaid Inc." } ], "request_id": "ixTBLZGvhD4NnmB" } } }, "schema": { "$ref": "#/components/schemas/EmployersSearchResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Search employer database", "tags": [ "plaid" ] } }, "/employment/verification/get": { "post": { "deprecated": true, "description": "`/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user.\n\nThis endpoint has been deprecated; new integrations should use `/credit/employment/get` instead.", "externalDocs": { "url": "/api/products/income/#employmentverificationget" }, "operationId": "employmentVerificationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmploymentVerificationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "employments": [ { "employer": { "name": "Plaid Inc" }, "end_date": null, "platform_ids": { "employee_id": "1234567", "payroll_id": "1234567", "position_id": "8888" }, "start_date": "2020-01-01", "status": "EMPLOYMENT_STATUS_ACTIVE", "title": "Software Engineer" } ], "request_id": "LhQf0THi8SH1yJm" } } }, "schema": { "$ref": "#/components/schemas/EmploymentVerificationGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Retrieve a summary of an individual's employment information", "tags": [ "plaid" ] } }, "/fdx/consents/{consentId}": { "get": { "description": "Returns a consent grant by its identifier", "operationId": "fdxConsentsGet", "parameters": [ { "description": "Consent Grant Identifier. Uniquely identifies the consent grant", "in": "path", "name": "consentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "createdTime": "2026-01-01T00:00:00Z", "id": "9585694d-3ae5-8863-1234-567890abcdef", "parties": [ { "homeUri": "https://example.com", "name": "My Example Client", "registeredEntityId": "549300A0B1C2D3E4F5G6", "registeredEntityName": "My Example Client LLC", "registry": "PRIVATE", "type": "DATA_RECIPIENT" }, { "homeUri": "https://www.platypus.com", "name": "First Platypus Bank", "type": "DATA_PROVIDER" }, { "homeUri": "https://plaid.com", "name": "Plaid", "type": "DATA_ACCESS_PLATFORM" } ], "resources": [ { "dataClusters": [ "ACCOUNT_BASIC", "BALANCES", "TRANSACTIONS", "SCHEDULED_PAYMENTS" ], "resourceId": "b14e1e714693bc00", "resourceType": "ACCOUNT" } ], "status": "ACTIVE", "updatedTime": "2026-01-02T00:00:00Z" }, "schema": { "$ref": "#/components/schemas/FDXConsentGrant" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get FDX Consent Grant", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/fdx/consents/{consentId}/revocation": { "get": { "description": "Returns the revocation history of a consent grant", "operationId": "fdxConsentsRevocationGet", "parameters": [ { "description": "Consent Grant Identifier. Uniquely identifies the consent grant", "in": "path", "name": "consentId", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "revocations": [ { "initiator": "DATA_PROVIDER", "reason": "USER_ACTION", "status": "REVOKED", "updatedTime": "2026-01-03T00:00:00Z" } ] }, "schema": { "$ref": "#/components/schemas/FDXConsentRevocations" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve FDX Consent Grant revocation records", "tags": [ "plaid" ] }, "put": { "description": "Appends a REVOKED status record to the named consent grant", "operationId": "fdxConsentsRevoke", "parameters": [ { "description": "Consent Grant Identifier. Uniquely identifies the consent grant", "in": "path", "name": "consentId", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FDXConsentRevocation" } } }, "required": true }, "responses": { "204": { "description": "No Content" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Revoke FDX Consent Grant", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/fdx/notifications": { "post": { "description": "A generic webhook receiver endpoint for FDX Event Notifications", "externalDocs": { "url": "/api/fdx/notifications/#post" }, "operationId": "fdxNotifications", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FDXNotification" } } }, "required": true }, "responses": { "200": { "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Webhook receiver for fdx notifications", "tags": [ "plaid" ], "x-hidden-from-docs": true } }, "/fdx/recipient/{recipientId}": { "get": { "description": "Get a specific recipient", "operationId": "getRecipient", "parameters": [ { "description": "Recipient Identifier. Uniquely identifies the recipient", "in": "path", "name": "recipientId", "required": true, "schema": { "type": "string" } }, { "description": "The value that is passed into the OAuth URI 'state' query parameter.", "in": "header", "name": "OAUTH-STATE-ID", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "example": { "client_name": "My Example Client", "logo_uri": "https://client-logos.plaid.com/logo.png", "recipient_id": "7bf0b839-861e-444e-b103-9007610ffbaf", "third_party_legal_name": "My Example Client LLC" }, "schema": { "$ref": "#/components/schemas/GetRecipientResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Recipient", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/fdx/recipients": { "get": { "description": "Returns a list of Recipients", "operationId": "getRecipients", "responses": { "200": { "content": { "application/json": { "example": { "recipients": [ { "category": "Robo advisors", "client_name": "My Example Client", "connection_count": 128, "joined_date": "2021-08-31", "logo_uri": "https://client-logos.plaid.com/logo.png", "recipient_id": "98c8990b-72a9-4dc2-a4c5-f45b9b269178", "third_party_legal_name": "My Example Client LLC" }, { "category": "eCommerce", "client_name": "Another Example Client", "connection_count": 209, "joined_date": "2027-04-15", "logo_uri": "https://client-logos.plaid.com/logo2.png", "recipient_id": "1a6ad795-2b9a-4a9f-8615-e771816c92db", "third_party_legal_name": "Another Example Client LLC" } ] }, "schema": { "$ref": "#/components/schemas/GetRecipientsResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Recipients", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/identity/documents/uploads/get": { "post": { "description": "Use `/identity/documents/uploads/get` to retrieve identity details when using [Identity Document Upload](https://plaid.com/docs/identity/identity-document-upload/).", "externalDocs": { "url": "/api/products/identity/#identitydocumentsuploadsget" }, "operationId": "identityDocumentsUploadsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityDocumentsUploadsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/IdentityDocumentsUploadsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Returns uploaded document identity", "tags": [ "plaid" ] } }, "/identity/get": { "post": { "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.\n\nNote: 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).", "externalDocs": { "url": "/api/products/identity/#identityget" }, "operationId": "identityGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "investments" ], "billed_products": [ "assets", "auth", "identity", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "request_id": "3nARps6TOYtbACO" } } }, "schema": { "$ref": "#/components/schemas/IdentityGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve identity data", "tags": [ "plaid" ] } }, "/identity/match": { "post": { "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.\n\nFields 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.", "externalDocs": { "url": "/api/products/identity/#identitymatch" }, "operationId": "identityMatch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityMatchRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "accounts": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "address": { "is_postal_code_match": true, "score": 100 }, "balances": { "available": null, "current": null, "iso_currency_code": null, "limit": null, "unofficial_currency_code": null }, "email_address": { "score": 100 }, "legal_name": { "is_business_name_detected": false, "is_first_name_or_last_name_match": true, "is_nickname_match": true, "score": 90 }, "mask": "0000", "name": "Plaid Checking", "official_name": "Plaid Gold Standard 0% Interest Checking", "phone_number": { "score": 100 }, "subtype": "checking", "type": "depository" }, { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "address": { "is_postal_code_match": true, "score": 100 }, "balances": { "available": null, "current": null, "iso_currency_code": null, "limit": null, "unofficial_currency_code": null }, "email_address": null, "legal_name": { "is_first_name_or_last_name_match": false, "score": 30 }, "mask": "1111", "name": "Plaid Saving", "official_name": "Plaid Silver Standard 0.1% Interest Saving", "phone_number": { "score": 100 }, "subtype": "savings", "type": "depository" } ], "item": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "investments" ], "billed_products": [ "assets", "auth", "identity", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "request_id": "3nARps6TOYtbACO" } } }, "schema": { "$ref": "#/components/schemas/IdentityMatchResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve identity match score", "tags": [ "plaid" ] } }, "/identity/refresh": { "post": { "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).\n\nAs 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.\n\n`/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.", "externalDocs": { "url": "/api/products/identity/#identityrefresh" }, "operationId": "identityRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/IdentityRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh identity data", "tags": [ "plaid" ] } }, "/identity_verification/autofill/create": { "post": { "description": "Try to autofill an Identity Verification based on the provided phone number, date of birth and country of residence.", "externalDocs": { "url": "/api/products/identity-verification/#identity_verificationautofillcreate" }, "operationId": "identityVerificationAutofillCreate", "requestBody": { "content": { "application/json": { "example": { "identity_verification_id": "flwses_42cF1MNo42r9Xj" }, "schema": { "$ref": "#/components/schemas/IdentityVerificationAutofillCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZng", "status": "success", "user": { "address": { "city": "Pawnee", "country": "US", "po_box": "yes", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42", "type": "residential" }, "id_number": { "type": "us_ssn", "value": "123456789" }, "name": { "family_name": "Knope", "given_name": "Leslie" } } } } }, "schema": { "$ref": "#/components/schemas/IdentityVerificationAutofillCreateResponse" } } }, "description": "OK" } }, "summary": "Create autofill for an Identity Verification", "tags": [ "plaid" ], "x-hidden-from-docs": true } }, "/identity_verification/create": { "post": { "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.\n\n\nIf 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.\n\n\nIf `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.\n", "externalDocs": { "url": "/api/products/identity-verification/#identity_verificationcreate" }, "operationId": "identityVerificationCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityVerificationCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_user_id": "becusr_42cF1MNo42r9Xj", "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "documentary_verification": { "documents": [ { "analysis": { "aamva_verification": { "city": "match", "date_of_birth": "match", "eye_color": "match", "first_name": "match", "gender": "match", "height": "match", "id_expiration_date": "match", "id_issue_date": "match", "id_number": "match", "is_verified": true, "last_name": "match", "middle_name": "match", "postal_code": "match", "street": "match" }, "authenticity": "match", "extracted_data": { "date_of_birth": "match", "expiration_date": "not_expired", "issuing_country": "match", "name": "match" }, "fraud_analysis_details": { "detail_check": "success", "image_composition_check": "success", "integrity_check": "success", "issue_date_check": "success", "portrait_details_check": "success", "portrait_presence_check": "success", "type_supported": "success" }, "image_quality": "high", "image_quality_details": { "blur_check": "success", "dimensions_check": "success", "glare_check": "success" } }, "attempt": 1, "extracted_data": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St. Unit 42" }, "category": "drivers_license", "date_of_birth": "1990-05-29", "expiration_date": "2030-05-29", "id_number": "AB123456", "issue_date": "2020-05-29", "issuing_country": "US", "issuing_region": "IN", "name": { "family_name": "Knope", "given_name": "Leslie" } }, "images": { "cropped_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg", "cropped_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg", "face": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg", "original_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg", "original_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg" }, "redacted_at": "2020-07-24T03:26:02Z", "status": "success" } ], "status": "success" }, "id": "idv_52xR9LKo77r1Np", "kyc_check": { "address": { "po_box": "yes", "summary": "match", "type": "residential" }, "date_of_birth": { "summary": "match" }, "id_number": { "summary": "match" }, "name": { "summary": "match" }, "phone_number": { "area_code": "match", "summary": "match" }, "status": "success" }, "latest_scored_protect_event": { "event_id": "ptevt_7AJYTMFxRUgJ", "fraud_attributes": { "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false } }, "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } }, "previous_attempt_id": "idv_42cF1MNo42r9Xj", "redacted_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "risk_check": { "behavior": { "bot_detected": "yes", "fraud_ring_detected": "yes", "user_interactions": "risky" }, "devices": [ { "ip_proxy_type": "none_detected", "ip_spam_list_count": 1, "ip_timezone_offset": "+06:00:00" } ], "email": { "breach_count": 1, "domain_is_custom": "yes", "domain_is_disposable": "yes", "domain_is_free_provider": "yes", "domain_registered_at": "1990-05-29", "first_breached_at": "1990-05-29", "includes_date_of_birth": "yes", "is_deliverable": "yes", "is_edu": "yes", "last_breached_at": "1990-05-29", "linked_services": [ "apple" ], "name": "match", "top_level_domain_is_suspicious": "yes" }, "facial_duplicates": [ { "id": "idv_52xR9LKo77r1Np", "matched_after_completed": true, "similarity": 95 } ], "identity_abuse_signals": { "stolen_identity": { "score": 0 }, "synthetic_identity": { "score": 0 } }, "phone": { "linked_services": [ "apple" ] }, "status": "success", "trust_index_score": 86 }, "selfie_check": { "selfies": [ { "analysis": { "age_check": { "age_estimate_lower_bound": 32, "age_estimate_upper_bound": 38, "reported_age": 36, "status": "match" }, "document_comparison": "match", "liveness_check": "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" }, "status": "success" } ], "status": "success" }, "shareable_url": "https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success", "steps": { "accept_tos": "success", "documentary_verification": "success", "kyc_check": "success", "risk_check": "success", "selfie_check": "success", "verify_sms": "success", "watchlist_screening": "success" }, "template": { "id": "idvtmp_4FrXJvfQU3zGUR", "version": 2 }, "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+12345678909" }, "user_id": "usr_dddAs9ewdcDQQQ", "verify_sms": { "status": "success", "verifications": [ { "attempt": 1, "delivery_attempt_count": 1, "initially_sent_at": "2020-07-24T03:26:02Z", "last_sent_at": "2020-07-24T03:26:02Z", "phone_number": "+12345678909", "redacted_at": "2020-07-24T03:26:02Z", "solve_attempt_count": 1, "status": "success" } ] }, "watchlist_screening_id": "scr_52xR9LKo77r1Np" } } }, "schema": { "$ref": "#/components/schemas/IdentityVerificationCreateResponse" } } }, "description": "OK" } }, "summary": "Create a new Identity Verification", "tags": [ "plaid" ] } }, "/identity_verification/get": { "post": { "description": "Retrieve a previously created Identity Verification.", "externalDocs": { "url": "/api/products/identity-verification/#identity_verificationget" }, "operationId": "identityVerificationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityVerificationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_user_id": "becusr_42cF1MNo42r9Xj", "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "documentary_verification": { "documents": [ { "analysis": { "aamva_verification": { "city": "match", "date_of_birth": "match", "eye_color": "match", "first_name": "match", "gender": "match", "height": "match", "id_expiration_date": "match", "id_issue_date": "match", "id_number": "match", "is_verified": true, "last_name": "match", "middle_name": "match", "postal_code": "match", "street": "match" }, "authenticity": "match", "extracted_data": { "date_of_birth": "match", "expiration_date": "not_expired", "issuing_country": "match", "name": "match" }, "fraud_analysis_details": { "detail_check": "success", "image_composition_check": "success", "integrity_check": "success", "issue_date_check": "success", "portrait_details_check": "success", "portrait_presence_check": "success", "type_supported": "success" }, "image_quality": "high", "image_quality_details": { "blur_check": "success", "dimensions_check": "success", "glare_check": "success" } }, "attempt": 1, "extracted_data": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St. Unit 42" }, "category": "drivers_license", "date_of_birth": "1990-05-29", "expiration_date": "2030-05-29", "id_number": "AB123456", "issue_date": "2020-05-29", "issuing_country": "US", "issuing_region": "IN", "name": { "family_name": "Knope", "given_name": "Leslie" } }, "images": { "cropped_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg", "cropped_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg", "face": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg", "original_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg", "original_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg" }, "redacted_at": "2020-07-24T03:26:02Z", "status": "success" } ], "status": "success" }, "id": "idv_52xR9LKo77r1Np", "kyc_check": { "address": { "po_box": "yes", "summary": "match", "type": "residential" }, "date_of_birth": { "summary": "match" }, "id_number": { "summary": "match" }, "name": { "summary": "match" }, "phone_number": { "area_code": "match", "summary": "match" }, "status": "success" }, "latest_scored_protect_event": { "event_id": "ptevt_7AJYTMFxRUgJ", "fraud_attributes": { "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false } }, "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } }, "previous_attempt_id": "idv_42cF1MNo42r9Xj", "redacted_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "risk_check": { "behavior": { "bot_detected": "yes", "fraud_ring_detected": "yes", "user_interactions": "risky" }, "devices": [ { "ip_proxy_type": "none_detected", "ip_spam_list_count": 1, "ip_timezone_offset": "+06:00:00" } ], "email": { "breach_count": 1, "domain_is_custom": "yes", "domain_is_disposable": "yes", "domain_is_free_provider": "yes", "domain_registered_at": "1990-05-29", "first_breached_at": "1990-05-29", "includes_date_of_birth": "yes", "is_deliverable": "yes", "is_edu": "yes", "last_breached_at": "1990-05-29", "linked_services": [ "apple" ], "name": "match", "top_level_domain_is_suspicious": "yes" }, "facial_duplicates": [ { "id": "idv_52xR9LKo77r1Np", "matched_after_completed": true, "similarity": 95 } ], "identity_abuse_signals": { "stolen_identity": { "score": 0 }, "synthetic_identity": { "score": 0 } }, "phone": { "linked_services": [ "apple" ] }, "status": "success", "trust_index_score": 86 }, "selfie_check": { "selfies": [ { "analysis": { "age_check": { "age_estimate_lower_bound": 32, "age_estimate_upper_bound": 38, "reported_age": 36, "status": "match" }, "document_comparison": "match", "liveness_check": "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" }, "status": "success" } ], "status": "success" }, "shareable_url": "https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success", "steps": { "accept_tos": "success", "documentary_verification": "success", "kyc_check": "success", "risk_check": "success", "selfie_check": "success", "verify_sms": "success", "watchlist_screening": "success" }, "template": { "id": "idvtmp_4FrXJvfQU3zGUR", "version": 2 }, "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+12345678909" }, "user_id": "usr_dddAs9ewdcDQQQ", "verify_sms": { "status": "success", "verifications": [ { "attempt": 1, "delivery_attempt_count": 1, "initially_sent_at": "2020-07-24T03:26:02Z", "last_sent_at": "2020-07-24T03:26:02Z", "phone_number": "+12345678909", "redacted_at": "2020-07-24T03:26:02Z", "solve_attempt_count": 1, "status": "success" } ] }, "watchlist_screening_id": "scr_52xR9LKo77r1Np" } } }, "schema": { "$ref": "#/components/schemas/IdentityVerificationGetResponse" } } }, "description": "OK" } }, "summary": "Retrieve Identity Verification", "tags": [ "plaid" ] } }, "/identity_verification/list": { "post": { "description": "Filter and list Identity Verifications created by your account", "externalDocs": { "url": "/api/products/identity-verification/#identity_verificationlist" }, "operationId": "identityVerificationList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityVerificationListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "identity_verifications": [ { "beacon_user_id": "becusr_42cF1MNo42r9Xj", "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "documentary_verification": { "documents": [ { "analysis": { "aamva_verification": { "city": "match", "date_of_birth": "match", "eye_color": "match", "first_name": "match", "gender": "match", "height": "match", "id_expiration_date": "match", "id_issue_date": "match", "id_number": "match", "is_verified": true, "last_name": "match", "middle_name": "match", "postal_code": "match", "street": "match" }, "authenticity": "match", "extracted_data": { "date_of_birth": "match", "expiration_date": "not_expired", "issuing_country": "match", "name": "match" }, "fraud_analysis_details": { "detail_check": "success", "image_composition_check": "success", "integrity_check": "success", "issue_date_check": "success", "portrait_details_check": "success", "portrait_presence_check": "success", "type_supported": "success" }, "image_quality": "high", "image_quality_details": { "blur_check": "success", "dimensions_check": "success", "glare_check": "success" } }, "attempt": 1, "extracted_data": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St. Unit 42" }, "category": "drivers_license", "date_of_birth": "1990-05-29", "expiration_date": "2030-05-29", "id_number": "AB123456", "issue_date": "2020-05-29", "issuing_country": "US", "issuing_region": "IN", "name": { "family_name": "Knope", "given_name": "Leslie" } }, "images": { "cropped_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg", "cropped_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg", "face": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg", "original_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg", "original_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg" }, "redacted_at": "2020-07-24T03:26:02Z", "status": "success" } ], "status": "success" }, "id": "idv_52xR9LKo77r1Np", "kyc_check": { "address": { "po_box": "yes", "summary": "match", "type": "residential" }, "date_of_birth": { "summary": "match" }, "id_number": { "summary": "match" }, "name": { "summary": "match" }, "phone_number": { "area_code": "match", "summary": "match" }, "status": "success" }, "latest_scored_protect_event": { "event_id": "ptevt_7AJYTMFxRUgJ", "fraud_attributes": { "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false } }, "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } }, "previous_attempt_id": "idv_42cF1MNo42r9Xj", "redacted_at": "2020-07-24T03:26:02Z", "risk_check": { "behavior": { "bot_detected": "yes", "fraud_ring_detected": "yes", "user_interactions": "risky" }, "devices": [ { "ip_proxy_type": "none_detected", "ip_spam_list_count": 1, "ip_timezone_offset": "+06:00:00" } ], "email": { "breach_count": 1, "domain_is_custom": "yes", "domain_is_disposable": "yes", "domain_is_free_provider": "yes", "domain_registered_at": "1990-05-29", "first_breached_at": "1990-05-29", "includes_date_of_birth": "yes", "is_deliverable": "yes", "is_edu": "yes", "last_breached_at": "1990-05-29", "linked_services": [ "apple" ], "name": "match", "top_level_domain_is_suspicious": "yes" }, "facial_duplicates": [ { "id": "idv_52xR9LKo77r1Np", "matched_after_completed": true, "similarity": 95 } ], "identity_abuse_signals": { "stolen_identity": { "score": 0 }, "synthetic_identity": { "score": 0 } }, "phone": { "linked_services": [ "apple" ] }, "status": "success", "trust_index_score": 86 }, "selfie_check": { "selfies": [ { "analysis": { "age_check": { "age_estimate_lower_bound": 32, "age_estimate_upper_bound": 38, "reported_age": 36, "status": "match" }, "document_comparison": "match", "liveness_check": "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" }, "status": "success" } ], "status": "success" }, "shareable_url": "https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success", "steps": { "accept_tos": "success", "documentary_verification": "success", "kyc_check": "success", "risk_check": "success", "selfie_check": "success", "verify_sms": "success", "watchlist_screening": "success" }, "template": { "id": "idvtmp_4FrXJvfQU3zGUR", "version": 2 }, "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+12345678909" }, "user_id": "usr_dddAs9ewdcDQQQ", "verify_sms": { "status": "success", "verifications": [ { "attempt": 1, "delivery_attempt_count": 1, "initially_sent_at": "2020-07-24T03:26:02Z", "last_sent_at": "2020-07-24T03:26:02Z", "phone_number": "+12345678909", "redacted_at": "2020-07-24T03:26:02Z", "solve_attempt_count": 1, "status": "success" } ] }, "watchlist_screening_id": "scr_52xR9LKo77r1Np" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/IdentityVerificationListResponse" } } }, "description": "OK" } }, "summary": "List Identity Verifications", "tags": [ "plaid" ] } }, "/identity_verification/retry": { "post": { "description": "Allow a customer to retry their Identity Verification", "externalDocs": { "url": "/api/products/identity-verification/#identity_verificationretry" }, "operationId": "identityVerificationRetry", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdentityVerificationRetryRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "beacon_user_id": "becusr_42cF1MNo42r9Xj", "client_user_id": "your-db-id-3b24110", "completed_at": "2020-07-24T03:26:02Z", "created_at": "2020-07-24T03:26:02Z", "documentary_verification": { "documents": [ { "analysis": { "aamva_verification": { "city": "match", "date_of_birth": "match", "eye_color": "match", "first_name": "match", "gender": "match", "height": "match", "id_expiration_date": "match", "id_issue_date": "match", "id_number": "match", "is_verified": true, "last_name": "match", "middle_name": "match", "postal_code": "match", "street": "match" }, "authenticity": "match", "extracted_data": { "date_of_birth": "match", "expiration_date": "not_expired", "issuing_country": "match", "name": "match" }, "fraud_analysis_details": { "detail_check": "success", "image_composition_check": "success", "integrity_check": "success", "issue_date_check": "success", "portrait_details_check": "success", "portrait_presence_check": "success", "type_supported": "success" }, "image_quality": "high", "image_quality_details": { "blur_check": "success", "dimensions_check": "success", "glare_check": "success" } }, "attempt": 1, "extracted_data": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St. Unit 42" }, "category": "drivers_license", "date_of_birth": "1990-05-29", "expiration_date": "2030-05-29", "id_number": "AB123456", "issue_date": "2020-05-29", "issuing_country": "US", "issuing_region": "IN", "name": { "family_name": "Knope", "given_name": "Leslie" } }, "images": { "cropped_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_back.jpeg", "cropped_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/cropped_front.jpeg", "face": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/face.jpeg", "original_back": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_back.jpeg", "original_front": "https://example.plaid.com/verifications/idv_52xR9LKo77r1Np/documents/1/original_front.jpeg" }, "redacted_at": "2020-07-24T03:26:02Z", "status": "success" } ], "status": "success" }, "id": "idv_52xR9LKo77r1Np", "kyc_check": { "address": { "po_box": "yes", "summary": "match", "type": "residential" }, "date_of_birth": { "summary": "match" }, "id_number": { "summary": "match" }, "name": { "summary": "match" }, "phone_number": { "area_code": "match", "summary": "match" }, "status": "success" }, "latest_scored_protect_event": { "event_id": "ptevt_7AJYTMFxRUgJ", "fraud_attributes": { "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false } }, "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } }, "previous_attempt_id": "idv_42cF1MNo42r9Xj", "redacted_at": "2020-07-24T03:26:02Z", "request_id": "saKrIBuEB9qJZng", "risk_check": { "behavior": { "bot_detected": "yes", "fraud_ring_detected": "yes", "user_interactions": "risky" }, "devices": [ { "ip_proxy_type": "none_detected", "ip_spam_list_count": 1, "ip_timezone_offset": "+06:00:00" } ], "email": { "breach_count": 1, "domain_is_custom": "yes", "domain_is_disposable": "yes", "domain_is_free_provider": "yes", "domain_registered_at": "1990-05-29", "first_breached_at": "1990-05-29", "includes_date_of_birth": "yes", "is_deliverable": "yes", "is_edu": "yes", "last_breached_at": "1990-05-29", "linked_services": [ "apple" ], "name": "match", "top_level_domain_is_suspicious": "yes" }, "facial_duplicates": [ { "id": "idv_52xR9LKo77r1Np", "matched_after_completed": true, "similarity": 95 } ], "identity_abuse_signals": { "stolen_identity": { "score": 0 }, "synthetic_identity": { "score": 0 } }, "phone": { "linked_services": [ "apple" ] }, "status": "success", "trust_index_score": 86 }, "selfie_check": { "selfies": [ { "analysis": { "age_check": { "age_estimate_lower_bound": 32, "age_estimate_upper_bound": 38, "reported_age": 36, "status": "match" }, "document_comparison": "match", "liveness_check": "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" }, "status": "success" } ], "status": "success" }, "shareable_url": "https://flow.plaid.com/verify/idv_4FrXJvfQU3zGUR?key=e004115db797f7cc3083bff3167cba30644ef630fb46f5b086cde6cc3b86a36f", "status": "success", "steps": { "accept_tos": "success", "documentary_verification": "success", "kyc_check": "success", "risk_check": "success", "selfie_check": "success", "verify_sms": "success", "watchlist_screening": "success" }, "template": { "id": "idvtmp_4FrXJvfQU3zGUR", "version": 2 }, "user": { "address": { "city": "Pawnee", "country": "US", "postal_code": "46001", "region": "IN", "street": "123 Main St.", "street2": "Unit 42" }, "date_of_birth": "1990-05-29", "email_address": "user@example.com", "id_number": { "type": "us_ssn", "value": "123456789" }, "ip_address": "192.0.2.42", "name": { "family_name": "Knope", "given_name": "Leslie" }, "phone_number": "+12345678909" }, "user_id": "usr_dddAs9ewdcDQQQ", "verify_sms": { "status": "success", "verifications": [ { "attempt": 1, "delivery_attempt_count": 1, "initially_sent_at": "2020-07-24T03:26:02Z", "last_sent_at": "2020-07-24T03:26:02Z", "phone_number": "+12345678909", "redacted_at": "2020-07-24T03:26:02Z", "solve_attempt_count": 1, "status": "success" } ] }, "watchlist_screening_id": "scr_52xR9LKo77r1Np" } } }, "schema": { "$ref": "#/components/schemas/IdentityVerificationRetryResponse" } } }, "description": "OK" } }, "summary": "Retry an Identity Verification", "tags": [ "plaid" ] } }, "/idv_classic/identity_assessments": {}, "/idv_classic/identity_assessments/:id": {}, "/idv_classic/identity_searches": {}, "/idv_classic/identity_searches/:id": {}, "/idv_classic/identity_searches/jobs/:id": {}, "/idv_classic/profiles": {}, "/idv_classic/profiles/:id": {}, "/idv_classic/profiles/:id/identity_searches": {}, "/income/verification/create": { "post": { "deprecated": true, "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. ", "externalDocs": { "url": "/api/products/income/#incomeverificationcreate" }, "operationId": "incomeVerificationCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IncomeVerificationCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "income_verification_id": "f2a826d7-25cf-483b-a124-c40beb64b732", "request_id": "lMjeOeu9X1VUh1F" } } }, "schema": { "$ref": "#/components/schemas/IncomeVerificationCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Create an income verification instance", "tags": [ "plaid" ] } }, "/income/verification/documents/download": { "post": { "deprecated": true, "description": "`/income/verification/documents/download` provides the ability to download the source documents associated with the verification.\n\nIf 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.\n\nThe 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.\nIf not, the response will contain all documents associated with the verification.\n\nThe `request_id` is returned in the `Plaid-Request-ID` header.", "externalDocs": { "url": "/api/products/income/#incomeverificationdocumentsdownload" }, "operationId": "incomeVerificationDocumentsDownload", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IncomeVerificationDocumentsDownloadRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/zip": { "schema": { "format": "binary", "type": "string" } } }, "description": "A ZIP file containing source documents(s) used as the basis for income verification." }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Download the original documents used for income verification", "tags": [ "plaid" ] } }, "/income/verification/paystubs/get": { "post": { "deprecated": true, "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.\n\nThis endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.", "externalDocs": { "url": "/api/products/income/#incomeverificationpaystubsget" }, "operationId": "incomeVerificationPaystubsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IncomeVerificationPaystubsGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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_desription": "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" }, "marital_status": "single", "name": "ANNA CHARLESTON", "taxpayer_id": { "id_mask": "3333", "id_type": "SSN" } }, "employer": { "address": { "city": "SAN FRANCISCO", "country": "US", "postal_code": "94111", "region": "CA", "street": "1098 HARRISON ST" }, "name": "PLAID INC" }, "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", "pay_frequency": "PAY_FREQUENCY_BIWEEKLY", "start_date": "2020-12-01" } } ], "request_id": "2pxQ59buGdsHRef" } } }, "schema": { "$ref": "#/components/schemas/IncomeVerificationPaystubsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Retrieve information from the paystubs used for income verification", "tags": [ "plaid" ] } }, "/income/verification/precheck": { "post": { "deprecated": true, "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.\n\nWhile all request fields are optional, providing either `employer` or `transactions_access_tokens` data will increase the chance of receiving a useful result.\n\nThis endpoint has been deprecated; new integrations should use `/credit/payroll_income/precheck` instead.", "externalDocs": { "url": "/api/products/income/#incomeverificationprecheck" }, "operationId": "incomeVerificationPrecheck", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IncomeVerificationPrecheckRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "confidence": "HIGH", "precheck_id": "n9elqYlvYm", "request_id": "lMjeOeu9X1VUh1F" } } }, "schema": { "$ref": "#/components/schemas/IncomeVerificationPrecheckResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Check digital income verification eligibility and optimize conversion", "tags": [ "plaid" ] } }, "/income/verification/taxforms/get": { "post": { "deprecated": true, "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.\n\nThis endpoint has been deprecated; new integrations should use `/credit/payroll_income/get` instead.", "externalDocs": { "url": "/api/products/income/#incomeverificationtaxformsget" }, "operationId": "incomeVerificationTaxformsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IncomeVerificationTaxformsGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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" }, "marital_status": "single", "name": "Josie Georgia Harrison", "taxpayer_id": { "id_mask": "1234", "id_type": "SSN" } }, "employee_id_number": "12-1234567", "employer": { "address": { "city": "New York", "country": "US", "postal_code": "10010", "region": "NY", "street": "456 Main St" }, "name": "Acme Inc" }, "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" } } ] } } }, "schema": { "$ref": "#/components/schemas/IncomeVerificationTaxformsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "(Deprecated) Retrieve information from the tax documents used for income verification", "tags": [ "plaid" ] } }, "/institutions/get": { "post": { "description": "Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.\n\nIf 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.", "externalDocs": { "url": "/api/institutions/#institutionsget" }, "operationId": "institutionsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstitutionsGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "institutions": [ { "country_codes": [ "US" ], "dtc_numbers": [ "2236", "0955", "1367" ], "institution_id": "ins_1", "name": "Bank of America", "oauth": false, "products": [ "assets", "auth", "balance", "transactions", "identity", "liabilities" ], "routing_numbers": [ "011000138", "011200365", "011400495" ] } ], "request_id": "tbFyCEqkU774ZGG", "total": 11384 } } }, "schema": { "$ref": "#/components/schemas/InstitutionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get details of all supported institutions", "tags": [ "plaid" ] } }, "/institutions/get_by_id": { "post": { "description": "Returns a JSON response containing details on a specified financial institution currently supported by Plaid.\n\nVersioning 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.\n", "externalDocs": { "url": "/api/institutions/#institutionsget_by_id" }, "operationId": "institutionsGetById", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstitutionsGetByIdRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "institution": { "country_codes": [ "US" ], "dtc_numbers": [ "2236", "0955", "1367" ], "institution_id": "ins_109512", "logo": null, "name": "Houndstooth Bank", "oauth": false, "primary_color": "#004966", "products": [ "auth", "balance", "identity", "transactions" ], "routing_numbers": [ "011000138", "011200365", "011400495" ], "status": { "auth": { "breakdown": { "error_institution": 0.08, "error_plaid": 0.01, "success": 0.91 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "identity": { "breakdown": { "error_institution": 0.5, "error_plaid": 0.08, "success": 0.42 }, "last_status_change": "2019-02-15T15:50:00Z", "status": "DEGRADED" }, "investments": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.02, "success": 0.89 }, "last_status_change": "2019-02-15T15:53:00Z", "liabilities": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.02, "success": 0.89 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "status": "HEALTHY" }, "investments_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" }, "item_logins": { "breakdown": { "error_institution": 0.09, "error_plaid": 0.01, "success": 0.9 }, "last_status_change": "2019-02-15T15:53:00Z", "status": "HEALTHY" }, "liabilities_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" }, "transactions_updates": { "breakdown": { "error_institution": 0.03, "error_plaid": 0.02, "refresh_interval": "NORMAL", "success": 0.95 }, "last_status_change": "2019-02-12T08:22:00Z", "status": "HEALTHY" } }, "url": "https://plaid.com" }, "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/InstitutionsGetByIdResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get details of an institution", "tags": [ "plaid" ] } }, "/institutions/search": { "post": { "description": "Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.\n\nVersioning 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.\n", "externalDocs": { "url": "/api/institutions/#institutionssearch" }, "operationId": "institutionsSearch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstitutionsSearchRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/InstitutionsSearchResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Search institutions", "tags": [ "plaid" ] } }, "/investments/auth/get": { "post": { "description": "The `/investments/auth/get` endpoint allows developers to receive user-authorized data to facilitate the transfer of holdings", "externalDocs": { "url": "/api/products/investments-move/#investmentsauthget" }, "operationId": "investmentsAuthGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvestmentsAuthGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } ], "data_sources": { "holdings": "INSTITUTION", "numbers": "INSTITUTION", "owners": "INSTITUTION" }, "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 }, { "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 }, { "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 }, { "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 } ], "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": [ { "cfi_code": "OCASPS", "close_price": 0.011, "close_price_as_of": null, "cusip": 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": "Nflx Feb 01'18 $355 Call", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb", "sedol": null, "subtype": "option", "ticker_symbol": "NFLX180201C00355000", "type": "derivative", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "DYZTXR", "close_price": 94.808, "close_price_as_of": "2023-11-02", "cusip": "912797HE0", "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, "subtype": "bill", "ticker_symbol": null, "type": "fixed income", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CIOIBS", "close_price": 9.08, "close_price_as_of": "2024-09-09", "cusip": 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, "subtype": "mutual fund", "ticker_symbol": "DBLTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CEOIES", "close_price": 42.15, "close_price_as_of": null, "cusip": 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, "subtype": "etf", "ticker_symbol": "EWZ", "type": "etf", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": null, "close_price": 1, "close_price_as_of": null, "cusip": 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, "subtype": "cash", "ticker_symbol": null, "type": "cash", "unofficial_currency_code": null, "update_datetime": null } ] } } }, "schema": { "$ref": "#/components/schemas/InvestmentsAuthGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get data needed to authorize an investments transfer", "tags": [ "plaid" ] } }, "/investments/holdings/get": { "post": { "description": "The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.", "externalDocs": { "url": "/api/products/investments/#investmentsholdingsget" }, "operationId": "investmentsHoldingsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvestmentsHoldingsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 }, { "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 } ], "item": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "identity", "liabilities", "transactions" ], "billed_products": [ "assets", "auth", "investments" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "4z9LPae1nRHWy8pvg9jrsgbRP4ZNQvIdbLq7g", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "request_id": "l68wb8zpS0hqmsJ", "securities": [ { "cfi_code": "OCASPS", "close_price": 0.011, "close_price_as_of": "2021-04-13", "cusip": null, "fixed_income": null, "industry": "Internet Software or Services", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": null, "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Nflx Feb 01'18 $355 Call", "option_contract": { "contract_type": "call", "expiration_date": "2018-02-01", "strike_price": 355, "underlying_security_ticker": "NFLX" }, "proxy_security_id": null, "sector": "Technology Services", "security_id": "8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb", "sedol": null, "subtype": "option", "ticker_symbol": "NFLX180201C00355000", "type": "derivative", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CIOGES", "close_price": 27, "close_price_as_of": null, "cusip": "577130834", "fixed_income": null, "industry": "Investment Trusts or Mutual Funds", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US5771308344", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Matthews Pacific Tiger Fund Insti Class", "option_contract": null, "proxy_security_id": null, "sector": "Miscellaneous", "security_id": "JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP", "sedol": null, "subtype": "mutual fund", "ticker_symbol": "MIPTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "ESVUFR", "close_price": 2.11, "close_price_as_of": null, "cusip": "00448Q201", "fixed_income": null, "industry": "Major Pharmaceuticals", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US00448Q2012", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Achillion Pharmaceuticals Inc.", "option_contract": null, "proxy_security_id": null, "sector": "Health Technology", "security_id": "KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy", "sedol": null, "subtype": "common stock", "ticker_symbol": "ACHN", "type": "equity", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CIOIBS", "close_price": 10.42, "close_price_as_of": null, "cusip": "258620103", "fixed_income": null, "industry": null, "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US2586201038", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "DoubleLine Total Return Bond Fund", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk", "sedol": null, "subtype": "mutual fund", "ticker_symbol": "DBLTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": null, "close_price": 1, "close_price_as_of": null, "cusip": 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, "subtype": "cash", "ticker_symbol": "USD", "type": "cash", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": null, "close_price": 13.73, "close_price_as_of": null, "cusip": null, "fixed_income": null, "industry": null, "institution_id": "ins_3", "institution_security_id": "NHX105509", "is_cash_equivalent": false, "isin": null, "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "NH PORTFOLIO 1055 (FIDELITY INDEX)", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN", "sedol": null, "subtype": "etf", "ticker_symbol": "NHX105509", "type": "etf", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "DYZTXR", "close_price": 94.808, "close_price_as_of": "2023-11-02", "cusip": "912797HE0", "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, "subtype": "bill", "ticker_symbol": null, "type": "fixed income", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": null, "close_price": 0.140034616, "close_price_as_of": "2022-01-24", "cusip": null, "fixed_income": null, "industry": null, "institution_id": "ins_3", "institution_security_id": null, "is_cash_equivalent": true, "isin": null, "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Dogecoin", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "vLRMV3MvY1FYNP91on35CJD5QN5rw9Fpa9qOL", "sedol": null, "subtype": "cryptocurrency", "ticker_symbol": "DOGE", "type": "cryptocurrency", "unofficial_currency_code": null, "update_datetime": "2022-06-07T23:01:00Z" } ] } } }, "schema": { "$ref": "#/components/schemas/InvestmentsHoldingsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Investment holdings", "tags": [ "plaid" ] } }, "/investments/refresh": { "post": { "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.\n\nAs 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.\n\n`/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.", "externalDocs": { "url": "/api/products/investments/#investmentsrefresh" }, "operationId": "investmentsRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvestmentsRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/InvestmentsRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh investment data", "tags": [ "plaid" ] } }, "/investments/transactions/get": { "post": { "description": "The `/investments/transactions/get` endpoint allows developers to retrieve up to 24 months of user-authorized transaction data for investment accounts.\n\nTransactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.\n\nDue 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.\n\nNote 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.\n\nData 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.", "externalDocs": { "url": "/api/products/investments/#investmentstransactionsget" }, "operationId": "investmentsTransactionsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvestmentsTransactionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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", "fees": 0, "investment_transaction_id": "oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW", "iso_currency_code": "USD", "name": "INCOME DIV DIVIDEND RECEIVED", "price": 0, "quantity": 0, "security_id": "eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ", "subtype": "dividend", "transaction_datetime": null, "type": "cash", "unofficial_currency_code": null }, { "account_id": "rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj", "amount": -1289.01, "cancel_transaction_id": null, "date": "2020-05-28", "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", "transaction_datetime": "2020-05-28T15:10:09Z", "type": "sell", "unofficial_currency_code": null }, { "account_id": "rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj", "amount": 7.7, "cancel_transaction_id": null, "date": "2020-05-27", "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", "transaction_datetime": "2020-05-27T17:23:22Z", "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": [ { "cfi_code": "CIOGES", "close_price": 27, "close_price_as_of": null, "cusip": "577130834", "fixed_income": null, "industry": "Investment Trusts or Mutual Funds", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US5771308344", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Matthews Pacific Tiger Fund Insti Class", "option_contract": null, "proxy_security_id": null, "sector": "Miscellaneous", "security_id": "JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP", "sedol": null, "subtype": "mutual fund", "ticker_symbol": "MIPTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CIOIBS", "close_price": 10.42, "close_price_as_of": null, "cusip": "258620103", "fixed_income": null, "industry": null, "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US2586201038", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "DoubleLine Total Return Bond Fund", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk", "sedol": null, "subtype": "mutual fund", "ticker_symbol": "DBLTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "ESVUFR", "close_price": 34.73, "close_price_as_of": null, "cusip": "84470P109", "fixed_income": null, "industry": "Regional Banks", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US84470P1093", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Southside Bancshares Inc.", "option_contract": null, "proxy_security_id": null, "sector": "Finance", "security_id": "eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ", "sedol": null, "subtype": "common stock", "ticker_symbol": "SBSI", "type": "equity", "unofficial_currency_code": null, "update_datetime": null } ], "total_investment_transactions": 3 } } }, "schema": { "$ref": "#/components/schemas/InvestmentsTransactionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get investment transactions", "tags": [ "plaid" ] } }, "/issues/get": { "post": { "description": "Retrieve detailed information about a specific `Issue`. This endpoint returns a single `Issue` object.", "externalDocs": { "url": "/api/products/issues/#issuesget" }, "operationId": "issuesGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuesGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "issue": { "created_at": "2023-09-01T14:35:00Z", "detailed_description": "The Link session was unable to retrieve account information due to a network timeout.", "institution_ids": [ "ins_1", "ins_2" ], "institution_names": [ "Bank of Example", "Example Credit Union" ], "issue_id": "000001", "status": "FIX_IN_PROGRESS", "summary": "Link session failed to complete" }, "request_id": "123456" } } }, "schema": { "$ref": "#/components/schemas/IssuesGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get an Issue", "tags": [ "plaid" ] } }, "/issues/search": { "post": { "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.", "externalDocs": { "url": "/api/products/issues#issuessearch" }, "operationId": "issuesSearch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuesSearchRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "issues": [ { "created_at": "2023-09-01T14:35:00Z", "detailed_description": "The Link session was unable to retrieve account information due to a network timeout.", "institution_ids": [ "ins_1", "ins_2" ], "institution_names": [ "Bank of Example", "Example Credit Union" ], "issue_id": "000001", "status": "FIX_IN_PROGRESS", "summary": "Link session failed to complete" }, { "created_at": "2023-09-02T11:20:00Z", "detailed_description": "The account synchronization failed due to an API rate limit issue.", "institution_ids": [ "ins_3" ], "institution_names": [ "Example National Bank" ], "issue_id": "000002", "status": "AWAITING_RESOLUTION", "summary": "Account sync error" } ], "request_id": "123456" } } }, "schema": { "$ref": "#/components/schemas/IssuesSearchResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Search for an Issue", "tags": [ "plaid" ] } }, "/issues/subscribe": { "post": { "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.", "externalDocs": { "url": "/api/products/issues/#issuessubscribe" }, "operationId": "issuesSubscribe", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuesSubscribeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "123456" } } }, "schema": { "$ref": "#/components/schemas/IssuesSubscribeResponse" } } }, "description": "Subscription was successful" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Subscribe to an Issue", "tags": [ "plaid" ] } }, "/item/access_token/invalidate": { "post": { "description": "By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.\n\nYou 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`.\n", "externalDocs": { "url": "/api/items/#itemaccess_tokeninvalidate" }, "operationId": "itemAccessTokenInvalidate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemAccessTokenInvalidateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "new_access_token": "access-sandbox-8ab976e6-64bc-4b38-98f7-731e7a349970", "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ItemAccessTokenInvalidateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Invalidate access_token", "tags": [ "plaid" ] } }, "/item/activity/list": { "post": { "description": "List a historical log of user consent events", "operationId": "itemActivityList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemActivityListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "activities": [], "last_data_access_times": [], "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ItemActivityListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "List a historical log of user consent events", "tags": [ "plaid" ] } }, "/item/application/list": { "post": { "description": "List a user's connected applications", "operationId": "itemApplicationList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemApplicationListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemApplicationListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "List a user's connected applications", "tags": [ "plaid" ] } }, "/item/application/scopes/update": { "post": { "description": "Enable consumers to update product access on selected accounts for an application.", "operationId": "itemApplicationScopesUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemApplicationScopesUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemApplicationScopesUpdateResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Update the scopes of access for a particular application", "tags": [ "plaid" ] } }, "/item/application/unlink": { "post": { "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.\n\nThis 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).\n\nThis 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.", "externalDocs": { "url": "none" }, "operationId": "itemApplicationUnlink", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemApplicationUnlinkRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ItemApplicationUnlinkResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Unlink a user's connected application", "tags": [ "plaid" ] } }, "/item/get": { "post": { "description": "Returns information about the status of an Item.", "externalDocs": { "url": "/api/items/#itemget" }, "operationId": "itemGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "item": { "auth_method": null, "available_products": [ "balance", "auth" ], "billed_products": [ "identity", "transactions" ], "consent_expiration_time": "2024-03-16T15:53:00Z", "consented_data_scopes": [ "account_balance_info", "contact_info", "transactions" ], "consented_products": [ "identity", "transactions" ], "consented_use_cases": [ "Verify your account", "Track and manage your finances" ], "created_at": "2019-01-22T04:32:00Z", "error": null, "institution_id": "ins_109508", "institution_name": "First Platypus Bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr", "products": [ "identity", "transactions" ], "update_type": "background", "webhook": "https://plaid.com/example/hook" }, "request_id": "m8MDnv9okwxFNBV", "status": { "last_webhook": { "code_sent": "DEFAULT_UPDATE", "sent_at": "2019-02-15T15:53:00Z" }, "transactions": { "last_failed_update": "2019-01-22T04:32:00Z", "last_successful_update": "2019-02-15T15:52:39Z" } } } } }, "schema": { "$ref": "#/components/schemas/ItemGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve an Item", "tags": [ "plaid" ] } }, "/item/import": { "post": { "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.\n\nUpon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated.", "operationId": "itemImport", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemImportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "access-sandbox-99ace160-3cf7-4e51-a083-403633425815", "request_id": "ewIBAn6RZirsk4W" } } }, "schema": { "$ref": "#/components/schemas/ItemImportResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Import Item", "tags": [ "plaid" ] } }, "/item/products/terminate": { "post": { "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.\n\n`/item/products/terminate` is the recommended way to offboard users or disconnect accounts linked via Plaid.", "externalDocs": { "url": "/api/items/#itemproductsterminate" }, "operationId": "itemProductsTerminate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemProductsTerminateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ItemProductsTerminateResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Terminate products for an Item", "tags": [ "plaid" ] } }, "/item/public_token/create": { "post": { "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).\n\nIf 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`.\n\nA `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.\n\nThe `/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.", "externalDocs": { "url": "/api/link/#itempublic_tokencreate" }, "operationId": "itemCreatePublicToken", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemPublicTokenCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "public_token": "public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d", "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/ItemPublicTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create public token", "tags": [ "plaid" ] } }, "/item/public_token/exchange": { "post": { "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`.\n\nThe 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.", "externalDocs": { "url": "/api/items/#itempublic_tokenexchange" }, "operationId": "itemPublicTokenExchange", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemPublicTokenExchangeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6", "item_id": "M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op", "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/ItemPublicTokenExchangeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Exchange public token for an access token", "tags": [ "plaid" ] } }, "/item/remove": { "post": { "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.\n\nCalling `/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).\n\nOn a Trial plan, calling `/item/remove` does not impact the number of remaining Trial Items (bank connections) you have available.\n\nRemoving 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.\n\nAlso 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.\n\nAPI versions 2019-05-29 and earlier return a `removed` boolean as part of the response.", "externalDocs": { "url": "/api/items/#itemremove" }, "operationId": "itemRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemRemoveRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ItemRemoveResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Remove an Item", "tags": [ "plaid" ] } }, "/item/webhook/update": { "post": { "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.", "externalDocs": { "url": "/api/items/#itemwebhookupdate" }, "operationId": "itemWebhookUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ItemWebhookUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "item": { "auth_method": "INSTANT_AUTH", "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" }, "request_id": "vYK11LNTfRoAMbj" } } }, "schema": { "$ref": "#/components/schemas/ItemWebhookUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update Webhook URL", "tags": [ "plaid" ] } }, "/items/transactions/notify": {}, "/liabilities/get": { "post": { "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).\n\nThe 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`.", "externalDocs": { "url": "/api/products/liabilities/#liabilitiesget" }, "operationId": "liabilitiesGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LiabilitiesGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "investments" ], "billed_products": [ "assets", "auth", "identity", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "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_balance": 1708.77, "last_statement_issue_date": "2019-05-28", "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_balance": 1708.77, "last_statement_issue_date": "2019-04-28", "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" } } }, "schema": { "$ref": "#/components/schemas/LiabilitiesGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Liabilities data", "tags": [ "plaid" ] } }, "/link/oauth/correlation_id/exchange": { "post": { "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.\nThe `link_correlation_id` is ephemeral and expires in a brief period, after which it can no longer be exchanged for the `link_token`.", "externalDocs": { "url": "/api/oauth/#linkcorrelationid" }, "operationId": "linkOauthCorrelationIdExchange", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkOAuthCorrelationIdExchangeRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "link_token": "link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183", "request_id": "u0ydFs493XjyTYn" } } }, "schema": { "$ref": "#/components/schemas/LinkOAuthCorrelationIdExchangeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Exchange the Link Correlation ID for a Link Token", "tags": [ "plaid" ] } }, "/link/token/create": { "post": { "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).\n\nA `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.", "externalDocs": { "url": "/api/link/#linktokencreate" }, "operationId": "linkTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "expiration": "2020-03-27T12:56:34Z", "link_token": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176", "request_id": "XQVgFigpGHXkb0b" } } }, "schema": { "$ref": "#/components/schemas/LinkTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Link Token", "tags": [ "plaid" ] } }, "/link/token/get": { "post": { "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.\n\nBy 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.", "externalDocs": { "url": "/api/link/#linktokenget" }, "operationId": "linkTokenGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkTokenGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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": { "bank_income_results": [], "cra_item_add_results": [], "cra_update_results": [], "document_income_results": null, "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" } ], "payroll_income_results": [] }, "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" }, "request_id": "Pxpgzy0Wjvn99mY", "user_id": "usr_123456abcdef" } } }, "schema": { "$ref": "#/components/schemas/LinkTokenGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Link Token", "tags": [ "plaid" ] } }, "/link_delivery/create": { "post": { "description": "Use the `/link_delivery/create` endpoint to create a Hosted Link session.", "externalDocs": { "url": "/assets/waitlist/hosted-link/" }, "operationId": "linkDeliveryCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkDeliveryCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "link_delivery_session_id": "99ace160-3cf7-4e51-a083-403633425815", "link_delivery_url": "https://secure.plaid.com/99ace160-3cf7-4e51-a083-403633425815", "request_id": "4ciYmmesdqSiUAB" } } }, "schema": { "$ref": "#/components/schemas/LinkDeliveryCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Hosted Link session", "tags": [ "plaid" ] } }, "/link_delivery/get": { "post": { "description": "Use the `/link_delivery/get` endpoint to get the status of a Hosted Link session.", "externalDocs": { "url": "/assets/waitlist/hosted-link/" }, "operationId": "linkDeliveryGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkDeliveryGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "completed_at": "2019-10-12T07:21:50.52Z", "created_at": "2019-10-12T07:20:50.52Z", "public_tokens": [ "public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d" ], "request_id": "4ciYmmesdqSiUAB", "status": "COMPLETED" } } }, "schema": { "$ref": "#/components/schemas/LinkDeliveryGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Hosted Link session", "tags": [ "plaid" ] } }, "/network/status/get": { "post": { "description": "The `/network/status/get` endpoint can be used to check whether Plaid has a matching profile for the user.\nThis 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.\n\nNote: 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.\nFor instructions on performing a frontend eligibility check, see the [Layer documentation](https://plaid.com/docs/layer/#integration-overview).", "externalDocs": { "url": "/api/network/#networkstatusget" }, "operationId": "networkStatusGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkStatusGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "network_status": "RETURNING_USER", "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/NetworkStatusGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Check a user's Plaid Network status", "tags": [ "plaid" ] } }, "/oauth/introspect": { "post": { "description": "`/oauth/introspect` returns metadata about an access token or refresh token.\n\nNote: 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.", "externalDocs": { "url": "/api/oauth/#oauthintrospect" }, "operationId": "oauthIntrospect", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthIntrospectRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "active": true, "aud": "https://production.plaid.com", "client_id": "68028ce48d2b0dec68747f6c", "exp": 1670000000, "iat": 1670000000, "iss": "https://production.plaid.com", "request_id": "m8MDqcS6F3lzqvP", "scope": "user:read user:write exchange", "sub": "68028ce48d2b0dec68747f6c", "token_type": "Bearer" } } }, "schema": { "$ref": "#/components/schemas/OAuthIntrospectResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthErrorResponse" } } }, "description": "Error response." } }, "summary": "Get metadata about an OAuth token", "tags": [ "plaid" ] } }, "/oauth/revoke": { "post": { "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.\n\nNote: 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.", "externalDocs": { "url": "/api/oauth/#oauthrevoke" }, "operationId": "oauthRevoke", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthRevokeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDqcS6F3lzqvP" } } }, "schema": { "$ref": "#/components/schemas/OAuthRevokeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthErrorResponse" } } }, "description": "Error response." } }, "summary": "Revoke an OAuth token", "tags": [ "plaid" ] } }, "/oauth/token": { "post": { "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.", "externalDocs": { "url": "/api/oauth/#oauthtoken" }, "operationId": "oauthToken", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthTokenRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "pda-RDdg0TUCB0FB25_UPIlnhA==", "expires_in": 900, "refresh_token": "pdr--viXurkDg88d5zf8m6Wl0g==", "request_id": "m8MDqcS6F3lzqvP", "token_type": "Bearer" } } }, "schema": { "$ref": "#/components/schemas/OAuthTokenResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuthErrorResponse" } } }, "description": "Error response." } }, "summary": "Create or refresh an OAuth access token", "tags": [ "plaid" ] } }, "/partner/customer/create": { "post": { "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.", "externalDocs": { "url": "/api/partner/#partnercustomercreate" }, "operationId": "partnerCustomerCreate", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "address": { "city": "New York", "country_code": "US", "postal_code": "12345", "region": "NY", "street": "123 Main St" }, "application_name": "Plaid", "billing_contact": { "email": "bob.jones@example.com", "family_name": "Jones", "given_name": "Bob" }, "client_id": "7f57eb3d2a9j6480121fx361", "company_name": "Plaid", "create_link_customization": true, "customer_support_info": { "contact_url": "example.com/contact", "email": "support@example.com", "link_update_url": "example.com/update", "phone_number": "1234567890" }, "is_bank_addendum_completed": true, "is_diligence_attested": true, "legal_entity_name": "Plaid", "products": [ "auth", "identity" ], "redirect_uris": [ "http://localhost/oauth.html", "https://www.example.com/oauth.html" ], "secret": "79g03eoofwl8240v776r2h667442119", "technical_contact": { "email": "alice.smith@example.com", "family_name": "Smith", "given_name": "Alice" }, "website": "plaid.com" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer": { "client_id": "7f57eb3d2a9j6480121fx361", "company_name": "Plaid", "secrets": { "production": "79g03eoofwl8240v776r2h667442119", "sandbox": "b60b5201d006ca5a7081d27c824d77" }, "status": "ACTIVE" }, "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Creates a new end customer for a Plaid reseller.", "tags": [ "plaid" ] } }, "/partner/customer/enable": { "post": { "description": "The `/partner/customer/enable` endpoint is used by reseller partners to enable an end customer in the full Production environment.", "externalDocs": { "url": "/api/partner/#partnercustomerenable" }, "operationId": "partnerCustomerEnable", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "7f57eb3d2a9j6480121fx361", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerEnableRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "production_secret": "79g03eoofwl8240v776r2h667442119", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerEnableResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Enables a Plaid reseller's end customer in the Production environment.", "tags": [ "plaid" ] } }, "/partner/customer/get": { "post": { "description": "The `/partner/customer/get` endpoint is used by reseller partners to retrieve data about a single end customer.", "externalDocs": { "url": "/api/partner/#partnercustomerget" }, "operationId": "partnerCustomerGet", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "7f57eb3d2a9j6480121fx361", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "end_customer": { "client_id": "7f57eb3d2a9j6480121fx361", "company_name": "Plaid", "status": "ACTIVE" }, "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Returns a Plaid reseller's end customer.", "tags": [ "plaid" ] } }, "/partner/customer/oauth_institutions/get": { "post": { "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).", "externalDocs": { "url": "/api/partner/#partnercustomeroauth_institutionsget" }, "operationId": "partnerCustomerOauthInstitutionsGet", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "7f57eb3d2a9j6480121fx361", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerOAuthInstitutionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "flowdown_status": "COMPLETE", "institutions": [ { "classic_disablement_date": "2022-06-30", "environments": { "production": "PROCESSING" }, "institution_id": "ins_56", "name": "Chase", "production_enablement_date": null }, { "classic_disablement_date": null, "environments": { "production": "ENABLED" }, "institution_id": "ins_128026", "name": "Capital One", "production_enablement_date": "2022-12-19" }, { "classic_disablement_date": null, "environments": { "production": "ATTENTION_REQUIRED" }, "errors": [ { "display_message": null, "error_code": "OAUTH_REGISTRATION_ERROR", "error_message": "Application logo is required", "error_type": "PARTNER_ERROR", "request_id": "4zlKapIkTm8p5KM" } ], "institution_id": "ins_1", "name": "Bank of America", "production_enablement_date": null } ], "questionnaire_status": "COMPLETE", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerOAuthInstitutionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Returns OAuth-institution registration information for a given end customer.", "tags": [ "plaid" ] } }, "/partner/customer/remove": { "post": { "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.", "externalDocs": { "url": "/api/partner/#partnercustomerremove" }, "operationId": "partnerCustomerRemove", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_id": "7f57eb3d2a9j6480121fx361", "end_customer_client_id": "7f57eb3d2a9j6480121fx361", "secret": "79g03eoofwl8240v776r2h667442119" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PartnerCustomerRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Removes a Plaid reseller's end customer.", "tags": [ "plaid" ] } }, "/payment_initiation/consent/create": { "post": { "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.\n\nConsents can be limited in time and scope, and have constraints that describe limitations for payments.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationconsentcreate" }, "operationId": "paymentInitiationConsentCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "consent_id": "consent-id-production-feca8a7a-5491-4444-9999-f3062bb735d3", "request_id": "4ciYmmesdqSiUAB", "status": "UNAUTHORISED" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create payment consent", "tags": [ "plaid" ] } }, "/payment_initiation/consent/get": { "post": { "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.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationconsentget" }, "operationId": "paymentInitiationConsentGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "consent_id": "consent-id-production-feca8a7a-5491-4aef-9298-f3062bb735d3", "constraints": { "max_payment_amount": { "currency": "GBP", "value": 100 }, "periodic_amounts": [ { "alignment": "CALENDAR", "amount": { "currency": "GBP", "value": 300 }, "interval": "WEEK" } ], "valid_date_time": { "from": "2021-12-25T11:12:13Z", "to": "2022-12-31T15:26:48Z" } }, "created_at": "2021-10-30T15:26:48Z", "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6", "reference": "ref-00001", "request_id": "4ciYuuesdqSiUAB", "status": "AUTHORISED", "type": "SWEEPING" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get payment consent", "tags": [ "plaid" ] } }, "/payment_initiation/consent/payment/execute": { "post": { "description": "The `/payment_initiation/consent/payment/execute` endpoint can be used to execute payments using payment consent.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationconsentpaymentexecute" }, "operationId": "paymentInitiationConsentPaymentExecute", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentPaymentExecuteRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "request_id": "4ciYccesdqSiUAB", "status": "PAYMENT_STATUS_INITIATED" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentPaymentExecuteResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Execute a single payment using consent", "tags": [ "plaid" ] } }, "/payment_initiation/consent/revoke": { "post": { "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.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationconsentrevoke" }, "operationId": "paymentInitiationConsentRevoke", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentRevokeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4ciYaaesdqSiUAB" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationConsentRevokeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Revoke payment consent", "tags": [ "plaid" ] } }, "/payment_initiation/payment/create": { "post": { "description": "After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient. Payments can be one-time or standing order (recurring) and can be denominated in either EUR, GBP or other chosen [currency](https://plaid.com/docs/api/products/payment-initiation/#payment_initiation-payment-create-request-amount-currency). If making domestic GBP-denominated payments, your recipient must have been created with Bacs numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer, GBP-denominated payments will be sent via the Faster Payments network and for non-Eurozone markets typically via the local payment scheme, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer or other local payment schemes will typically arrive in one business day.\n\nStanding 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.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationpaymentcreate" }, "operationId": "paymentInitiationPaymentCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "request_id": "4ciYVmesrySiUAB", "status": "PAYMENT_STATUS_INPUT_NEEDED" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a payment", "tags": [ "plaid" ] } }, "/payment_initiation/payment/get": { "post": { "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.\n\nPolling 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.\n\nIn 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.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationpaymentget" }, "operationId": "paymentInitiationPaymentGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "amount": { "currency": "GBP", "value": 100 }, "bacs": { "account": "31926819", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "sort_code": "601613" }, "end_to_end_id": "sptch8cde8390bfd363888", "iban": null, "last_status_update": "2019-11-06T21:10:52Z", "payment_id": "payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6", "reference": "Account Funding 99744", "request_id": "aEAQmewMzlVa1k6", "status": "PAYMENT_STATUS_INITIATED" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get payment details", "tags": [ "plaid" ] } }, "/payment_initiation/payment/list": { "post": { "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.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationpaymentlist" }, "operationId": "paymentInitiationPaymentList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "2020-01-01T00:00:00Z", "payments": [ { "amount": { "currency": "GBP", "value": 100 }, "bacs": { "account": "31926819", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "sort_code": "601613" }, "end_to_end_id": "sptch8cde8390bfd363888,", "iban": "null,", "last_status_update": "2019-11-06T21:10:52Z", "payment_id": "payment-id-sandbox-feca8a7a-5581-4aef-9297-f3062bb735d3", "recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6", "reference": "Account Funding 99744", "status": "PAYMENT_STATUS_EXECUTED" } ], "request_id": "aEAQmewMzlVa1k6" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List payments", "tags": [ "plaid" ] } }, "/payment_initiation/payment/reverse": { "post": { "description": "Reverse a settled payment from a Plaid virtual account.\n\nThe original payment must be in a settled state to be refunded.\nTo refund partially, specify the amount as part of the request.\nIf the amount is not specified, the refund amount will be equal to all\nof the remaining payment amount that has not been refunded yet.\n\nThe refund will go back to the source account that initiated the payment.\nThe original payment must have been initiated to a Plaid virtual account\nso that this account can be used to initiate the refund.\n\nProviding counterparty information such as date of birth and address increases\nthe likelihood of refund being successful without human intervention.\n", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationpaymentreverse" }, "operationId": "paymentInitiationPaymentReverse", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentReverseRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "refund_id": "wallet-transaction-id-production-c5f8cd31-6cae-4cad-9b0d-f7c10be9cc4b", "request_id": "HtlKzBX0fMeF7mU", "status": "INITIATED" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentReverseResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Reverse an existing payment", "tags": [ "plaid" ] } }, "/payment_initiation/payment/token/create": { "post": { "deprecated": true, "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.\n\nThe `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.", "externalDocs": { "url": "/link/maintain-legacy-integration/#creating-a-payment-token" }, "operationId": "createPaymentToken", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentTokenCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationPaymentTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create payment token", "tags": [ "plaid" ] } }, "/payment_initiation/recipient/create": { "post": { "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.\n\nIt is recommended to use `bacs` in the UK and `iban` in EU.\n\nThe endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.\n", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationrecipientcreate" }, "operationId": "paymentInitiationRecipientCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create payment recipient", "tags": [ "plaid" ] } }, "/payment_initiation/recipient/get": { "post": { "description": "Get details about a payment recipient you have previously created.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationrecipientget" }, "operationId": "paymentInitiationRecipientGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "address": { "city": "London", "country": "GB", "postal_code": "SE14 8JW", "street": [ "96 Guild Street", "9th Floor" ] }, "iban": "GB29NWBK60161331926819", "name": "Wonder Wallet", "recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get payment recipient", "tags": [ "plaid" ] } }, "/payment_initiation/recipient/list": { "post": { "description": "The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.", "externalDocs": { "url": "/api/products/payment-initiation/#payment_initiationrecipientlist" }, "operationId": "paymentInitiationRecipientList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "YWJjMTIzIT8kKiYoKSctPUE", "recipients": [ { "address": { "city": "London", "country": "GB", "postal_code": "SE14 8JW", "street": [ "96 Guild Street", "9th Floor" ] }, "iban": "GB29NWBK60161331926819", "name": "Wonder Wallet", "recipient_id": "recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6" } ], "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/PaymentInitiationRecipientListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List payment recipients", "tags": [ "plaid" ] } }, "/payment_profile/create": { "post": { "deprecated": true, "description": "Use `/payment_profile/create` endpoint to create a new payment profile.\nTo initiate the account linking experience, call `/link/token/create` and provide the `payment_profile_token` in the `transfer.payment_profile_token` field.\nYou can then use the `payment_profile_token` when creating transfers using `/transfer/authorization/create` and `/transfer/create`.", "externalDocs": { "url": "/api/products/transfer/#payment_profilecreate" }, "operationId": "paymentProfileCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentProfileCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "payment_profile_token": "payment-profile-sandbox-eda0b25e-8ef3-4ebb-9ef7-1ef3db3c5ee8", "request_id": "4ciYmmesdqSiUAB" } } }, "schema": { "$ref": "#/components/schemas/PaymentProfileCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create payment profile", "tags": [ "plaid" ] } }, "/payment_profile/get": { "post": { "deprecated": true, "description": "Use `/payment_profile/get` endpoint to get the status of a given Payment Profile.", "externalDocs": { "url": "/api/products/transfer/#payment_profileget" }, "operationId": "paymentProfileGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentProfileGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "created_at": "2022-07-05T12:48:37Z", "deleted_at": null, "request_id": "4ciYmmesdqSiUAB", "status": "READY", "updated_at": "2022-07-07T12:48:37Z" } } }, "schema": { "$ref": "#/components/schemas/PaymentProfileGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get payment profile", "tags": [ "plaid" ] } }, "/payment_profile/remove": { "post": { "deprecated": true, "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.", "externalDocs": { "url": "/api/products/transfer/#payment_profileremove" }, "operationId": "paymentProfileRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentProfileRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4ciYmmesdqSiUAB" } } }, "schema": { "$ref": "#/components/schemas/PaymentProfileRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove payment profile", "tags": [ "plaid" ] } }, "/processor/account/get": { "post": { "description": "This endpoint returns the account associated with a given processor token.\n\nThis 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.\n", "externalDocs": { "url": "/api/processor-partners/#processoraccountget" }, "operationId": "processorAccountGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorAccountGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "account": { "account_id": "QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv", "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" }, "institution_id": "ins_109508", "request_id": "1zlMf" } } }, "schema": { "$ref": "#/components/schemas/ProcessorAccountGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve the account associated with a processor token", "tags": [ "plaid" ] } }, "/processor/apex/processor_token/create": { "post": { "description": "Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.", "externalDocs": { "url": "/none/" }, "operationId": "processorApexProcessorTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorApexProcessorTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Apex bank account token", "tags": [ "plaid" ] } }, "/processor/auth/get": { "post": { "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.\n\nVersioning 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).\n", "externalDocs": { "url": "/api/processor-partners/#processorauthget" }, "operationId": "processorAuthGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorAuthGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" }, "bacs": { "account": "31926819", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "sort_code": "601613" }, "eft": { "account": "111122223333", "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "branch": "01140", "institution": "021" }, "international": { "account_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "bic": "NWBKGB21", "iban": "GB29NWBK60161331926819" } }, "request_id": "1zlMf" } } }, "schema": { "$ref": "#/components/schemas/ProcessorAuthGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Auth data", "tags": [ "plaid" ] } }, "/processor/balance/get": { "post": { "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. ", "externalDocs": { "url": "/api/processor-partners/#processorbalanceget" }, "operationId": "processorBalanceGet", "requestBody": { "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`.\n\nThe 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.\n\nNote 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`.", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "account": { "account_id": "QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv", "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" }, "request_id": "1zlMf" } } }, "schema": { "$ref": "#/components/schemas/ProcessorBalanceGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Balance data", "tags": [ "plaid" ] } }, "/processor/bank_transfer/create": { "post": { "description": "Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor", "externalDocs": { "url": "/api/processor-partners/#bank_transfercreate" }, "operationId": "processorBankTransferCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorBankTransferCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/ProcessorBankTransferCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a bank transfer as a processor", "tags": [ "plaid" ] } }, "/processor/identity/get": { "post": { "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.", "externalDocs": { "url": "/api/processor-partners/#processoridentityget" }, "operationId": "processorIdentityGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorIdentityGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/ProcessorIdentityGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Identity data", "tags": [ "plaid" ] } }, "/processor/identity/match": { "post": { "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.\n\nFields within the `balances` object will always be null when retrieved by `/identity/match`. Instead, use the free `/accounts/get` endpoint to request balance cached data, or `/accounts/balance/get` for real-time data.", "externalDocs": { "url": "/api/processor-partners/#processoridentitymatch" }, "operationId": "processorIdentityMatch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorIdentityMatchRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "account": { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "address": { "is_postal_code_match": true, "score": 100 }, "balances": { "available": null, "current": null, "iso_currency_code": null, "limit": null, "unofficial_currency_code": null }, "email_address": { "score": 100 }, "legal_name": { "is_business_name_detected": false, "is_first_name_or_last_name_match": true, "is_nickname_match": true, "score": 90 }, "mask": "0000", "name": "Plaid Checking", "official_name": "Plaid Gold Standard 0% Interest Checking", "phone_number": { "score": 100 }, "subtype": "checking", "type": "depository" }, "request_id": "3nARps6TOYtbACO" } } }, "schema": { "$ref": "#/components/schemas/ProcessorIdentityMatchResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve identity match score", "tags": [ "plaid" ] } }, "/processor/investments/auth/get": { "post": { "description": "The `/processor/investments/auth/get` endpoint allows you to retrieve information about the account\nauthorized by a processor token, including account numbers, account owners, holdings, and data provenance information.\n\nTo 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.\n", "externalDocs": { "url": "/api/processor-partners/#processorinvestmentsauthget" }, "operationId": "processorInvestmentsAuthGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsAuthGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" }, "data_sources": { "holdings": "INSTITUTION", "numbers": "INSTITUTION", "owners": "INSTITUTION" }, "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 }, { "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 } ], "numbers": { "acats": [ { "account": "TR5555", "account_id": "xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy", "dtc_numbers": [ "1111", "2222", "3333" ] } ] }, "owners": [ { "account_id": "xlP8npRxwgCj48LQbjxWipkeL3gbyXf64knoy", "names": [ "Alberta Bobbeth Charleson" ] } ], "request_id": "m8MDnv9okwxFNBV", "securities": [ { "cfi_code": "OCASPS", "close_price": 0.011, "close_price_as_of": null, "cusip": 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": "Nflx Feb 01'18 $355 Call", "option_contract": null, "proxy_security_id": null, "sector": null, "security_id": "8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb", "sedol": null, "subtype": "option", "ticker_symbol": "NFLX180201C00355000", "type": "derivative", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "CEOIES", "close_price": 42.15, "close_price_as_of": null, "cusip": 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, "subtype": "etf", "ticker_symbol": "EWZ", "type": "etf", "unofficial_currency_code": null, "update_datetime": null } ] } } }, "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsAuthGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get investment account authentication data", "tags": [ "plaid" ] } }, "/processor/investments/holdings/get": { "post": { "description": "This endpoint returns the stock position data of the account associated with a given processor token.\n", "externalDocs": { "url": "/api/processor-partners/#processorinvestmentsholdingsget" }, "operationId": "processorInvestmentsHoldingsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsHoldingsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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 }, { "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 } ], "request_id": "24MxmGFZz89Xg2f", "securities": [ { "cfi_code": "OCASPS", "close_price": 0.011, "close_price_as_of": "2021-04-13", "cusip": null, "fixed_income": null, "industry": "Internet Software or Services", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": null, "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Nflx Feb 01'18 $355 Call", "option_contract": { "contract_type": "call", "expiration_date": "2018-02-01", "strike_price": 355, "underlying_security_ticker": "NFLX" }, "proxy_security_id": null, "sector": "Technology Services", "security_id": "8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb", "sedol": null, "subtype": "option", "ticker_symbol": "NFLX180201C00355000", "type": "derivative", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": null, "close_price": 1, "close_price_as_of": null, "cusip": 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, "subtype": "cash", "ticker_symbol": "USD", "type": "cash", "unofficial_currency_code": null, "update_datetime": null } ] } } }, "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsHoldingsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Investment Holdings", "tags": [ "plaid" ] } }, "/processor/investments/transactions/get": { "post": { "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.\n\nTransactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.\n\nDue 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.\n\nNote 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.\n\nData 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.\n\nTo 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.", "externalDocs": { "url": "/api/processor-partners/#processorinvestmentstransactionsget" }, "operationId": "processorInvestmentsTransactionsGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsTransactionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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", "fees": 0, "investment_transaction_id": "oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW", "iso_currency_code": "USD", "name": "INCOME DIV DIVIDEND RECEIVED", "price": 0, "quantity": 0, "security_id": "eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ", "subtype": "dividend", "transaction_datetime": null, "type": "cash", "unofficial_currency_code": null }, { "account_id": "rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj", "amount": -1289.01, "cancel_transaction_id": null, "date": "2020-05-28", "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", "transaction_datetime": "2020-05-28T15:10:09Z", "type": "sell", "unofficial_currency_code": null } ], "request_id": "iv4q3ZlytOOthkv", "securities": [ { "cfi_code": "CIOGES", "close_price": 27, "close_price_as_of": null, "cusip": "577130834", "fixed_income": null, "industry": "Investment Trusts or Mutual Funds", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US5771308344", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Matthews Pacific Tiger Fund Insti Class", "option_contract": null, "proxy_security_id": null, "sector": "Miscellaneous", "security_id": "JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP", "sedol": null, "subtype": "mutual fund", "ticker_symbol": "MIPTX", "type": "mutual fund", "unofficial_currency_code": null, "update_datetime": null }, { "cfi_code": "ESVUFR", "close_price": 34.73, "close_price_as_of": null, "cusip": "84470P109", "fixed_income": null, "industry": "Regional Banks", "institution_id": null, "institution_security_id": null, "is_cash_equivalent": false, "isin": "US84470P1093", "iso_currency_code": "USD", "market_identifier_code": "XNAS", "name": "Southside Bancshares Inc.", "option_contract": null, "proxy_security_id": null, "sector": "Finance", "security_id": "eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ", "sedol": null, "subtype": "common stock", "ticker_symbol": "SBSI", "type": "equity", "unofficial_currency_code": null, "update_datetime": null } ], "total_investment_transactions": 2 } } }, "schema": { "$ref": "#/components/schemas/ProcessorInvestmentsTransactionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get investment transactions data", "tags": [ "plaid" ] } }, "/processor/liabilities/get": { "post": { "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`.\n\nThe 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`.\n\nNote: 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.", "externalDocs": { "url": "/api/processor-partners/#processorliabilitiesget" }, "operationId": "processorLiabilitiesGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorLiabilitiesGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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_balance": 1708.77, "last_statement_issue_date": "2019-05-28", "minimum_payment_amount": 20, "next_payment_due_date": "2020-05-28" } ], "mortgage": [], "student": [] }, "request_id": "dTnnm60WgKGLnKL" } } }, "schema": { "$ref": "#/components/schemas/ProcessorLiabilitiesGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Liabilities data", "tags": [ "plaid" ] } }, "/processor/signal/decision/report": { "post": { "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.\n\nIf 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.\n\nIf using a Balance-only ruleset, this endpoint will not impact scores (Balance does not use scores), but is necessary to view accurate transaction outcomes and tune rule logic in the Dashboard.", "externalDocs": { "url": "/api/processor-partners/#processorsignaldecisionreport" }, "operationId": "processorSignalDecisionReport", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorSignalDecisionReportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/ProcessorSignalDecisionReportResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Report whether you initiated an ACH transaction", "tags": [ "plaid" ] } }, "/processor/signal/evaluate": { "post": { "description": "Use `/processor/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment and additional risk signals.\n\n`/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/).\n\nNote: 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.", "externalDocs": { "url": "/api/processor-partners/#processorsignalevaluate" }, "operationId": "processorSignalEvaluate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorSignalEvaluateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "core_attributes": { "available_balance": 2000, "current_balance": 2200 }, "request_id": "mdqfuVxeoza6mhu", "ruleset": { "result": "ACCEPT", "ruleset_key": "primary-ruleset", "triggered_rule_details": {} }, "scores": { "bank_initiated_return_risk": { "score": 72 }, "customer_initiated_return_risk": { "score": 9 } }, "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/ProcessorSignalEvaluateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Evaluate a planned ACH transaction", "tags": [ "plaid" ] } }, "/processor/signal/prepare": { "post": { "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.\n\nIf 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.", "externalDocs": { "url": "/api/processor-partners/#processorsignalprepare" }, "operationId": "processorSignalPrepare", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorSignalPrepareRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/ProcessorSignalPrepareResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Opt-in a processor token to Signal", "tags": [ "plaid" ] } }, "/processor/signal/return/report": { "post": { "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.\n\nIf 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.", "externalDocs": { "url": "/api/processor-partners/#processorsignalreturnreport" }, "operationId": "processorSignalReturnReport", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorSignalReturnReportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/ProcessorSignalReturnReportResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Report a return for an ACH transaction", "tags": [ "plaid" ] } }, "/processor/stripe/bank_account_token/create": { "post": { "description": "\nUsed 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/).\n\nNote 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`.\n\nTo revoke a bank account token, the entire underlying access token must be revoked using `/item/remove`.", "externalDocs": { "url": "/api/processors/#processorstripebank_account_tokencreate" }, "operationId": "processorStripeBankAccountTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorStripeBankAccountTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "xrQNYZ7Zoh6R7gV", "stripe_bank_account_token": "btok_5oEetfLzPklE1fwJZ7SG" } } }, "schema": { "$ref": "#/components/schemas/ProcessorStripeBankAccountTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create Stripe bank account token", "tags": [ "plaid" ] } }, "/processor/token/create": { "post": { "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`.", "externalDocs": { "url": "/api/processors/#processortokencreate" }, "operationId": "processorTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "processor_token": "processor-sandbox-0asd1-a92nc", "request_id": "xrQNYZ7Zoh6R7gV" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create processor token", "tags": [ "plaid" ] } }, "/processor/token/permissions/get": { "post": { "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.", "externalDocs": { "url": "/api/processors/#processortokenpermissionsget" }, "operationId": "processorTokenPermissionsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTokenPermissionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "products": [ "auth", "balance", "identity" ], "request_id": "xrQNYZ7Zoh6R7gV" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTokenPermissionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get a processor token's product permissions", "tags": [ "plaid" ] } }, "/processor/token/permissions/set": { "post": { "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.", "externalDocs": { "url": "/api/processors/#processortokenpermissionsset" }, "operationId": "processorTokenPermissionsSet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTokenPermissionsSetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "xrQNYZ7Zoh6R7gV" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTokenPermissionsSetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Control a processor's access to products", "tags": [ "plaid" ] } }, "/processor/token/webhook/update": { "post": { "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.", "externalDocs": { "url": "/api/processor-partners/#processortokenwebhookupdate" }, "operationId": "processorTokenWebhookUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTokenWebhookUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "vYK11LNTfRoAMbj" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTokenWebhookUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update a processor token's webhook URL", "tags": [ "plaid" ] } }, "/processor/transactions/get": { "post": { "description": "The `/processor/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.\n\nTransactions 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).\n\nDue 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.\n\nData 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.\n\nNote 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.\n\nTo 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.", "externalDocs": { "url": "/api/processor-partners/#processortransactionsget" }, "operationId": "processorTransactionsGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" }, "request_id": "Wvhy9PZHQLV8njG", "total_transactions": 1, "transactions": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" }, { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 72.1, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ] } } }, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get transaction data", "tags": [ "plaid" ] } }, "/processor/transactions/recurring/get": { "post": { "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.\n\nThis 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.\n\nThis 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.\n\nAfter the initial call, you can call `/processor/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.\n\nTo 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.", "externalDocs": { "url": "/api/processor-partners/#processortransactionsrecurringget" }, "operationId": "processorTransactionsRecurringGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsRecurringGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "inflow_streams": [ { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "average_amount": { "amount": -800, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "Platypus Payroll", "first_date": "2022-02-28", "frequency": "SEMI_MONTHLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": -1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2022-04-30", "merchant_name": null, "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "INCOME_WAGES", "primary": "INCOME" }, "predicted_next_date": "2022-05-15", "status": "MATURE", "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "transaction_ids": [ "nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw", "EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL", "ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd", "QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK", "uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF" ] } ], "outflow_streams": [ { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff", "average_amount": { "amount": 85, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "ConEd Bill Payment", "first_date": "2022-02-04", "frequency": "MONTHLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": 100, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2022-05-02", "merchant_name": "ConEd", "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "RENT_AND_UTILITIES_GAS_AND_ELECTRICITY", "primary": "RENT_AND_UTILITIES" }, "predicted_next_date": "2022-06-02", "status": "MATURE", "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd", "transaction_ids": [ "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR", "jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L", "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l" ] }, { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff", "average_amount": { "amount": 120, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "Costco Annual Membership", "first_date": "2022-01-23", "frequency": "ANNUALLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": 120, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2023-01-22", "merchant_name": "Costco", "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "predicted_next_date": "2024-01-22", "status": "MATURE", "stream_id": "SrBNJZDuUMweodmPmSOeOImwsWt53ZXfJQAfC", "transaction_ids": [ "yqEBJ72cS4jFwcpxJcDuQr94oAQ1R1lMC33D4", "Kz5Hm3cZCgpn4tMEKUGAGD6kAcxMBsEZDSwJJ" ] } ], "request_id": "tbFyCEqkU775ZGG", "updated_datetime": "2022-05-01T00:00:00Z" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsRecurringGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Fetch recurring transaction streams", "tags": [ "plaid" ] } }, "/processor/transactions/refresh": { "post": { "description": "`/processor/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for a processor token. This on-demand extraction takes place in addition to the periodic extractions that automatically occur one or more times per day for any Transactions-enabled processor token. If changes to transactions are discovered after calling `/processor/transactions/refresh`, Plaid will fire a webhook: for `/transactions/sync` users, [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) will be fired if there are any transactions updated, added, or removed. For users of both `/processor/transactions/sync` and `/processor/transactions/get`, [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/products/transactions/#transactions_removed) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/products/transactions/#default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/processor/transactions/get` or `/processor/transactions/sync`. Note that the `/transactions/refresh` endpoint is not supported for Capital One (`ins_128026`) non-depository accounts and will result in a `PRODUCTS_NOT_SUPPORTED` error if called on an Item that contains only non-depository accounts from that institution.\n\nAs 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.\n\n`/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.", "externalDocs": { "url": "/api/processor-partners/#processortransactionsrefresh" }, "operationId": "processorTransactionsRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProcessorTransactionsRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh transaction data", "tags": [ "plaid" ] } }, "/processor/transactions/sync": { "post": { "description": "\nThe `/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.\n\nFor 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/).\n\nThis endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.\n\nWhen 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.\n\nIf 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.\n\nPlaid 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.\n\nTo be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.\n\nTo 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.", "externalDocs": { "url": "/api/processor-partners/#processortransactionssync" }, "operationId": "processorTransactionsSync", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ], "has_more": false, "modified": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" } ], "next_cursor": "tVUUL15lYQN5rBnfDIc1I8xudpGdIlw9nsgeXWvhOfkECvUeR663i3Dt1uf/94S8ASkitgLcIiOSqNwzzp+bh89kirazha5vuZHBb2ZA5NtCDkkV", "removed": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "transaction_id": "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l" } ], "request_id": "45QSn", "transactions_update_status": "HISTORICAL_UPDATE_COMPLETE" } } }, "schema": { "$ref": "#/components/schemas/ProcessorTransactionsSyncResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get incremental transaction updates on a processor token", "tags": [ "plaid" ] } }, "/profile/network_status/get": { "post": { "description": "The `/profile/network_status/get` endpoint can be used to check whether Plaid has a matching profile for the user.", "externalDocs": { "url": "/api/profile/#networkstatusget" }, "operationId": "profileNetworkStatusGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProfileNetworkStatusGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "network_status": "RETURNING_USER", "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/ProfileNetworkStatusGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Check a user's Plaid Network status", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/protect/compute": { "post": { "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.\n\nThe 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.", "externalDocs": { "url": "/api/products/protect/#protectcompute" }, "operationId": "protectCompute", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtectComputeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false }, "model": "ti-link-session-2.0", "request_id": "saKrIBuEB9qJZng", "score": 86 } } }, "schema": { "$ref": "#/components/schemas/ProtectComputeResponse" } } }, "description": "OK" } }, "summary": "Compute Protect Trust Index scores and subscores", "tags": [ "plaid" ] } }, "/protect/event/get": { "post": { "deprecated": true, "description": "Get information about a user event including Trust Index score and fraud attributes.", "externalDocs": { "url": "none" }, "operationId": "protectEventGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtectEventGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "event_id": "ptevt_cYNnF8xYE1v1om", "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "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", "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } } } }, "schema": { "$ref": "#/components/schemas/ProtectEventGetResponse" } } }, "description": "OK" } }, "summary": "Get information about a user event", "tags": [ "plaid" ] } }, "/protect/event/send": { "post": { "deprecated": true, "description": "Send a new event to enrich user data and optionally get a Trust Index score for the event.", "externalDocs": { "url": "none" }, "operationId": "protectEventSend", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtectEventSendRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "event_id": "ptevt_cYNnF8xYE1v1om", "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "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", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } } } }, "schema": { "$ref": "#/components/schemas/ProtectEventSendResponse" } } }, "description": "OK" } }, "summary": "Send a new event to enrich user data", "tags": [ "plaid" ] } }, "/protect/report/create": { "post": { "description": "Use this endpoint to create a Protect report to document fraud incidents, investigation outcomes, or other risk events.\nThis endpoint allows you to report various types of incidents including account takeovers, identity fraud, unauthorized transactions, and other security events.\nThe reported data helps improve fraud detection models and provides valuable feedback to enhance the overall security of the Plaid network.\nReports can be created for confirmed incidents that have been fully investigated, or for suspected incidents that require further review.\nYou can associate reports with specific users, sessions, or transactions to provide comprehensive context about the incident.\nEach 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.", "externalDocs": { "url": "/api/products/protect/#protectreportcreate" }, "operationId": "protectReportCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtectReportCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "report_id": "ptrpt_42cF1MNo42r9Xj", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/ProtectReportCreateResponse" } } }, "description": "OK" } }, "summary": "Create a Protect report", "tags": [ "plaid" ] } }, "/protect/user/insights/get": { "post": { "description": "Use this endpoint to get basic information about a user as it relates to their fraud profile with Protect.", "externalDocs": { "url": "/api/products/protect/#protectuserinsightsget" }, "operationId": "protectUserInsightsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProtectUserInsightsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "latest_scored_event": { "event_id": "ptevt_cYNnF8xYE1v1om", "fraud_attributes": { "link_session.linked_bank_accounts.connected_apps.days_since_first_connection": 582, "link_session.linked_bank_accounts.user_pi_matches_owners": true, "session.challenged_with_mfa": false, "user.bank_accounts.num_of_frozen_or_restricted_accounts": 0, "user.link_sessions.days_since_first_link_session": 150, "user.linked_bank_accounts.num_family_names": 1, "user.linked_bank_accounts.num_of_connected_banks": 1, "user.pi.email.history_yrs": 7.03, "user.pi.email.num_social_networks_linked": 12, "user.pi.ssn.user_likely_has_better_ssn": false }, "timestamp": "2020-07-24T03:26:02Z", "trust_index": { "model": "trust_index.2.0.0", "score": 86, "subscores": { "bank_account_insights": { "score": 85 }, "device_and_connection": { "score": 87 } } } }, "request_id": "saKrIBuEB9qJZng", "user_id": "plaid-user-6009db6e" } } }, "schema": { "$ref": "#/components/schemas/ProtectUserInsightsGetResponse" } } }, "description": "OK" } }, "summary": "Get Protect user insights", "tags": [ "plaid" ] } }, "/sandbox/bank_income/fire_webhook": { "post": { "description": "Use the `/sandbox/bank_income/fire_webhook` endpoint to manually trigger a Bank Income webhook in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxbankincomefire_webhook" }, "operationId": "sandboxBankIncomeFireWebhook", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxBankIncomeFireWebhookRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxBankIncomeFireWebhookResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Manually fire a Bank Income webhook in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/bank_transfer/fire_webhook": { "post": { "description": "Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.", "externalDocs": { "url": "/bank-transfers/reference/#sandboxbank_transferfire_webhook" }, "operationId": "sandboxBankTransferFireWebhook", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxBankTransferFireWebhookRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxBankTransferFireWebhookResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Manually fire a Bank Transfer webhook", "tags": [ "plaid" ] } }, "/sandbox/bank_transfer/simulate": { "post": { "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.", "externalDocs": { "url": "/bank-transfers/reference/#sandboxbank_transfersimulate" }, "operationId": "sandboxBankTransferSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxBankTransferSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "LmHYMwBhZUvsM03" } } }, "schema": { "$ref": "#/components/schemas/SandboxBankTransferSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate a bank transfer event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/cra/cashflow_updates/update": { "post": { "description": "Use the `/sandbox/cra/cashflow_updates/update` endpoint to manually trigger an update for Cash Flow Updates (Monitoring) in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxcracashflow_updatesupdate" }, "operationId": "sandboxCraCashflowUpdatesUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxCraCashflowUpdatesUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxCraCashflowUpdatesUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Trigger an update for Cash Flow Updates", "tags": [ "plaid" ] } }, "/sandbox/income/fire_webhook": { "post": { "description": "Use the `/sandbox/income/fire_webhook` endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxincomefire_webhook" }, "operationId": "sandboxIncomeFireWebhook", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxIncomeFireWebhookRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxIncomeFireWebhookResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Manually fire an Income webhook", "tags": [ "plaid" ] } }, "/sandbox/item/application/seed": { "post": { "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`.\n\nThe `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`.", "operationId": "sandboxItemApplicationSeed", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxItemApplicationSeedRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "item_id": "9xGbdRaG3gianaxoELGpILQ7drV3RnclMGdKJ", "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/SandboxItemApplicationSeedResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Seed a connected application for a Permissions Manager sandbox item", "tags": [ "plaid" ] } }, "/sandbox/item/fire_webhook": { "post": { "description": "The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:\n\n`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.\n\n`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.\n\n`SMS_MICRODEPOSITS_VERIFICATION`: Fired when a given Same-Day Micro-deposit Item is verified via SMS verification.\n\n`LOGIN_REPAIRED`: Fired when an Item recovers from the `ITEM_LOGIN_REQUIRED` without the user going through update mode in your app.\n\n`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.\n\n`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.\n\n`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.\n\n`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.\n\n`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.\n\n`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.\n\n`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.\n\nNote 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`).", "externalDocs": { "url": "/api/sandbox/#sandboxitemfire_webhook" }, "operationId": "sandboxItemFireWebhook", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxItemFireWebhookRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP", "webhook_fired": true } } }, "schema": { "$ref": "#/components/schemas/SandboxItemFireWebhookResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Fire a test webhook", "tags": [ "plaid" ] } }, "/sandbox/item/reset_login": { "post": { "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.\nIn the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.", "externalDocs": { "url": "/api/sandbox/#sandboxitemreset_login" }, "operationId": "sandboxItemResetLogin", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxItemResetLoginRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV", "reset_login": true } } }, "schema": { "$ref": "#/components/schemas/SandboxItemResetLoginResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Force a Sandbox Item into an error state", "tags": [ "plaid" ] } }, "/sandbox/item/set_verification_status": { "post": { "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.\n\nFor more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).", "externalDocs": { "url": "/api/sandbox/#sandboxitemset_verification_status" }, "operationId": "sandboxItemSetVerificationStatus", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxItemSetVerificationStatusRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/SandboxItemSetVerificationStatusResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Set verification status for Sandbox account", "tags": [ "plaid" ] } }, "/sandbox/oauth/select_accounts": { "post": { "description": "Save the selected accounts when connecting to the Platypus OAuth institution", "operationId": "sandboxOauthSelectAccounts", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxOauthSelectAccountsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxOauthSelectAccountsResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Save the selected accounts when connecting to the Platypus OAuth institution", "tags": [ "plaid" ] } }, "/sandbox/payment/simulate": { "post": { "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.", "externalDocs": { "url": "/api/sandbox/#sandboxpaymentsimulate" }, "operationId": "sandboxPaymentSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxPaymentSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "new_status": "PAYMENT_STATUS_INITIATED", "old_status": "PAYMENT_STATUS_INPUT_NEEDED", "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/SandboxPaymentSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Simulate a payment event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/payment_profile/reset_login": { "post": { "deprecated": true, "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.\n\n 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.\n\n 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).", "externalDocs": { "url": "/api/sandbox/#sandboxpayment_profilereset_login" }, "operationId": "sandboxPaymentProfileResetLogin", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxPaymentProfileResetLoginRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV", "reset_login": true } } }, "schema": { "$ref": "#/components/schemas/SandboxPaymentProfileResetLoginResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Reset the login of a Payment Profile", "tags": [ "plaid" ] } }, "/sandbox/processor_token/create": { "post": { "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.", "externalDocs": { "url": "/api/sandbox/#sandboxprocessor_tokencreate" }, "operationId": "sandboxProcessorTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxProcessorTokenCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "processor_token": "processor-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d", "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/SandboxProcessorTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Create a test Item and processor token", "tags": [ "plaid" ] } }, "/sandbox/public_token/create": { "post": { "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/).", "externalDocs": { "url": "/api/sandbox/#sandboxpublic_tokencreate" }, "operationId": "sandboxPublicTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxPublicTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "public_token": "public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d", "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/SandboxPublicTokenCreateResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Create a test Item", "tags": [ "plaid" ] } }, "/sandbox/transactions/create": { "post": { "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.\n\nThis 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.\n\nCustom transactions are only applied to the depository account. Support for per-account targeting may be added in the future.", "externalDocs": { "url": "/api/sandbox/#sandboxtransactionscreate" }, "operationId": "sandboxTransactionsCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransactionsCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransactionsCreateResponse" } } }, "description": "OK" }, "400": { "content": { "application/json": { "examples": { "invalid_dates": { "value": { "display_message": "Transaction and posted dates must be within the last 14 days. The posted date cannot be before the transaction date.", "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.", "error_type": "INVALID_REQUEST", "request_id": "m8MDnv9okwxFNBV", "status": 400 } }, "too_many_transactions": { "value": { "display_message": "The request contains too many transactions.", "error_code": "INVALID_FIELD", "error_message": "The request contains too many transactions.", "error_type": "INVALID_REQUEST", "request_id": "m8MDnv9okwxFNBV", "status": 400 } } }, "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Invalid request" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create sandbox transactions", "tags": [ "plaid" ] } }, "/sandbox/transfer/fire_webhook": { "post": { "description": "Use the `/sandbox/transfer/fire_webhook` endpoint to manually trigger a `TRANSFER_EVENTS_UPDATE` webhook in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferfire_webhook" }, "operationId": "sandboxTransferFireWebhook", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferFireWebhookRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferFireWebhookResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Manually fire a Transfer webhook", "tags": [ "plaid" ] } }, "/sandbox/transfer/ledger/deposit/simulate": { "post": { "description": "Use the `/sandbox/transfer/ledger/deposit/simulate` endpoint to simulate a ledger deposit event in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferledgerdepositsimulate" }, "operationId": "sandboxTransferLedgerDepositSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerDepositSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerDepositSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate a ledger deposit event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/transfer/ledger/simulate_available": { "post": { "description": "Use the `/sandbox/transfer/ledger/simulate_available` endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferledgersimulate_available" }, "operationId": "sandboxTransferLedgerSimulateAvailable", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerSimulateAvailableRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerSimulateAvailableResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate converting pending balance to available balance", "tags": [ "plaid" ] } }, "/sandbox/transfer/ledger/withdraw/simulate": { "post": { "description": "Use the `/sandbox/transfer/ledger/withdraw/simulate` endpoint to simulate a ledger withdraw event in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferledgerwithdrawsimulate" }, "operationId": "sandboxTransferLedgerWithdrawSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerWithdrawSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferLedgerWithdrawSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate a ledger withdraw event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/transfer/refund/simulate": { "post": { "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.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferrefundsimulate" }, "operationId": "sandboxTransferRefundSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferRefundSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferRefundSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate a refund event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/transfer/repayment/simulate": { "post": { "description": "Use the `/sandbox/transfer/repayment/simulate` endpoint to trigger the creation of a repayment. As a side effect of calling this route, a repayment is created that includes all unreimbursed returns of guaranteed transfers. If there are no such returns, an 400 error is returned.", "externalDocs": { "url": "/api/sandbox/#sandboxtransferrepaymentsimulate" }, "operationId": "sandboxTransferRepaymentSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferRepaymentSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4vAbY6XyqqoPQLB" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferRepaymentSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Trigger the creation of a repayment", "tags": [ "plaid" ] } }, "/sandbox/transfer/simulate": { "post": { "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.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfersimulate" }, "operationId": "sandboxTransferSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate a transfer event in Sandbox", "tags": [ "plaid" ] } }, "/sandbox/transfer/sweep/simulate": { "post": { "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`.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfersweepsimulate" }, "operationId": "sandboxTransferSweepSimulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferSweepSimulateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu", "sweep": { "amount": "12.34", "created": "2020-08-06T17:27:15Z", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "id": "d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d", "iso_currency_code": "USD", "network_trace_id": null, "settled": "2020-08-07" } } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferSweepSimulateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Simulate creating a sweep", "tags": [ "plaid" ] } }, "/sandbox/transfer/test_clock/advance": { "post": { "description": "Use the `/sandbox/transfer/test_clock/advance` endpoint to advance a `test_clock` in the Sandbox environment.\n\nA 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`.\n\nIf a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.\n\nFor 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.\n\nThe 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`.\n\nFor 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.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfertest_clockadvance" }, "operationId": "sandboxTransferTestClockAdvance", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockAdvanceRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockAdvanceResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Advance a test clock", "tags": [ "plaid" ] } }, "/sandbox/transfer/test_clock/create": { "post": { "description": "Use the `/sandbox/transfer/test_clock/create` endpoint to create a `test_clock` in the Sandbox environment.\n\nA 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.\n\nA test clock can be associated with up to 5 recurring transfers.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfertest_clockcreate" }, "operationId": "sandboxTransferTestClockCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu", "test_clock": { "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c", "virtual_time": "2006-01-02T15:04:05Z" } } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a test clock", "tags": [ "plaid" ] } }, "/sandbox/transfer/test_clock/get": { "post": { "description": "Use the `/sandbox/transfer/test_clock/get` endpoint to get a `test_clock` in the Sandbox environment.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfertest_clockget" }, "operationId": "sandboxTransferTestClockGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu", "test_clock": { "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c", "virtual_time": "2006-01-02T15:04:05Z" } } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get a test clock", "tags": [ "plaid" ] } }, "/sandbox/transfer/test_clock/list": { "post": { "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.", "externalDocs": { "url": "/api/sandbox/#sandboxtransfertest_clocklist" }, "operationId": "sandboxTransferTestClockList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu", "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" } ] } } }, "schema": { "$ref": "#/components/schemas/SandboxTransferTestClockListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List test clocks", "tags": [ "plaid" ] } }, "/sandbox/user/reset_login": { "post": { "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.\nIn the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.", "externalDocs": { "url": "/api/sandbox/#sandboxuserreset_login" }, "operationId": "sandboxUserResetLogin", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SandboxUserResetLoginRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "n7XQnv8ozwyFPBC" } } }, "schema": { "$ref": "#/components/schemas/SandboxUserResetLoginResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Force item(s) for a Sandbox User into an error state", "tags": [ "plaid" ] } }, "/session/token/create": { "post": { "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).", "externalDocs": { "url": "/api/products/layer/#sessiontokencreate" }, "operationId": "sessionTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionTokenCreateRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "link": { "expiration": "2020-03-27T12:56:34Z", "link_token": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176" }, "request_id": "XQVgFigpGHXkb0b" } } }, "schema": { "$ref": "#/components/schemas/SessionTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a Link token for Layer", "tags": [ "plaid" ] } }, "/signal/decision/report": { "post": { "description": "After you call `/signal/evaluate`, Plaid will normally infer the outcome from your Signal Rules. However, if you are not using Signal Rules, if the Signal Rules outcome was `REVIEW`, or if you take a different action than the one determined by the Signal Rules, you will need to call `/signal/decision/report`. This helps improve Signal Transaction Score accuracy for your account and is necessary for proper functioning of the rule performance and rule tuning capabilities in the Dashboard. If your effective decision changes after calling `/signal/decision/report` (for example, you indicated that you accepted a transaction, but later on, your payment processor rejected it, so it was never initiated), call `/signal/decision/report` again for the transaction to correct Plaid's records.\n\nIf you are using Plaid Transfer as your payment processor, you also do not need to call `/signal/decision/report`, as Plaid can infer outcomes from your Transfer activity.\n\nIf using a Balance-only ruleset, this endpoint will not impact scores (Balance does not use scores), but is necessary to view accurate transaction outcomes and tune rule logic in the Dashboard.", "externalDocs": { "url": "/api/products/signal#signaldecisionreport" }, "operationId": "signalDecisionReport", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignalDecisionReportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SignalDecisionReportResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Report whether you initiated an ACH transaction", "tags": [ "plaid" ] } }, "/signal/evaluate": { "post": { "description": "Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment and additional risk signals.\n\nBefore 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).\n\n`/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/).\n\nNote: 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.", "externalDocs": { "url": "/api/products/signal#signalevaluate" }, "operationId": "signalEvaluate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignalEvaluateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "core_attributes": { "available_balance": 2200, "current_balance": 2000 }, "request_id": "mdqfuVxeoza6mhu", "ruleset": { "result": "REROUTE", "ruleset_key": "onboarding_flow", "triggered_rule_details": { "internal_note": "Rerouting customer to different payment method, since bank risk score is too high" } }, "scores": { "bank_initiated_return_risk": { "score": 82 }, "customer_initiated_return_risk": { "score": 9 } }, "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/SignalEvaluateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Evaluate a planned ACH transaction", "tags": [ "plaid" ] } }, "/signal/prepare": { "post": { "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.\n\nIf your integration is purely Balance-only, this endpoint will have no effect, as Balance-only rulesets do not calculate a Signal Transaction Score.\n\nIf run on an Item that is already initialized with `signal`, this endpoint will return a 200 response and will not modify the Item.", "externalDocs": { "url": "/api/products/signal#signalprepare" }, "operationId": "signalPrepare", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignalPrepareRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SignalPrepareResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Opt-in an Item to Signal Transaction Scores", "tags": [ "plaid" ] } }, "/signal/return/report": { "post": { "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.", "externalDocs": { "url": "/api/products/signal#signalreturnreport" }, "operationId": "signalReturnReport", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignalReturnReportRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/SignalReturnReportResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Report a return for an ACH transaction", "tags": [ "plaid" ] } }, "/signal/schedule": { "post": { "description": "Use `/signal/schedule` to schedule a planned ACH transaction.", "externalDocs": { "url": "none" }, "operationId": "signalSchedule", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SignalScheduleRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "optimal_date": "2025-01-17", "recommendations": [ { "date": "2025-01-15", "rank": 2, "recommendation": "RECOMMENDED" }, { "date": "2025-01-16", "rank": null, "recommendation": "NOT_RECOMMENDED" }, { "date": "2025-01-17", "rank": 1, "recommendation": "RECOMMENDED" }, { "date": "2025-01-20", "rank": null, "recommendation": "NOT_RECOMMENDED" }, { "date": "2025-01-21", "rank": null, "recommendation": "UNKNOWN" } ], "request_id": "mdqfuVxeoza6mhu", "warnings": [] } } }, "schema": { "$ref": "#/components/schemas/SignalScheduleResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Schedule a planned ACH transaction", "tags": [ "plaid" ] } }, "/statements/download": { "post": { "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.", "externalDocs": { "url": "/api/products/statements#statementsdownload" }, "operationId": "statementsDownload", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatementsDownloadRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/pdf": { "schema": { "$ref": "#/components/schemas/StatementsDownloadResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a single statement.", "tags": [ "plaid" ] } }, "/statements/list": { "post": { "description": "The `/statements/list` endpoint retrieves a list of all statements associated with an Item.", "externalDocs": { "url": "/api/products/statements#statementslist" }, "operationId": "statementsList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatementsListRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "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": [ { "date_posted": "2023-05-01", "month": 5, "statement_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D", "year": 2023 } ] } ], "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "request_id": "eYupqX1mZkEuQRx" } } }, "schema": { "$ref": "#/components/schemas/StatementsListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a list of all statements associated with an Item.", "tags": [ "plaid" ] } }, "/statements/refresh": { "post": { "description": "`/statements/refresh` initiates an on-demand extraction to fetch the statements for the provided dates.", "externalDocs": { "url": "/api/products/statements#statementsrefresh" }, "operationId": "statementsRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatementsRefreshRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "eYupqX1mZkEuQRx" } } }, "schema": { "$ref": "#/components/schemas/StatementsRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh statements data.", "tags": [ "plaid" ] } }, "/transactions/enrich": { "post": { "description": "The `/transactions/enrich` endpoint enriches raw transaction data generated by your own banking products or retrieved from other non-Plaid sources.", "externalDocs": { "url": "/api/products/enrich/#transactionsenrich" }, "operationId": "transactionsEnrich", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionsEnrichRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "enriched_transactions": [ { "amount": 72.1, "description": "PURCHASE WM SUPERCENTER #1700", "direction": "OUTFLOW", "enrichments": { "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "phone_number": "+18009256278", "type": "merchant", "website": "walmart.com" } ], "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_name": "Walmart", "payment_channel": "in store", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "phone_number": "+18009256278", "website": "walmart.com" }, "id": "6135818adda16500147e7c1d", "iso_currency_code": "USD" }, { "amount": 28.34, "description": "DD DOORDASH BURGERKIN 855-123-4567 CA", "direction": "OUTFLOW", "enrichments": { "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "phone_number": "+18001234567", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "phone_number": null, "type": "merchant", "website": "burgerking.com" } ], "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_name": "Burger King", "payment_channel": "online", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "phone_number": null, "website": "burgerking.com" }, "id": "3958434bhde9384bcmeo3401", "iso_currency_code": "USD" } ], "request_id": "Wvhy9PZHQLV8njG" } } }, "schema": { "$ref": "#/components/schemas/TransactionsEnrichResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Enrich locally-held transaction data", "tags": [ "plaid" ] } }, "/transactions/get": { "post": { "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.\nThe `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products/investments/) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.\nTransactions 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).\nDue 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.\nData 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.\n\n\nNote 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.", "externalDocs": { "url": "/api/products/transactions/#transactionsget" }, "operationId": "transactionsGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransactionsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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" } ], "item": { "auth_method": "INSTANT_AUTH", "available_products": [ "balance", "identity", "investments" ], "billed_products": [ "assets", "auth", "liabilities", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_3", "institution_name": "Chase", "item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6", "update_type": "background", "webhook": "https://www.genericwebhookurl.com/webhook" }, "request_id": "45QSn", "total_transactions": 1, "transactions": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" }, { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 72.1, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ] } } }, "schema": { "$ref": "#/components/schemas/TransactionsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get transaction data", "tags": [ "plaid" ] } }, "/transactions/recurring/deactivate": {}, "/transactions/recurring/get": { "post": { "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.\n\nThis 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.\n\nThis 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`).\n\nWhen 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.\n\nAfter the initial call, you can call `/transactions/recurring/get` endpoint at any point in the future to retrieve the latest summary of recurring streams. Listen to the [`RECURRING_TRANSACTIONS_UPDATE`](https://plaid.com/docs/api/products/transactions/#recurring_transactions_update) webhook to be notified when new updates are available.", "externalDocs": { "url": "/api/products/transactions/#transactionsrecurringget" }, "operationId": "transactionsRecurringGet", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransactionsRecurringGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "inflow_streams": [ { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "average_amount": { "amount": -800, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "Platypus Payroll", "first_date": "2022-02-28", "frequency": "SEMI_MONTHLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": -1000, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2022-04-30", "merchant_name": null, "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "INCOME_WAGES", "primary": "INCOME" }, "predicted_next_date": "2022-05-15", "status": "MATURE", "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "transaction_ids": [ "nkeaNrDGrhdo6c4qZWDA8ekuIPuJ4Avg5nKfw", "EfC5ekksdy30KuNzad2tQupW8WIPwvjXGbGHL", "ozfvj3FFgp6frbXKJGitsDzck5eWQH7zOJBYd", "QvdDE8AqVWo3bkBZ7WvCd7LskxVix8Q74iMoK", "uQozFPfMzibBouS9h9tz4CsyvFll17jKLdPAF" ] } ], "outflow_streams": [ { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff", "average_amount": { "amount": 85, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "ConEd Bill Payment", "first_date": "2022-02-04", "frequency": "MONTHLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": 100, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2022-05-02", "merchant_name": "ConEd", "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "RENT_AND_UTILITIES_GAS_AND_ELECTRICITY", "primary": "RENT_AND_UTILITIES" }, "predicted_next_date": "2022-06-02", "status": "MATURE", "stream_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nd", "transaction_ids": [ "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "HPDnUVgI5Pa0YQSl0rxwYRwVXeLyJXTWDAvpR", "jEPoSfF8xzMClE9Ohj1he91QnvYoSdwg7IT8L", "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l" ] }, { "account_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDff", "average_amount": { "amount": 120, "iso_currency_code": "USD", "unofficial_currency_code": null }, "category": null, "category_id": null, "description": "Costco Annual Membership", "first_date": "2022-01-23", "frequency": "ANNUALLY", "is_active": true, "is_user_modified": false, "last_amount": { "amount": 120, "iso_currency_code": "USD", "unofficial_currency_code": null }, "last_date": "2023-01-22", "merchant_name": "Costco", "personal_finance_category": { "confidence_level": "UNKNOWN", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "predicted_next_date": "2024-01-22", "status": "MATURE", "stream_id": "SrBNJZDuUMweodmPmSOeOImwsWt53ZXfJQAfC", "transaction_ids": [ "yqEBJ72cS4jFwcpxJcDuQr94oAQ1R1lMC33D4", "Kz5Hm3cZCgpn4tMEKUGAGD6kAcxMBsEZDSwJJ" ] } ], "request_id": "tbFyCEqkU775ZGG", "updated_datetime": "2022-05-01T00:00:00Z" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRecurringGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Fetch recurring transaction streams", "tags": [ "plaid" ] } }, "/transactions/refresh": { "post": { "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`.\n\nIf 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`.\n\nNote 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.\n\nAs 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.\n\n`/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.", "externalDocs": { "url": "/api/products/transactions/#transactionsrefresh" }, "operationId": "transactionsRefresh", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionsRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "1vwmF5TBQwiqfwP" } } }, "schema": { "$ref": "#/components/schemas/TransactionsRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh transaction data", "tags": [ "plaid" ] } }, "/transactions/sync": { "post": { "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.\n\nFor 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/).\n\nThis endpoint supports `credit`, `depository`, and some `loan`-type accounts (only those with account subtype `student`). For `investments` accounts, use `/investments/transactions/get` instead.\n\nWhen 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.\n\nIf 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.\n\nPlaid 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.\n\nTo be alerted when new transactions are available, listen for the [`SYNC_UPDATES_AVAILABLE`](https://plaid.com/docs/api/products/transactions/#sync_updates_available) webhook.", "externalDocs": { "url": "/api/products/transactions/#transactionssync" }, "operationId": "transactionsSync", "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransactionsSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "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, "authorized_date": "2023-09-22", "authorized_datetime": "2023-09-22T10:34:50Z", "check_number": null, "counterparties": [ { "confidence_level": "VERY_HIGH", "entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "name": "Walmart", "type": "merchant", "website": "walmart.com" } ], "date": "2023-09-24", "datetime": "2023-09-24T11:01:01Z", "iso_currency_code": "USD", "location": { "address": "13425 Community Rd", "city": "Poway", "country": "US", "lat": 32.959068, "lon": -117.037666, "postal_code": "92064", "region": "CA", "store_number": "1700" }, "logo_url": "https://plaid-merchant-logos.plaid.com/walmart_1100.png", "merchant_entity_id": "O5W5j4dN9OR3E6ypQmjdkWZZRoXEzVMz2ByWM", "merchant_name": "Walmart", "name": "PURCHASE WM SUPERCENTER #1700", "payment_channel": "in store", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": false, "pending_transaction_id": "no86Eox18VHMvaOVL7gPUM9ap3aR1LsAVZ5nc", "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "GENERAL_MERCHANDISE_SUPERSTORES", "primary": "GENERAL_MERCHANDISE" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_GENERAL_MERCHANDISE.png", "transaction_code": null, "transaction_id": "lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje", "transaction_type": "place", "unofficial_currency_code": null, "website": "walmart.com" } ], "has_more": false, "modified": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "account_owner": null, "amount": 28.34, "authorized_date": "2023-09-27", "authorized_datetime": "2023-09-27T08:01:58Z", "check_number": null, "counterparties": [ { "confidence_level": "HIGH", "entity_id": "YNRJg5o2djJLv52nBA1Yn1KpL858egYVo4dpm", "logo_url": "https://plaid-counterparty-logos.plaid.com/doordash_1.png", "name": "DoorDash", "type": "marketplace", "website": "doordash.com" }, { "confidence_level": "VERY_HIGH", "entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "name": "Burger King", "type": "merchant", "website": "burgerking.com" } ], "date": "2023-09-28", "datetime": "2023-09-28T15:10:09Z", "iso_currency_code": "USD", "location": { "address": null, "city": null, "country": null, "lat": null, "lon": null, "postal_code": null, "region": null, "store_number": null }, "logo_url": "https://plaid-merchant-logos.plaid.com/burger_king_155.png", "merchant_entity_id": "mVrw538wamwdm22mK8jqpp7qd5br0eeV9o4a1", "merchant_name": "Burger King", "name": "Dd Doordash Burgerkin", "payment_channel": "online", "payment_meta": { "by_order_of": null, "payee": null, "payer": null, "payment_method": null, "payment_processor": null, "ppd_id": null, "reason": null, "reference_number": null }, "pending": true, "pending_transaction_id": null, "personal_finance_category": { "confidence_level": "VERY_HIGH", "detailed": "FOOD_AND_DRINK_FAST_FOOD", "primary": "FOOD_AND_DRINK" }, "personal_finance_category_icon_url": "https://plaid-category-icons.plaid.com/PFC_FOOD_AND_DRINK.png", "transaction_code": null, "transaction_id": "yhnUVvtcGGcCKU0bcz8PDQr5ZUxUXebUvbKC0", "transaction_type": "digital", "unofficial_currency_code": null, "website": "burgerking.com" } ], "next_cursor": "tVUUL15lYQN5rBnfDIc1I8xudpGdIlw9nsgeXWvhOfkECvUeR663i3Dt1uf/94S8ASkitgLcIiOSqNwzzp+bh89kirazha5vuZHBb2ZA5NtCDkkV", "removed": [ { "account_id": "BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp", "transaction_id": "CmdQTNgems8BT1B7ibkoUXVPyAeehT3Tmzk0l" } ], "request_id": "Wvhy9PZHQLV8njG", "transactions_update_status": "HISTORICAL_UPDATE_COMPLETE" } } }, "schema": { "$ref": "#/components/schemas/TransactionsSyncResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get incremental transaction updates on an Item", "tags": [ "plaid" ] } }, "/transfer/authorization/cancel": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/initiating-transfers/#transferauthorizationcancel" }, "operationId": "transferAuthorizationCancel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferAuthorizationCancelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferAuthorizationCancelResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Cancel a transfer authorization", "tags": [ "plaid" ] } }, "/transfer/authorization/create": { "post": { "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.)\n\nThere are four possible outcomes to calling this endpoint:\n\n - If the `authorization.decision` in the response is `declined`, the proposed transfer has failed the risk check and you cannot proceed with the transfer.\n\n - 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.\n\n - 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`.\n\n - 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.\n\nIn Plaid's Sandbox environment the decisions will be returned as follows:\n\n - To approve a transfer with `null` rationale code, make an authorization request with an `amount` less than the available balance in the account.\n\n - 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).\n\n - To get an authorization decision of `user_action_required`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).\n\n - 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.\n\n - 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.", "externalDocs": { "url": "/api/products/transfer/initiating-transfers/#transferauthorizationcreate" }, "operationId": "transferAuthorizationCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferAuthorizationCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "authorization": { "created": "2020-08-06T17:27:15Z", "decision": "approved", "decision_rationale": null, "guarantee_decision": null, "guarantee_decision_rationale": null, "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "payment_risk": null, "proposed_transfer": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "credit_funds_source": "sweep", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "network": "ach", "origination_account_id": "", "originator_client_id": null, "requested_amount": "12.34", "type": "credit", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferAuthorizationCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a transfer authorization", "tags": [ "plaid" ] } }, "/transfer/balance/get": { "post": { "deprecated": true, "description": "(Deprecated) Use the `/transfer/balance/get` endpoint to view a balance held with Plaid.", "externalDocs": { "url": "/api/products/transfer/balance/#transferbalanceget" }, "operationId": "transferBalanceGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferBalanceGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "balance": { "available": "1721.70", "type": "prefunded_rtp_credits" }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferBalanceGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "(Deprecated) Retrieve a balance held with Plaid", "tags": [ "plaid" ] } }, "/transfer/cancel": { "post": { "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`.", "externalDocs": { "url": "/api/products/transfer/initiating-transfers/#transfercancel" }, "operationId": "transferCancel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferCancelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferCancelResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Cancel a transfer", "tags": [ "plaid" ] } }, "/transfer/capabilities/get": { "post": { "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`.", "externalDocs": { "url": "/api/products/transfer/account-linking/#transfercapabilitiesget" }, "operationId": "transferCapabilitiesGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferCapabilitiesGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "institution_supported_networks": { "rfp": { "debit": true }, "rtp": { "credit": true } }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferCapabilitiesGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get RTP eligibility information of a transfer", "tags": [ "plaid" ] } }, "/transfer/configuration/get": { "post": { "description": "Use the `/transfer/configuration/get` endpoint to view your transfer product configurations.", "externalDocs": { "url": "/api/products/transfer/metrics/#transferconfigurationget" }, "operationId": "transferConfigurationGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferConfigurationGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "iso_currency_code": "USD", "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", "max_single_transfer_amount": "", "max_single_transfer_credit_amount": "1000.00", "max_single_transfer_debit_amount": "1000.00", "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferConfigurationGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get transfer product configuration", "tags": [ "plaid" ] } }, "/transfer/create": { "post": { "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/).", "externalDocs": { "url": "/api/products/transfer/initiating-transfers/#transfercreate" }, "operationId": "transferCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "transfer": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "authorization_id": "c9f90aa1-2949-c799-e2b6-ea05c89bb586", "cancellable": true, "created": "2020-08-06T17:27:15Z", "credit_funds_source": "sweep", "description": "payment", "expected_settlement_date": "2023-08-04", "facilitator_fee": "1.23", "failure_reason": null, "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "guarantee_decision": null, "guarantee_decision_rationale": null, "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "metadata": { "key1": "value1", "key2": "value2" }, "network": "ach", "network_trace_id": null, "origination_account_id": "", "originator_client_id": "569ed2f36b3a3a021713abc1", "recurring_transfer_id": null, "refunds": [], "standard_return_window": "2023-08-07", "status": "pending", "type": "credit", "unauthorized_return_window": "2023-10-07", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } } } }, "schema": { "$ref": "#/components/schemas/TransferCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a transfer", "tags": [ "plaid" ] } }, "/transfer/diligence/document/upload": { "post": { "description": "Third-party sender customers can use `/transfer/diligence/document/upload` endpoint to upload a document on behalf of its end customer (i.e. originator) to Plaid. You'll need to send a request of type `multipart/form-data`.\nYou must provide the `client_id` in the `PLAID-CLIENT-ID` header and `secret` in the `PLAID-SECRET` header.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferdiligencedocumentupload" }, "operationId": "transferDiligenceDocumentUpload", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferDiligenceDocumentUploadRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/TransferDiligenceDocumentUploadResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Upload transfer diligence document on behalf of the originator", "tags": [ "plaid" ] } }, "/transfer/diligence/submit": { "post": { "description": "Use the `/transfer/diligence/submit` endpoint to submit transfer diligence on behalf of the originator (i.e., the end customer).", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferdiligencesubmit" }, "operationId": "transferDiligenceSubmit", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferDiligenceSubmitRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/TransferDiligenceSubmitResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Submit transfer diligence on behalf of the originator", "tags": [ "plaid" ] } }, "/transfer/event/list": { "post": { "description": "Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transfereventlist" }, "operationId": "transferEventList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferEventListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "has_more": true, "request_id": "mdqfuVxeoza6mhu", "transfer_events": [ { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "event_id": 1, "event_type": "posted", "failure_reason": null, "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "origination_account_id": "", "originator_client_id": "569ed2f36b3a3a021713abc1", "refund_id": null, "sweep_amount": null, "sweep_id": null, "timestamp": "2019-12-09T17:27:15Z", "transfer_amount": "12.34", "transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "transfer_type": "credit" } ] } } }, "schema": { "$ref": "#/components/schemas/TransferEventListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List transfer events", "tags": [ "plaid" ] } }, "/transfer/event/sync": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transfereventsync" }, "operationId": "transferEventSync", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferEventSyncRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "has_more": true, "request_id": "mdqfuVxeoza6mhu", "transfer_events": [ { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "event_id": 1, "event_type": "pending", "failure_reason": null, "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "origination_account_id": "", "originator_client_id": null, "refund_id": null, "sweep_amount": null, "sweep_id": null, "timestamp": "2019-12-09T17:27:15Z", "transfer_amount": "12.34", "transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "transfer_type": "credit" } ] } } }, "schema": { "$ref": "#/components/schemas/TransferEventSyncResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Sync transfer events", "tags": [ "plaid" ] } }, "/transfer/get": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transferget" }, "operationId": "transferGet", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "transfer": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "authorization_id": "c9f90aa1-2949-c799-e2b6-ea05c89bb586", "cancellable": true, "created": "2020-08-06T17:27:15Z", "credit_funds_source": "sweep", "description": "Desc", "expected_settlement_date": "2020-08-04", "facilitator_fee": "1.23", "failure_reason": { "description": "Invalid ACH routing number", "failure_code": "R13" }, "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "guarantee_decision": null, "guarantee_decision_rationale": null, "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "metadata": { "key1": "value1", "key2": "value2" }, "network": "ach", "network_trace_id": null, "origination_account_id": "", "originator_client_id": null, "recurring_transfer_id": null, "refunds": [], "standard_return_window": "2020-08-07", "status": "pending", "type": "credit", "unauthorized_return_window": "2020-10-07", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } } } }, "schema": { "$ref": "#/components/schemas/TransferGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a transfer", "tags": [ "plaid" ] } }, "/transfer/intent/create": { "post": { "description": "Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.", "externalDocs": { "url": "/api/products/transfer/account-linking/#transferintentcreate" }, "operationId": "transferIntentCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferIntentCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "transfer_intent": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "created": "2020-08-06T17:27:15Z", "description": "Desc", "funding_account_id": "9853defc-e703-463d-86b1-dc0607a45359", "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "iso_currency_code": "USD", "metadata": { "key1": "value1", "key2": "value2" }, "mode": "PAYMENT", "origination_account_id": "9853defc-e703-463d-86b1-dc0607a45359", "status": "PENDING", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94103", "region": "CA", "street": "100 Market Street" }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "123-456-7890" } } } } }, "schema": { "$ref": "#/components/schemas/TransferIntentCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a transfer intent object to invoke the Transfer UI", "tags": [ "plaid" ] } }, "/transfer/intent/get": { "post": { "description": "Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.", "externalDocs": { "url": "/api/products/transfer/account-linking/#transferintentget" }, "operationId": "transferIntentGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferIntentGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "transfer_intent": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "authorization_decision": "APPROVED", "authorization_decision_rationale": null, "created": "2019-12-09T17:27:15Z", "description": "Desc", "failure_reason": null, "funding_account_id": "9853defc-e703-463d-86b1-dc0607a45359", "guarantee_decision": null, "guarantee_decision_rationale": null, "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "iso_currency_code": "USD", "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": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "California", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } } } }, "schema": { "$ref": "#/components/schemas/TransferIntentGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve more information about a transfer intent", "tags": [ "plaid" ] } }, "/transfer/ledger/deposit": { "post": { "description": "Use the `/transfer/ledger/deposit` endpoint to deposit funds into Plaid Ledger.", "externalDocs": { "url": "/api/products/transfer/ledger/#transferledgerdeposit" }, "operationId": "transferLedgerDeposit", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLedgerDepositRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweep": { "amount": "-12.34", "created": "2020-08-06T17:27:15Z", "description": "deposit", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "id": "8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "network_trace_id": null, "settled": null, "status": "pending", "trigger": "manual" } } } }, "schema": { "$ref": "#/components/schemas/TransferLedgerDepositResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Deposit funds into a Plaid Ledger balance", "tags": [ "plaid" ] } }, "/transfer/ledger/distribute": { "post": { "description": "Use the `/transfer/ledger/distribute` endpoint to move available balance between ledgers, if you have multiple. If you're a platform, you can move funds between one of your ledgers and one of your customer's ledger.", "externalDocs": { "url": "/api/products/transfer/ledger/#transferledgerdistribute" }, "operationId": "transferLedgerDistribute", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLedgerDistributeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferLedgerDistributeResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Move available balance between ledgers", "tags": [ "plaid" ] } }, "/transfer/ledger/event/list": { "post": { "description": "Use the `/transfer/ledger/event/list` endpoint to get a list of ledger events for a specific ledger based on specified filter criteria.", "externalDocs": { "url": "/api/products/transfer/ledger/#transferledgereventlist" }, "operationId": "transferLedgerEventList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLedgerEventListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "has_more": false, "ledger_events": [ { "amount": "100.00", "available_balance": "100.00", "description": "Converted to available", "ledger_event_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "pending_balance": "100.00", "timestamp": "2023-12-01T10:00:00Z", "transfer_id": "460cbe92-2dcc-8eae", "type": "deposit" } ], "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/TransferLedgerEventListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List transfer ledger events", "tags": [ "plaid" ] } }, "/transfer/ledger/get": { "post": { "description": "Use the `/transfer/ledger/get` endpoint to view a balance on the ledger held with Plaid.", "externalDocs": { "url": "/api/products/transfer/ledger/#transferledgerget" }, "operationId": "transferLedgerGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLedgerGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "balance": { "available": "1721.70", "pending": "123.45" }, "is_default": true, "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "name": "Default", "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferLedgerGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve Plaid Ledger balance", "tags": [ "plaid" ] } }, "/transfer/ledger/withdraw": { "post": { "description": "Use the `/transfer/ledger/withdraw` endpoint to withdraw funds from a Plaid Ledger balance.", "externalDocs": { "url": "/api/products/transfer/ledger/#transferledgerwithdraw" }, "operationId": "transferLedgerWithdraw", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLedgerWithdrawRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweep": { "amount": "12.34", "created": "2020-08-06T17:27:15Z", "description": "withdraw", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "id": "8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "network_trace_id": null, "settled": null, "status": "pending", "trigger": "manual" } } } }, "schema": { "$ref": "#/components/schemas/TransferLedgerWithdrawResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Withdraw funds from a Plaid Ledger balance", "tags": [ "plaid" ] } }, "/transfer/list": { "post": { "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.\n", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transferlist" }, "operationId": "transferList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "transfers": [ { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "authorization_id": "c9f90aa1-2949-c799-e2b6-ea05c89bb586", "cancellable": true, "created": "2019-12-09T17:27:15Z", "credit_funds_source": "sweep", "description": "Desc", "expected_settlement_date": "2020-08-04", "facilitator_fee": "1.23", "failure_reason": { "description": "Invalid ACH routing number", "failure_code": "R13" }, "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "guarantee_decision": null, "guarantee_decision_rationale": null, "id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "metadata": { "key1": "value1", "key2": "value2" }, "network": "ach", "network_trace_id": null, "origination_account_id": "", "originator_client_id": null, "recurring_transfer_id": null, "refunds": [], "standard_return_window": "2020-08-07", "status": "pending", "type": "credit", "unauthorized_return_window": "2020-10-07", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } ] } } }, "schema": { "$ref": "#/components/schemas/TransferListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List transfers", "tags": [ "plaid" ] } }, "/transfer/metrics/get": { "post": { "description": "Use the `/transfer/metrics/get` endpoint to view your transfer product usage metrics.\n\nIn the Sandbox environment, this endpoint returns static placeholder values rather than metrics computed from your Sandbox transfer activity.", "externalDocs": { "url": "/api/products/transfer/metrics/#transfermetricsget" }, "operationId": "transferMetricsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferMetricsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "authorization_usage": { "daily_credit_utilization": "0.2300", "daily_debit_utilization": "0.3401", "monthly_credit_utilization": "0.9843", "monthly_debit_utilization": "0.3220" }, "daily_credit_transfer_volume": "567.89", "daily_debit_transfer_volume": "1234.56", "iso_currency_code": "USD", "monthly_credit_transfer_volume": "2345.67", "monthly_debit_transfer_volume": "10000.00", "monthly_transfer_volume": "", "request_id": "saKrIBuEB9qJZno", "return_rates": { "last_60d": { "administrative_return_rate": "0.0160", "overall_return_rate": "0.1023", "unauthorized_return_rate": "0.0028" } } } } }, "schema": { "$ref": "#/components/schemas/TransferMetricsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get transfer product usage metrics", "tags": [ "plaid" ] } }, "/transfer/migrate_account": { "post": { "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).", "externalDocs": { "url": "/api/products/transfer/account-linking/#transfermigrate_account" }, "operationId": "transferMigrateAccount", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferMigrateAccountRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "access_token": "access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0", "account_id": "zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN", "request_id": "mdqfuVxeoza6mhu" } } }, "schema": { "$ref": "#/components/schemas/TransferMigrateAccountResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Migrate account into Transfers", "tags": [ "plaid" ] } }, "/transfer/originator/create": { "post": { "description": "Use the `/transfer/originator/create` endpoint to create a new originator and return an `originator_client_id`.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferoriginatorcreate" }, "operationId": "transferOriginatorCreate", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferOriginatorCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "company_name": "Marketplace of Shannon", "originator_client_id": "6a65dh3d1h0d1027121ak184", "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/TransferOriginatorCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a new originator", "tags": [ "plaid" ] } }, "/transfer/originator/funding_account/create": { "post": { "description": "Use the `/transfer/originator/funding_account/create` endpoint to create a new funding account for the originator.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferoriginatorfunding_accountcreate" }, "operationId": "transferOriginatorFundingAccountCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferOriginatorFundingAccountCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferOriginatorFundingAccountCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a new funding account for an originator", "tags": [ "plaid" ] } }, "/transfer/originator/funding_account/update": { "post": { "description": "Use the `/transfer/originator/funding_account/update` endpoint to update the funding account associated with the originator.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferoriginatorfunding_accountupdate" }, "operationId": "transferOriginatorFundingAccountUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferOriginatorFundingAccountUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferOriginatorFundingAccountUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update the funding account associated with the originator", "tags": [ "plaid" ] } }, "/transfer/originator/get": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferoriginatorget" }, "operationId": "transferOriginatorGet", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferOriginatorGetRequest" } }, "examples": {} }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "originator": { "client_id": "6a65dh3d1h0d1027121ak184", "company_name": "Plaid", "transfer_diligence_status": "approved" }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferOriginatorGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get status of an originator's onboarding", "tags": [ "plaid" ] } }, "/transfer/originator/list": { "post": { "description": "The `/transfer/originator/list` endpoint gets status updates for all of your originators' onboarding. This information is also available via the Plaid dashboard.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferoriginatorlist" }, "operationId": "transferOriginatorList", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferOriginatorListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "originators": [ { "client_id": "6a65dh3d1h0d1027121ak184", "transfer_diligence_status": "approved" }, { "client_id": "8g89as4d2k1d9852938ba019", "transfer_diligence_status": "denied" } ], "request_id": "4zlKapIkTm8p5KM" } } }, "schema": { "$ref": "#/components/schemas/TransferOriginatorListResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get status of all originators' onboarding", "tags": [ "plaid" ] } }, "/transfer/platform/originator/create": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferplatformoriginatorcreate" }, "operationId": "transferPlatformOriginatorCreate", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferPlatformOriginatorCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferPlatformOriginatorCreateResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create an originator for Transfer for Platforms customers", "tags": [ "plaid" ] } }, "/transfer/platform/person/create": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferplatformpersoncreate" }, "operationId": "transferPlatformPersonCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferPlatformPersonCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "person_id": "4aa32e78-0cb3-4c13-b45e-7f9f2fc709d1", "request_id": "qpCtcJz6g3fhMdJ" } } }, "schema": { "$ref": "#/components/schemas/TransferPlatformPersonCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a person associated with an originator", "tags": [ "plaid" ] } }, "/transfer/platform/requirement/submit": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferplatformrequirementsubmit" }, "operationId": "transferPlatformRequirementSubmit", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferPlatformRequirementSubmitRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferPlatformRequirementSubmitResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Submit additional onboarding information on behalf of an originator", "tags": [ "plaid" ] } }, "/transfer/questionnaire/create": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/platform-payments/#transferquestionnairecreate" }, "operationId": "transferQuestionnaireCreate", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferQuestionnaireCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "onboarding_url": "https://plaid.com/originator/hIFGXx1zM5pFerygu7lw", "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferQuestionnaireCreateResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Generate a Plaid-hosted onboarding UI URL.", "tags": [ "plaid" ] } }, "/transfer/recurring/cancel": { "post": { "description": "Use the `/transfer/recurring/cancel` endpoint to cancel a recurring transfer. Scheduled transfer that hasn't been submitted to bank will be cancelled.", "externalDocs": { "url": "/api/products/transfer/recurring-transfers/#transferrecurringcancel" }, "operationId": "transferRecurringCancel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRecurringCancelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRecurringCancelResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Cancel a recurring transfer.", "tags": [ "plaid" ] } }, "/transfer/recurring/create": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/recurring-transfers/#transferrecurringcreate" }, "operationId": "transferRecurringCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRecurringCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "decision": "approved", "decision_rationale": null, "recurring_transfer": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "created": "2022-07-05T12:48:37Z", "description": "payment", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "iso_currency_code": "USD", "network": "ach", "next_origination_date": "2022-10-28", "origination_account_id": "", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "schedule": { "end_date": "2023-10-01", "interval_count": 1, "interval_execution_day": 5, "interval_unit": "week", "start_date": "2022-10-01" }, "status": "active", "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c", "transfer_ids": [], "type": "debit", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRecurringCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a recurring transfer", "tags": [ "plaid" ] } }, "/transfer/recurring/get": { "post": { "description": "The `/transfer/recurring/get` fetches information about the recurring transfer corresponding to the given `recurring_transfer_id`.", "externalDocs": { "url": "/api/products/transfer/recurring-transfers/#transferrecurringget" }, "operationId": "transferRecurringGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRecurringGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "recurring_transfer": { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "created": "2022-07-05T12:48:37Z", "description": "payment", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "iso_currency_code": "USD", "network": "ach", "next_origination_date": "2022-10-28", "origination_account_id": "", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "schedule": { "end_date": "2023-10-01", "interval_count": 1, "interval_execution_day": 5, "interval_unit": "week", "start_date": "2022-10-01" }, "status": "active", "test_clock_id": null, "transfer_ids": [ "271ef220-dbf8-caeb-a7dc-a2b3e8a80963", "c8dbaf75-2abb-e2dc-4171-12448e13b848" ], "type": "debit", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRecurringGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a recurring transfer", "tags": [ "plaid" ] } }, "/transfer/recurring/list": { "post": { "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.\n", "externalDocs": { "url": "/api/products/transfer/recurring-transfers/#transferrecurringlist" }, "operationId": "transferRecurringList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRecurringListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "recurring_transfers": [ { "account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr", "ach_class": "ppd", "amount": "12.34", "created": "2022-07-05T12:48:37Z", "description": "payment", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "iso_currency_code": "USD", "network": "ach", "next_origination_date": "2022-10-28", "origination_account_id": "", "recurring_transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9", "schedule": { "end_date": "2023-10-01", "interval_count": 1, "interval_execution_day": 5, "interval_unit": "week", "start_date": "2022-10-01" }, "status": "active", "test_clock_id": null, "transfer_ids": [ "4242fc8d-3ec6-fb38-fa0c-a8e37d03cd57" ], "type": "debit", "user": { "address": { "city": "San Francisco", "country": "US", "postal_code": "94053", "region": "CA", "street": "123 Main St." }, "email_address": "acharleston@email.com", "legal_name": "Anne Charleston", "phone_number": "510-555-0128" } } ], "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRecurringListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List recurring transfers", "tags": [ "plaid" ] } }, "/transfer/refund/cancel": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/refunds/#transferrefundcancel" }, "operationId": "transferRefundCancel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRefundCancelRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRefundCancelResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Cancel a refund", "tags": [ "plaid" ] } }, "/transfer/refund/create": { "post": { "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.\n\nRefunds 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.\n\nA 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.", "externalDocs": { "url": "/api/products/transfer/refunds/#transferrefundcreate" }, "operationId": "transferRefundCreate", "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRefundCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "refund": { "amount": "12.34", "created": "2020-08-06T17:27:15Z", "failure_reason": null, "id": "667af684-9ee1-4f5f-862a-633ec4c545cc", "network_trace_id": null, "status": "pending", "transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9" }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRefundCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create a refund", "tags": [ "plaid" ] } }, "/transfer/refund/get": { "post": { "description": "The `/transfer/refund/get` endpoint fetches information about the refund corresponding to the given `refund_id`.", "externalDocs": { "url": "/api/products/transfer/refunds/#transferrefundget" }, "operationId": "transferRefundGet", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferRefundGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "refund": { "amount": "12.34", "created": "2020-08-06T17:27:15Z", "failure_reason": null, "id": "667af684-9ee1-4f5f-862a-633ec4c545cc", "network_trace_id": null, "status": "pending", "transfer_id": "460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9" }, "request_id": "saKrIBuEB9qJZno" } } }, "schema": { "$ref": "#/components/schemas/TransferRefundGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a refund", "tags": [ "plaid" ] } }, "/transfer/repayment/list": { "post": { "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`.", "externalDocs": { "url": "/api/products/transfer/#transferrepaymentlist" }, "operationId": "transferRepaymentList", "parameters": [], "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "count": 1, "start_time": "2022-01-10T12:34:56Z" } } }, "schema": { "$ref": "#/components/schemas/TransferRepaymentListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "repayments": [ { "amount": "12.34", "created": "2019-12-09T12:34:56Z", "iso_currency_code": "USD", "repayment_id": "d4bfce70-2470-4298-ae87-5e9b3e18bfaf" } ], "request_id": "h0dvmW8g4r2Z0KX" } } }, "schema": { "$ref": "#/components/schemas/TransferRepaymentListResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Lists historical repayments", "tags": [ "plaid" ] } }, "/transfer/repayment/return/list": { "post": { "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.", "externalDocs": { "url": "/api/products/transfer/#transferrepaymentreturnlist" }, "operationId": "transferRepaymentReturnList", "parameters": [], "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "count": 1, "repayment_id": "d4bfce70-2470-4298-ae87-5e9b3e18bfaf", "start_time": "2022-01-10T12:34:56Z" } } }, "schema": { "$ref": "#/components/schemas/TransferRepaymentReturnListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "repayment_returns": [ { "amount": "12.34", "event_id": 5, "iso_currency_code": "USD", "transfer_id": "d4bfce70-2470-4298-ae87-5e9b3e18bfaf" } ], "request_id": "Ay70UHyBmbY0wUf" } } }, "schema": { "$ref": "#/components/schemas/TransferRepaymentReturnListResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List the returns included in a repayment", "tags": [ "plaid" ] } }, "/transfer/sweep/get": { "post": { "description": "The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transfersweepget" }, "operationId": "transferSweepGet", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferSweepGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweep": { "amount": "12.34", "created": "2020-08-06T17:27:15Z", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "id": "8c2fda9a-aa2f-4735-a00f-f4e0d2d2faee", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "network_trace_id": "123456789012345", "settled": "2020-08-07", "status": "settled" } } } }, "schema": { "$ref": "#/components/schemas/TransferSweepGetResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Retrieve a sweep", "tags": [ "plaid" ] } }, "/transfer/sweep/list": { "post": { "description": "The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.", "externalDocs": { "url": "/api/products/transfer/reading-transfers/#transfersweeplist" }, "operationId": "transferSweepList", "parameters": [], "requestBody": { "content": { "application/json": { "examples": {}, "schema": { "$ref": "#/components/schemas/TransferSweepListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "saKrIBuEB9qJZno", "sweeps": [ { "amount": "-12.34", "created": "2019-12-09T17:27:15Z", "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460", "id": "d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d", "iso_currency_code": "USD", "ledger_id": "563db5f8-4c95-4e17-8c3e-cb988fb9cf1a", "originator_client_id": null, "settled": "2019-12-10", "status": "settled" } ] } } }, "schema": { "$ref": "#/components/schemas/TransferSweepListResponse" } } }, "description": "OK", "headers": {} }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List sweeps", "tags": [ "plaid" ] } }, "/user/create": { "post": { "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`.\nFor customers who began using this endpoint on or after December 10, 2025, this endpoint takes a `client_user_id` and an `identity` object and will return a `user_id`. For customers who began using it before that date, the endpoint takes a `client_user_id` and a `consumer_report_user_identity` object and will return a `user_token` and `user_id`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).\nIn order to create a Plaid Check Consumer Report for a user, the `identity` (new) or `consumer_report_user_identity` (legacy) object must be present. If it is not provided during the `/user/create` call, it can be added later by calling `/user/update`.\n\n\nIn order to generate a Plaid Check Consumer Report, the following `identity` fields, at minimum, are required and must be non-empty: `name`, `date_of_birth`, `emails`, `phone_numbers`, and `addresses`, (with at least one email, phone number, and address designated as `primary`). Plaid Check Consumer Reports can only be created for US-based users; the user's address country must be `US`. If creating a report for sharing with a GSE such as Fannie or Freddie, the user's full SSN must be provided via the `id_numbers` field. Providing at least a partial SSN is also strongly recommended for all use cases, since it improves the accuracy of matching user records during compliance processes such as file disclosure, dispute, or security freeze requests.\n\n\nWhen using Plaid Protect, it is highly recommended that you provide an `identity` object to better identify and block fraud across your Link sessions.\n\n\nPlaid will normalize identity fields before storing them and utilize the same identity across different user-based products.", "externalDocs": { "url": "/api/users/#usercreate" }, "operationId": "userCreate", "parameters": [ { "$ref": "#/components/parameters/PlaidNewUserApiEnabledHeader" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b", "user_id": "usr_9nSp2KuZ2x4JDw" } }, "example-2": { "value": { "request_id": "Aim3b", "user_id": "wz666MBjYWTp2PDzzggYhM6oWWmBb", "user_token": "user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d" } } }, "schema": { "$ref": "#/components/schemas/UserCreateResponse" } } }, "description": "OK" }, "201": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b", "user_id": "usr_9nSp2KuZ2x4JDw" } } }, "schema": { "$ref": "#/components/schemas/UserCreateResponse" } } }, "description": "Created" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create user", "tags": [ "plaid" ] } }, "/user/financial_data/refresh": { "post": { "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.\nThis bundle refreshes the Transactions, Investments, and Liabilities product data.\nThis endpoint is for clients who use the Transactions Insights bundle and want to proactively update all linked Items under a user.\nThe refresh may succeed or fail on a per-Item basis. Use the `results` array in the response to understand the outcome for each Item.\n\nThis 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.", "externalDocs": { "url": "/api/products/transactions/#userfinancialdatarefresh" }, "operationId": "userFinancialDataRefresh", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "user_id": "usr_8c3ZbDBYjaqUXZ" } } }, "schema": { "$ref": "#/components/schemas/UserFinancialDataRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "results": [ { "item_id": "Fd7bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr", "product": "transactions" }, { "error": { "causes": [], "display_message": "Please update your login credentials.", "documentation_url": "https://plaid.com/docs/errors/item/#item_login_required", "error_code": "ITEM_LOGIN_REQUIRED", "error_code_reason": null, "error_message": "The login credentials for this Item have changed.", "error_type": "ITEM_ERROR", "request_id": "req_xyz789", "status": 400, "suggested_action": "Prompt the user to re-authenticate their account." }, "item_id": "AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "product": "transactions" } ], "user_id": "usr_8c3ZbDBYjaqUXZ" } } }, "schema": { "$ref": "#/components/schemas/UserFinancialDataRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh user items for Financial-Insights bundle", "tags": [ "plaid" ] } }, "/user/get": { "post": { "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).", "externalDocs": { "url": "/api/users/#userget" }, "operationId": "userGet", "parameters": [ { "$ref": "#/components/parameters/PlaidNewUserApiEnabledHeader" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "client_user_id": "uid_12345", "created_at": "2019-02-15T15:51:39Z", "identity": { "addresses": [ { "city": "Anytown", "country": "US", "postal_code": "90210", "primary": true, "region": "CA", "street_1": "123 Main St", "street_2": "Apt 4B" } ], "date_of_birth": "1988-07-22", "emails": [ { "data": "alice.johnson@example.com", "primary": true }, { "data": "alice.j@workmail.com", "primary": false } ], "id_numbers": [ { "type": "us_ssn_last_4", "value": "1234" } ], "name": { "family_name": "Johnson", "given_name": "Alice" }, "phone_numbers": [ { "data": "+15551234567", "primary": true }, { "data": "+15559876543", "primary": false } ] }, "request_id": "m8MDnv9okwxFNBV", "updated_at": "2019-02-15T15:52:39Z", "user_id": "usr_8c6ZbDAYjacUXF" } } }, "schema": { "$ref": "#/components/schemas/UserGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve user identity and information", "tags": [ "plaid" ] } }, "/user/identity/remove": { "post": { "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.", "externalDocs": { "url": "/api/users/#useridentityremove" }, "operationId": "userIdentityRemove", "parameters": [ { "$ref": "#/components/parameters/PlaidNewUserApiEnabledHeader" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserIdentityRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/UserIdentityRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove user identity data", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/user/items/associate": { "post": { "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.", "externalDocs": { "url": "/api/users/#useritemsassociate" }, "operationId": "userItemsAssociate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserItemsAssociateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/UserItemsAssociateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Associate Items to a User", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/user/items/get": { "post": { "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`.", "externalDocs": { "url": "/api/users/#useritemsget" }, "operationId": "userItemsGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserItemsGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "items": [ { "available_products": [ "balance", "auth" ], "billed_products": [ "identity", "transactions" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_109508", "institution_name": "First Platypus Bank", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr", "update_type": "background", "webhook": "https://plaid.com/example/hook" }, { "available_products": [ "balance", "identity", "payment_initiation", "transactions" ], "billed_products": [ "assets", "auth" ], "consent_expiration_time": null, "error": null, "institution_id": "ins_109508", "institution_name": "First Platypus Bank", "item_id": "DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6", "update_type": "background", "webhook": "https://plaid.com/example/hook" } ], "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/UserItemsGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get Items associated with a User", "tags": [ "plaid" ] } }, "/user/items/remove": { "post": { "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.\nThis 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.", "externalDocs": { "url": "/api/users/#useritemsremove" }, "operationId": "userItemsRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserItemsRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/UserItemsRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove Items from a User", "tags": [ "plaid" ] } }, "/user/products/terminate": { "post": { "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.", "externalDocs": { "url": "/api/users/#userproductsterminate" }, "operationId": "userProductsTerminate", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "reason_code": "CONSUMER_ACCOUNT_CLOSED", "reason_note": "User closed account with client.", "user_id": "usr_8c3ZbDBYjaqUXZ" } }, "example-2": { "value": { "reason_code": "CONSUMER_LOAN_PAID_OFF", "reason_note": "Consumer loan has been paid in full.", "user_id": "usr_8c3ZbDBYjaqUXZ" } } }, "schema": { "$ref": "#/components/schemas/UserProductsTerminateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "TxlxEcCmP9HTTT" } } }, "schema": { "$ref": "#/components/schemas/UserProductsTerminateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Terminate user-based products", "tags": [ "plaid" ] } }, "/user/remove": { "post": { "description": "`/user/remove` deletes a `user_id` or `user_token` and associated information, including any Items associated with the user.", "externalDocs": { "url": "/api/users/#userremove" }, "operationId": "userRemove", "parameters": [ { "$ref": "#/components/parameters/PlaidNewUserApiEnabledHeader" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/UserRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Remove user", "tags": [ "plaid" ] } }, "/user/third_party_token/create": { "post": { "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.\n\nEnsure 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`.", "externalDocs": { "url": "/api/users/#userthirdpartytokencreate" }, "operationId": "userThirdPartyTokenCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserThirdPartyTokenCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b", "third_party_user_token": "third-party-user-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d" } } }, "schema": { "$ref": "#/components/schemas/UserThirdPartyTokenCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Create a third-party user token", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/user/third_party_token/remove": { "post": { "description": "This endpoint is used to delete a third-party user token. Once removed, the token can longer be used to access data associated with the user.\n\nAny 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.", "externalDocs": { "url": "/api/users/#userthirdpartytokenremove" }, "operationId": "userThirdPartyTokenRemove", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserThirdPartyTokenRemoveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "removed": true, "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/UserThirdPartyTokenRemoveResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Remove a third-party user token", "tags": [ "plaid" ] }, "x-hidden-from-docs": true }, "/user/transactions/refresh": { "post": { "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.\nThis bundle refreshes only the Transactions product data.\nThis endpoint is for clients who use the Transactions Insights bundle and want to proactively update all linked Items under a user.\nThe refresh may succeed or fail on a per-Item basis. Use the `results` array in the response to understand the outcome for each Item.\n\nThis 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.", "externalDocs": { "url": "/api/products/transactions/#usertransactionsrefresh" }, "operationId": "userTransactionsRefresh", "requestBody": { "content": { "application/json": { "examples": { "example-1": { "value": { "user_id": "usr_8c3ZbDBYjaqUXZ" } } }, "schema": { "$ref": "#/components/schemas/UserTransactionsRefreshRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "results": [ { "item_id": "Fd7bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr", "product": "transactions" }, { "error": { "causes": [], "display_message": "Please update your login credentials.", "documentation_url": "https://plaid.com/docs/errors/item/#item_login_required", "error_code": "ITEM_LOGIN_REQUIRED", "error_code_reason": null, "error_message": "The login credentials for this Item have changed.", "error_type": "ITEM_ERROR", "request_id": "req_xyz789", "status": 400, "suggested_action": "Prompt the user to re-authenticate their account." }, "item_id": "AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "product": "transactions" } ], "user_id": "usr_8c3ZbDBYjaqUXZ" } } }, "schema": { "$ref": "#/components/schemas/UserTransactionsRefreshResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Refresh user items for Transactions bundle", "tags": [ "plaid" ] } }, "/user/update": { "post": { "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.\n\nIdentity updates use merge semantics: provided fields overwrite existing ones; omitted fields remain unchanged.", "externalDocs": { "url": "/api/users/#userupdate" }, "operationId": "userUpdate", "parameters": [ { "$ref": "#/components/parameters/PlaidNewUserApiEnabledHeader" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "Aim3b" } } }, "schema": { "$ref": "#/components/schemas/UserUpdateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Update user information", "tags": [ "plaid" ] } }, "/user_account/session/event/send": { "post": { "description": "This endpoint allows sending client-specific events related to Layer sessions for analytics and tracking purposes.", "externalDocs": { "url": "/api/products/layer/#user_accountsessioneventsend" }, "operationId": "userAccountSessionEventSend", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserAccountSessionEventSendRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/UserAccountSessionEventSendResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Send User Account Session Event", "tags": [ "plaid" ] } }, "/user_account/session/get": { "post": { "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).", "externalDocs": { "url": "/api/products/layer/#user_accountsessionget" }, "operationId": "userAccountSessionGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserAccountSessionGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "identity": { "address": { "city": "Pawnee", "country": "US", "postal_code": "41006", "region": "IN", "street": "123 Main St.", "street2": "" }, "date_of_birth": "1975-01-18", "email": "leslie@knope.com", "name": { "first_name": "Leslie", "last_name": "Knope" }, "phone_number": "+14157452130", "ssn": "987654321", "ssn_last_4": "4321" }, "identity_edit_history": { "address": { "edits_1d": 1, "edits_30d": 2, "edits_365d": 2, "edits_all_time": 2, "edits_current": 1 }, "date_of_birth": { "edits_1d": 0, "edits_30d": 0, "edits_365d": 0, "edits_all_time": 0, "edits_current": 0 }, "email": { "edits_1d": 0, "edits_30d": 0, "edits_365d": 0, "edits_all_time": 0, "edits_current": 0 }, "name": { "edits_1d": 0, "edits_30d": 1, "edits_365d": 1, "edits_all_time": 1, "edits_current": 0 }, "official_document": { "ssn": { "edits_1d": 0, "edits_30d": 0, "edits_365d": 0, "edits_all_time": 0, "edits_current": 0 } } }, "items": [ { "access_token": "access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0", "item_id": "Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr" } ], "request_id": "m8MDnv9okwxFNBV" } } }, "schema": { "$ref": "#/components/schemas/UserAccountSessionGetResponse" } } }, "description": "success" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response." } }, "summary": "Retrieve User Account", "tags": [ "plaid" ] } }, "/wallet/create": { "post": { "description": "Create an e-wallet. The response is the newly created e-wallet object.", "externalDocs": { "url": "/api/products/virtual-accounts/#walletcreate" }, "operationId": "walletCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "balance": { "available": 100.96, "current": 123.12, "iso_currency_code": "GBP" }, "numbers": { "bacs": { "account": "12345678", "sort_code": "123456" } }, "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6", "request_id": "4zlKapIkTm8p5KM", "status": "ACTIVE", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } } }, "schema": { "$ref": "#/components/schemas/WalletCreateResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Create an e-wallet", "tags": [ "plaid" ] } }, "/wallet/get": { "post": { "description": "Fetch an e-wallet. The response includes the current balance.", "externalDocs": { "url": "/api/products/virtual-accounts/#walletget" }, "operationId": "walletGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "balance": { "available": 100.96, "current": 123.12, "iso_currency_code": "GBP" }, "numbers": { "bacs": { "account": "12345678", "sort_code": "123456" }, "international": { "bic": "BUKBGB22", "iban": "GB33BUKB20201555555555" } }, "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6", "request_id": "4zlKapIkTm8p5KM", "status": "ACTIVE", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } }, "example-2": { "value": { "balance": { "available": 100.96, "current": 123.12, "iso_currency_code": "EUR" }, "numbers": { "international": { "bic": "ABNANL2A", "iban": "NL91ABNA0417164300" } }, "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6", "request_id": "4zlKapIkTm8p5KM", "status": "ACTIVE", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } } }, "schema": { "$ref": "#/components/schemas/WalletGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Fetch an e-wallet", "tags": [ "plaid" ] } }, "/wallet/list": { "post": { "description": "This endpoint lists all e-wallets in descending order of creation.", "externalDocs": { "url": "/api/products/virtual-accounts/#walletlist" }, "operationId": "walletList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "wallets": [ { "balance": { "available": 100.96, "current": 123.12, "iso_currency_code": "GBP" }, "numbers": { "bacs": { "account": "12345678", "sort_code": "123456" } }, "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f6", "status": "ACTIVE", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" }, { "balance": { "available": 100.96, "current": 456.78, "iso_currency_code": "EUR" }, "numbers": { "international": { "bic": "HBUKGB4B", "iban": "GB22HBUK40221241555626" } }, "recipient_id": "recipient-id-production-9b6b4679-914b-445b-9450-efbdb80296f7", "status": "ACTIVE", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a999" } ] } } }, "schema": { "$ref": "#/components/schemas/WalletListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Fetch a list of e-wallets", "tags": [ "plaid" ] } }, "/wallet/transaction/execute": { "post": { "description": "Execute a transaction using the specified e-wallet.\nSpecify 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.\nTransactions will settle in seconds to several days, depending on the underlying payment rail.", "externalDocs": { "url": "/api/products/virtual-accounts/#wallettransactionexecute" }, "operationId": "walletTransactionExecute", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletTransactionExecuteRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "request_id": "4zlKapIkTm8p5KM", "status": "EXECUTED", "transaction_id": "wallet-transaction-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } } }, "schema": { "$ref": "#/components/schemas/WalletTransactionExecuteResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Execute a transaction using an e-wallet", "tags": [ "plaid" ] } }, "/wallet/transaction/get": { "post": { "description": "Fetch a specific e-wallet transaction", "externalDocs": { "url": "/api/products/virtual-accounts/#wallettransactionget" }, "operationId": "walletTransactionGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletTransactionGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "amount": { "iso_currency_code": "GBP", "value": 123.12 }, "counterparty": { "name": "John Smith", "numbers": { "bacs": { "account": "31926819", "sort_code": "601613" } } }, "created_at": "2020-12-02T21:14:54Z", "last_status_update": "2020-12-02T21:15:01Z", "reference": "Payout 99744", "related_transactions": [ { "id": "wallet-transaction-id-sandbox-2ba30780-d549-4335-b1fe-c2a938aa39d2", "type": "RETURN" } ], "request_id": "4zlKapIkTm8p5KM", "status": "EXECUTED", "transaction_id": "wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "type": "PAYOUT", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } }, "example-2": { "value": { "amount": { "iso_currency_code": "EUR", "value": 456.78 }, "counterparty": { "name": "John Smith", "numbers": { "international": { "iban": "GB33BUKB20201555555555" } } }, "created_at": "2020-12-02T21:14:54Z", "last_status_update": "2020-12-02T21:15:01Z", "reference": "Payout 99744", "related_transactions": [], "request_id": "4zlKapIkTm8p5KM", "status": "EXECUTED", "transaction_id": "wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "type": "PAYOUT", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } } }, "schema": { "$ref": "#/components/schemas/WalletTransactionGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Fetch an e-wallet transaction", "tags": [ "plaid" ] } }, "/wallet/transaction/list": { "post": { "description": "This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.", "externalDocs": { "url": "/api/products/virtual-accounts/#wallettransactionlist" }, "operationId": "walletTransactionList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletTransactionListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "YWJjMTIzIT8kKiYoKSctPUB", "request_id": "4zlKapIkTm8p5KM", "transactions": [ { "amount": { "iso_currency_code": "GBP", "value": 123.12 }, "counterparty": { "name": "John Smith", "numbers": { "bacs": { "account": "31926819", "sort_code": "601613" } } }, "created_at": "2020-12-02T21:14:54Z", "last_status_update": "2020-12-02T21:15:01Z", "reference": "Payout 99744", "related_transactions": [ { "id": "wallet-transaction-id-sandbox-2ba30780-d549-4335-b1fe-c2a938aa39d2", "type": "RETURN" } ], "status": "EXECUTED", "transaction_id": "wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "type": "PAYOUT", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" }, { "amount": { "iso_currency_code": "EUR", "value": 456.78 }, "counterparty": { "name": "John Smith", "numbers": { "international": { "iban": "GB33BUKB20201555555555" } } }, "created_at": "2020-12-02T21:14:54Z", "last_status_update": "2020-12-02T21:15:01Z", "reference": "Payout 99744", "related_transactions": [], "status": "EXECUTED", "transaction_id": "wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3", "type": "PAYOUT", "wallet_id": "wallet-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88" } ] } } }, "schema": { "$ref": "#/components/schemas/WalletTransactionListResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "List e-wallet transactions", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/create": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentitycreate" }, "operationId": "watchlistScreeningEntityCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "entscr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "document_number": "C31195855", "email_address": "user@example.com", "entity_watchlist_program_id": "entprg_2eRPsDnL66rZ7H", "legal_name": "Al-Qaida", "phone_number": "+14025671234", "url": "https://example.com", "version": 1 }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityCreateResponse" } } }, "description": "OK" } }, "summary": "Create a watchlist screening for an entity", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/get": { "post": { "description": "Retrieve an entity watchlist screening.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityget" }, "operationId": "watchlistScreeningEntityGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "entscr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "document_number": "C31195855", "email_address": "user@example.com", "entity_watchlist_program_id": "entprg_2eRPsDnL66rZ7H", "legal_name": "Al-Qaida", "phone_number": "+14025671234", "url": "https://example.com", "version": 1 }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityGetResponse" } } }, "description": "OK" } }, "summary": "Get an entity screening", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/history/list": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityhistorylist" }, "operationId": "watchlistScreeningEntityHistoryList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityHistoryListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "entity_watchlist_screenings": [ { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "entscr_52xR9LKo77r1Np", "search_terms": { "country": "US", "document_number": "C31195855", "email_address": "user@example.com", "entity_watchlist_program_id": "entprg_2eRPsDnL66rZ7H", "legal_name": "Al-Qaida", "phone_number": "+14025671234", "url": "https://example.com", "version": 1 }, "status": "cleared" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityHistoryListResponse" } } }, "description": "OK" } }, "summary": "List history for entity watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/hit/list": { "post": { "description": "List all hits for the entity watchlist screening.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityhitlist" }, "operationId": "watchlistScreeningEntityHitList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityHitListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "entity_watchlist_screening_hits": [ { "analysis": { "documents": "match", "email_addresses": "match", "locations": "match", "names": "match", "phone_numbers": "match", "search_terms_version": 1, "urls": "match" }, "data": { "documents": [ { "analysis": { "summary": "match" }, "data": { "number": "C31195855", "type": "swift" } } ], "email_addresses": [ { "analysis": { "summary": "match" }, "data": { "email_address": "user@example.com" } } ], "locations": [ { "analysis": { "summary": "match" }, "data": { "country": "US", "full": "Florida, US" } } ], "names": [ { "analysis": { "summary": "match" }, "data": { "full": "Al Qaida", "is_primary": false, "weak_alias_determination": "none" } } ], "phone_numbers": [ { "analysis": { "summary": "match" }, "data": { "phone_number": "+14025671234", "type": "phone" } } ], "urls": [ { "analysis": { "summary": "match" }, "data": { "url": "https://example.com" } } ] }, "first_active": "2020-07-24T03:26:02Z", "historical_since": "2020-07-24T03:26:02Z", "id": "enthit_52xR9LKo77r1Np", "inactive_since": "2020-07-24T03:26:02Z", "list_code": "EU_CON", "plaid_uid": "uid_3NggckTimGSJHS", "review_status": "pending_review", "source_uid": "26192ABC", "sub_programs": [] } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityHitListResponse" } } }, "description": "OK" } }, "summary": "List hits for entity watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/list": { "post": { "description": "List all entity screenings.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentitylist" }, "operationId": "watchlistScreeningEntityList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "entity_watchlist_screenings": [ { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "entscr_52xR9LKo77r1Np", "search_terms": { "country": "US", "document_number": "C31195855", "email_address": "user@example.com", "entity_watchlist_program_id": "entprg_2eRPsDnL66rZ7H", "legal_name": "Al-Qaida", "phone_number": "+14025671234", "url": "https://example.com", "version": 1 }, "status": "cleared" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityListResponse" } } }, "description": "OK" } }, "summary": "List entity watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/program/get": { "post": { "description": "Get an entity watchlist screening program", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityprogramget" }, "operationId": "watchlistScreeningEntityProgramGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityProgramGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "created_at": "2020-07-24T03:26:02Z", "id": "entprg_2eRPsDnL66rZ7H", "is_archived": false, "is_rescanning_enabled": true, "lists_enabled": [ "EU_CON" ], "name": "Sample Program", "name_sensitivity": "balanced", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityProgramGetResponse" } } }, "description": "OK" } }, "summary": "Get entity watchlist screening program", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/program/list": { "post": { "description": "List all entity watchlist screening programs", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityprogramlist" }, "operationId": "watchlistScreeningEntityProgramList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityProgramListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "entity_watchlist_programs": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "created_at": "2020-07-24T03:26:02Z", "id": "entprg_2eRPsDnL66rZ7H", "is_archived": false, "is_rescanning_enabled": true, "lists_enabled": [ "EU_CON" ], "name": "Sample Program", "name_sensitivity": "balanced" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityProgramListResponse" } } }, "description": "OK" } }, "summary": "List entity watchlist screening programs", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/review/create": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityreviewcreate" }, "operationId": "watchlistScreeningEntityReviewCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityReviewCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "comment": "These look like legitimate matches, rejecting the customer.", "confirmed_hits": [ "enthit_52xR9LKo77r1Np" ], "dismissed_hits": [ "enthit_52xR9LKo77r1Np" ], "id": "entrev_aCLNRxK3UVzn2r", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityReviewCreateResponse" } } }, "description": "OK" } }, "summary": "Create a review for an entity watchlist screening", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/review/list": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityreviewlist" }, "operationId": "watchlistScreeningEntityReviewList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityReviewListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "entity_watchlist_screening_reviews": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "comment": "These look like legitimate matches, rejecting the customer.", "confirmed_hits": [ "enthit_52xR9LKo77r1Np" ], "dismissed_hits": [ "enthit_52xR9LKo77r1Np" ], "id": "entrev_aCLNRxK3UVzn2r" } ], "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityReviewListResponse" } } }, "description": "OK" } }, "summary": "List reviews for entity watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/entity/update": { "post": { "description": "Update an entity watchlist screening.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningentityupdate" }, "operationId": "watchlistScreeningEntityUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityUpdateRequest" } } }, "description": "The entity screening was successfully updated.", "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "entscr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "document_number": "C31195855", "email_address": "user@example.com", "entity_watchlist_program_id": "entprg_2eRPsDnL66rZ7H", "legal_name": "Al-Qaida", "phone_number": "+14025671234", "url": "https://example.com", "version": 1 }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningEntityUpdateResponse" } } }, "description": "OK" } }, "summary": "Update an entity screening", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/create": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualcreate" }, "operationId": "watchlistScreeningIndividualCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "scr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "date_of_birth": "1990-05-29", "document_number": "C31195855", "legal_name": "Aleksey Potemkin", "version": 1, "watchlist_program_id": "prg_2eRPsDnL66rZ7H" }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualCreateResponse" } } }, "description": "OK" } }, "summary": "Create a watchlist screening for a person", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/get": { "post": { "description": "Retrieve a previously created individual watchlist screening", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualget" }, "operationId": "watchlistScreeningIndividualGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "scr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "date_of_birth": "1990-05-29", "document_number": "C31195855", "legal_name": "Aleksey Potemkin", "version": 1, "watchlist_program_id": "prg_2eRPsDnL66rZ7H" }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualGetResponse" } } }, "description": "OK" } }, "summary": "Retrieve an individual watchlist screening", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/history/list": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualhistorylist" }, "operationId": "watchlistScreeningIndividualHistoryList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualHistoryListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng", "watchlist_screenings": [ { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "scr_52xR9LKo77r1Np", "search_terms": { "country": "US", "date_of_birth": "1990-05-29", "document_number": "C31195855", "legal_name": "Aleksey Potemkin", "version": 1, "watchlist_program_id": "prg_2eRPsDnL66rZ7H" }, "status": "cleared" } ] } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualHistoryListResponse" } } }, "description": "OK" } }, "summary": "List history for individual watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/hit/list": { "post": { "description": "List all hits found by Plaid for a particular individual watchlist screening.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualhitlist" }, "operationId": "watchlistScreeningIndividualHitList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualHitListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng", "watchlist_screening_hits": [ { "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": { "number": "C31195855", "type": "passport" } } ], "locations": [ { "analysis": { "summary": "match" }, "data": { "country": "US", "full": "Florida, US" } } ], "names": [ { "analysis": { "summary": "match" }, "data": { "full": "Aleksey Potemkin", "is_primary": false, "weak_alias_determination": "none" } } ] }, "first_active": "2020-07-24T03:26:02Z", "historical_since": "2020-07-24T03:26:02Z", "id": "scrhit_52xR9LKo77r1Np", "inactive_since": "2020-07-24T03:26:02Z", "list_code": "US_SDN", "plaid_uid": "uid_3NggckTimGSJHS", "review_status": "pending_review", "source_uid": "26192ABC", "sub_programs": [ "SDGT" ] } ] } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualHitListResponse" } } }, "description": "OK" } }, "summary": "List hits for individual watchlist screening", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/list": { "post": { "description": "List previously created watchlist screenings for individuals", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividuallist" }, "operationId": "watchlistScreeningIndividualList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng", "watchlist_screenings": [ { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "scr_52xR9LKo77r1Np", "search_terms": { "country": "US", "date_of_birth": "1990-05-29", "document_number": "C31195855", "legal_name": "Aleksey Potemkin", "version": 1, "watchlist_program_id": "prg_2eRPsDnL66rZ7H" }, "status": "cleared" } ] } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualListResponse" } } }, "description": "OK" } }, "summary": "List Individual Watchlist Screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/program/get": { "post": { "description": "Get an individual watchlist screening program", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualprogramget" }, "operationId": "watchlistScreeningIndividualProgramGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualProgramGetRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "created_at": "2020-07-24T03:26:02Z", "id": "prg_2eRPsDnL66rZ7H", "is_archived": false, "is_rescanning_enabled": true, "lists_enabled": [ "US_SDN" ], "name": "Sample Program", "name_sensitivity": "balanced", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualProgramGetResponse" } } }, "description": "OK" } }, "summary": "Get individual watchlist screening program", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/program/list": { "post": { "description": "List all individual watchlist screening programs", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualprogramlist" }, "operationId": "watchlistScreeningIndividualProgramList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualProgramListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng", "watchlist_programs": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "created_at": "2020-07-24T03:26:02Z", "id": "prg_2eRPsDnL66rZ7H", "is_archived": false, "is_rescanning_enabled": true, "lists_enabled": [ "US_SDN" ], "name": "Sample Program", "name_sensitivity": "balanced" } ] } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualProgramListResponse" } } }, "description": "OK" } }, "summary": "List individual watchlist screening programs", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/review/create": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualreviewcreate" }, "operationId": "watchlistScreeningIndividualReviewCreate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualReviewCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "comment": "These look like legitimate matches, rejecting the customer.", "confirmed_hits": [ "scrhit_52xR9LKo77r1Np" ], "dismissed_hits": [ "scrhit_52xR9LKo77r1Np" ], "id": "rev_aCLNRxK3UVzn2r", "request_id": "saKrIBuEB9qJZng" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualReviewCreateResponse" } } }, "description": "OK" } }, "summary": "Create a review for an individual watchlist screening", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/review/list": { "post": { "description": "List all reviews for the individual watchlist screening.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualreviewlist" }, "operationId": "watchlistScreeningIndividualReviewList", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualReviewListRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "next_cursor": "eyJkaXJlY3Rpb24iOiJuZXh0Iiwib2Zmc2V0IjoiMTU5NDM", "request_id": "saKrIBuEB9qJZng", "watchlist_screening_reviews": [ { "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "comment": "These look like legitimate matches, rejecting the customer.", "confirmed_hits": [ "scrhit_52xR9LKo77r1Np" ], "dismissed_hits": [ "scrhit_52xR9LKo77r1Np" ], "id": "rev_aCLNRxK3UVzn2r" } ] } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualReviewListResponse" } } }, "description": "OK" } }, "summary": "List reviews for individual watchlist screenings", "tags": [ "plaid" ] } }, "/watchlist_screening/individual/update": { "post": { "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.", "externalDocs": { "url": "/api/products/monitor/#watchlist_screeningindividualupdate" }, "operationId": "watchlistScreeningIndividualUpdate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "examples": { "example-1": { "value": { "assignee": "54350110fedcbaf01234ffee", "audit_trail": { "dashboard_user_id": "54350110fedcbaf01234ffee", "source": "dashboard", "timestamp": "2020-07-24T03:26:02Z" }, "client_user_id": "your-db-id-3b24110", "id": "scr_52xR9LKo77r1Np", "request_id": "saKrIBuEB9qJZng", "search_terms": { "country": "US", "date_of_birth": "1990-05-29", "document_number": "C31195855", "legal_name": "Aleksey Potemkin", "version": 1, "watchlist_program_id": "prg_2eRPsDnL66rZ7H" }, "status": "cleared" } } }, "schema": { "$ref": "#/components/schemas/WatchlistScreeningIndividualUpdateResponse" } } }, "description": "OK" } }, "summary": "Update individual watchlist screening", "tags": [ "plaid" ] } }, "/webhook_verification_key/get": { "post": { "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.\n\nThe `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.", "externalDocs": { "url": "/api/webhooks/webhook-verification/#get-webhook-verification-key" }, "operationId": "webhookVerificationKeyGet", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookVerificationKeyGetRequest" } } }, "description": "", "required": true }, "responses": { "200": { "content": { "application/json": { "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" } } }, "schema": { "$ref": "#/components/schemas/WebhookVerificationKeyGetResponse" } } }, "description": "OK" }, "default": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlaidError" } } }, "description": "Error response" } }, "summary": "Get webhook verification key", "tags": [ "plaid" ] } } }, "security": [ { "clientId": [], "plaidVersion": [], "secret": [] } ], "servers": [ { "description": "Production", "url": "https://production.plaid.com" }, { "description": "Sandbox", "url": "https://sandbox.plaid.com" } ], "tags": [ { "description": "The Plaid API", "name": "plaid" } ] }