AsyncAPI 2.6 specification for the Plaid webhook surface. Plaid delivers asynchronous notifications via HTTP POST to the URL registered on an Item (`webhook` parameter in `/link/token/create`) or configured per-product in the Plaid Dashboard. Each webhook carries a JSON body identified by the `webhook_type` and `webhook_code` fields and is signed with an ES256 JWT in the `Plaid-Verification` HTTP header. Webhooks delivered with a non-200 response are retried with exponential backoff for up to 24 hours starting at 30 seconds. Sources: - https://plaid.com/docs/api/webhooks/ - https://plaid.com/docs/api/webhooks/webhook-verification/ - Product-specific webhook reference pages on plaid.com/docs/api/products/* - Plaid OpenAPI spec (openapi/plaid-openapi-original.yml)
Plaid has finished calculating income for an Item.
income/incomeVerification
publishonIncomeVerification
Income verification processing status change (Document Income flow).
income/incomeVerificationRiskSignals
publishonIncomeVerificationRiskSignals
Risk signals processed for documents uploaded via Document Income.
income/bankIncomeComplete
publishonBankIncomeComplete
A CRA-enabled bank income report has completed (success or failure); call /credit/bank_income/get.
income/bankIncomeRefreshUpdate
publishonBankIncomeRefreshUpdate
A change in user income has been detected; call /credit/bank_income/refresh.
income/bankIncomeRefreshComplete
publishonBankIncomeRefreshComplete
A refreshed bank income report has finished generating.
income/incomeVerificationRefreshReconnectNeeded
publishonIncomeVerificationRefreshReconnectNeeded
Payroll Income refresh failed because the user must re-connect their payroll account.
transfer/eventsUpdate
publishonTransferEventsUpdate
New transfer events available; fetch via /transfer/event/sync.
transfer/recurringNewTransfer
publishonRecurringNewTransfer
A new transfer of a recurring transfer has been originated.
transfer/recurringTransferSkipped
publishonRecurringTransferSkipped
A scheduled recurring transfer could not be created on its planned date.
transfer/recurringCancelled
publishonRecurringCancelled
A recurring transfer was cancelled by Plaid.
statements/refreshComplete
publishonStatementsRefreshComplete
A statement refresh extraction (success or failure) triggered by /statements/refresh has completed.
link/sessionFinished
publishonLinkSessionFinished
A Link session ended with a final status of SUCCESS or EXITED. Used by Layer flows.
link/itemAddResult
publishonLinkItemAddResult
User successfully added a Plaid Item during a Link session; carries the public token.
link/events
publishonLinkEvents
Summary of events emitted during a Link session.
identityVerification/statusUpdated
publishonIdentityVerificationStatusUpdated
An identity verification status changed (dashboard or API trigger).
identityVerification/stepUpdated
publishonIdentityVerificationStepUpdated
A step in the identity verification process was completed.
identityVerification/retried
publishonIdentityVerificationRetried
An identity verification was retried (dashboard or API trigger).
beacon/userStatusUpdated
publishonBeaconUserStatusUpdated
A Beacon User status changed (dashboard action or Beacon Network report).
beacon/reportCreated
publishonBeaconReportCreated
A Beacon User was first reported to the Beacon Network.
beacon/reportUpdated
publishonBeaconReportUpdated
An existing Beacon Report was modified or removed from the Network.
beacon/reportSyndicationCreated
publishonBeaconReportSyndicationCreated
A Beacon Network report matched one of your Beacon Users.
beacon/duplicateDetected
publishonBeaconDuplicateDetected
A Beacon User created within your organization matched one of your existing users.
screening/statusUpdated
publishonScreeningStatusUpdated
An individual watchlist screening status changed (manually or via ongoing monitoring).
entityScreening/statusUpdated
publishonEntityScreeningStatusUpdated
An entity watchlist screening status changed (manually or via ongoing monitoring).
Messages
✉
ItemErrorWebhook
ITEM / ERROR
Fired when an error is encountered with an Item.
✉
ItemLoginRepairedWebhook
ITEM / LOGIN_REPAIRED
✉
NewAccountsAvailableWebhook
ITEM / NEW_ACCOUNTS_AVAILABLE
✉
PendingExpirationWebhook
ITEM / PENDING_EXPIRATION
✉
UserPermissionRevokedWebhook
ITEM / USER_PERMISSION_REVOKED
✉
UserAccountRevokedWebhook
ITEM / USER_ACCOUNT_REVOKED
✉
WebhookUpdateAcknowledgedWebhook
ITEM / WEBHOOK_UPDATE_ACKNOWLEDGED
✉
SyncUpdatesAvailableWebhook
TRANSACTIONS / SYNC_UPDATES_AVAILABLE
✉
InitialUpdateWebhook
TRANSACTIONS / INITIAL_UPDATE
✉
HistoricalUpdateWebhook
TRANSACTIONS / HISTORICAL_UPDATE
✉
DefaultUpdateWebhook
TRANSACTIONS / DEFAULT_UPDATE
✉
TransactionsRemovedWebhook
TRANSACTIONS / TRANSACTIONS_REMOVED
✉
RecurringTransactionsUpdateWebhook
TRANSACTIONS / RECURRING_TRANSACTIONS_UPDATE
✉
AuthDefaultUpdateWebhook
AUTH / DEFAULT_UPDATE
✉
AutomaticallyVerifiedWebhook
AUTH / AUTOMATICALLY_VERIFIED
✉
VerificationExpiredWebhook
AUTH / VERIFICATION_EXPIRED
✉
HostedMMDVerificationWebhook
AUTH / SMS_MICRODEPOSITS_VERIFICATION
✉
ProductPermissionsRequiredAuthWebhook
AUTH / PRODUCT_PERMISSIONS_REQUIRED
✉
BankTransfersEventsUpdateWebhook
BANK_TRANSFERS / BANK_TRANSFERS_EVENTS_UPDATE
✉
IdentityDefaultUpdateWebhook
IDENTITY / DEFAULT_UPDATE
✉
ProductPermissionsRequiredIdentityWebhook
IDENTITY / PRODUCT_PERMISSIONS_REQUIRED
✉
HoldingsDefaultUpdateWebhook
HOLDINGS / DEFAULT_UPDATE
✉
InvestmentsDefaultUpdateWebhook
INVESTMENTS_TRANSACTIONS / DEFAULT_UPDATE
✉
InvestmentsHistoricalUpdateWebhook
INVESTMENTS_TRANSACTIONS / HISTORICAL_UPDATE
✉
LiabilitiesDefaultUpdateWebhook
LIABILITIES / DEFAULT_UPDATE
✉
AssetsProductReadyWebhook
ASSETS / PRODUCT_READY
✉
AssetsErrorWebhook
ASSETS / ERROR
✉
ItemProductReadyWebhook
INCOME / PRODUCT_READY
✉
IncomeVerificationStatusWebhook
INCOME / INCOME_VERIFICATION
✉
IncomeVerificationRiskSignalsStatusWebhook
INCOME / INCOME_VERIFICATION_RISK_SIGNALS
✉
BankIncomeCompleteWebhook
INCOME / BANK_INCOME_COMPLETE
✉
BankIncomeRefreshUpdateWebhook
INCOME / BANK_INCOME_REFRESH_UPDATE
✉
BankIncomeRefreshCompleteWebhook
INCOME / BANK_INCOME_REFRESH_COMPLETE
✉
IncomeVerificationRefreshReconnectNeededWebhook
INCOME / INCOME_VERIFICATION_REFRESH_RECONNECT_NEEDED
✉
TransferEventsUpdateWebhook
TRANSFER / TRANSFER_EVENTS_UPDATE
✉
RecurringNewTransferWebhook
TRANSFER / RECURRING_NEW_TRANSFER
✉
RecurringTransferSkippedWebhook
TRANSFER / RECURRING_TRANSFER_SKIPPED
✉
RecurringCancelledWebhook
TRANSFER / RECURRING_CANCELLED
✉
StatementsRefreshCompleteWebhook
STATEMENTS / STATEMENTS_REFRESH_COMPLETE
✉
LinkSessionFinishedWebhook
LINK / SESSION_FINISHED (Layer)
✉
ItemAddResultWebhook
LINK / ITEM_ADD_RESULT
✉
LinkEventsWebhook
LINK / EVENTS
✉
IdentityVerificationStatusUpdatedWebhook
IDENTITY_VERIFICATION / STATUS_UPDATED
✉
IdentityVerificationStepUpdatedWebhook
IDENTITY_VERIFICATION / STEP_UPDATED
✉
IdentityVerificationRetriedWebhook
IDENTITY_VERIFICATION / RETRIED
✉
BeaconUserStatusUpdatedWebhook
BEACON / USER_STATUS_UPDATED
✉
BeaconReportCreatedWebhook
BEACON / REPORT_CREATED
✉
BeaconReportUpdatedWebhook
BEACON / REPORT_UPDATED
✉
BeaconReportSyndicationCreatedWebhook
BEACON / REPORT_SYNDICATION_CREATED
✉
BeaconDuplicateDetectedWebhook
BEACON / DUPLICATE_DETECTED
✉
ScreeningStatusUpdatedWebhook
SCREENING / STATUS_UPDATED
✉
EntityScreeningStatusUpdatedWebhook
ENTITY_SCREENING / STATUS_UPDATED
Servers
https
production{webhookUrl}
Customer-hosted HTTPS endpoint that receives webhook POSTs from Plaid. Plaid sends webhooks from a published set of static IPs documented at https://plaid.com/docs/api/webhooks/#ip-addresses.