Consents / Insights Data Webhook
For general webhook mechanics (response requirements, security, IP whitelisting, troubleshooting), see Webhooks - Async Updates. This page covers the webhook events fired for the Account Information Service (AIS) — both the raw-data consent flow (ais/user) and the processed-insights flow (view_ais/user, i.e. VIEW).
Consent lifecycle events
A consent (ais/user or view_ais/user) fires several distinct events over its lifetime, not just one status-change event. All share the same base payload — user, consent (consent ID), flow (flow ID), and context (if you set one) — plus event-specific fields listed below.
ConsentStatusChanged
ConsentStatusChangedFired on every status transition.
Additional payload fields: currentStatus, previousStatus, consentStatusChanged (timestamp of the change, may be null), validUntil, isContinuation (true if this consent continues a previous one), deletionReason (only present if applicable).
Consent statuses
| Status | Meaning |
|---|---|
received | Received, not yet approved |
valid | Valid — data can be fetched |
rejected | Rejected |
expired | Expired |
revokedByPsu | Revoked by the user |
terminatedByTpp | Terminated by you |
suspendedByASPSP | Suspended by the bank |
partiallyAuthorised | Partially approved (multi-level) |
waitingForInitialFetch | Waiting for first data fetch |
initialFetchFailed | First fetch failed |
noAnswer | No status received within two weeks |
UserDataIsAvailable
UserDataIsAvailableFired once the initial data pull for a consent completes — this is your signal that data is actually ready, distinct from the consent simply being valid.
Additional payload fields: fetchedAccounts (array of account references successfully pulled), failedToFetchAccounts (array of account references that failed).
ConsentAboutToExpire
ConsentAboutToExpireFired once, ahead of a consent's validUntil (mirrors MandateAboutToExpire on the Mandate side).
Additional payload field: validUntil.
ConsentNotAccessed
ConsentNotAccessedFired if a valid consent's data hasn't been accessed by you within a configured period — a nudge that you have live access you aren't using.
Additional payload fields: validFrom, validUntil, consentTerminationDate.
DataRefreshComplete
DataRefreshCompleteA TPP-wide event (not tied to a specific user or consent) — payload only contains tpp.
What to do on receipt
Once ConsentStatusChanged reports valid (or you receive UserDataIsAvailable), fetch data via the AIS API (/tpp/v1/users/USERID/accounts, /cards, /loans, /savings, /securities) using a Bearer token obtained via a JWT with srv: "ais/tpp".
UserInsightReady (VIEW)
UserInsightReady (VIEW)Fired once a user's insights report finishes computing after a view_ais/user consent flow.
{
"event": "UserInsightReady",
"payload": { "user": "Useridentifier@test", "tpp": "test" },
"timestamp": "2024-04-08T05:01:12.981118+00:00"
}What to do on receipt
Call GET /tpp/v1/users/USERID/insights (or open the VIEW dashboard link) to retrieve the report. Response includes, where configured for your plan: income, expense, deposit, security, externalInvestmentOrSavings, loan, creditLimit, salary, children, financialEvents (nsfEvents, warningEvents, loanPaymentDelayEvents, closedLoanPaymentDelayEvents, unemploymentPaymentEvents, technicalCheckBounceEvents), businessReportsAnalysis, monthlyFees, creditScore.
⚠️ Don't restrict against a strict schema — additional fields may be present, and sections only appear if configured in your plan. For the full response reference, use Feezback's Swagger / the Aggregate Data API spec.
AIS vs VIEW — quick reference
ais/user (AIS) | view_ais/user (VIEW) | |
|---|---|---|
| Result | Raw data access (accounts, transactions) | Processed financial analysis (insights) |
| Webhook | Consent lifecycle events (above) | UserInsightReady |
| Data retrieval | AIS API endpoints (/accounts, /transactions, etc.) | /insights endpoint |
Access token srv | ais/tpp | ais/tpp |
Updated 7 days ago