Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
248 changes: 248 additions & 0 deletions content/data/signal-iq/aa-flow.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
---
sidebar_title: AA Flow
page_title: Signal IQ - AA Flow
order: 1
visible_in_sidebar: true
---

## AA Flow

The AA Flow is for clients who use both Setu's <a href="/data/account-aggregator/overview" target="_blank">Account Aggregator</a> and <a href="/data/insights/overview" target="_blank">Setu Insights</a>. Once a customer's financial (FI) data is ready on the AA side, Signal IQ automatically takes over and drives everything through to insights and outputs.

<Callout type="highlight">
You do not call any Signal IQ API in this flow. The handoff from Account Aggregator to Signal IQ happens automatically. Your only integration points are the webhook endpoint where you receive updates, and the output retrieval configured during onboarding.
</Callout>

This page explains what happens inside the flow, the exact notifications you will receive, and the output schemas you integrate against.

<hr class="primary" />

### How the flow starts

1. Your customer goes through the Account Aggregator consent and data journey exactly as usual.
2. Once the AA data session starts, the AA team triggers Signal IQ internally for that session.
3. From that handoff point onward, Signal IQ owns the orchestration end to end - processing, progress notifications, insights generation and output coordination.

You do not need to call any Signal IQ API to start this flow. The trigger is handled on the AA side.

<hr class="primary" />

### What happens inside

Once the flow is triggered, Signal IQ moves through these lifecycle stages. You are kept informed at each important step via webhook (see [Notifications](#notifications-you-receive) below).

1. **Consent lifecycle** - consent status changes are forwarded to you.
2. **Data fetch** - FI data is retrieved (or its failure is reported).
3. **Data block creation** - the fetched data is prepared for analysis inside Setu Insights.
4. **Insights generation started** - the insights job is accepted.
5. **Insights generation success / failure** - the report is produced, or the failure is reported.
6. **Report availability** - the `reportId` is handed to you for output retrieval.

<Callout type="note">
Reliability is handled for you - transient errors are retried automatically, duplicate AA triggers for the same session are de-duplicated (so data is never processed twice), and internal failures are recovered without data loss. You only ever see the clean, final outcome for each stage.
</Callout>

<hr class="primary" />

### Notifications you receive

Every notification is delivered as an HTTP `POST` to your configured webhook URL, and is wrapped in the same envelope -

<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "<STAGE_STATUS>"
}
}`}
</CodeBlockWithCopy>

The `data.status` field tells you which stage was reached. The correlation field in this flow is `consentId`.

#### Full catalogue

| # | Stage | `data.status` |
|---|-------|---------------|
| 1 | Consent lifecycle | `CONSENT_ACTIVE` / `CONSENT_PENDING` / `CONSENT_REJECTED` / `CONSENT_REVOKED` / `CONSENT_PAUSED` / `CONSENT_EXPIRED` |
| 2 | AA data fetch failed | `FI_DATA_FETCH_FAILED` |
| 3 | Data block created | `FI_DATA_BLOCK_CREATION_SUCCESS` / `FI_DATA_BLOCK_CREATION_FAILED` |
| 4 | Insights job started | `INSIGHTS_CREATION_STARTED` |
| 5 | Insights done | `INSIGHTS_CREATION_SUCCESSFUL` |
| 6 | Insights failed | `INSIGHTS_CREATION_FAILED` |

Treat `INSIGHTS_CREATION_SUCCESSFUL` as terminal success, and `FI_DATA_FETCH_FAILED`, `FI_DATA_BLOCK_CREATION_FAILED` and `INSIGHTS_CREATION_FAILED` as terminal failures.

#### Examples of every schema

<Tabs
tabs={[
{
key: "consent",
label: "Consent lifecycle",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "CONSENT_ACTIVE",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd"
}
}`}
</CodeBlockWithCopy>
),
},
{
key: "fetch-failed",
label: "Data fetch failed",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "FI_DATA_FETCH_FAILED",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"errorCode": "FIP_TIMEOUT",
"errorMessage": "Bank did not respond"
}
}`}
</CodeBlockWithCopy>
),
},
{
key: "data-block",
label: "Data block created",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "FI_DATA_BLOCK_CREATION_SUCCESS",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"dataIds": ["a1b2c3d4-e5f6-7890-abcd-ef1234567890"]
}
}`}
</CodeBlockWithCopy>
),
},
{
key: "insights-started",
label: "Insights started",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "INSIGHTS_CREATION_STARTED",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"reportId": "7f3e4d5c-1111-2222-3333-444455556666",
"datablockId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}`}
</CodeBlockWithCopy>
),
},
{
key: "insights-success",
label: "Insights successful",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "INSIGHTS_CREATION_SUCCESSFUL",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"reportId": "7f3e4d5c-1111-2222-3333-444455556666",
"datablockId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}`}
</CodeBlockWithCopy>
),
},
{
key: "insights-failed",
label: "Insights failed",
content: (
<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_STATUS",
"data": {
"status": "INSIGHTS_CREATION_FAILED",
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"reportId": "7f3e4d5c-1111-2222-3333-444455556666",
"datablockId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}`}
</CodeBlockWithCopy>
),
},
]}
/>

