/

to search

Introducing Setu Changelog Check it out ↗

The consent object is the core of the AA framework. When an FIU requires data about the user, the request is packaged in the form of a consent object.

Consent object contains the information about all the different types of data the FIU needs, the purpose of the data, and how the FIU plans to use the data and so on.

#FIP Selector Screen

→ Scroll down to see the detailed FIP Selector Screen section

As specified in the table below, some parameters have to be passed mandatorily when creating a consent.


Tagging helps you organize and track consent requests, reports, and analytics more effectively. With this feature, you can add relevant labels (tags) to different consent requests and data-fetch reports without creating separate product instances. Tags make it easier to segment, analyze, and track data for different use cases, such as monitoring traffic for specific partners or campaigns.


Tag functionality is currently available through APIs only. Support for Bridge UI will be added soon.


Property nameDescriptionMandatory?
consentDuration has 2 components—unit and valueThis defines the time period for which the consent is valid and can be used to fetch data. The start timestamp is assumed to be the timestamp at which the consent is created and the end timestamp is calculated based on the consentDuration provided. unit can be MONTH, YEAR, DAY.Yes, but can be skipped if consentDateRange is specified
consentDateRange has 2 components-startDate and endDateThese timestamps define the time period for which the consent is valid and can be used to fetch data. Provides the same functionality as consentDuration, hence use only one of these. If both consentDuration and consentDateRange are passed, then consentDuration takes precedence.Yes, but can be skipped if consentDuration is specified
consentModeEnum for the type of consent. Possible values are VIEW, STORE, QUERY, STREAMYes
fetchTypeEnum to specify either ONETIME or PERIODIC fetch of data.Yes
consentTypesSpecifies the type of data being requested for, from your user—
  • PROFILE—Personal details such as mobile number, date of birth, PAN etc.
  • SUMMARY—Information like mutual fund summary for total amount invested, current value, number of MFs and more.
  • TRANSACTIONS—List of records against some financial data—e.g., a bank statement.
  • Yes
    fiTypesSpecifies the type of financial information being requested for. Possible enums—DEPOSIT, MUTUAL_FUNDS, INSURANCE_POLICIES, TERM_DEPOSIT, RECURRING_DEPOSIT, SIP, GOVT_SECURITIES, EQUITIES, BONDS, DEBENTURES, ETF, and more. Click here to learn more about the data types.Yes
    vuaVirtual user address (VUA) that identifies your customer when they login to the Account Aggregator.
    It can be either mobile number or mobile number with handle ({customer_mobile_number}@onemoney)
  • If mobile@handle is used, consent will be created for the specified AA
  • If mobile is used, a best performing AA is selected for consent creation
  • Yes
    purposeThis is used to indicate the purpose of requesting for data. As per the AA spec, the following codes are supported—
  • 101—Wealth management service
  • 102—Customer spending patterns, budget or other reportings
  • 103—Aggregated statement
  • 104—Explicit consent to monitor the accounts
  • 105—Explicit one-time consent for accessing data from the accounts
  • Yes
    dataRangeThis is used to specify the from and to date-time range for querying financial information. It is mandatory only when the consentTypes array includes TRANSACTIONS.Mandatory
    dataLifeThis is the time period for which you are allowed to process the data. Choose between MONTH, YEAR, DAY, INF as the unit and define a numeric value alongside.
    For more details on the difference between Data life and Data Storage, please see Sahamati guidelines (see SD001 in the table)
    Yes
    frequency has 2 components—unit and valueunit can be HOURLY, DAILY, MONTHLY, YEARLY. value has to be greater than 0.
    Additionally the maximum frequency value is defined is 1 request per HOUR. So, no more than 24 requests are allowed per DAY
    Yes
    dataFilterAllows you to specify conditions for filtering the data being fetched. For example, fetch transactions where the TRANSACTIONAMOUNT is greater than or equal to INR 20,000. You can use the type, operator like >, <, <=, >= and value like 5000 keys to set the filters.No
    redirectUrlRedirect your users back to your application once the consent is reviewed. By default, the redirectURL is https://setu.co/.Yes
    contextKey-value pairs that customize the consent flow and account fetching process. See the "Context Parameters" section below for details on supported keys.No
    additionalParamsAllows you to specify additional parameters for the consent request. Currently, we have tags specified under it.No
    enableAdditionalPhoneNumberWhen set to true, allows users to provide an additional phone number during the consent journey.No

    #Context Parameters

    The context parameter accepts key-value pairs to customize the consent flow. Below are the supported context keys:

    KeyDescriptionAllowed Values
    accounttypeFilter by account typeCURRENT, SAVINGS
    fipIdFilter by specific FIP IDs (comma-separated)Any valid FIP ID
    excludeFipIdsExclude specific FIP IDs (comma-separated)Any valid FIP ID
    consentReviewAtSpecify when consent should be reviewedfirst, last
    purposeDescriptionAdd a custom description for the consent purposeAny string
    purposeCodeSpecify the purpose code101, 102, 103, 104, 105
    alternateNumberEnable/disable alternate numbertrue, false
    accountSelectionModeDefine how accounts should be selectedsingle, multi, multi-opt-out
    transactionTypeSpecify transaction type filterdebit, credit

    #Context property examples

    Filter by account type

    "context": [
    {
    "key": "accounttype",
    "value": "CURRENT"
    }
    ]

    Filter by FIP ids

    "context": [
    {
    "key": "fipId",
    "value": "setu-fip,icici-fip"
    }
    ]

    Exclude specific FIP ids

    "context": [
    {
    "key": "excludeFipIds",
    "value": "setu-fip,icici-fip"
    }
    ]

    Specify consent review location

    "context": [
    {
    "key": "consentReviewAt",
    "value": "first"
    }
    ]

    Custom purpose description

    "context": [
    {
    "key": "purposeDescription",
    "value": "For loan eligibility assessment"
    }
    ]

    Specify purpose code

    "context": [
    {
    "key": "purposeCode",
    "value": "101"
    }
    ]

    Configure alternate number

    "context": [
    {
    "key": "alternateNumber",
    "value": "true"
    }
    ]

    Specify account selection mode

    "context": [
    {
    "key": "accountSelectionMode",
    "value": "multi"
    }
    ]

    Filter by transaction type

    "context": [
    {
    "key": "transactionType",
    "value": "debit"
    }
    ]

    Property NameDescription
    idUnique consent reference Id generated by Setu. Use this to poll consent status or initiate data session requests.
    urlRedirect your users to Setu AA screens to initiate consent review flow using this url
    statusConsent status of the consent request id. This will be PENDING for a newly created consent.
    UsageThis field specifies lastUsed and count which corresponds to data fetches against the consent id. It is also available in Get Consent Status response.

    #Understanding Tags in AA Framework

    • Tags must first be created at the product instance level before they can be used in any requests.

    • Tags can be created and managed while setting up or updating a product instance. They are unique identifiers (max 100 characters) that can be linked to multiple product instances.

    • Tags are visible in consent and data-fetch reports, and serve as filters in analytics dashboards. Use them to track user journeys, monitor failures, analyze behavior, measure campaign performance, and generate custom insights.

    • Key limitations and rules:

    • Tags are case-sensitive (e.g., "partnerA" and "PartnerA" will be considered two different tags)
    • Duplicate tags are not allowed
    • Bulk tagging for historical data is not supported
    • Number of tags per FIU is configurable
    • Invalid characters will trigger errors
    • System issues may prevent tag application (with error notifications)

    • Best practice: Use clear, consistent, and easily understandable tag names for effective tracking.

    • To add tags to a consent request, include them under the additionalParams field:

    {
    "consentDetail": {
    ...
    },
    ...,
    "additionalParams": {
    "tags": ["Loan_Tracking", "Partner_X"]
    }
    }


    #FIP Selector Screen

    This feature is coming soon and will be available in future releases.

    #Overview

    The FIP Selector Screen is a feature that helps improve AA journey success rates by intelligently routing users to the best performing Account Aggregator (AA) - FIP pair.

    It enables FIUs to:

    • Select the best-performing AA for a given FIP (instead of just the highest overall-performing AA).
    • Provide explicit user consent for using PII (mobile number) to discover pre-existing handles on AAs.
    • Reduce drop-offs on the account linking page by routing users to an AA where they already have a handle.
    • Move away from latency-prone autodiscovery flows by adopting a faster, targeted manual discovery approach.

    All of this enables better consent conversion across the funnel

    #How it works

    1. User lands on the FIP Selector Screen before the AA journey
    2. FIU (or Setu module) shows available FIPs and takes explicit user consent to use PII data via a checkbox.
    3. Setu uses this consent to:
      • Discover pre-existing AA handles (using mobile number).
      • Route requests to the best-performing AA for that specific FIP.
    4. The improved routing logic kicks in, reducing drop-offs and boosting success rates.

    #Flow diagram

    FIP Selector Screen flow diagram showing the consent object flow process

    The FIP Selector Screen flow works as follows:

    1. User selects FIP → User chooses their preferred Financial Information Provider
    2. Consent checkbox for discovery → User provides explicit consent for PII usage
    3. Setu checks AA handles using mobile number → System discovers pre-existing handles
    4. Best performing AA for FIP → Intelligent routing based on performance data
    5. Consent creation via AA → Consent is created through the optimal AA
    6. Account linking + Data fetch → Final step of account connection and data retrieval

    #How FIUs can enable this

    #✅ Case 1: FIUs with an existing FIP Selector Screen

    1. Add the consent checkbox to your FIP Selector Screen.
    2. Share a screenshot of the updated screen with Setu.
    3. For Finvu, also complete the AA Profile Discovery API Access Request form.
    4. For OneMoney and Anumati, Setu will share your screenshot with the AA for approval.
    5. Once confirmed, this data will be used in the AA routing logic.

    #✅ Case 2: FIUs without an FIP Selector Screen

    1. Setu will provide an opt-in module for the FIP Selector Screen.
    2. No need to share screenshots - Setu will handle UI, routing, and compliance requirements end-to-end.
    3. Setu will also assist with form submissions for AA sign-offs

    #Tech implementation

    #Case 1: FIUs NOT passing Account Aggregator the context filter (Multi AA)

    Create Consent API Changes

    Request Payload:

    {
    "vua": "9999999999" // Only mobile number (no AA suffix)
    }

    Response Payload:

    {
    "vua": "9999999999", // Only mobile number
    "status": "INITIATED", // Initial status (PENDING status sent via notification once actual consent is created with AA)
    // ...other fields remain unchanged
    }

    Key Changes:

    • Initial status is INITIATED instead of PENDING
    • VUA contains only mobile number without AA suffix
    • Actual PENDING status communicated via notification after consent creation

    Notification Handler Updates

    Once the user completes the bank selection, we'll create consent on the most optimal Account Aggregator (AA) for the selected Financial Information Provider (FIP) and then send the PENDING status.

    Success Notification Payload:

    {
    "data": {
    "status": "PENDING", // New additional status
    "vua": "9999999999@selectedAA" // Updated with selected AA
    },
    "success": true,
    "type": "CONSENT_STATUS_UPDATE",
    "error": null,
    "consentId": "<<consentId>>",
    "notificationId": "<<notificationId>>",
    "timestamp": "2024-01-29T07:28:24.547Z"
    }

    Failure Notification Payload:

    {
    "success": false,
    "error": {
    "code": "ConsentObjectCreationFailure",
    "message": "Internal server error occurred while fetching consent details from upstream AA"
    },
    "data": null,
    "consentId": "<<consentId>>",
    "notificationId": "<<notificationId>>",
    "timestamp": "2024-01-29T07:28:24.547Z",
    "type": "CONSENT_STATUS_UPDATE"
    }

    Required Implementation:

    • Add CONSENT_STATUS_UPDATE notification handler
    • Update status management logic
    • Handle VUA format changes

    #Case 2: FIUs passing specific AA in the context filter

    No changes required from FIUs for Case 2

    This case works immediately with existing implementations as it's purely an optimization that doesn't affect consent status transitions.



    Was this page helpful?