For Investments Move:
- Added a new error code,
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.
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 always be reflected. Improvements to the Dashboard, institution connectivity, or data availability 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.
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 Vehicles Administrators (AAMVA) Drivers 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 Plaid 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 Plaid 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 the Plaid Dashboard:
For Plaid Link:
For Plaid Check Consumer Reports:
/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 Link:
org.bouncycastle:bcpkix-jdk15to18
dependency. For Plaid Check Consumer Reports:
For Transfer:
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 Reports:
/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 PNC TAN expiration.For Layer:
android_package_name
to /session/token/create
.For Plaid Check Consumer Reports:
average_inflow_amount
field to be positive.For Transfer:
ITEM_LOGIN_REQUIRED
state. For more details, see PNC TAN expiration.INSTITUTION_RATE_LIMIT
error and behavior for when an institution is experiencing excessive API traffic to realtime 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. CONSENT
and SUBMIT_PHONE
TRANSITION_VIEW
Link analytics events will fire when this screen is reached.For Plaid Check Consumer Reports:
/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 Reports:
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 Check Report 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 Reports:
client_report_id
to Income Insights Reports. 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 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 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 of the ach_return_code
field.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 Reports:
/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 Reports:
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 Reports:
/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.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 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:
/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 realtime 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.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:
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 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 Plaid Link:
For Beacon (beta):
For Plaid Check Consumer Reports:
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 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. /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 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 Plaid Link SDKs:
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_id
s 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/get
products
field in /partner/customers/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.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:
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_webhook
For 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
.continue(from:)
is no longer required for iOS OAuth integrations using Plaid's iOS and React Native iOS SDKs.RATE_LIMIT
errors to be specific to the endpoint for which they apply. 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 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:
PARTNER_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/originator/get
, /transfer/originator/list
, /transfer/originator/create
, and /transfer/questionnaire/create
to support marketplaces and reseller partners in creating and managing transfer originators./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 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.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:
PAYMENT_STATUS_SETTLED
payment status.For Income:
/credit/payroll_income/get
and /income/verification/paystubs/getpull_id
field from /credit/payroll_income/get
For /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 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.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:
/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./transactions/get
with the include_personal_finance_category
option enabled.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 INVESTMENT_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.investments.last_successful_update
and status.investments.last_failed_update
fields to the data returned by /item/get
.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).