#### Notifications are configurable

Step-by-step notifications can be tailored to you. A client who does not want intermediate updates can have them switched off entirely - the pipeline runs identically, just silently - or can choose to receive only specific stages. This is set up during onboarding.

#### Webhook delivery

When Signal IQ posts a notification to your webhook -

| Your webhook responds | Behaviour |
|-----------------------|-----------|
| `2xx` | Delivered - the flow continues |
| `4xx` | Treated as a permanent configuration/auth problem - not retried |
| `5xx` / timeout / network error | Retried automatically (up to 3 attempts) |

<hr class="primary" />

### Getting your outputs

When you receive `INSIGHTS_CREATION_SUCCESSFUL`, the payload carries a `reportId`. That id is your handoff token - Signal IQ uses it to fetch your configured outputs from Setu Insights and delivers them to you in the shape agreed during onboarding.

Outputs are configured per client. Common formats include Excel (shared as base64) and JSON. A typical delivery notification looks like this -

<CodeBlockWithCopy language="json">
{`{
"type": "AUTO_DI_DELIVERY",
"data": {
"consentId": "9dee34fe-8449-4f80-914e-b9725f3585cd",
"dataId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"reportId": "7f3e4d5c-1111-2222-3333-444455556666",
"status": "INSIGHTS_DELIVERY",
"outputs": {
"excel": {
"available": true,
"base64": "<base64 string you can convert to an Excel file>"
},
"indicators": {
"available": true,
"payload": {
"summary": {
"income": 145000,
"obligations": 52000,
"foir": 35.86
},
"riskSignals": [
"High cash withdrawal frequency"
]
}
}
}
}
}`}
</CodeBlockWithCopy>

<Callout type="tip">
The exact set of outputs (Excel, JSON, XML, indicators, and so on) is decided during onboarding. You only receive the outputs you have opted into.
</Callout>

If you miss the delivery webhook, the same outputs can be re-fetched later using the polling option, keyed by the `reportId`.

<NextPage
info={{
title: "PDF Flow",
description: "See how Signal IQ works when your journey starts from a bank-statement PDF.",
slug: "/data/signal-iq/pdf-flow",
}}
/>

<WasPageHelpful />
49 changes: 49 additions & 0 deletions content/data/signal-iq/bring-your-own-fi-data.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
sidebar_title: Bring Your Own FI Data
page_title: Signal IQ - Bring Your Own FI Data
order: 4
visible_in_sidebar: true
---

## Bring Your Own FI Data

This flow is for clients who already have financial (FI) data - for example, from their own account aggregator, or from any third-party source - and want to run it through Signal IQ without going through Setu's Account Aggregator or the PDF path.

<Callout type="highlight">
You send your FI data to Signal IQ via API. From that point on, Signal IQ owns orchestration, stage notifications, insights generation and output delivery - the same experience as every other flow.
</Callout>

You get the same Signal IQ experience - orchestration, stage notifications, configurable outputs and polling - even when the data does not originate from one of Signal IQ's built-in input channels.

<hr class="primary" />

### How it works

1. **You send your FI data** directly to Signal IQ via API.
2. Signal IQ runs the same orchestration model as every other flow -
- **validate** the incoming data,
- **transform** it to the standard format if required (see the note below),
- **ingest** it into Setu Insights,
- **generate insights**,
- **send stage notifications** to your webhook, and
- **deliver your configured outputs**, with polling available for re-fetch.

<hr class="primary" />

### A note on data format

Setu Insights expects FI data in the standard <a href="https://api.rebit.org.in/" target="_blank">ReBIT</a>-aligned shape (the same schema used across the Account Aggregator ecosystem).

If your payload is not already in that shape, a client-specific transformation step can be added to map your schema into the structure Setu Insights accepts - so you are never blocked from using Signal IQ with your existing data sources.

<Callout type="note">
ReBIT (Reserve Bank Information Technology) publishes the technical standards for the Account Aggregator framework, including the schema in which financial data is represented.
</Callout>

<hr class="primary" />

### Notifications and outputs

The lifecycle notifications and output delivery for this flow follow the same model as the other flows - you receive stage updates on your webhook, a `reportId` on success, and your configured outputs (JSON, transformed JSON, XML, Excel, and so on), with polling available to re-fetch. See the <a href="/data/signal-iq/pdf-flow#notifications-you-receive" target="_blank">PDF Flow notifications and outputs</a> for the shared schemas.

<WasPageHelpful />
Loading