November 2, 2026
- Added optional
has_perpetual_otpfield to the custom Sandbox user configuration object. When set totrue, the Item behaves like one at an institution that presents a multi-factor challenge on every login attempt.

This changelog tracks updates to the Plaid API and changes to the Plaid Link SDKs, Link flow, functionality, and APIs. The changelog is updated at least once per month. Updates that affect only products or features in beta or limited release may not always be reflected. Improvements to the Dashboard, institution connectivity / Item health, or data availability and quality may not always be reflected.
Link SDKs are released on GitHub. A summary of updates will be posted here. For a more complete and detailed record of Link SDK changes, see the GitHub changelogs: iOS, Android, React Native, React.
Plaid's officially supported libraries are updated frequently. For details, see the GitHub changelogs: Python, Node, Ruby, Java, Go.
Subscribe to this changelog via RSS.
has_perpetual_otp field to the custom Sandbox user configuration object. When set to true, the Item behaves like one at an institution that presents a multi-factor challenge on every login attempt.For Plaid Check Consumer Report:
paired_item_id to the Item object, available through /item/get and /user/items/get. It identifies the corresponding Plaid Inc. or Plaid Check Item for Items created through a hybrid Link session or by adding Plaid Check products to an existing Plaid Inc. Item. The field is omitted for Items that have no paired Item.For Link:
/oauth/* endpoints to be aligned with OAuth spec (if called with content-type: application/x-www-form-urlencoded) or the Plaid API (if called with content-type: application/json)./sandbox/transactions/create now works on every Sandbox Item, not only those created with user_transactions_dynamic, and can create transactions up to 730 days in the past, as opposed to only 14 days previously. It also now accepts an optional account_id parameter for the transaction to associate it with a specific account. ht) as a supported Link language.For Plaid Check Consumer Report:
/cra/report/create and /cra/report/get, to consolidate and simplify API workflows. Older /cra/check_report/ endpoints will continue to be supported. For Identity:
/identity/match/list endpoint, which returns a paginated list of Link-based Identity Match checks and outcomes. For access to this endpoint, contact your account manager. For Transfer:
adjustment to TransferEventType to reflect adjustments due to rare activity, such as a dishonor. The event_amount field indicates the amount adjusted: positive amounts credit the ledger, and negative amounts debit the ledger./item/get now returns consent_expiration_time for Chase Items (backfilled for Items connected since August 21, 2026)./beta/webhook_events/list, a beta endpoint to help customers manage missed webhooks. For Plaid Check Consumer Report:
For more details about LendScore 2 and Instant Link, see the Plaid blog.
For Transfer:
For Link:
For Transactions and Liabilities:
loan type accounts beyond student and mortgage, such as auto loans and lines of credit; see the account type / product support matrix.connection_availability field to the Institution object. It is NOT_SUPPORTED when Plaid does not support new connections to the institution (which can only occur on /institutions/get_by_id responses), and SUPPORTED otherwise.roll_dates_forward field to the custom Sandbox user configuration object. When set to true, when the Item is created, the most recent transaction activity date will always be the current date and other transaction activity will be rolled forward to match.For Link:
onLoad was not called for Identity Verification sessions.onExit callback on the main thread. With this release, Safari Web Inspector can no longer attach to production Link sessions on iOS; WebView inspection is now limited to Sandbox.LinkAccountVerificationStatus and other public sealed classes when an activity is restored after the app's process was killed, fires OnLoadCallback for sessions whose WebView is not eager-started, and includes security improvements. LinkAccountVerificationStatus and other public sealed classes when an activity is restored after the app's process was killed and includes security improvements. For Plaid Check Consumer Report:
CRA_REPORT_UPDATED webhook, added a client_user_id field.For Identity Verification:
language parameter to /identity_verification/create to select the starting language for an Identity Verification session.installment (loan) and charge card (credit). These subtypes were never returned by the Plaid API. home equity and commercial account subtypes will be sub-divided to more accurately reflect the accounts they describe. home equity will now correspond to HELOCs only; home equity loans will be mapped to a new home equity loan subtype. commercial will map to commercial loans only; commercial lines of credit will be mapped to a new commercial line of credit subtype. Clients filtering for these subtypes in Link need to add the new ones to keep their current coverage.For Link:
For Plaid Check Consumer Report:
CHECK_REPORT_FAILED and USER_CHECK_REPORT_FAILED webhooks, empty repairable_items and failed_products lists are now returned as [] instead of being omitted.For Link:
onLoad callback. The behavior of the existing createPlaidLinkSession is unchanged. Bundles Android SDK v6.1.0 and iOS SDK v7.1.0.For Auth and Transfer:
For Plaid Check Consumer Report:
/cra/servicing/subscription/create to subscribe a user to recurring consumer report generation on a daily cadence. Subscriptions can be managed with /cra/servicing/subscription/get, /cra/servicing/subscription/list, /cra/servicing/subscription/update, and /cra/servicing/subscription/delete. Servicing replaces Cash Flow Updates, which is now deprecated; existing Cash Flow Updates customers have until August 20, 2027 to migrate to Servicing.CRA_REPORT_UPDATED webhook, fired when a subscribed report is regenerated.For Identity Verification:
For Income:
USER_INCOME_VERIFICATION, USER_INCOME_VERIFICATION_RISK_SIGNALS, and USER_INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED webhooks alongside their existing INCOME_VERIFICATION_* webhooks. For details, see Migrate to new user APIs.For Investments:
fund fee, loan payment, and rebalance. Plaid has never returned any of these values.stock distribution investment transaction subtype. The "inflow of stock from a distribution" it described is now represented by the transfer type's spin off subtype.For Signal:
/signal/evaluate calls through to reported decisions, returns, and errors, along with diagnostic messages for common integration gaps. Also refreshed the return rate, return code, and institution analytics on the page.For Virtual Accounts:
payee_verification_status on e-wallet transactions for GBP payouts. Previously, this field was returned for EUR payouts only.For Link:
For Auth:
apy field./sandbox/user/fire_webhook for firing test webhooks associated with a user (primarily Income and Plaid Check Consumer Report webhooks) rather than an Item./user/items/associate for associating Items with a user id (Early Availability only).For Link:
onExit, and
deprecating PlaidLinkView and PlaidLinkUIViewControllerRepresentable in favor of PlaidLinkSheet or session.sheet().destroy(), and bundling Android SDK v5.5.3, and iOS SDK v.6.5.0. For Identity Verification:
For Income:
For Investments:
prediction market account subtype.For Payment Initiation and Virtual Accounts:
user_id to the /payment_initiation/payment/create, /payment_initiation/consent/create and /wallet/transaction/execute endpoints.TRANSFER_OUT transaction type. This type represents a transaction that debits an e-wallet and cannot be classified under another category, typically initiated by a non-Plaid flow due to technical errors, FPS timeouts, or other payment-related issues.For Identity Verification:
For Transactions:
merchant_category_code field. For Link:
SuccessMetadata object.LinkEventViewNames and adding metadata to identify apps built with Plaid-Flutter.public_token in onSuccess and an object-based exit() signature) to match the Link Web SDK, and adding stable Layer and Identity Match events with a complete Layer React example. See the migration guide for required TypeScript updates.For Auth:
For Transfer:
For Link:
onSuccess would sometimes not be called.onSuccess callback.For Plaid Check Consumer Report:
hide_gse_details parameter in /cra/check_report/verification/pdf/get.error, repairable_items, and failed_products fields to the CHECK_REPORT_FAILED and USER_CHECK_REPORT_FAILED webhooks.exclusion_code to ultrafico_score_results, exposing the FICO exclusion code that explains why an UltraFICO® score could not be computed.For Identity Verification:
user.ip_address field to the /identity_verification/create request object, allowing customers who use the backend-only flow to send an IP address for use in risk evaluation.For Investments Move:
For Liabilities:
For Signal (Balance):
/signal/evaluate with a Balance-only ruleset are no longer subject to Signal risk consent enforcement. These calls do not require the end user to consent to Signal Transaction Scores and will not return the ADDITIONAL_CONSENT_REQUIRED error. This relaxes the consent requirement announced on June 16, 2026, which now applies only to calls that use Signal Transaction Scores-powered rulesets.For Transfer:
For Identity Verification:
For Investments:
figi field. Because the FIGI identifier, unlike CUSIP and other identifier fields, is immutable, both clients and Plaid can now more accurately track a holding's identity, without being impacted by corporate actions such as name changes, acquisitions, and delistings. For Layer:
For Transactions:
cash advance, late fee, membership fee, returned item fee as possible values to the transaction_code enum.FRAUD_TRANSACTION to the reason_code enum used by /item/products/terminate and /user/products/terminate, for terminating an Item due to transaction-level fraud (e.g. unauthorized transactions, card testing, chargebacks, ACH returns, or disputes).For Link:
onLoad callback for background preloading. The legacy Plaid.create, PlaidHandler, and FastOpenPlaidLink APIs are removed, and the minimum supported Android version is raised to API 26 (Android 8.0). For a complete list of changes and migration guidance, see the Release notes.create, open, PlaidLink, usePlaidEmitter) with session objects (createPlaidLinkSession, createPlaidLayerSession, createPlaidHeadlessSession), and adds Embedded Search and Headless Link support. The iOS LinkKit.xcframework is now bundled directly in the npm package, as LinkKit 7 no longer supports CocoaPods distribution. For a complete list of changes and migration guidance, see the Release notes.For Income:
/credit/payroll_income/get.For Plaid Check Consumer Report:
products array when calling /link/token/create or /cra/check_report/create. Clients will no longer be able to generate and retrieve CRA products through /get endpoints if those products were not requested during /create. Attempting to do so will result in a PRODUCT_NOT_REQUESTED error. For customers who do not already use this pattern, this requirement will be enforced beginning July 2026; for customers who have existing integrations using this pattern, the change will not be enforced until September 2026. If you are an impacted existing customer, your Plaid account manager will reach out with more details.reason_codes array to CraPartnerInsightsBaseFicoScore and negative_reason_codes / positive_reason_codes arrays to CraPartnerInsightsUltraFicoScore. The corresponding individual reason_code_1 through reason_code_4 and positive_reason_code_1 through positive_reason_code_4 fields are now deprecated.For Investments:
holding schema via the new tax_lots field. Tax lot data is currently supported for Robinhood, E*TRADE, Wealthfront, and IBKR, with more institutions to come.For Transfer:
requested_amount to the proposed transfer object on the /transfer/authorization/create response, and added guarantee_details object to the Transfer and TransferAuthorization schemas. For Link:
For Plaid Check Consumer Report:
model_version string field to PrismInsights and deprecated the integer version field.For Identity:
For Transactions and Liabilities:
mortgage-type accounts.For Signal:
/signal/evaluate can be called, even if your Link session is not enrolled in Data Transparency Messaging. Failure to obtain consent will result in the ADDITIONAL_CONSENT_REQUIRED error. This change applies both to Signal Transaction Scores and to Balance integrations that call the /signal/evaluate endpoint. To obtain Signal consent on an existing Item if you have not already done so, launch update mode and include signal in the additional_consented_products field when calling /link/token/create. If you have a large number of impacted Items that you would like to add Signal to and require assistance, contact your Plaid account manager. /user/products/terminate, /user/items/remove, and /sandbox/user/reset_login endpoints for easier management of user-based subscriptions and Items. These endpoints can be used only for user-based flows and products (e.g. Plaid Check Consumer Report, Income, and Items added via Multi-Item Link).For Plaid Check Consumer Report:
/cra/check_report/income_insights/get, when there are no income streams for the report, income_streams is now returned as an empty array ([]) instead of being omitted.For Identity Verification:
For Monitor:
Made multiple UI improvements to the Dashboard:
For Plaid Check Consumer Report:
/cra/check_report/verification/pdf/get, added income as a supported type and deprecated report_requested field in favor of reports_requested array field to support multiple report types.user_id field to /cra/credit_profile/report/get response. The user_id field is already present in the request and was added to the response to improve developer ergonomics.For Protect:
USER_PERMISSION_REVOKED webhook on standard access expirations at PNC.For Auth:
For Identity Verification:
For Layer:
For Plaid Check Consumer Report:
PENDING_DISCONNECT webhook, added disconnect_time field with a timestamp indicating when the Item's consent will expire.For Plaid Check Consumer Report:
home_lending_report_options field for configuring Home Lending Report generation (VOA, Employment Refresh) on base report creation.For Link:
SubmissionData handling that was introduced in v6.4.3.For Enrich:
recurrence object. This object was unused and returned placeholder data only, causing confusion for customers.For Investments:
cfi_code to securities objects.margin_loan_amount as an account balance field (in addition to available and current balance).For Plaid Check Consumer Report:
INTERNAL_SERVER_ERROR 500 error returned by verification endpoints when data was not ready yet to a retryable PRODUCT_NOT_READY 400 error.For Plaid Protect:
For Signal Transaction Scores and Balance:
null when using Custom Sandbox users.For Link:
SELECT_FALLBACK_ROUTING_INSTITUTION, SELECT_DENYLISTED_INSTITUTION, and SELECT_REMEMBER_ME_DUPLICATE_INSTITUTION, deprecates FinanceKit sync API, and deprecates CocoaPods integration.display_message: null rather than omitting the display_message field if there is no associated display message, in order to match the documented behavior, as well as the behavior of error objects that are returned by the Plaid API outside of a webhook context.For Auth:
/auth/verify endpoint. This feature is currently in early availability; to request access, contact your Plaid account manager.For Plaid Check Consumer Report:
consumer_report_permissible_purpose field must be included in /link/token/create when creating a Link token for a Consumer Report product. Existing customers who are impacted by this change have been contacted by their account managers and may have arranged custom migration deadlines. user_id field to webhook payloads for the following webhooks: SYNC_UPDATES_AVAILABLE, PENDING_EXPIRATION, ERROR, LOGIN_REPAIRED, INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE, INVESTMENTS_TRANSACTIONS: HISTORICAL_UPDATE, HOLDINGS: DEFAULT_UPDATE, LIABILITIES: DEFAULT_UPDATE, PENDING_DISCONNECT, USER_PERMISSION_REVOKED, NEW_ACCOUNTS_AVAILABLE, USER_ACCOUNT_REVOKED, SESSION_FINISHED.PENDING_DISCONNECT webhook. Upon receiving the webhook, prompt the user to go through the Update Mode flow for the Item, which will migrate the Item to the new API. One week after the PENDING_DISCONNECT webhook was fired for a given Item, if the Item has not yet gone through update mode, it will be disconnected from the old API and will enter the ITEM_LOGIN_REQUIRED error state. Sending the Item through update mode will move it to the new API and restore it to a healthy state.For Link:
For Plaid Check Consumer Report:
ELIGIBILITY_FOR_GOVT_BENEFITS, to represent reports generated 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).For Layer:
/user_account/session/get response, added edits_current field to the identity_edit_history object, indicating how many times the user manually edited the prefilled data provided by Layer.For Identity Verification:
For Layer:
For Protect:
environment field to Protect webhooks.For Signal:
For Virtual Accounts:
payee_verification_status field to WalletTransaction schema. This field indicates the result of payee verification checks for EUR payouts./link/token/create API requests. If a phone number, address, name, or email sent in the user object is malformatted, the call will fail with the error INVALID_USER_IDENTITY_DATA. This will not impact integrations that do not send user PII in /link/token/create.For Link:
For Transfer:
For Identity Verification:
For Identity Verification:
facial_duplicates object, containing details about facial duplicate results, to risk_check object.For Plaid Check Consumer Report:
/cra/check_report/verification/get, including a detailed overview of a borrower's connected accounts with current and average balances, a breakout of deposits and withdrawals, and total inflows/outflows for each account.Announced upcoming Bank of America API migration and consent expiration. Existing Bank of America Items can be migrated to the new Bank of America API beginning in early 2026 and must eventually be migrated to avoid entering an ITEM_LOGIN_REQUIRED state. The exact beginning and end dates of the migration will be announced in 2026. Bank of America Items on the new API will have a 12-month consent expiration applied.
Released Plaid's new User APIs, supporting all new integrations of Plaid Check, Multi-Item Link, and Plaid Protect. The User APIs create a single, simplified representation of a user via the user_id field and will be the representation used by the Plaid API going forward. Customers with existing integrations should continue to use user tokens; migration instructions will be released in 2026. See New User APIs for more details.
For Link:
For Layer:
SESSION_FINISHED webhook, allowing backend detection of when a session is complete and public_token delivery.Added the following template improvements:
required_if_supported_products, optional_products, and additional_consented_products.For Transactions:
Released Personal Finance Categories v2 (PFCv2). PFCv2 includes both improved transaction categorization accuracy (approximately 10% improvement at the category level and 20% improvement at the subcategory level) and a new, more granular transaction schema with additional categories specifically useful for Earned Wage Access (EWA) use cases, with six additional income subcategories, six additional loan disbursement subcategories, and three additional loan repayment subcategories. Additional subcategories have also been added for bank fees.
To opt in to PFCv2, existing customers should set personal_finance_category_version to v2 in the /transactions/sync, /transactions/get, or /transactions/enrich request. Opting in to PFCv2 is required for existing customers to receive the new, more granular subcategories. To receive the PFCv2 accuracy improvements, customers do not need to opt in to PFCv2 (with the exception of a small subset of customers in the EWA industry). All new customers enabled for Transactions after December 3, 2025 will be opted in to PFCv2 by default.
For Identity Verification:
latest_scored_protect_event field to response objects in the Identity Verification endpoints.For Plaid Check Consumer Report:
employer_name field.DATA_QUALITY_CHECK_FAILED error. This is estimated to impact approximately one in one thousand report generation attempts. If you experience this error, wait at least 24 hours and then try again./cra/check_report/income_insights/get, added bank_income_source.status and bank_income_source.income_provider fields./cra/check_report/income_insights/get, make income_provider nullable.ITEM_LOGIN_REQUIRED state.For Link:
LinkErrorCode.errorType public, fixed bug where Layer "auto" customization for light/dark mode was always dark, and added onLoad callback to Plaid.create for detecting when Link is ready to present.onLoad to LinkTokenConfiguration, fired once when Link is fully loaded and ready to present. You can use it to manage your own loading UI or defer presentation until ready.For Auth:
For Assets:
For Plaid Check Consumer Report:
For Identity Verification:
issue_date is now exposed in the API where relevant; previously this information was only available via the Dashboard.For Transfer:
/transfer/authorization/create, allowing them to more easily initiate transfers even if the end customer performed the initial Item creation.For Balance, Transfer, and Signal:
/signal/evaluate endpoint./signal/evaluate endpoint and Signal Rules in the Dashboard to take advantage of no-code configuration, managing business logic, and tuning rules.ruleset_key when calling /signal/evaluate will now be assumed to be using the default ruleset, rather than no ruleset. Customers who do not want to use a ruleset can contact their account manager to opt out. This change does not impact existing Signal Transaction Scores customers; all existing customers will automatically be opted out of this behavior. These changes will automatically take effect for all new customers who are enabled in Production for Balance or Signal Transaction Scores after October 15, 2025. A migration path will be available soon for existing customers. If you are an existing customer and would like to migrate early, contact your account manager for information.
For Plaid Check Consumer Report:
Released the Plaid LendScore. The LendScore is a score from 1-99 that indicates an end user's creditworthiness based on data from their Plaid-linked accounts. LendScore is currently in closed beta. To request access, existing customers should contact their Plaid account manager; new customers should contact sales.
Released Cash Flow Insights, providing aggregated transaction data across all permissioned accounts. This data can be used for credit decisioning and forms the basis of the Plaid LendScore. Cash Flow Insights is currently in closed beta. To request access, existing customers should contact their Plaid account manager; new customers should contact sales.
For Transfer:
For Link:
selection event was missing in LinkEvent.EventMetadata, resolving an issue where metadataJson in LinkEventMetadata could be an empty string instead of {}, and improving internal logging and debugging to help diagnose customer issues more effectively. For Auth:
For Plaid Check Consumer Report:
For Partners:
For Link:
selection event was missing in LinkEvent.EventMetadata and improving internal logging and debugging to help diagnose customer issues more effectively.For Auth and Identity:
For Credit products:
For Layer:
For Transfer:
count values for /transfer/event/sync from 25 and 100 to 100 and 500, respectively.Due to a change in Chase's permissioning UI, the USER_ACCOUNT_REVOKED webhook will no longer be fired for Chase Items, as Chase no longer allows account-level permissions revocation. Instead, the USER_PERMISSION_REVOKED webhook will be fired. PNC Items will continue to support the USER_ACCOUNT_REVOKED webhook.
For Plaid Check Consumer Report:
For Transfer:
funds_settlement_date field. All customers using Plaid Ledgers should use the expected_funds_available_date instead.For Link:
metadataJson key to event data to allow for all keys to be camelCase and updates Android SDK to 5.3.3.com.google.code.gson:gson to 2.9.1, upgrade dependency com.squareup.okhttp3:logging-interceptor to 4.9.2.For Auth:
For Plaid Check Consumer Report:
baseline_count and baseline_amount in response to customer feedback. These fields will be omitted or returned with null values going forward.For Identity Verification:
For Investments Move:
MANUAL_VERIFICATION_REQUIRED, when /investments/auth/get is called on an Item that requires an interactive Link session for verification. To resolve this error, send the Item through update mode.For the Dashboard:
For Link:
com.google.protobuf:protobuf-kotlin-lite library.For Auth:
For Plaid Check Consumer Report:
For Layer:
For Transfer:
For the Plaid Dashboard:
For all products:
/item/remove, added optional reason_code and reason_note fields. Using these fields when removing an Item can help Plaid identify fraud and bad actors in the Plaid Network, improving anti-fraud data for all Plaid customers.For Plaid Link:
For Plaid Check Consumer Report:
base_report.gse_options field when calling /cra/check_report/create or /link/token/create.For Identity Verification:
analysis object, added the aamva_verification object to report results from the American Association of Motor Vehicle Administrators (AAMVA) Driver's License Data Verification service. This object is currently in beta. To receive AAMVA data, you must enable the corresponding feature in your Identity Verification template under the "DMV/Secretary of State Validation" header in the Workflow tab of the Template Editor. This object will only be populated for US drivers licenses in participating states.For Investments:
sedol field from responses, as this field was only available for stocks that trade on London Stock Exchange and to customers that had the appropriate licenses. The sedol field will now be null for all securities. subtype identifiers to the security object to specify the type of a security in more detail. New subtype values are: 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.For Transfer:
/transfer/capabilities/get response rfp object, added max_amount and iso_currency_code fields./transfer/ledger/event/list endpoint.For Link:
For Link:
issueDescription and issueDetectedAt to EventMetadata.issueDescription and issueDetectedAt to EventMetadata, the event LAYER_AUTOFILL_NOT_AVAILABLE, and supporting the dateOfBirth parameter for Layer.For Plaid Check Consumer Report:
For Signal:
/signal/decision/report or /signal/return/report is called with an unknown client_transaction_id (one that was never submitted to /signal/evaluate), these endpoints will return an error instead of a success response. This change better reflects that these endpoints should only be used to report returns or decisions on previously-evaluated transactions.For Transfer:
For Link:
For Plaid Link:
LAYER_AUTOFILL_NOT_AVAILABLE, and exposing Finance Kit sync simulated behavior to Objective-C (React Native). For Plaid Link:
destroy(), a smaller SDK size, and removal of unused dependencies. For more details, see the release notesFor Link:
For the Plaid Dashboard:
For Plaid Link:
For Plaid Check Consumer Report:
/cra/check_report/verification/get. This feature is in early availability; contact sales or your account manager to learn more.nsf_overdraft_transactions_count fields.institution_name and institution_id) to /cra/monitoring_insights/get response.require_identity boolean to options object in /cra/check_report/create and /link/token/create requests. If set to true and user identity data is not available, CRA report creation will fail, and you will not be charged.days_required and days_requested when generating a CRA report across multiple endpoints. The maximum value for days_requested is now 731 and the maximum value for days_required is 184.client_report_id to partner insights response.For Investments:
For Payment Initiation:
error field to responses of /payment_initiation/payment/get and /payment_initiation/consent/payment/execute containing error details when the payment fails./payment_initiation/recipient/list.WALLET_TRANSACTION_STATUS_UPDATE webhook and to responses of /wallet/transaction/get and /wallet/transaction/list.For Transactions:
/sandbox/transactions/create endpoint, which can be used to add custom transactions to the user_transactions_dynamic Sandbox test user.user_ewa_user, user_yuppie, and user_small_business Sandbox test users for persona-based testing of realistic Transactions data. account_numbers field to counterparty object.For Transfer:
wire_return_fee to transfer and transfer event objects.For Protect:
For Link:
For Link:
org.bouncycastle:bcpkix-jdk15to18 dependency. For Link:
For Plaid Check Consumer Report:
For Transfer:
For Link:
showGradientBackground option for customizing Link appearance, and a new onLoad callback from Plaid.create to help detect when Plaid is ready to present.For Auth:
For Plaid Check Consumer Report:
/cra/check_report/base_report/get, deprecated report.items.accounts.account_insights in favor of the attributes field, which aggregates insights across accounts.prism_versions object when calling /cra/check_report/partner_insights/get. If no version is specified, Plaid will default to the current version (v3) available now. Starting in November 2025, customers will be required to specify a prism_version when calling Partner Insights endpoints.For Transfer:
For Enrich:
category_id and category fields for all customers enabled for the Transactions product on or after May 5, 2025. Customers should use the personal_finance_category field instead.For Transactions:
category_id and category fields for all customers enabled for the Transactions product on or after May 5, 2025. Customers should use the personal_finance_category field instead.For Auth:
ITEM_LOGIN_REQUIRED state. For more details, see TAN expiration.For Layer:
android_package_name to /session/token/create.For Plaid Check Consumer Report:
average_inflow_amount field to be positive.For Transfer:
ITEM_LOGIN_REQUIRED state. For more details, see TAN expiration.INSTITUTION_RATE_LIMIT error and behavior for when an institution is experiencing excessive API traffic to real-time endpoints. This error will be rolled out to all customers by the end of May 2025.For Transfer:
expected_funds_available_date to the Transfer object.USER_PERMISSION_REVOKED webhook support for American Express.For Layer:
/session/token/create, moved the user_id field into the user object.destroy() method to support Layer.For Link:
destroy() method to support Plaid Layer. For Link:
CONSENT and SUBMIT_PHONE TRANSITION_VIEW Link analytics events will fire when this screen is reached.For Plaid Check Consumer Report:
/user/create and /user/update.warnings to responses for /cra/check_report/income_insights/get, /cra/check_report/network_insights/get and /cra/check_report/partner_insights/get. warnings is populated when Plaid successfully generated a report, but encountered an error when extracting data from one or more Items.consumer_report_user_identity object if the phone number is not pre-filled via /link/token/create.For Signal:
triggered_rule_details to /signal/evaluate response.For Transactions:
/processor/transactions/sync endpoint to allow null account objects. This change only impacts Transactions processor partners.For Identity Verification:
For Assets:
investments must now be specified in the optional_products array when initializing Link.For Layer:
LAYER_AUTHENTICATION_PASSED webhook.For Investments:
For Plaid Check Consumer Report:
DATA_UNAVAILABLE error into more specific error codes when possible, introducing the new codes INSTITUTION_TRANSACTION_HISTORY_NOT_SUPPORTED, INSUFFICIENT_TRANSACTION_DATA, and DATA_QUALITY_CHECK_FAILED. Also replaced INVALID_FIELD with NETWORK_CONSENT_REQUIRED for the use case where the end user has not given consent to share network data. For details on these new codes, as well as improved documentation of existing codes, see Plaid Check errors.CHECK_REPORT_FAILED webhook at alerting to partial failures. Previously, certain types of partial Check Report failures would not trigger the webhook. successful_products and failed_products arrays to the CHECK_REPORT_READY webhook to provide more granular detail on partial Check Report failures.consumer_report_user_identity object if the phone number is not pre-filled via /link/token/create. Pre-filling phone numbers can help boost conversion while reducing steps for users. Support for this feature is currently available in Production and will be added in Sandbox in the coming months.For Signal:
For Link:
For Auth and Transfer:
For Identity:
IDENTITY_MATCH_PASSED and IDENTITY_MATCH_FAILED Link events.For Layer:
/session/token/create as the preferred endpoint for creating a Layer session, rather than /link/token/create, and added redirect_uri support to /session/token/create.For Plaid Check Consumer Report:
client_report_id to Income Insights Report. Moved client_report_id field to the top-level /cra/check_report/create request, rather than being inside the base_report request object, to reflect that the client_report_id is no longer Base Report-specific. Usage of the client_report_id within the base_report object is deprecated. score field from a float to an integer in the API spec, to reflect that it will always be an integer.For Statements:
posted_date field to /statements/list response.For Auth:
For Identity:
For Plaid Check Consumer Report:
Updated behavior when calling /cra/check_report/create to improve consistency. Previously, no reports would be eagerly generated upon calling this endpoint. Now, the base report will always be eagerly generated, along with products specified in the products array.
When calling /link/token/create, it is now possible to include Plaid Check products within the optional_products, required_if_supported_products, or additional_consented_products request fields when Plaid Inc. products are included in the products field, or vice-versa.
Identity data is now provided in the Base Report only. Plaid will no longer return identity data in the Income and Partner Insights products, and the fields will be removed from API responses by June 30, 2025.
Removed the Cashflow Updates INSIGHTS_UPDATED reason code. Instead, a separate webhook will be fired for each reason.
The score field in /cra/check_report/partner_insights/get is now nullable.
For Transfer:
intent_id to the transfer event object returned by /transfer/event/sync, for transfers created via Transfer UI. This will currently only be populated for RfP transfers.For Link:
LAYER_READY event or did not receive it at all, and fixes an issue with XCFramework.For Auth:
is_tokenized_account_number: true and have populated persistent_account_id fields.For Plaid Check Consumer Report:
consumer_report_user_identity.date_of_birth is now a required field when creating or updating a user token with a consumer_report_identity field.longest_gap_between_transactions, average_inflow_amount, and average_outflow_amount fields have been removed and replaced with pluralized versions longest_gaps_between_transactions, average_inflow_amounts, and average_outflow_amounts fields to better reflect the fact that they are arrays.For Signal:
/signal/evaluate will no longer return a PRODUCT_NOT_SUPPORTED error. Instead, the /signal/evaluate call will succeed. This change allows customers to evaluate these Items using Signal Rules that do not require a Signal score and attributes. Billing will only be triggered for the /signal/evaluate call if either a score is returned or a Signal Rule is evaluated.For Virtual Accounts:
originating_fund_source to /wallet/transaction/execute request. This field is required by local regulation for certain use cases (e.g. money remittance) to send payouts to recipients in the EU and UK.For Link:
LAYER_READY event or did not receive it at all, and fixes an issue with XCFramework.Notified all customers that they must sign an addendum to their agreement with Plaid to retain PNC data access after February 28th, 2025. If you do not know how to sign this addendum, or are not sure if you have signed it, contact your Plaid account manager or Plaid support.
For Link:
USE_FRAMEWORKS preprocessor check was failing for projects using use_frameworks! :linkage => :static.For Link:
For Payment Initiation (UK/EU):
end_to_end_id field to the payment object, providing a unique identifier for tracking and reconciliation purposes.For Transfer:
/transfer/capabilities/get, added an institution_supported_networks.rfp.debit field to indicate an institution's support for debit request for payment (RfP).funds_available sweep status and event type.SSO is now available, at no additional charge, to all customers except those on Pay-as-you-go plans. You can enable SSO via the Dashboard > Team Settings > SSO.
For Link:
For Link:
For Plaid Check:
nsf_overdraft_transactions_count_30d/60d/90d fields to attributes field of /cra/check_report/base_report/get.For Payment Initiation:
/sandbox/payment/simulate endpoint to improve ease of testing in Sandbox.For Signal:
For Transfer:
/transfer/authorization/create call. You can configure your Transfer Rules via the Dashboard.failure_code and description fields to /transfer/sweep/get and transfer/sweep/list endpoints. Developers should use these instead of the ach_return_code field.For Link:
For Link:
PlaidLink component and openLink function, and updating a number of Android libraries. For a full list of all changes in this release, see the Release notes.For Link:
AUTO_SUBMIT event name and INVALID_UPDATE_USERNAME Item error, removing the PROFILE_ELIGIBILITY_CHECK_ERROR event name. For a full list of all libraries updated in this SDK release, see the Release notes.For Auth:
USER_ACCOUNT_REVOKED and USER_PERMISSION_REVOKED webhooks, allowing you to reduce return risk. Upon receiving either of these webhooks, Auth customers should no longer make ACH transfers using the tokenized account numbers of the associated Items.For Transactions:
/transactions/sync endpoint, added the ability to use an account_id filter.For Plaid Check:
For Link:
institution_name to the Item object schema. You no longer have to call /institutions/get_by_id to translate the institution data in an Item to human-readable format. /sandbox/item/fire_webhook, added support for USER_PERMISSION_REVOKED and USER_ACCOUNT_REVOKED webhooks.For Link:
For Auth:
is_tokenized_account_number field to /auth/get to indicate whether an account number is tokenized. Tokenized account numbers may require special business logic to avoid ACH returns. For more details, see Tokenized account numbers.auth_method enum to the Item object schema to indicate which verification method (e.g. Instant Auth, Same-Day Micro-deposits, Database Match...) was used to verify the Item.SAME_DAY_MICRODEPOSIT_AUTHORIZED and INSTANT_MICRODEPOSIT_AUTHORIZED transition view names to Link.For Plaid Check Consumer Report:
/sandbox/cra/cashflow_updates/update endpoint to facilitate testing.For Identity Verification:
For Investments:
security object, added the fixed_income object with the following details: yield_rate, maturity_date, issue_date, and face_value fields, to provide additional details on bonds and other fixed income securities./processor/investments/transactions/get and /processor/investments/holdings/get endpoints.For Transfer:
auth_method enum to the Item object schema to indicate which verification method (e.g. Instant Auth, Same-Day Micro-deposits, Database Match...) was used to verify the Item.SAME_DAY_MICRODEPOSIT_AUTHORIZED and INSTANT_MICRODEPOSIT_AUTHORIZED transition view names to Link.webhook field to requests for /sandbox/transfer/simulate, /sandbox/transfer/refund/simulate, /sandbox/transfer/ledger/simulate_available and /sandbox/transfer/sweep/simulate.funds_available support for /sandbox/transfer/simulate./consent/events/get to help customers obtain consent logs for auditing purposes.item object in /item/get, including consented_data_scopes, consented_use_cases, and consent_expiration_time, to help customers manage consent records and consent expiration.For Link:
For Assets:
ASSET_REPORT_GENERATION_FAILED with an error message "asset report is too large to be generated, try again with a shorter date range".For Link:
usePlaidLink hook before the underlying script tag is loaded.hosted_link object in the /link/token/create call. The object can be empty or can include configuration parameters for Hosted Link. This change does not apply to Link Delivery, which still requires account manager enablement.For Link:
AUTO_SUBMIT_PHONE event to capture scenarios where the user's phone number is supplied in the /link/token/create call and the user has previously enrolled in the returning user experience, allowing Plaid to send an OTP code without prompting.For Consumer Report by Plaid Check:
/cra/check_report/base_report/get, added the total_inflow_amount and total_outflow_amount objects, with corresponding objects total_inflow_amount_30d, total_inflow_amount_60d, total_inflow_amount_90d, total_outflow_amount_30d, total_outflow_amount_60d, and total_outflow_amount_90d, to summarize inflows and outflows.version field (which used type number) and replaced it with the model_version field (which uses type string), to better support the not-strictly-numerical versioning scheme used by Prism.For Identity Verification:
/identity_verification/create, /identity_verification/get, /identity_verification/list, and /identity_verification/retry, added the verify_sms object. This object contains details about SMS verification attempts, with sub-fields such as status, attempt, phone_number, delivery_attempt_count, solve_attempt_count, initially_sent_at, last_sent_at, and redacted_at.For Payment Initiation:
/payment_initiation/consent/create, added payer_details object. The fields options.bacs and options.iban have been deprecated in favor of payer_details.numbers.bacs and payer_details.numbers.iban; customers are encouraged to migrate to the new fields.For Signal:
scores field nullable in the responses for /signal/evaluate and /processor/signal/evaluate, as a pre-requisite for adding future Signal support to Items where a score cannot be calculated, such as Items added via Database Insights or Same-Day Micro-deposits.optional_products array -- customers will not be billed for Signal if it is specified in optional_products until /signal/evaluate is called.INVALID_PRODUCTS and PRODUCT_UNAVAILABLE.PENDING_DISCONNECT webhook, added INSTITUTION_TOKEN_EXPIRATION as a reason code. This reason will be used if the user's access-consent on an OAuth token is about to expire. This webhook code will only be used for Items associated with institutions in the US and Canada; for Items in the UK and EU, Plaid will continue to send the PENDING_EXPIRATION webhook instead of the PENDING_DISCONNECT webhook in the event of pending OAuth access expiration.For Plaid Check Consumer Report:
attributes object with fields nsf_overdraft_transactions_count, is_primary_account, and primary_account_score to Base Report object, to help identify primary accounts and overdraft transactions.For Payment Initiation:
/payment_initiation/consent/* endpoints, deprecated the scopes field in favor of the type field, with possible values SWEEPING or COMMERCIAL. The scopes field will still be honored if used, but customers are encouraged to use the new type field instead, and the scopes field will be removed in the future.For Plaid Check Consumer Report:
/user/create, added the fields last_4_ssn and date_of_birth to the consumer_report_user_identity object. All user tokens created after January 31, 2025 must have a date_of_birth populated in order to be compatible with Plaid Check Consumer Report.For Identity Verification:
Introduced several updates to Identity Verification. These changes are being gradually rolled out to customers. To request to be opted in to these changes early, or to delay receiving these changes, contact your Plaid account manager.
For Income:
/link/token/create for Income without specifying a user_token. The user_token field is required when using Income./link/token/get endpoint to return the various results arrays and objects (item_add_results, payroll_income_results, document_income_results, bank_income_results, cra_item_add_results) as empty arrays (if arrays) or as null (if objects) when not present, rather than being omitted from the schema.For Link:
For Auth:
For Balance:
For Plaid Check Consumer Report:
Released the Plaid Check Third-Party User Token to beta, allowing customers to partner with select lenders to provide their customers access to credit. If you are interested in this feature, contact sales or your Plaid account manager.
Integrated Plaid Check Consumer Report with Layer to enable users to share cash flow insights alongside identity and bank data instantly, dramatically streamlining the loan application process. Users consent to share their consumer report in the final Layer pane. If you are interested in this feature, contact sales or your Plaid account manager.
Updated the /cra/check_report/base_report/get endpoint transaction history behavior for new customers. If no value is specified for the days_requested field, Plaid will default to requesting 365 days, and if a value under 180 is specified, Plaid will request 180 days. This change increases the quality of transaction history insights, as the more transaction history is requested, the more accurate the insights returned will be. This change impacts only customers obtaining Plaid Consumer Report Production access on or after October 1, 2024; the behavior for existing customers will not change.
In the /cra/check_report/base_report/get response warnings array, added a new possible warning code, USER_FRAUD_ALERT, which indicates that the user has placed a fraud alert on their Plaid Check consumer report due to suspected fraud.
For the /cra/check_report/partner_insights/get endpoint, added an error_reason to the response to surface Prism error codes.
For Identity:
/identity/get or /identity/match, including Items connected via Same-Day Micro-deposits or Database Insights.For Identity Verification:
IDENTITY_VERIFICATION_CLOSE_UI fires and onSuccess is called after the event corresponding with the outcome of the session has fired.For Layer:
For Payment Initiation:
/payment_initiation/consent/payment/execute endpoint, added the optional processing_mode parameter. This allows you to opt in to async payment execution processing, allowing for better performance and throughput when real-time payment processing results are not necessary, such as in user-not-present flows.For Transfer:
/transfer/authorization/create to consider more information about accounts, such as whether the account has previously returned codes R02 (account closed) or R16 (account frozen) when used with Plaid.For Investments Move:
Released Link Recovery to beta. With Link Recovery, your end users can sign up to be automatically notified by Plaid when an institution outage that prevented them from linking an account has been resolved. When the issue is over, Plaid will send users a link that can be used to connect their account to your app.
Improved retry logic for missed webhooks. If a webhook sent by Plaid is not accepted by the webhook receiver endpoint with a 200 status within 10 seconds of being sent, Plaid will now retry up to six times over a 24-hour period, using an exponential backoff algorithm, rather than the previous behavior of retrying up to twice, a few minutes apart.
Added a new PENDING_DISCONNECT Item webhook to alert customers of Items that are about to enter an unhealthy state. Unlike the existing PENDING_EXPIRATION webhook, PENDING_DISCONNECT covers Items that will break due to reasons other than consent expiration, such as a planned sunset by the bank of an old online banking platform, or a required migration to OAuth. Upon receiving a PENDING_DISCONNECT webhook, customers should direct the end user to the update mode flow for the Item.
Added the ability to use update mode to reauthorize consent for a US or CA Item whose consent is expiring due to 1033 rules. If the consent expiration date is within 6 months, Plaid will automatically route the Item through the longer reauthorization update mode flow, which will cause the expiration date to be pushed to 12 months from the date that the user reauthorizes the Item. You can customize whether or not the Item goes through the reauthorization update flow by using the update.reauthorization_enabled parameter in /link/token/create. Note that there is no reason to send Items through the reauthorization flow at this time, as Items will not be assigned consent expiration dates until approximately December 2024. This change only impacts Items in the US and Canada; the OAuth update flow for Items in the UK and EU has not changed.
To help manage consent status for the upcoming wider Data Transparency Messaging rollout, added consented_use_cases, consented_data_scopes, and created_at fields to the Item object.
Removed deposit_switch from the products array, as part of Deposit Switch deprecation.
For Link:
For Plaid Link SDKs:
For Assets:
/asset_report/create request parameter options.require_all_items, with a default value of true. By setting this to false, customers can optionally choose to generate an Asset Report even if one or more Items in the Asset Report encounters an error, as long as at least one Item succeeded. Otherwise, the endpoint will maintain its current behavior of only creating an Asset Report if all Items could be successfully retrieved.For Consumer Report:
longest_gap_between_transactions to use gaps rather than gap as this field is an array of gaps rather than a single gap. The old version of this field is deprecated and will be removed at the end of October.products field from the /cra/check_report/create request, as its usage there is deprecated.For Identity Verification:
liveness_check results to /identity_verification/get to improve parity between API and Dashboard data availability.name object to the extracted_data within each documentary_verification.documents object in the response of all of the Identity Verification endpoints.For Investments:
sector and industry fields to the securities object to help categorize holdings.For Transfer:
/transfer/get to accept either a transfer_id or a transfer_authorization_id./transfer/ledger/distribute request, replaced from_client_id and to_client_id with from_ledger_id and to_ledger_id.error_code_reason field to the Plaid error object to provide more useful troubleshooting details for ITEM_LOGIN_REQUIRED errors at OAuth institutions. This field is currently in beta and may not be present for all customers./link/token/create with an update.item_ids field to optionally specify which Item ID(s) to update when launching Link in update mode with a user token. Launching update mode with a user token is the only supported update mode flow for Consumer Report. For products that use both access tokens and user tokens, like Income, update mode can be launched using either one.For Plaid Link SDKs:
For Link:
For Beacon (beta):
For Plaid Check Consumer Report:
consumer_disputes field to the response for /cra/check_report/base_report/get, showing the details of any disputes the consumer has submitted about the information in the report.For Identity Verification:
is_shareable parameter to /identity_verification/retry to allow configuring different retry behavior for the original session and retry sessions. If set, this parameter will control whether a shareable link is generated for the retry session. If not set, the retry session will use the same shareable link behavior as the original session.For Income:
file_type field to /credit/payroll_income/risk_signals/get.ytd_amount field in the Sandbox custom user for /credit/payroll_income/get.For Investments:
/investments/refresh endpoint.For Liabilities:
For Transfer:
ledger_id in the request and/or will return a ledger_id as part of the response. To request multiple Ledgers, contact your Plaid account manager.ITEM_LOGIN_REQUIRED error by enabling update mode for these authorizations, allowing them to be retried after the Item is fixed. Authorizations that previously would have had an approved decision and a rationale_code of ITEM_LOGIN_REQUIRED will now have the new user_action_required decision instead. If /transfer/authorization/create returns a user_action_required decision, you can now launch Link in update mode by creating a Link token with the authorization_id passed to /link/token/create. After the end user has completed the update mode flow, you can retry the /transfer/authorization/create call. /transfer/metrics/get, added an authorization_usage response object allowing you to see your credit and debit utilization details.For Virtual Accounts:
related_transactions array to the Wallet transaction object. This field makes it easier to identify associated transactions by showing the transaction ID of related transactions, as well as how they are related. For example, if a transaction is refunded, the original transaction and the refunded transaction will be linked via the related_transactions field.For Plaid Link SDKs:
For Auth:
/auth/get or /processor/auth/get to update your information on file for the user.For Identity:
/identity/match, legal_name.is_business_name_detected is no longer deprecated and can now be used for detecting business names.For Transfer:
return_rates field to /transfer/metrics/get, allowing you to get return rate information via the API.For Layer:
For Plaid Check:
For Plaid Link SDKs:
For Beacon:
access_tokens field to /beacon/user/create and /beacon/user/update requests.item_ids to /beacon/user/* responses.For Balance:
For Income:
/user/remove to support the deletion of user tokens.For Liabilities:
income-sensitive repayment as a student loan repayment type.For Transactions:
days_requested parameter in /link/token/create or (if initializing transactions post-Link) /transactions/get or /transactions/sync.For Transfer:
For Virtual Accounts:
RECALL as a transaction type where the sending bank has requested the return of funds due to a fraud claim, technical error, or other issue associated with the payment./link/token/get. To accommodate future multi-Item Link session support for additional products, the on_success object in the response has been deprecated; it is recommended to use the new results object instead. Old: link_sessions[0].on_success.public_token. New: link_sessions[0].results.item_add_results[0].public_token. The on_exit field has also been deprecated; it is recommended to use the new exit field.SESSION_FINISHED webhook. To accommodate future multi-Item Link session support for additional products, deprecated the public_token field in lieu of a new public_tokens array.For Plaid Link SDKs:
For Income:
canonical_description in /credit/payroll_income/get: RETIREMENT, GIG_ECONOMY, and STOCK_COMPENSATION.For Signal:
For Transfer:
/transfer/authorization/cancel endpoint./link/token/get response to include user_token.For Plaid Link SDKs:
For Auth:
SMS_MICRODEPOSITS_VERIFICATION webhook to /sandbox/item/fire_webhook to support testing the Text Message Verification flow.For Income:
For Payment Initiation:
supports_payment_consents field to an institution's Payment Initiation metadata object./payment_initiation/payment/reverse. Providing these fields increases the likelihood that the recipient's bank will process the transaction successfully.For Statements:
/sandbox/public_token/create.For Transfer:
network in recurring transfer contexts to reflect the fact that recurring transfers now support RTP.funds_available transfer status and transfer event type./transfer/balance/get endpoint in favor of the Plaid Ledger.For Link:
For Auth:
auth.sms_microdeposits_verification_enabled: false setting when calling /link/token/create.For Transactions:
/transactions/sync endpoint addressing common pain points:/transactions/sync now returns the accounts array, eliminating the need for a separate call to /accounts/get. /transactions/sync now returns a transactions_update_status, reflecting the status of the transaction pulls, which was previously only available via webhook.removed transactions now includes the account_ids they were associated with, to make reconciliation and management easier.original_description field. To access original transaction descriptions, set options.include_original_description to true when calling /transactions/get or /transactions/sync. It is no longer necessary to request access from your account manager.account_id optional in the /transactions/recurring/get endpoint.For Transfer:
has_more field to /transfer/event/list and /transfer/event/sync to indicate there are more events to be pulled.network in recurring transfer contexts to reflect the fact that recurring transfers are only supported via ACH.For Processor Partners:
institution_id to /processor/account/get endpoint.For Auth:
For Identity Verification:
linked_services enum values.For Investments:
vested_quantity and vested_value fields to the holdings object.For Liabilities:
pending idr status for student loans to reflect loans with a pending application for income-driven repayments.For Transfer:
wire_details and wire_routing_number, and wire as a supported network, to support wire transfers. If you are interested in using wire transfers with Transfer, contact your account manager or (if you are not yet a customer) sales. description field on /transfer/intent/create from 8 to 15.For Signal:
warnings array to /signal/evaluate response even if no warnings are present in order to match documented API behavior.events field to /link/token/get to capture Link events.persistent_account_id field available in GA to all customers. The persistent_account_id field is a special field, available only for Chase Items. Because Chase accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify a Chase account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud.USER_ACCOUNT_REVOKED webhook in GA to all customers, to complement the existing USER_PERMISSION_REVOKED webhook, but capturing account-level revocation rather than Item-level revocation. The USER_ACCOUNT_REVOKED webhook is sent only for Chase Items and is primarily intended for payments use cases. The webhook indicates that the TAN associated with the revoked account is no longer valid and cannot be used to create new transfers.For Auth:
For Assets:
vested_quantity and vested_value fields to the Investments object within the Asset Report.margin_loan_amount field to the Balance object within the Asset Report.For Enrich:
phone_number to the /transactions/enrich response.For Income:
/credit/payroll_income/get and /credit/bank_statements/uploads/get to only certain Items, via an optional item_ids request field.num_1099s_uploaded to the document_income_results object in /credit/sessions/get response.For Identity Verification:
no_data type to name and date_of_birth fields in documentary_verification.documents[].analysis.extracted_data in the response of all of the Identity Verification endpoints.street and city optional in the address attribute of /identity_verification/create.For Payment Initiation:
scope and reference fields to /payment_initiation/consent/payment/execute.For Transactions:
user_transactions_dynamic. When logging into Sandbox with this username, you will see more realistic, dynamic Sandbox transactions data, including a wider variety of transaction types, and transactions moving between pending and posted state.For Virtual Accounts:
available balance to balance object in /wallet/get and /wallet/list.For Partners:
/processor/liabilities/get endpoint.registration_number to /partner/customer/create request.min_last_updated_datetime when making /accounts/balance/get calls for these accounts.For Investments:
market_identifier_code to the security object.option_contract to the security object, adding additional details contract_type, expiration_date, strike_price, and underlying_security_ticker for better insight into derivatives.For Identity:
/identity/match endpoint to General Availability.For Income:
/sandbox/income/fire_webhook to support the INCOME_VERIFICATION_RISK_SIGNALS webhook, adding a new webhook_code parameter to the endpoint.For Transfer Platform Payments (beta):
/transfer/ledger/distribute endpoint, as well as a facilitator_fee field to /transfer/create, both of which can be used to collect payments from end customers./transfer/diligence/document/upload.For Transfer:
For Transactions:
days_requested field to /transactions/sync and /transactions/get under the options object, and to /link/token/create under the transactions object to support a behavior change in the Transactions product. For all new customers who created accounts after December 3, 2023 the maximum number of days of historical data requested from transactions endpoints will default to 90 days if the days_requested field is not specified. This change will also be applied to existing customers on June 24, 2024. To change the amount of historical data requested, use the days_requested field when Transactions is first added to your Item.For Partners:
/processor/signal/prepare/processor/transactions/getproducts field in /partner/customer/create optional. If empty or null, this field will default to the products enabled for the partner.Chase has extended the September 30 deadline for migrating away from in-process webviews. The new cutoff date will be in mid-January 2024. All impacted customers should migrate by January 1, 2024 to avoid a negative impact on Link conversion. See the deprecation notice for more details.
Added Belgium as a supported country.
For Auth:
instant_microdeposits_enabled flag to /link/token/create to allow customers to disable Instant Micro-deposits. By default, Instant Micro-deposits will be enabled for all sessions.For Income:
/credit/payroll_income/parsing_config/update, allowing users of Document Fraud to update the parsing configuration used for document income. For Investments:
investments.allow_manual_entry parameter in /link/token/create and the corresponding is_investments_fallback_item field to /investments/transactions/get and /investments/holdings/get. Enabling manual entry allows a user to create an investments fallback Item for a non-supported institution by manually entering their holdings in Link. cusip and isin data. The new deadline is March 2024.For Transactions:
counterparties, logo_url, and website information about merchants (previously available only via Enrich) to /transactions/sync and /transactions/get data.For Transfer:
/transfer/ledger/deposit and /transfer/ledger/withdraw endpoints, you can now initiate a funds transfer via the Dashboard, set up a recurring schedule or minimum balance by contacting Support, or fund your ledger via ACH or wire transfer from your bank account./sandbox/transfer/refund/simulate to test refunds in the Sandbox environment.refund., e.g. refund.settled./transfer/configuration/get, stopped returning max_single_transfer_amount and max_monthly_amount. To maintain compatibility with older client libraries, these fields will still be present in the API, but will be blank strings. /transfer/metrics/get, stopped returning monthly_transfer_volume. To maintain compatibility with older client libraries, this field will still be present in the API, but will be a blank string.For Virtual Accounts:
RETURN as possible Virtual Account wallet transaction type.LOGIN_REPAIRED webhook. This webhook will fire when an Item's status transitions from ITEM_LOGIN_REQUIRED to a healthy state, without the user having used the update mode flow in your app. optional_products field when calling /link/token/create, the product will be added to the Item if possible. However, if the product cannot be added to the Item -- for example, because the Item is not supported by the institution, the user did not grant the correct OAuth permissions, or because of an institution connectivity error for that product -- Item creation will still succeed with the other products specified. institution_not_supported as a potential Link session exit metadata status.For Auth:
For Assets:
report_type field used in /asset_report/create, and replaced it with verification_report_type. This change was made to avoid confusion with the existing report_type field used by the PRODUCT_READY webhook to distinguish between Fast Asset Reports and Full Asset Reports.For Signal:
For Transactions:
For Transfer:
rtp as the payment network.beacon_id, as it was used only to support Guarantee. Guarantee is no longer offered and will be replaced by a more sophisticated set of risk management tools within Transfer.For Income:
"NOT LISTED" as a potential value for marital_status.For Statements (beta):
For Enrich:
frequency field to recurring transactions to indicate the recurrence frequency.For Identity Verification:
area_code match status to the responses of the /identity_verification/get and /identity_verification/list endpoints.For Income:
canonical_description field: 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, and TIPS_INCOME. Also made null a valid value.status field to /credit/payroll_income/risk_signals/get to show the status of evaluated documents. payroll_income.parsing_config to /link/token/create to expose configuration options for risk signal evaluation.For Liabilities:
saving on a valuable education (SAVE) as a student loan repayment plan type.For Signal:
initiated status reported via /signal/decision/report. Previously, attempting to change the status of a reported decision that was originally reported as initiated would result in an INVALID_FIELD error; now it is allowed.For Transfer:
failure_reason to refund objects to indicate why a Transfer refund failed.For Virtual Accounts:
failure_reason to /wallet/transaction/get and /wallet/transaction/list endpoints to indicate why a wallet transaction failed./processor/token/webhook/update endpoint to allow customers using processor partners to update the webhook endpoint associated with a processor token.For Assets:
asset_report_token optional in /asset_report/get request to support future development of Asset Reports based on other types of tokens.For Investments:
async_update option for /investments/transactions/get, along with an accompanying HISTORICAL_UPDATE webhook. If async_update is enabled, the initial call to /investments/transactions/get for an Item will be made as an async call with a webhook, similar to /transactions/get.For Enrich:
confidence_level to counterparty and personal_finance_category fields.For Identity Verification:
date_of_birth and address fields to documentary_verification.documents[].extracted_data in the response of all Identity Verification endpoints.region and postal_code fields as nullable, to better support countries that do not use these fields.For Transfer:
transfer_id and status filters to /transfer/sweep/list request.status field to the sweep object.Added the required_if_supported_products field to /link/token/create. When using multiple Plaid products, you can use this field to specify products that must be enabled when the user's institution and account type support them, while still allowing users to add Items if the institution or linked account doesn't support these products. If a product in this field cannot be enabled at a compatible institution (for example, because the user failed to grant the required OAuth permissions, generating an ACCESS_NOT_GRANTED error), the Item will not be created, and the user will be prompted to try again in the Link flow.
Changed the behavior of the oauth field on the institution object. Previously, oauth would be true only if all Items at an institution used OAuth connections. Now, oauth is true if any Items at an institution use OAuth connections.
Changed the behavior of the account_selection_enabled flag in /link/token/create. To improve conversion, at institutions that provide OAuth account selection flows, this flag will be overridden and treated as though it were always true. For other institutions, the flag behavior is unchanged.
For Auth:
reroute_to_credentials option in /link/token/create. Using this field, you can detect whether a user is attempting to use Same-day Microdeposits to add an institution that is supported via a direct Plaid connection, and optionally either require or recommend that they use a direct connection instead.For Enrich:
income_source enum to counterparty_type field.For Identity Verification:
user object to /identity_verification/retry. client_user_id field to /identity_verification/create. It is recommended to use this field instead of user.client_user_id, although both fields are supported.For Income:
num_bank_statements_uploaded to document_income_results object in /credit/sessions/get.For Signal:
client_user_id when calling /signal/evaluate or /processor/signal/evaluate.For Transfer:
test_clock_id when calling /sandbox/transfer/sweep/simulate or /sandbox/transfer/simulate. If provided, the simulated action will take place at the virtual_time of the given test clock. virtual_time field optional when calling /sandbox/transfer/test_clock/create. If a time is not provided, the current time will be used.sweep_id format to be either a UUID or an 8-character hexadecimal string.next_origination_date nullable in the recurring transfer object.For Virtual Accounts:
/wallet/transaction/execute.scheme) to /wallet/transaction/get and /wallet/transaction/list.For Assets:
ASSETS: PRODUCT_READY and ASSETS: ERROR webhooks to /sandbox/item/fire_webhookFor Identity:
is_business_name_detected to the /identity/match endpointFor Identity Verification:
selfie_check field to the Income Verification object, to report the status of a selfie check.For Document Income:
INCOME_VERIFICATION_RISK_SIGNALS webhook to indicate when /credit/payroll_income/risk_signals/get is ready to be called.For Transfers:
description field in /transfer/create to 15 characters./transfer/balance/get endpoint.credit_funds_source field to distinguish between credits based on sweeps, RTP credit balances, and ACH credit balances, and made the funding_account_id field nullable.For Processor partners:
/processor/token/permissions/set and /processor/token/permissions/get endpoints./processor/identity/match endpoint to allow Processor partners to support the new beta Identity Match feature.For Signal:
warnings object to the /processor/signal/evaluate response.For Income:
STARTED and INTERNAL_ERROR statuses to /credit/sessions/get.For Document Income:
/credit/payroll_income/risk_signals/get endpoint. This endpoint can be used as part of the Document Income flow to assess a user-uploaded document for signs of potential fraud or tampering.For Identity Verification:
user object of /link/token/create as being officially supported methods of pre-filling user data in Link for the Identity Verification flow, as an alternative to /identity_verification/create. (While this worked in the past, it was not previously an officially supported or documented flow.) As part of this change, un-deprecated the user.date_of_birth field.For Enrich:
recurrence and is_recurring fields to /transactions/enrich.RATE_LIMIT errors to be specific to the endpoint for which they apply.For Link:
continue(from:) is no longer required for iOS OAuth integrations using Plaid's iOS and React Native iOS SDKs.For Auth:
For Transactions:
ANNUALLY as a possible frequency for recurring transactions in /transactions/recurring/get.For Identity:
/identity/match (beta) to simplify the process of using Identity for account ownership verification. /identity/match allows you to send user information such as name, address, email, and phone number, and returns a match score indicating how closely that data matches information on file with the financial institution, so that you no longer have to implement similarity matching logic on your own. /identity/match is currently in closed beta; to request access, contact your account manager or contact sales.For Identity Verification:
risk_check object to Identity Verification API responses to provide more detail about the factors that influenced the risk check result.For Assets:
days_to_include field to /asset_report/get requests. This field allows you to optionally reduce the number of days displayed in an Asset Report, to improve usability for human reviewers. auditor_id: freddie_mac.credit_category (beta) to transactions data returned by Asset Reports with Insights, describing the category of the transaction. Access to this field is in closed beta; to request access, contact your account manager.For Income:
bank_employment_results data to /credit/sessions/get. Employment functionality is currently in closed beta; for more details, contact your account manager.For Signal:
warnings field to /signal/evaluate response.For Virtual Accounts:
transaction_id to the Payment Initiation PAYMENT_STATUS_UPDATE webhook. This field will be present only when a payment was initiated using Virtual Accounts.payment_id and wallet_id to the WALLET_TRANSACTION_STATUS_UPDATE webhook.persistent_account_id field (beta) to the account object. The persistent_account_id field identifies an account across multiple instances of the same Item, for use with Chase Items only, to simplify the management of Chase duplicate Item behavior. Access to this field is currently in closed beta; for more details, contact your account manager.For Assets:
investment, instead of brokerage, as the account type for investment accounts. brokerage may still be returned as an account sub-type under the investment account type.For Income:
employment value to the products array for /link/token/create. Employment functionality is currently in closed beta; for more details, contact your account manager.For Identity Verification:
redacted_at field in Identity Verification response and Documentary Verification Document component.For Transfer:
network (either ach or same-day-ach) when calling /transfer/intent/create.For reseller partners:
income_verification and employment as supported products for /partner/customer/create. Employment functionality is currently in closed beta.redirect_uris to /partner/customer/create.For Virtual Accounts:
reference field for /wallet/transaction/execute to 6 characters.wallet_id field to /wallet/transaction/get and /wallet/transaction/list responses and to the WALLET_TRANSACTION_STATUS_UPDATE webhook.For Payment Initiation:
reference field for /payment_initiation/payment/reverse to 6 characters.transaction_id field to the PAYMENT_STATUS_UPDATE webhook. This field will be populated when the payment status is PAYMENT_STATUS_SETTLED.options.wallet_id field from /payment_initiation/payment/create and /payment_initiation/consent/create.For Signal:
signal to the products array. For most current Signal customers, Signal is automatically enabled for all of their Items; over time, Signal will be moving to a model similar to Plaid's other products, in which customers instead initialize an Item with signal by adding signal to the products array when calling /link/token/create.For Link:
For Auth:
For Transfer:
expected_settlement_date field to the Transfer object.funding_account_id field to clarify which account is used to fund a transfer. This field replaces the older origination_account_id.For Virtual Accounts:
status field to Wallet schema.For Partners:
END_CUSTOMER_OAUTH_STATUS_UPDATED webhook.For Auth:
For Assets:
/credit/relay/create, /credit/relay/get, /credit/relay/refresh, and
/credit/relay/remove. Relay tokens support sharing of Asset Reports with customers' authorized service providers, such as underwriters.For Income:
/credit/bank_income/get, deprecated amount, iso_currency_code, and unofficial_currency_code at top levels in response in favor of new total_amounts field. This change enables more accurate reporting of income for users with income in multiple different currencies.rate_of_pay field returned by /credit/payroll_income/get: WEEKLY, BI_WEEKLY, MONTHLY, SEMI_MONTHLY, DAILY, and COMMISSION.pay_basis field to the response of /credit/payroll_income/get.For Virtual Accounts:
FUNDS_SWEEP as a possible transaction type.For Transfer:
/transfer/capabilities/get endpoint to provide information about which Items support Real Time Payments (RTP)/transfer/recurring/create, /transfer/recurring/cancel, /transfer/recurring/get, and /transfer/recurring/list, as well as the new webhooks RECURRING_NEW_TRANSFER, RECURRING_TRANSFER_SKIPPED, and RECURRING_CANCELLED, and the test endpoints /sandbox/transfer/test_clock/create, /sandbox/transfer/test_clock/advance, /sandbox/transfer/test_clock/get, and /sandbox/transfer/test_clock/list.For Enrich:
/categories/get, in addition to the newer personal_finance_category schema.delivery_marketplace to marketplace and added counterparty type payment_terminal.For the Reseller Partner API:
/partner/customer/oauth_institutions/get endpoint to provide OAuth-institution registration information to Reseller Partners.For Signal:
For Auth:
For Investments:
null data in these fields. To maintain access to these fields, contact your Plaid account manager or investments-vendors@plaid.com.For Payment Initiation:
amount when calling /payment_initiation/payment/reverse. As part of this change, added amount_refunded field to /payment_initiation/payment/get and /payment_initiation/payment/list.LOCAL_DEFAULT and LOCAL_INSTANT to represent them. In the UK, the FASTER_PAYMENTS enum value has been replaced by LOCAL_DEFAULT.For Virtual Accounts:
/wallet/transactions/list to /wallet/transaction/list.start_date to start_time in the /wallet/transaction/list response to reflect that the field is a date-time.For Transfer:
account_id nullable in the responses for /transfer/authorization/create and /transfer/create.deleted_at field to /payment_profile/get response.refunds field to the transfer object.refund_id to the transfer event object.For Reseller Partners:
/partner/customer/remove endpoint to disable customers who have not yet been enabled in Production.USER_INPUT_TIMEOUT as a value for force_error in the Sandbox custom user schema.For Auth:
For Investments:
non-custodial wallet to account subtypes.trade investment transaction subtype as a subtype of transfer investment transaction typeFor Income:
/credit/sessions/get endpoint rather than relying on Link events.USER_REPORTED_NO_INCOME./sandbox/public_token/create.VERIFICATION_STATUS_PENDING_APPROVAL.client_user_id field in the /user/create request.institution_name and institution_id fields to /credit/payroll_income/get response.For Virtual Accounts:
options.start_time and options.end_time to /wallet/transaction/list request.last_status_update and payment_id field to wallet transactions.For Payment Initiation:
transaction_id field to the payment object.For Transfer (beta):
PAYMENT_PROFILE_LOGIN_REQUIRED and the ability to update a Payment Profile via update mode. Also added /sandbox/payment_profile/reset_login to test this new update mode flow in Sandbox.LOGIN_REQUIRED decision rationale to ITEM_LOGIN_REQUIRED.origination_account_id from /transfer/authorization/create endpoint.originator_client_id field to support Third-Party Senders (TPS).For Wallet Onboard (beta):
For Partner Resellers:
USER_INPUT_TIMEOUT error in Sandbox.For Investments:
non-custodial wallet and crypto trade investment transaction type.institution_price_as_of nullable.For Transfer (beta):
idempotency_key from the /transfer/authorization/create response.settled and swept_settled transfer events and event statuses.standard_return_window and unauthorized_return_window fields to the Transfer object.For Payment Initiation:
AUTHORISING wallet status.recipient_id to the /wallet/create, /wallet/get, and /wallet/list responses.For Assets:
days_to_include and options to /asset_report/get request.For Identity Verification and Monitor:
For Identity Verification:
issuing_region as a field in the extracted data for Identity Verification documentsFor Link:
For Payment Initiation:
PAYMENT_STATUS_SETTLED payment status.For Income:
/credit/payroll_income/get and /income/verification/paystubs/getpull_id field from /credit/payroll_income/getFor /link/token/create user object:
ssn, date_of_birth, and legal_name.name, address, and id_number parameters to support Identity Verification.For Payment Initiation:
bin as a field under institution_metadata for /link/token/create.For Income:
stated_income_sources as a field under income_verification for /link/token/create./credit/payroll_income/get response.paystubs.verification in /credit/payroll_income/get response.For Transfer:
payment_profile_id to /transfer/authorization/create, /transfer/create, and /link/token/create and make account_number and access_token optional for /transfer/authorization/create and /transfer/create. These changes will support forthcoming Transfer functionality.user_present a required field for /transfer/authorization/create when using Guarantee (beta)swept and reverse_swept statuses.For Auth:
For Transfer:
TRANSFER_LIMIT_REACHED to Transfer authorization decision rationale codes.For Income:
accounts object with rate_of_pay data to the response for /credit/payroll_income/get.For Payment Initiation (UK and Europe only):
For Identity Verification and Monitor:
For Transactions:
/transactions/sync, which improves ease of use for handling transactions updates. While /transactions/get continues to be supported and there are no plans to discontinue it, all new and existing integrations are encouraged to use /transactions/sync instead of the older /transactions/get endpoint.For Income:
employee_type and last_paystub_date to /credit/employment/get response.uploaded, created and APPROVAL_STATUS_APPROVED enum strings, as these are no longer used.institution_data request field.For Income:
For Transactions:
/transactions/recurring/get, which provides information about recurring transaction streams that can be used to help your users better manage cash flow, reduce spending, and stay on track with bill payments. This endpoint is not included by default as part of Transactions; to request access to this endpoint and learn more about pricing, contact your Plaid account manager.For Auth:
institution_data request field to /link/token/create endpoint, which accepts routing_number.match_reason to metadata field for MATCHED_SELECT_INSTITUTION, which indicates whether routing_number or returning_user resulted in a matched institution.AUTH_UPDATE and DEFAULT_UPDATE webhooks to /sandbox/item/fire_webhook. Also added webhook_type parameter to this endpoint to support different DEFAULT_UPDATE webhooks for Transactions, Liabilities, and Investments.For Income:
For Auth:
For Payment Initiation:
IT country code.consent_id to /institutions/search.For Bank Transfer (beta):
wire_routing_number parameter to /bank_transfer/migrate_account.For Transfer (beta):
permitted decision for /transfer/authorization/create./sandbox/transfer/fire_webhook endpoint.For Transactions:
/transactions/get with the include_personal_finance_category option enabled.For Income:
income_verification_id from /sandbox/income/fire_webhook and removing the /income/verification/summary/get and /income/verification/paystub/get endpoints.For Transfer (beta):
idempotency_key parameter, as idempotency is now tracked via other identifiers.repayment_id a required parameter for /transfer/repayment/return/list.NEW_ACCOUNTS_AVAILABLE webhook via /sandbox/item/fire_webhook./item/webhook/update to accept empty or null webhook URLs.For Transfer (beta):
iso_currency_code throughout the API to future-proof for multi-currency support (currently only USD is supported).repayment_id required in /transfer/repayment/return/list endpointFor Bank Transfer (beta):
receiver_pending and receiver_posted from bank transfer event types, and removed receiver details from events.For Payment Initiation:
scheme_automatic_downgrade from /payment_initiation/payment/create.For Income:
DOCUMENT_TYPE_NONE value for document type./transfer/intent/get and /transfer/intent/create.VERIFICATION_STATUS_DOCUMENT_REJECTED.PAYMENT_STATUS_REJECTED.PAYMENT_STATUS_EXECUTED and renamed emi_account_id to wallet_id./asset_report/get, added the fields merchant_name and check_number to the Transactions schema, to match the Transactions schema already being used by the Transactions API.VERIFICATION_STATUS_PENDING_APPROVAL.Multiple changes to the Income API:
income_verification.access_tokens parameter to /link/token/create and updating /income/verification/paystubs/get to return the income verification status for each paystub.precheck_id field to /income/verification/create and an income_verification.precheck_id field to /link/token/create to fully support use of the /income/verification/precheck endpoint to check whether a given user is supportable by the Income product.income_verification_id in favor of the Link token-based income verification flow.item_id field to the income_verification webhook and corresponding /sandbox/income/fire_webhook endpoint.employer.url and employer.address fields to the /income/verification/precheck endpoint.doc_id field to /income/verification/taxforms/get.Other changes:
status enum as deprecated in favor of the more detailed breakdown object.DE as a supported country to support Payment Initiation use cases.NEW_ACCOUNTS_AVAILABLE webhook, for improved end-user sharing controls. All implementations must migrate to Account Select v2 by March 2022.auth_metadata object now available from Institutions endpointsinitiated_refunds field to /payment_initiation/payment/get and /payment_initiation/payment/list to show refunds associated with payments.include_personal_finance_category_beta and personal_finance_category_beta to Transactions endpoints as part of a beta for new Transactions categorizations. To request beta access, contact transactions-feedback@plaid.comdirection, custom_tag, iso_currency_code, receiver_details) and receiver event types from Bank Transfer (beta) endpoints and made ach_class a required field./transactions/get, added the check_number field./processor/balance/get, added min_last_updated_datetime option to request.country_code and options parameters to deposit switch creation endpoints, as well as new values for the state enum in the response.employer_name, employer_id, institution_name, institution_id, and switch_method./transactions/get, added the fields include_original_description and original_description in the request and response, respectively.life insurance, other annuity, and other insurance.INSTITUTION_NOT_ENABLED_IN_ENVIRONMENT, INSTITUTION_NOT_FOUND, and PRODUCT_NOT_ENABLED. These codes replace more generic errors that could appear when working with OAuth institutions or API-based institution connections.institution_price will now reflect the USD price of the currency, as reported by the institution, and institution_value will reflect the value of the holding in USD. close_price and close_price_as_of will now be populated. iso_currency_code will be set to USD and unofficial_currency_code will be set to null.options object to /payment_initiation/payment/create to support restricting payments originating from specific accounts.DEFAULT_UPDATE webhook to indicate changes to liabilities accounts.OPEN, EXIT, HANDOFF, SELECT_INSTITUTION, ERROR, but the remaining are informational.client_id and secret via headers instead of as request parameters.min_last_updated_datetime parameter to /accounts/balance/get to handle institutions that do not always provide real-time balances, and added the corresponding LAST_UPDATED_DATETIME_OUT_OF_RANGE error.last_statement_balance from the official documentation for /liabilities/get, as it was not ever returned.INVALID_API_KEYS error instead of an INTERNAL_SERVER_ERROR, in order to match documented behavior.end_date for standing orders in the Payment Initiation product./sandbox/bank_transfer/fire_webhook endpoint to test Bank Transfers webhooks.auth_flow parameter to /link/token/create to support Flexible Auth (beta)./payment_initiation/recipient/create endpoint to accept address.country_code (preferred) instead of address.country (accepted, but deprecated).MATCHED_INSTITUTION_SELECT transition view event, after consolidating the returning user institution select view.SELECT_BRAND onEvent callback, after shipping a change that groups institution login portals within the same institution brand.IS_MATCHED_USER and IS_MATCHED_USER_UI because these events are duplicates. You should use MATCHED_CONSENT and MATCHED_SELECT_INSTITUTION to identify when a returning user is recognized and chooses an institution that we pre-matched.authorized_datetime and datetime fields to the transaction object, for more detailed information on when the transaction occurred.update_type field to the item object. This field will be used to support upcoming connectivity improvements to accounts with multi-factor authentication.ssn and date_of_birth fields to the user object in /link/token/create to support upcoming functionality enhancements.INVALID_INPUT errors instead.investments_updates to the status object returned by Institutions endpoints./institutions/get_by_id response./item/public_token/create and /payment_initiation/payment/token/create endpoints to API version 2020-09-14 to avoid disrupting update mode for end users on older mobile SDKs that do not support Link tokens. These endpoints are still deprecated, and it is recommended you update mobile apps to the latest SDKs as soon as possible./liabilities/get.BANK_TRANSFER to BANK_TRANSFER_ERROR.user.phone_number, user_email.address, user.phone_number_verified_time and user.email_address_verified_time to /link/token/create to support the new returning user experience, which allows users a more seamless Link flow.Added the ITEM: USER_PERMISSION_REVOKED webhook, which will notify you when a user contacts Plaid directly to delete their data or change their data sharing preferences with your app.
Released Link tokens, the new preferred way to use Link, replacing the public key. To learn how to migrate your application to use Link tokens, see the Link token migration guide.
merchant_name field to the /transactions/get endpoint for the US and Canada, providing clearer and more consistent merchant names for 95% of existing transactions.account_subtype, allowing you to further optimize the Link flow.HOLDINGS: DEFAULT_UPDATE and INVESTMENTS_TRANSACTIONS: DEFAULT_UPDATE webhooks, which will fire each time data has successfully refreshed for Holdings and Investments Transactions./transactions/refresh, which enables you to pull a user's transactions on demand./webhook_verification_key/get, which allows you to verify the authenticity of incoming webhooks.store_number, authorized_date, and payment_channel to the /transactions/get response.investment_transactions.subtypes field to provide more granular detail about the tax, performance, and fee impact of investments transactions.status.item_logins.breakdown data to /institutions/get_by_id and the Developer Dashboard.routing_numbers field to the Institutions object. You can also filter institutions via the options.routing_numbers field in each Institutions API endpoint.loan_type: cancelled to the Liabilities product.status.transactions_updates field, exposing Transactions health to both the /institutions/get endpoint and the Dashboard./identity/get endpoint to now return account-level identity information within the accounts object where available./sandbox/item/fire_webhook endpoint./asset_report/refresh endpoint, so you can create a new Asset Report with the latest account balances and transactions for a borrower, based on the old report./sandbox/public_token/create endpoint, which enables the creation of Items in the Sandbox environment directly via the API (without Link).