Overview
This changelog tracks updates to the Plaid API and changes to the Plaid mobile 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 be reflected. Improvements to the Dashboard, institution connectivity, or data availability may not 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 updates
Subscribe to this changelog via RSS.
Subscribe to the Plaid Newsletter via email.
November 14, 2024
- Released
/consent/events/get
to help customers obtain consent logs for auditing purposes. - Added consent related-details to the
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:
- Released Plaid Link for iOS SDK 6.0.0, introducing FinanceKit and support for Apple Card integration.
- Released Plaid Link for React Native SDK 11.13.1, fixing a compiler error when using the New Architecture with Expo.
For Assets:
- Added a hard limit of 15,000 transactions per Asset Report, to avoid returning truncated Asset Reports. An Asset Report with more than 15,000 transactions will now trigger the error
ASSET_REPORT_GENERATION_FAILED
with an error message "asset report is too large to be generated, try again with a shorter date range".
November 7, 2024
For Link:
- Released Plaid Link for React SDK 3.6.1, fixing an issue that can occur when unmounting the
usePlaidLink
hook before the underlying script tag is loaded. - Customers can now self-enable for Hosted Link without contacting their Account Manager. To enable Hosted Link, provide a
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.
October 29, 2024
For Link:
- Added support for Vietnamese and Hindi.
- Added
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. - Improved conversion through improved error messaging for incorrect username / password at non-OAuth institutions. Previously, users would be taken to an error pane and required to press the back button to retry their credentials; the new UI provides inline error messages if the user's credentials are incorrect.
- Fixed bug in which users could enter an error state by clicking a button while the in-progress spinner was active on a different button.
- Minor improvements to consistency in font weight and styling.
For Consumer Report by Plaid Check:
- For the endpoint
/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. - For Partner Insights Reports, deprecated the
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:
- For the response bodies of the endpoints
/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
. - Restored the "Integration" button to the Dashboard. It can now be found next to the "Publish Changes" button in the upper right of the Template Editor.
For Payment Initiation:
- For
/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:
- Made the
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. - Changed Signal billing to behave similarly to Auth and Identity if it is specified in the
optional_products
array -- customers will not be billed for Signal if it is specified in optional_products
until /signal/evaluate
is called.
October 28, 2024
- Fully removed legacy returning user flows (Institution Boosting, Pre-Matched RUX, and Pre-Authenticated RUX) in favor of the new returning user experience.
- Removed legacy returning user flow errors,
INVALID_PRODUCTS
and PRODUCT_UNAVAILABLE
.
October 15, 2024
- For the
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 Reports:
- Reverted the change to historical balance data from the October 11 update. Updated the documentation to clarify the behavior and reduce customer confusion.
- Added
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:
- For the
/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.
October 11, 2024
For Plaid Check Consumer Reports:
- For
/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 Reports. - Changed the behavior of returning historical balances. Previously, Consumer Reports would always return at least 90 days of historical balance information. This caused user confusion in the case of new accounts opened less than 90 days ago, since Consumer Report would report a historical balance on the account for dates when the account did not yet exist. Now, Consumer Reports will only return historical balances up to the date of the oldest transaction found in a given account.
- Released Cash Flow Updates and Network Insights to beta. For details, see Plaid Check.
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.
- Introduced Trust Index, a numerical scoring system rating the user on a scale of 1 to 100, with 11 sub-scores on different dimensions (e.g. email, phone, liveness), to help you understand users' relative risk across various dimensions and how different factors contribute to that risk.
- An overhauled session view that helps you digest a full user's verification without scrolling.
For Income:
- Fixed an issue in which customers could successfully call
/link/token/create
for Income without specifying a user_token
. The user_token
field is required when using Income.
October 9, 2024
- Began the automatic enrollment of some customers into Data Transparency Messaging (DTM). Throughout Q4, customers serving end users in the US and Canada will be enrolled in DTM automatically if they have not already enrolled.
- Announced the elimination of public key support, effective January 31, 2025. Beginning in February 2025, it will no longer be possible to launch Link sessions using a public key. This impacts only a small number of customers, as the Plaid public key has been deprecated since the introduction of Link tokens in mid-2020, and no teams created after July 2020 have been issued public keys. All customers who are still using public keys were notified of this change via email in September. For instructions on migration from public keys to Link tokens, see the Link token migration guide.
- Announced the full removal of legacy returning user flows (Institution Boosting, Pre-Matched RUX, and Pre-Authenticated RUX) in favor of the new returning user experience, to be completed by October 28, 2024.
- Eligible customers (those with support packages) can enroll in SSO via the Dashboard. If you would like to use SSO and do not have a support package, contact your Plaid account manager.
- To reduce developer confusion, updated the
/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:
- Improved the user experience for Remember Me verification on eligible Android devices by automatically filling in the OTP code received on the device.
For Auth:
- PNC now returns Tokenized Account Numbers (TANs) with behavior similar to Chase.
For Balance:
- Discontinued the Balance Plus beta program. Balance Plus beta will no longer accept new enrollments; customers currently in the beta program have been contacted directly with more details and next steps.
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 Reports 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:
- Released Identity Document Upload to beta. Identity Document Upload provides document-based account ownership identity verification for Items that do not support
/identity/get
or /identity/match
, including Items connected via Same-Day Micro-deposits or Database Insights.
For Identity Verification:
- Redesigned the fraud labeling system UI to allow 1-click fraud reports from the Dashboard.
- Fixed ordering of Link events callbacks when Hide Verification Outcome is enabled so that
IDENTITY_VERIFICATION_CLOSE_UI
fires and onSuccess
is called after the event corresponding with the outcome of the session has fired.
For Layer:
- Integrated Plaid Check Consumer Reports 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.
For Payment Initiation:
- For
/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 realtime payment processing results are not necessary, such as in user-not-present flows.
For Transfer:
- Improved
/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.
September 2024
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.
Released Investments Move to Early Availability. Investments Move facilitates ACATS and ATON brokerage transfers by providing user-permissioned data including a user's account number, account information, and detailed holdings information. Investments Move can remove friction for end users in changing brokerages and reduce the frequency of transfer failures caused by data entry errors.
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 flow:
- Shortened and clarified text shown to end user during prompt to verify 2FA code.
- Added hover animations to UI buttons in Link.
For Plaid Link SDKs:
- Released iOS SDK 5.6.1, which adds adds haptics support, fixes embedded search view dynamic resizing, and adds missing event names and view names. For details, see the iOS SDK changelog.
- Released Android SDK 5.6.1, which adds missing event names and view names. For details, see the Android SDK changelog.
- Released React Native SDK 11.13.0, which incorporates iOS SDK 5.6.1 and Android SDK 4.6.1. For details, see the React Native SDK changelog.
For Assets:
- Added
/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:
- Fixed confusing pluralization by renaming
longest_gap_between_transactions
to use gaps
rather than gap
as this field is 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. - Removed the
products
field from the /cra/check_report/create
request, as its usage there is deprecated.
For Identity Verification:
- Added
liveness_check
results to /identity_verification/get
to improve parity between API and Dashboard data availability. - Added
name
object to the extracted_data
within each documentary_verification.documents
object in the response of all of the Identity Verification endpoints. - Design updates to the Identity Verification Dashboard.
For Investments:
- Added
sector
and industry
fields to the securities object to help categorize holdings.
For Transfer:
- Updated
/transfer/get
to accept either a transfer_id
or a transfer_authorization_id
. - In
/transfer/ledger/distribute
request, replaced from_client_id
and to_client_id
with from_ledger_id
and to_ledger_id
.
August 2024
- Added Multi-Item Link, which allows end users to link multiple financial accounts in a single Link session.
- Added the
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. - Added the ability to launch update mode with a user token and augmented
/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:
- Released an alternative installation repo to reduce download sizes for projects using Swift Package Manager. For details, see the iOS SDK changelog.
- Released Android SDK 4.6.0, with dependency updates and improved Java compatibility. For more details, see the Android SDK changelog.
- Released React Native 11.2.1, with enhanced support for React Native New Architecture, and including upgrades to Android SDK 4.6.0 and iOS SDK 5.6.1. For more details, see the React Native SDK changelog.
For Plaid Link:
- The password input boxes in Link now allow the user to optionally reveal the password before submitting their credentials, in order to help reduce typos in password data entry.
For Beacon (beta):
- Added data breach reporting.
For Plaid Check Consumer Reports:
- Added a
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:
- Added
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:
For Investments:
- Added Investments Refresh. Investments Refresh is available as an add-on to Investments and allows you to make a real-time, on-demand update request for fresh Investments data by calling the
/investments/refresh
endpoint.
For Liabilities:
- Plaid has discontinued support for federal student loan providers: Aidvantage, Central Research, Inc., EdFinancial Services - Federal Direct Loan Program (FDLP), Mohela and NelNet. Beginning in September, Liabilities subscriptions on Items from these institutions will no longer be billed, and end users will not be able to select these institutions in Link. Private student loan providers are not impacted. Impacted customers have been contacted directly by their Account Managers. For questions, contact your Plaid Account Manager.
For Transfer:
- Added support for multiple Ledgers. This improves the Plaid Transfer experience for customers who need to avoid co-mingling funds from different types of sources. As part of this change, several Transfer endpoints now have the optional ability to specify a
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. - Improved the flow for authorizations that could not be evaluated due to the
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 an 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. - For
/transfer/metrics/get
, added an authorization_usage
response object allowing you to see your credit and debit utilization details.
For Virtual Accounts:
- Added the
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.
July 2024
- Added support for Silent Network Auth (SNA) for the Android Returning User Experience. SNA is a faster and more secure method to verify an end user's phone number. To use SNA, you must be using at least version 3.14.3 or later of the Android SDK (if using 3.x) or version 4.1.1 or later (if using the 4.x). On React Native, the corresponding minimum versions are 10.12.0 and 11.4.0. Aside from updating your SDK, no action is required to enable SNA.
- Added support for biometric authentication for Citibank for integrations using the iOS SDK version 5.1.0 or later.
- Released account holder category (beta), indicating whether an account returned in the account object is a business or personal account. To request access to this feature, contact your account manager.
For Plaid Link SDKs:
- Released Android SDK 4.6.0, containing bug fixes and compatibility improvements. For details, see the Android SDK changelog.
For Auth:
- Released AUTH: DEFAULT_UPDATE webhook to GA. This webhook fires if Plaid detects that a bank's Auth information has changed. (While rare, this can occur due to changes such as an acquisition.) To avoid ACH returns, after receiving this webhook, you should call
/auth/get
or /processor/auth/get
to update your information on file for the user.
For Identity:
- In
/identity/match
, legal_name.is_business_name_detected
is no longer deprecated and can now be used for detecting business names.
For Transfer:
June 2024
- Launched Plaid Layer to early availability. Layer provides a fast, high-converting onboarding experience powered by Plaid Link.
- Launched Plaid Check, a subsidiary of Plaid Inc. that is a Consumer Reporting Agency. Through Plaid Check's Consumer Report API, you can retrieve ready-made credit risk insights from consumer-permissioned cash flow data.
- Decommissioned the Development Environment. Development has been replaced for testing purposes by Limited Production. For more details, see Limited Production.
For Plaid Link SDKs:
- Released iOS SDK 5.6.0, containing support for Plaid Layer, as well as bug fixes and improvements to the returning user experience.
- Released iOS SDK 4.7.9, containing bug fixes and improvements to the returning user experience.
- Released Android SDK 4.5.0, containing support for Plaid Layer, as well as bug fixes.
- Released React Native 11.11.0, containing support for Plaid Layer, as well as bug fixes and improved prefill support.
For Beacon:
- Added
access_tokens
field to /beacon/user/create
and /beacon/user/update
requests. - Added
item_ids
to /beacon/user/*
responses. - Added Bank Account Insights to Beacon. Account Risk (beta) is being folded into Beacon
For Balance:
- Launched Balance Plus (beta). Balance Plus enhances Plaid's Balance product with additional insights and lower latency and is designed to require minimal integration work for existing Balance customers.
For Income:
- Launched Plaid Check, a subsidiary of Plaid Inc. that is a Consumer Reporting Agency. Through Plaid Check's Consumer Report API, you can retrieve ready-made credit risk insights from consumer-permissioned cash flow data.
- Added
/user/remove
to support the deletion of user tokens.
For Liabilities:
- Added
income-sensitive repayment
as a student loan repayment type.
For Transactions:
- As originally announced in the November 2023 changelog, the default number of days of transactions history requested for new transactions-enabled Items is now 90 days for all customers. To change this behavior, use the
days_requested
parameter in /link/token/create
or (if initializing transactions post-Link) /transactions/get
or /transactions/sync
. - Improved behavior of Transactions-enabled Items being fixed via update mode. Now, if an Item was in an error state for over 24 errors before entering update mode, Plaid will immediately extract fresh transactions after update mode has completed, rather than waiting for the next scheduled update time.
For Transfer:
- Added support for RTP to Transfer UI.
- Added improved support for Transfer limit increase requests via the Transfer Dashboard.
For Virtual Accounts:
- Added support for
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.
May 2024
- Released Limited Production, which will replace Development as a platform for testing for free with live data. The Development environment will be decommissioned on June 20, 2024, and all Development Items will be deleted.
- Released Data Transparency Messaging to GA. To help ensure compliance with 1033 rulemaking, DTM will be automatically enabled for US and CA Link sessions later this year.
- Added new pre-seeded Sandbox test accounts for testing different credit profiles. These accounts are especially useful for testing Income, but are available to all customers. For details, see Credit and Income testing credentials.
- Updated the response object for
/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. - Updated the
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:
- Released iOS SDK 5.5.0 and 4.7.7, containing bug fixes and (for iOS SDK 5.5.0) additional view names to support new functionality.
- Released iOS SDK 6.0.0 beta, containing support for Apple Card and FinanceKit.
- Released Android SDK 4.4.1, containing bug fixes and UI improvements.
- Released React Native SDK 11.10.1, with improved support for "pre-loading" Link for a lower-latency user experience.
- Released React Native SDK 12.0.0 beta, containing support for Apple Card and FinanceKit.
For Income:
For Signal:
- Added support for some Items added via Same Day Micro-deposits or Instant Micro-deposits.
For Transfer:
April 2024
- Updated
/link/token/get
response to include user_token
. - Rebranded Remember Me as returning user experience.
For Plaid Link SDKs:
- Released Android SDK 4.3.1, iOS SDK 4.5.2, and React Native SDK 11.8.2, containing bug fixes and UI enhancements.
For Auth:
- Released Database Match, which enables instant manual account verification using Plaid's database of known account numbers. When provided as an alternative to Same Day Micro-deposits, Database Match can increase conversion, as the user may be able to verify instantly, without having to return to Plaid to verify their micro-deposit codes. For more information and to enable this feature, see the Database Match documentation.
- Released Database Insights (beta). Database Insights can be used as a manual alternative to credential-based Auth flows in low-risk use cases. Database Insights verifies account and routing numbers by checking the information provided against Plaid's known account numbers. If no known account number is found, Database Insights checks the inormation given against usages associated with the given routing number. For more information and to request access to the beta, see the Database Insights (beta) documentation.
- Added support for the
SMS_MICRODEPOSITS_VERIFICATION
webhook to /sandbox/item/fire_webhook
to support testing the Text Message Verification flow.
For Income:
- Added the ability to customize test data in the Sandbox environment for use with Document Income, by uploading a special JSON configuration object during the document upload step. For details, see Testing Document Income.
For Payment Initiation:
- Added
supports_payment_consents
field to an institution's Payment Initiation metadata object. - Added counterparty date of birth and address as optional request fields for
/payment_initiation/payment/reverse
. Providing these fields increases the likelihood that the recipient's bank will process the transaction successfully.
For Statements:
For Transfer:
- Updated the possible values for
network
in recurring transfer contexts to reflect the fact that recurring transfers now support RTP. - Added
funds_available
transfer status and transfer event type. - Deprecated the
/transfer/balance/get
endpoint in favor of the Plaid Ledger.
March 2024
For Plaid Link SDKs:
- Multiple improvements to the Remember Me experience.
- Added the ability to "pre-load" Link for a lower-latency user experience.
For Auth:
- Enabled Text Message Verification flow for Same-Day Micro-deposits by default. This new, non-breaking change can increase conversion of micro-deposit verification by up to 15%. This flow is now enabled for all Same Day Micro-deposit flows by default; to opt-out, use the
auth.sms_microdeposits_verification_enabled: false
setting when calling /link/token/create
.
For Transactions:
- Multiple improvements to the
/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.- The list of
removed
transactions now includes the account_id
s they were associated with, to make reconciliation and management easier.
- Granted all customers self-serve access to the
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. - Made
account_id
optional in the /transactions/recurring/get
endpoint.
For Transfer:
- Added
has_more
field to /transfer/event/list
and /transfer/event/sync
to indicate there are more events to be pulled. - Updated the possible values for
network
in recurring transfer contexts to reflect the fact that recurring transfers are only supported via ACH.
For Processor Partners:
February 2024
For Auth:
- Released the Text Message Verification flow for Same-Day Micro-deposits. This new, non-breaking change can increase conversion of micro-deposit verification by up to 15%. Currently, Text Message Verification is opt-in, and will transition to opt-out in March.
For Identity Verification:
- Added a large number of additional
linked_services
enum values.
For Investments:
- Added
vested_quantity
and vested_value
fields to the holdings
object.
For Liabilities:
- Added the
pending idr
status for student loans to reflect loans with a pending application for income-driven repayments.
For Transfer:
- Added fields including
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. - Increased maximum length of
description
field on /transfer/intent/create
from 8 to 15.
For Signal:
- Added
warnings
array to /signal/evaluate
response even if no warnings are present in order to match documented API behavior.
January 2024
- Expanded the Returning User Link flow to more customers. For more details on the Returning User Experience, including the associated Link events, see Returning User Experience.
- Added
events
field to /link/token/get
to capture Link events. - Made the
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. - Released the
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:
- Added
vested_quantity
and vested_value
fields to the Investments object within the Asset Report. - Added
margin_loan_amount
field to the Balance object within the Asset Report.
For Enrich:
For Income:
For Identity Verification:
- Added new
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. - Made
street
and city
optional in the address attribute of /identity_verification/create
.
For Payment Initiation:
For Transactions:
- Added a new Sandbox test user,
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:
For Partners:
December 2023
- Announced the upcoming removal of the Development environment. To simplify the development process, Plaid will be replacing the Development environment with the ability to test with real data for free directly in Production. On June 20, 2024, the Plaid Development environment will be decommissioned, and all Development Items will be removed. You may continue to test on the Development environment until this time.
- Capital One now provides real-time balance data for depository accounts, including checking and savings accounts. It is no longer necessary to include
min_last_updated_datetime
when making /accounts/balance/get
calls for these accounts.
For Investments:
- Added
market_identifier_code
to the security object. - Added
option_contract
to the security object, adding additional details contract_type
, expiration_date
, strike_price
, and underlying_security_ticker
for better insight into derivatives.
November 2023
For Identity:
- Released Identity Match and the
/identity/match/
endpoint to General Availability.
For Income:
- Expanded
/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):
- Added
/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. - Removed support for doc and docx format files in
/transfer/diligence/document/upload
.
For Transfer:
- Updated default Sandbox behavior of Ledger. Ledgers in Sandbox will now have a $100 default balance.
For Transactions:
- Added the
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, 2024 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:
October 2023
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:
- Added an
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:
- Released Document Fraud to General Availability.
- Added
/credit/payroll_income/parsing_config/update
, allowing users of Document Fraud to update the parsing configuration used for document income. - Deprecated the /credit/payroll_income/precheck endpoint.
For Investments:
- Added the
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. - Extended the deadline beyond which Plaid customers will need a CGS license to obtain
cusip
and isin
data. The new deadline is March 2024.
For Transactions:
For Transfer:
- Added new methods to fund your Plaid Ledger. In addition to the
/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. - Made Plaid Ledger the default method for funding transfers for all new Transfer customers. Plaid Ledger allows faster funds transfers and is now the easiest way to move money between your bank account and Plaid. Existing customers who want to switch to Plaid Ledger should contact their Plaid Account Manager.
- Added
/sandbox/transfer/refund/simulate
to test refunds in the Sandbox environment. - Added refund-specific event types. These are existing event types with the prefix
refund.
, e.g. refund.settled
. - For
/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. - For
/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:
- Added
RETURN
as possible Virtual Account wallet transaction type.
September 2023
Added the 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.
Added Update Mode Product Validations (beta). Update Mode Product Validations (UMPV) allows you to validate that a user going through update mode at an OAuth institution has selected the appropriate authorizations to enable Auth and/or Identity. If they do not select the correct options, they will be prompted to update their selections.
Added Optional Products. If a product is specified in the 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.
Added institution_not_supported
as a potential Link session exit metadata status.
For Auth:
Added Instant Micro-Deposits, allowing end users to verify their accounts in seconds, using micro-deposits sent over RTP or FedNow rails. Instant Micro-Deposits can be used as a faster alternative to Same-Day Micro-Deposits at supported institutions.
For Assets:
Deprecated 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 to by the PRODUCT_READY
webhook to distinguish between Fast Asset Reports and Full Asset Reports.
For Signal:
- Launched the Signal Dashboard to help customers monitor return rates and tune Signal risk score thresholds.
For Transactions:
- Made Personal Finance Categories returned by default for all users. Personal Finance Categories are Plaid's newest and most accurate way of categorizing transactions, using more intuitive categories that correspond better to personal finance management use cases.
For Transfer:
- Launched Transfer from beta to Early Availability (EA) status.
- Added support for FedNow payments, which can be accessed by specifying
rtp
as the payment network. - Added Plaid Ledger. Your Plaid Ledger allows you to maintain a funds balance with Plaid, which can be used to fund payouts over FedNow and RTP rails. You can use APIs to move money in and our of your Ledger.
- Removed Payment Profiles; access tokens are now the only supported mechanisms for connecting accounts on Transfer.
- Removed
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:
- Updated API docs to reflect
"NOT LISTED"
as a potential value for marital_status
.
For Statements (beta):
- Released Statements in beta. Statements allows you to retrieve an exact PDF copy of a customer's statement at supported institutions.
August 2023
For Enrich:
- Added
frequency
field to recurring transactions to indicate the recurrence frequency.
For Identity Verification:
For Income:
- Added a number of new categories for Payroll 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. - Added
status
field to /credit/payroll_income/risk_signals/get
to show the status of evaluated documents. - Added
payroll_income.parsing_config
to /link/token/create
to expose configuration options for risk signal evaluation.
For Liabilities:
- Added
saving on a valuable education
(SAVE) as a student loan repayment plan type.
For Signal:
- Added the ability to change an
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:
- Added
failure_reason
to refund objects to indicate why a Transfer refund failed.
For Virtual Accounts:
July 2023
- Added
/processor/token/webhook/update
endpoint to allow customers using processor partners to update the webhook endpoint associated with a processor token.
For Assets:
- Made
asset_report_token
optional in /asset_report/get
request to support future development of Asset Reports based on other types of tokens.
For Investments:
For Enrich:
- Added
confidence_level
to counterparty
and personal_finance_category
fields.
For Identity Verification:
- Added
date_of_birth
and address
fields to documentary_verification.documents[].extracted_data
in the response of all Identity Verification endpoints. - Mark all
region
and postal_code
fields as nullable, to better support countries that do not use these fields.
For Transfer:
- Added
transfer_id
and status
filters to /transfer/sweep/list
request. - Added
status
field to the sweep object.
June 2023
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:
- Added the ability to customize Same-day Microdeposit flows via the new
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:
- Added
income_source
enum to counterparty_type
field.
For Identity Verification:
- Added the ability to prefill user data when retrying a verification by providing a
user
object to /identity_verification/retry
. - Added
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:
For Signal:
For Transfer:
- Added the ability to specify a
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. - Made the
virtual_time
field optional when calling /sandbox/transfer/test_clock/create
. If a time is not provided, the current time will be used. - Updated the
sweep_id
format to be either a UUID or an 8-character hexadecimal string. - Made
next_origination_date
nullable in the recurring transfer object.
For Virtual Accounts:
May 2023
For Assets:
For Identity:
For Identity Verification:
- Added the
selfie_check
field to the Income Verification object, to report the status of a selfie check.
For Document Income:
For Transfers:
- Increased the maximum length of the
description
field in /transfer/create
to 15 characters. - Added the
/transfer/balance/get
endpoint. - To support prefunded credit processing, added the
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:
For Signal:
April 2023
For Income:
For Document Income:
- Released the
/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:
- Documented several fields in the
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:
March 2023
- To maximize conversion, updated Link to use a pop-up window for OAuth authentication rather than redirects on non-webview mobile web flows.
- Clarified that
continue(from:)
is no longer required for iOS OAuth integrations using Plaid's iOS and React Native iOS SDKs. - Updated error codes for most
RATE_LIMIT
errors to be specific to the endpoint for which they apply.
For Auth:
- Changed the Link UI for Instant Match and Automated Micro-deposits flows to increase conversion by reducing the number of screens in the flow and removing unnecessary input fields. No developer action is required as a result of this change.
For Transactions:
For Identity:
- Added
/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:
For Assets:
- Released Fast Assets functionality to General Availability (GA). With Fast Assets, you can create a Fast Asset Report with partial information (current balance and identity data) in about half the time as a Full Asset Report, then request the Full Asset Report later. Fast Assets is available free of charge to all Assets customers. For more information, see the Assets API reference.
- Added the optional
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. - Added Freddie Mac as an audit copy token partner with
auditor_id: freddie_mac
. - Added
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:
- Added support for
bank_employment_results
data to /credit/sessions/get
. Employment functionality is currently in closed beta; for more details, contact your Account Manager.
For Signal:
For Virtual Accounts:
- Added
transaction_id
to the Payment Initiation PAYMENT_STATUS_UPDATE
webhook. This field will be present only when a payment was initiated using Virtual Accounts. - Added
payment_id
and wallet_id
to the WALLET_TRANSACTION_STATUS_UPDATE
webhook.
February 2023
- Added the
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:
- Beginning March 31, 2023, Assets will be updated to return
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:
- Added
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:
- Added
redacted_at
field in Identity Verification response and Documentary Verification Document component.
For Transfer:
For reseller partners:
For Virtual Accounts:
For Payment Initiation:
For Signal:
- Added
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
.
January 2023
- Released Plaid React Native SDK 9.0.0 and Plaid iOS SDK 4.1.0. All iOS integrations must upgrade to these SDKs by June 30, 2023 in order to maintain support for Chase OAuth flows on iOS. Any integrations using webviews will also be required to update their webview handlers by June 30, 2023. For more details on required webview updates, see the OAuth Guide.
- Released improvements to the Returning User Experience (RUX): removing the requirement to provide a verified time for phone numbers and email addresses, making RUX flows available for more products, and adding Institution Boosting, which automatically surfaces institutions a user has previously linked to Plaid in the Link flow. Enabling RUX can increase conversion by 8% or more. For more details on how to enable RUX, see Returning User Experience documentation.
For Auth:
- Updated Same-Day Micro-deposits to make a single one-cent micro-deposit, which will not be reversed, rather than multiple micro-deposits. This change will reduce costs and decrease the incentive for micro-deposit fraud. No changes are required on the part of developers to support this change. This change will automatically be rolled out to customers over the next several months.
For Transfer:
- Added
expected_settlement_date
field to the Transfer object. - Added
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:
- Added
status
field to Wallet schema.
For Partners:
December 2022
For Auth:
- Announced upcoming Instant Match automatic enrollment to existing customers who have not yet been enabled for Instant Match by default. Instant Match is a higher-converting experience for Link that expands Auth coverage to more end users. All customers will be enabled for Instant Match by default unless they opt-out by January 19, 2023, which they can do by contacting their Account Manager.
For Assets:
For Income:
- For
/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. - Added new possible values to
rate_of_pay
field returned by /credit/payroll_income/get
: WEEKLY
, BI_WEEKLY
, MONTHLY
, SEMI_MONTHLY
, DAILY
, and COMMISSION
. - Added new
pay_basis
field to the response of /credit/payroll_income/get
.
For Virtual Accounts:
- Added
FUNDS_SWEEP
as a possible transaction type.
For Transfer:
- Added
/transfer/capabilities/get
endpoint to provide information about which Items support Real Time Payments (RTP) - Added endpoints
/transfer/originator/get
, /transfer/originator/list
, /transfer/originator/create
, and /transfer/questionnaire/create
to support marketplaces and reseller partners in creating and managing transfer originators. - Added the ability to create and manage recurring transfers. API changes include the new endpoints
/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:
- Released Enrich to Early Availability. Enrich access is now available by default in Sandbox. For details on requesting access to use Enrich with real data, see the Enrich documentation.
- Added support for legacy categories, using categories from
/categories/get
, in addition to the newer personal_finance_category
schema. - Renamed counterparty type
delivery_marketplace
to marketplace
and added counterparty type payment_terminal
.
For the Reseller Partner API:
November 2022
- Released Signal to general availability. Signal uses machine learning techniques to evaluate a proposed ACH transaction and determine the likelihood that the transaction will be reversed. It also provides fields and insights that you can incorporate into your own data models. By using the Signal API, you can release funds earlier to optimize your user experience while managing the risk of ACH returns.
For Auth:
For Investments:
- Notified customers that customers must hold a CGS (CUSIP Global Services) license to obtain CUSIP and ISIN data. Beginning in mid-September 2023, customers who do not have a record of this license with Plaid will receive
null
data in these fields. To maintain access to these fields, contact your Plaid Account Manager or investments-vendors@plaid.com.
For Payment Initiation:
- Added the ability to initiate partial refunds by specifying an
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
. - Added support for local payment schemes for all supported currencies (previously, only EUR and GBP local payment schemes been supported), and added the enum values
LOCAL_DEFAULT
and LOCAL_INSTANT
to represent them. In the UK, the FASTER_PAYMENTS
enum value has been replaced by LOCAL_DEFAULT
. - Removed support for currencies CHF and CZK.
For Virtual Accounts:
For Transfer:
- Made
account_id
nullable in the responses for /transfer/authorization/create
and /transfer/create
. - Added
deleted_at
field to /payment_profile/get response. - Added
refunds
field to the transfer object. - Added
refund_id
to the transfer event object.
For Reseller Partners:
October 2022
- Added support for additional Link display languages: Danish, German, Estonian, Italian, Latvian, Lithuanian, Norwegian, Polish, Romanian, and Swedish.
- Added support for additional countries: Denmark, Estonia, Latvia, Lithuania, Poland, Norway, and Sweden.
- Added support for
USER_INPUT_TIMEOUT
as a value for force_error
in the Sandbox custom user schema.
For Auth:
For Investments:
- Added
non-custodial wallet
to account subtypes. - Added
trade
investment transaction subtype as a subtype of transfer
investment transaction type
For Income:
- To improve reliability and developer ease of use, modified the multi-Item Link flow for Bank Income to use the new
/credit/sessions/get
endpoint rather than relying on Link events. - Added Bank Income status
USER_REPORTED_NO_INCOME
. - Added Income support to
/sandbox/public_token/create
. - Deprecated
VERIFICATION_STATUS_PENDING_APPROVAL
. - Established a 128 character limit for the
client_user_id
field in the /user/create
request. - Added
institution_name
and institution_id
fields to /credit/payroll_income/get
response.
For Virtual Accounts:
- Added
options.start_time
and options.end_time
to /wallet/transaction/list
request. - Added
last_status_update
and payment_id
field to wallet transactions.
For Payment Initiation:
- Added
transaction_id
field to the payment object.
For Transfer (beta):
- Added support for RTP networks
- Added decision rationale code
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. - To improve consistency, renamed
LOGIN_REQUIRED
decision rationale to ITEM_LOGIN_REQUIRED
. - Deprecated
origination_account_id
from /transfer/authorization/create
endpoint. - Added new
originator_client_id
field to support Third-Party Senders (TPS).
For Wallet Onboard (beta):
- Released Wallet Onboard to beta.
For Partner Resellers:
September 2022
- Added the ability to simulate the
USER_INPUT_TIMEOUT
error in Sandbox. - Added the ability to specify account mask when using custom Sandbox users.
For Investments:
- Added support for crypto wallet investment account subtype
non-custodial wallet
and crypto trade
investment transaction type. - Made
institution_price_as_of
nullable.
For Transfer (beta):
- Added support for client-side beacons. A beacon is now required when using Guarantee with web checkout flows.
- Removed the
idempotency_key
from the /transfer/authorization/create
response. - Added
settled
and swept_settled
transfer events and event statuses. - Added
standard_return_window
and unauthorized_return_window
fields to the Transfer object.
For Payment Initiation:
For Assets:
August 2022
Released Identity Verification and Monitor to General Availability (GA).
Added issuing_region
as a field in the extracted data for Identity Verification documents
Extended support for Android Link SDK versions prior to 3.5.0, iOS Link SDK versions prior to 2.2.2, and Link React Native SDK versions prior to 7.1.1. Previously, these SDK versions had been scheduled to be sunset on November 1, 2022. The sunset has been canceled and Plaid will now continue to support these versions past November 2022. We still recommend you use the latest SDK versions.
For Payment Initiation:
- Added support for virtual accounts.
- Added support for additional currencies PLN, SEK, DKK, NOK, CHF, and CZK.
- Added
PAYMENT_STATUS_SETTLED
payment status.
For Income:
July 2022
For /link/token/create
user
object:
- Deprecated the unused fields
ssn
, date_of_birth
, and legal_name
. - Added the
name
, address
, and id_number
parameters to support Identity Verification.
For Payment Initiation:
For Income:
For Transfer:
June 2022
For Auth:
- Launched Auth Type Select (formerly known in beta as Flexible Auth or Flex Auth) to all customers. Auth Type Select allows you to optionally route end users directly to micro-deposit-based verification, even if they are eligible for Instant Match or Instant Auth.
For Transfer:
- Made Plaid Guarantee available in beta. Guarantee allows you to guarantee the settlement of an ACH transaction, protecting you against fraud and clawbacks.
- Added
TRANSFER_LIMIT_REACHED
to Transfer authorization decision rationale codes.
For Income:
For Payment Initiation (UK and Europe only):
- Launched payment consents, which can be used to initiate payments on behalf of the user.
May 2022
- Added Identity Verification and Monitor products in Early Access. Identity Verification checks the identity of users against identity databases and user-submitted ID documents, while Monitor checks user identities against government watchlists.
For Transactions:
For Income:
- Added
employee_type
and last_paystub_date
to /credit/employment/get
response. - Removed
uploaded
, created
and APPROVAL_STATUS_APPROVED
enum strings, as these are no longer used.
April 2022
Added the ability to default Link to highlighting a specific institution when launching Link, via the institution_data
request field.
Launched Income to general availability. Income allows you to verify the income of end users for purposes of loan underwriting. Various updates were also made to Income interfaces prior to launch; Income beta customers have been contacted by their account managers with details on the differences between the beta API and the released API.
For Transactions:
- Added
/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:
- Added Highnote as a processor partner. For a full list of all Auth processor partners, see Auth Payment Partners.
March 2022
- Introduced the Institution Select shortcut, which enables you to highlight a matching institution on the Institution Select pane.
- Added
institution_data
request field to /link/token/create
endpoint, which accepts routing_number
. - Added
match_reason
to metadata field for MATCHED_SELECT_INSTITUTION
, which indicates whether routing_number
or returning_user
resulted in a matched institution. - Added support for
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:
- New set of API endpoints added and numerous updates made for General Availability release. Existing beta endpoints are still supported but marked as deprecated. For more details, see the Income docs and Income API reference.
For Auth:
- Added Apex Clearing, Checkout.com, Marqeta, and Solid as processor partners.
For Payment Initiation:
- Added support for the
IT
country code. - Added support for searching by
consent_id
to /institutions/search
.
For Bank Transfer (beta):
For Transfer (beta):
February 2022
- For Transactions, released new personal finance categories to provide more intuitive and usable transaction categorization. Personal finance categories can now be accessed by calling
/transactions/get
with the include_personal_finance_category
option enabled. - For Income, removed several unused fields and endpoints, including removing
income_verification_id
from /sandbox/income/fire_webhook
and removing the /income/verification/summary/get and /income/verification/paystub/get endpoints.
For Transfer (beta):
- Deprecated the
idempotency_key
parameter, as idempotency is now tracked via other identifiers. - Made
repayment_id
a required parameter for /transfer/repayment/return/list. - Made guaranteed fields required in Transfer endpoints.
January 2022
- Added the ability to test the
NEW_ACCOUNTS_AVAILABLE
webhook via /sandbox/item/fire_webhook
. - Updated
/item/webhook/update
to accept empty or null
webhook URLs. - Updated institutions endpoints to accept null values as input for optional input fields.
For Transfer (beta):
- Added publicly documented sweep endpoints to provide visibility into the status of Transfer sweeps.
- Added
iso_currency_code
throughout the API to future-proof for multi-currency support (currently only USD is supported). - Made
repayment_id
required in /transfer/repayment/return/list endpoint
For Bank Transfer (beta):
- Removed
receiver_pending
and receiver_posted
from bank transfer event types, and removed receiver details from events.
For Payment Initiation:
For Income:
- Added
DOCUMENT_TYPE_NONE
value for document type. - Made employer address fields no longer required in /income/verification/precheck.
December 2021
- For Transfer, updated the schema definitions for
/transfer/intent/get
and /transfer/intent/create
. - For Income, deprecated the status
VERIFICATION_STATUS_DOCUMENT_REJECTED
. - For Payment Initiation, added several new statuses, including
PAYMENT_STATUS_REJECTED
.
November 2021
- For Payment Initiation, added the new status
PAYMENT_STATUS_EXECUTED
and renamed emi_account_id
to wallet_id
. - For
/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. - For Income, added the new status
VERIFICATION_STATUS_PENDING_APPROVAL
.
October 2021
Multiple changes to the Income API:
- Added the ability to verify submitted paystubs against a user's transaction history by adding the
income_verification.access_tokens
parameter to /link/token/create
and updating /income/verification/paystubs/get to return the income verification status for each paystub. - Added a
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. - Extensive changes to the paystub schema returned by /income/verification/paystubs/get, including adding new fields and deprecating old ones. For details, contact your Plaid Account Manager.
- Officially deprecated the
income_verification_id
in favor of the Link token-based income verification flow. - Added an
item_id
field to the income_verification
webhook and corresponding /sandbox/income/fire_webhook
endpoint. - Added
employer.url
and employer.address
fields to the /income/verification/precheck endpoint. - Added a
doc_id
field to /income/verification/taxforms/get.
Other changes:
- For institutions endpoints, marked the
status
enum as deprecated in favor of the more detailed breakdown
object. - Added
DE
as a supported country to support Payment Initiation use cases.
September 2021
- Released Account Select v2, including the new
NEW_ACCOUNTS_AVAILABLE
webhook, for improved end-user sharing controls. All implementations must migrate to Account Select v2 by March 2022. - Added the ability to check which types of Auth coverage an institution supports via a new
auth_metadata
object now available from Institutions endpoints - Added the /income/verification/precheck endpoint to check whether a given user is supportable by the Income product.
- Added
initiated_refunds
field to /payment_initiation/payment/get
and /payment_initiation/payment/list
to show refunds associated with payments. - Added fields
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.com - Removed some fields (
direction
, custom_tag
, iso_currency_code
, receiver_details
) and receiver event types from Bank Transfer (beta) endpoints and made ach_class
a required field. - Added support for the currency type Bitcoin SV.
August 2021
July 2021
- Added new webhook for Deposit Switch.
- Added optional
country_code
and options
parameters to deposit switch creation endpoints, as well as new values for the state
enum in the response. - For Deposit Switch, added additional response fields
employer_name
, employer_id
, institution_name
, institution_id
, and switch_method
. - Updated the list of ACH partners, including adding Alpaca, Astra, and Moov.
- For
/transactions/get
, added the fields include_original_description
and original_description
in the request and response, respectively.
June 2021
- Chase now supports real-time payments and same-day ACH for OAuth-based connections.
- Added new Investment account subtypes
life insurance
, other annuity
, and other insurance
. - Added new error codes
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. - Began rolling out improvements to reduce balance latency.
- Released a new representation of cryptocurrency, to represent crypto holdings more similarly to investments, rather than foreign currency, in order to match how most popular institutions represent crypto.
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
.
May 2021
- Improved the UI for Instant Match and enabled it for all "Pay as you go" customers. Customers with a monthly contract who would like to use Instant Match should contact their Plaid Account Manager.
- Removed the requirement to be enabled by Support in order to request an Asset Report with Insights.
- For the Payment Initiation product, launched Modular Link, allowing further UI customization.
- For the Payment Initiation product, added an
options
object to /payment_initiation/payment/create
to support restricting payments originating from specific accounts. - For the Liabilities product, added a
DEFAULT_UPDATE
webhook to indicate changes to liabilities accounts. - Made Item Debugger and improved Institution Status available to 100% of developers.
- Added Link Consent pane customization.
- Added the ability to use wildcards to specify a subdomain in an OAuth redirect URI.
- Clarified that the following Link onEvent callbacks are stable:
OPEN
, EXIT
, HANDOFF
, SELECT_INSTITUTION
, ERROR
, but the remaining are informational.
April 2021
- In order to support the beta generated client libraries, added the ability to provide
client_id
and secret
via headers instead of as request parameters. - Added the
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. - Removed
last_statement_balance
from the official documentation for /liabilities/get
, as it was not ever returned. - Fixed the case of submitting an invalid client ID to return an
INVALID_API_KEYS
error instead of an INTERNAL_SERVER_ERROR
, in order to match documented behavior.
March 2021
- Launched Plaid Income (beta) for verifying income and employment.
- Added the ability to specify an
end_date
for standing orders in the Payment Initiation product. - Updated list of active processor partners.
- Added webhook to notify of new Bank Transfers events.
- Added
/sandbox/bank_transfer/fire_webhook
endpoint to test Bank Transfers webhooks. - Added
auth_flow
parameter to /link/token/create
to support Flexible Auth (beta). - Updated the
/payment_initiation/recipient/create
endpoint to accept address.country_code
(preferred) instead of address.country
(accepted, but deprecated). - Removed the
MATCHED_INSTITUTION_SELECT
transition view event, after consolidating the returning user institution select view. - Added the
SELECT_BRAND
onEvent callback, after shipping a change that groups institution login portals within the same institution brand. - Stopped sending
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.
February 2021
- Added additional payment error codes.
- Added the UK-only fields
authorized_datetime
and datetime
fields to the transaction
object, for more detailed information on when the transaction occurred. - Added
update_type
field to the item
object. This field will be used to support upcoming connectivity improvements to accounts with multi-factor authentication. - Added optional
ssn
and date_of_birth
fields to the user
object in /link/token/create
to support upcoming functionality enhancements. - Released an OpenAPI file describing the Plaid API.
January 2021
- Launched Deposit Switch (beta) for transferring direct deposits from one account to another.
- Improved error handling to treat some invalid input errors that were previously treated as 500 errors as
INVALID_INPUT
errors instead.
December 2020
- Made Bank Transfers (beta) available for testing in the Development environment.
- Added
investments_updates
to the status
object returned by Institutions endpoints.
November 2020
- Removed some internal-only, pre-beta products from appearing in the
/institutions/get_by_id
response. - Restored the
/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.
October 2020
- Released API version 2020-09-14. See the version changelog for details.
- Added support for mortgages to
/liabilities/get
. - Released Bank Transfers to closed beta.
- To improve consistency with other error types, changed the error type for Bank Transfers errors from
BANK_TRANSFER
to BANK_TRANSFER_ERROR
. - Added the fields
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.
August 2020
- Introduced standing orders to Payment Initiation for our UK and Europe customers. If applicable, your users will now be able to make recurring scheduled payments with a single authorization.
- Expanded access to full Auth coverage to more developers. If you would like to use micro-deposit based verification and don't have access to it, contact your Plaid Account Manager.
- Updated Link error messages to provide more actionable instructions for end users, making resolution troubleshooting easier.
- Made account filtering available across all our products, so you can configure the Link flow to guide end users in selecting relevant institutions and accounts.
July 2020
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.
June 2020
- Added a new
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. - Added the PAYMENT_INITIATION:PAYMENT_STATUS_UPDATE webhook, which pushes instant notifications when payment status changes for the UK Payment Initiation product.
- Added the ability to create payment recipients via sort codes and account numbers, not just IBANs.
May 2020
- We launched a new open finance platform called Plaid Exchange that enables financial institutions to build a consumer-permissioned data access strategy and strengthen the ability of end users to reliably access their financial data.
April 2020
- Launched Payment Initiation in the UK, which offers an easy way for users to fund their accounts, make purchases, and pay invoices—all from their favorite apps or websites.
March 2020
- Added the ability to filter by
account_subtype
, allowing you to further optimize the Link flow. - Added the
HOLDINGS: DEFAULT_UPDATE
and INVESTMENT_TRANSACTIONS: DEFAULT_UPDATE
webhooks, which will fire each time data has successfully refreshed for Holdings and Investments Transactions.
February 2020
January 2020
- Added
store_number
, authorized_date
, and payment_channel
to the /transactions/get
response. - Added the
investment_transactions.subtypes
field to provide more granular detail about the tax, performance, and fee impact of investments transactions.
November 2019
- Added the
status.investments.last_successful_update
and status.investments.last_failed_update
fields to the data returned by /item/get
. - Launched official support for Link on React Native with a new SDK, bringing unified support to React Native apps.
October 2019
- Added the
status.item_logins.breakdown
data to /institutions/get_by_id
and the Developer Dashboard. - Added the
routing_numbers
field to the Institutions object. You can also filter institutions via the options.routing_numbers
field in each Institutions API endpoint.
September 2019
- Added support for credit card details to the Liabilities product.
- Added Canada-specific account subtypes, including RRSP, RESP, and TFSA, to the Investments product.
August 2019
- Among numerous other improvements to Liabilities, such as expanded data access, added a new
loan_type
: cancelled
to the Liabilities product.
July 2019
- We launched Liabilities, which enables developers to access a feed of standardized student loan details from the largest U.S. servicers including Navient, Nelnet, FedLoan, Great Lakes, and many more.
June 2019
- Launched Investments, which allows developers, fintech apps, and financial institutions to create a holistic view of their customers’ investments.
- Added the
status.transactions_updates
field, exposing Transactions health to both the /institutions/get
endpoint and the Dashboard.
May 2019
March 2019
- We updated the institutions endpoints so you can now retrieve bank logos, colors, and website URLs to use to customize your in-app experience.
- We enabled triggering and testing of webhooks on demand via the new
/sandbox/item/fire_webhook
endpoint.
February 2019
- We launched new features for Auth, enabling developers to authenticate accounts from any bank or credit union in the U.S. Link automatically guides end-users to the best way to authenticate their account based on the bank they select.
November 2018
- Added a new Insights feature, which provides cleaned and categorized transaction data in an Asset Report. In addition to transaction categories, lenders will be able to retrieve merchant names and locations for transactions to use in building risk models.
- Improved the Link experience by informing users about connectivity issues with banks before connecting their account. When banks are experiencing significant issues, users will temporarily be directed to connect their account at a different bank to reduce frustration and drop-off during the onboarding process.
September 2018
- We added the
/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.
August 2018
- We added account filtering, which gives you the ability to exclude unnecessary accounts from appearing in an Asset Report.
June 2018
- Added historical account balances to the PDF version of Asset Reports, bringing them closer in line with the core JSON endpoint.
May 2018
April 2018
- Officially launched the Assets product. Assets is approved by Fannie Mae for Day 1 Certainty™ asset verification.
March 2018
- Rolled out several Assets features, including webhooks for Asset Report generation and full support for Audit Copy token generation and Fannie Mae’s Day 1 Certainty™ program, while improving existing features like pending transaction support in PDF reports.
February 2018
- Released Assets as a beta product.