Finpass API Collection
  1. Account Aggregator
  • Introduction
  • Bank Statement Analyser
    • Upload Statement
      POST
    • Statement Result
      GET
  • Account Aggregator
    • Initialize
      POST
    • Fetch JSON Report
      POST
    • Fetch PDF Report
      POST
    • Refresh Data
      POST
  • Multi Bureau
    • Multi-Bureau Fetch
      POST
  • Corporate
    • CIN Lookup
      POST
    • LLPIN
      POST
    • PAN Lookup
      POST
    • Company Autocomplete
      POST
  • EPFO
    • EPFO-CRIF Combined Report
      POST
  • ITR Analyzer
    • Initialize
      POST
    • Status
      GET
    • ITR Analyzer — Get Full Data
      GET
  • AA-BSA Analyzer
    • Initialize
      POST
    • Status
      GET
    • AA BSA — Statement Result
      GET
    • AA BSA — Analysis JSON
      GET
  1. Account Aggregator

Fetch JSON Report

POST
/api/v1/services/account-aggregator/fetch-json-report

Fetch Account Aggregator - JSON Report#

Endpoint Overview
POST api/v1/services/account-aggregator/fetch-json-report

Description#

The Fetch Account Aggregator JSON Report API retrieves comprehensive financial data collected through the Account Aggregator framework in JSON format. This endpoint provides detailed bank account information including profile details, account summaries, and transaction histories for customers who have consented to share their financial data.
This API is designed to support various financial workflows including loan underwriting and loan monitoring. It returns structured data that includes customer profiles, account balances, transaction details, and other banking information collected through India's Account Aggregator ecosystem, enabling lenders and financial institutions to make informed credit decisions based on real-time financial data.
Key Benefits
Real-time Financial Data: Access up-to-date bank account information and transaction history with customer consent
Comprehensive Insights: Retrieve profile details, account summaries, and detailed transaction data in a single API call
Flexible Workflow Support: Works seamlessly with both loan underwriting and loan monitoring use cases
Structured Data Format: Returns well-organized JSON data that's easy to parse and integrate into existing systems

Use Cases#

Lending & Credit
Financial Services
Risk Management
Loan Underwriting: Evaluate creditworthiness by analyzing real-time bank statements and transaction patterns before loan approval
Income Verification: Verify customer income through salary credits and regular deposit patterns for more accurate risk assessment
Cash Flow Analysis: Assess liquidity and financial stability by examining account balances and transaction frequencies

Technical Implementation#

1
Authentication
All API requests require authentication using API Key and API Secret headers. Authentication follows these steps:
1.
Obtain API Credentials: Register with Finpass to receive your x-api-key and x-api-secret.
2.
Include in Requests: Add both credentials as headers in every API request.
HeaderDescription
x-api-keyYour unique API key provided by Finpass upon registration.
x-api-secretYour API secret paired with the API key for authenticated access.
Production: https://api.finpass.ai
2
Request Parameters

Request Headers#

HeaderRequiredDescription
x-api-keyYesYour unique API key for authentication. Provided by Finpass during registration.
x-api-secretYesYour API secret paired with the API key. Provided by Finpass during registration.
Content-TypeYesMust be set to application/json

Request Body#

ParameterTypeRequiredDescription
client_idstringYesUnique identifier for the client in the Account Aggregator system. Format: aa_{random_string}
request_idstringConditionalUnique identifier for the consent request obtained from the Refresh Data endpoint (/api/v1/account-aggregator/refresh-data). Required for loan_monitoring flow. Optional for loan_underwriting flow.

Example Request#

{
    "client_id": "aa_6989cbcf_a136a40171db8abb6b691017",
    "request_id": "account_aggregator_v2_ojmzgkXAqwzTroKzFBGk_hrBxcvsp"
}
3
Process Response

Response Parameters#

ParameterTypeDescription
dataobjectContainer object holding the account aggregator response data
data.client_idstringEcho of the client_id from the request
data.account_aggregator_jsonarrayArray of account objects containing detailed financial information
data.account_aggregator_json[].account_idstringUnique UUID identifier for the account
data.account_aggregator_json[].statusstringStatus of the data fetch operation (e.g., "READY")
data.account_aggregator_json[].profile_detailsobjectCustomer profile information
data.account_aggregator_json[].profile_details.namestringFull name of the account holder
data.account_aggregator_json[].profile_details.dobstringDate of birth in YYYY-MM-DD format
data.account_aggregator_json[].profile_details.mobilestringMobile number of the account holder
data.account_aggregator_json[].profile_details.nomineestringNominee name registered with the account
data.account_aggregator_json[].profile_details.landlinestringLandline number if available
data.account_aggregator_json[].profile_details.addressstringComplete address including PIN code
data.account_aggregator_json[].profile_details.emailstringEmail address of the account holder
data.account_aggregator_json[].profile_details.panstringPAN (Permanent Account Number)
data.account_aggregator_json[].profile_details.ckyc_registeredstringCentral KYC registration status ("true"/"false")
data.account_aggregator_json[].profile_details.typestringAccount holder type (e.g., "SINGLE", "JOINT")
data.account_aggregator_json[].summary_detailsobjectAccount summary and balance information
data.account_aggregator_json[].summary_details.branchstringBranch code
data.account_aggregator_json[].summary_details.facilitystringCredit facility status (e.g., "NO_FACILITY_GRANTED")
data.account_aggregator_json[].summary_details.micr_codestringMICR code of the branch
data.account_aggregator_json[].summary_details.opening_datestring/nullAccount opening date
data.account_aggregator_json[].summary_details.current_od_limitstringCurrent overdraft limit amount
data.account_aggregator_json[].summary_details.drawing_limitstringDrawing limit for the account
data.account_aggregator_json[].summary_details.statusstringAccount status (e.g., "ACTIVE", "INACTIVE")
data.account_aggregator_json[].summary_details.account_typestringPrimary account type classification
data.account_aggregator_json[].summary_details.account_sub_typestringSub-type of account (e.g., "SAVINGS", "CURRENT")
data.account_aggregator_json[].summary_details.ifscstringIFSC code of the bank branch
data.account_aggregator_json[].summary_details.current_balancestringCurrent account balance
data.account_aggregator_json[].summary_details.currencystringCurrency code (e.g., "INR")
data.account_aggregator_json[].summary_details.balance_date_timestringTimestamp of balance update in ISO 8601 format
data.account_aggregator_json[].transaction_dataobjectContainer for transaction information
data.account_aggregator_json[].transaction_data.transaction_detailsarrayArray of individual transaction records
data.account_aggregator_json[].transaction_data.transaction_details[].transaction_idstringUnique transaction identifier
data.account_aggregator_json[].transaction_data.transaction_details[].amountnumberTransaction amount
data.account_aggregator_json[].transaction_data.transaction_details[].narrationstringTransaction description/narration
data.account_aggregator_json[].transaction_data.transaction_details[].typestringTransaction type ("DEBIT" or "CREDIT")
data.account_aggregator_json[].transaction_data.transaction_details[].modestringTransaction mode (e.g., "UPI", "NEFT", "IMPS")
data.account_aggregator_json[].transaction_data.transaction_details[].transaction_timestampstringTransaction timestamp in ISO 8601 format
data.account_aggregator_json[].transaction_data.transaction_details[].value_datestringValue date of the transaction
data.account_aggregator_json[].transaction_data.transaction_details[].referencestringTransaction reference number
data.account_aggregator_json[].transaction_data.transaction_details[].transactional_balancestringAccount balance after this transaction
data.account_aggregator_json[].transaction_data.start_datestringStart date of transaction data period (YYYY-MM-DD)
data.account_aggregator_json[].transaction_data.end_datestringEnd date of transaction data period (YYYY-MM-DD)
data.account_aggregator_json[].transaction_typestringType of account transactions (e.g., "deposit")
data.account_aggregator_json[].masked_account_numberstringMasked account number for security
status_codeintegerHTTP status code of the response
successbooleanIndicates if the request was successful
messagestringHuman-readable response message
message_codestringMachine-readable message code

Example Successful Response#

{
    "data": {
        "client_id": "aa_oOxRfypvwDqMjtpqyi",
        "account_aggregator_json": [
            {
                "account_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                "status": "READY",
                "profile_details": {
                    "name": "John Doe",
                    "dob": "1985-01-15",
                    "mobile": "9000000000",
                    "nominee": "Jane Doe",
                    "landline": "011-1234567",
                    "address": "123 Fake Street, Springfield, USA, PIN : 000000",
                    "email": "john.doe@example.com",
                    "pan": "ABCDE1234F",
                    "ckyc_registered": "true",
                    "type": "SINGLE"
                },
                "summary_details": {
                    "branch": "00001",
                    "facility": "NO_FACILITY_GRANTED",
                    "micr_code": "123456789",
                    "opening_date": null,
                    "current_od_limit": "0.00",
                    "drawing_limit": "50000.00",
                    "status": "ACTIVE",
                    "account_type": "",
                    "account_sub_type": "SAVINGS",
                    "ifsc": "FAKE0000001",
                    "current_balance": "98765.43",
                    "currency": "INR",
                    "balance_date_time": "2025-07-23T18:35:29+05:30"
                },
                "transaction_data": {
                    "transaction_details": [
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "DEBIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2024-08-01T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        },
                        {
                            "transaction_id": "T000002",
                            "amount": 2000,
                            "narration": "NEFT/CR/Fake Transfer 2",
                            "type": "CREDIT",
                            "mode": "NEFT",
                            "transaction_timestamp": "2024-08-02T11:15:00+05:30",
                            "value_date": "2024-08-02T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "99265.43"
                        }
                    ],
                    "start_date": "2024-07-23",
                    "end_date": "2025-07-23"
                },
                "transaction_type": "deposit",
                "masked_account_number": "XXXXXXXXXXXXX1234"
            }
        ]
    },
    "status_code": 200,
    "success": true,
    "message": "Success",
    "message_code": "success"
}

Possible Error Responses#

Authentication Error
Invalid Client ID
Missing Request ID
Data Not Ready
{
    "status_code": 401,
    "success": false,
    "message": "Unauthorized access. Invalid or missing API credentials.",
    "message_code": "unauthorized"
}
This error occurs when the x-api-key or x-api-secret headers are missing, invalid, or do not match. Verify your credentials and retry the request.

Integration Best Practices#

Security Recommendations
Secure Credential Storage: Store your x-api-key and x-api-secret securely using environment variables or a secrets manager (e.g., AWS Secrets Manager, HashiCorp Vault). Never hardcode credentials in source code or expose them in client-side applications.
HTTPS Only: Always use HTTPS endpoints to ensure data transmission is encrypted
Data Minimization: Only request and store the financial data that is necessary for your specific use case
Access Controls: Implement role-based access controls to limit who can access sensitive financial data within your organization
Credential Rotation: Periodically rotate your API key and secret. Coordinate with Finpass support to regenerate credentials and update them across your deployments.
Audit Logging: Maintain comprehensive logs of all API calls for compliance and security auditing purposes
User Experience Guidelines
Transparent Consent: Clearly communicate to users what financial data will be accessed and why before initiating the Account Aggregator flow
Progress Indicators: Display loading states when data is being fetched, as the process may take a few moments
Error Handling: Provide clear, user-friendly error messages when data fetch fails or authentication issues occur
Data Refresh Options: Allow users to refresh their data periodically for ongoing monitoring scenarios
Privacy Assurance: Inform users about data retention policies and how their financial information will be protected

Code Samples#

cURL
Python
Node.js
Related APIs
Account Aggregator Initiation API: Use this API to initiate the Account Aggregator consent flow and generate client_id and request_id values that will be used with this fetch API.
Transaction Analytics API: Analyze the fetched transaction data to generate insights such as income patterns, spending behavior, and financial health scores.
Bank Statement Parser API: Alternative method for extracting financial data from uploaded bank statement PDFs when Account Aggregator integration is not available.
Compliance and Legal Considerations
Account Aggregator Framework Compliance: This API operates within India's Account Aggregator framework regulated by the Reserve Bank of India (RBI). Ensure your implementation complies with all RBI guidelines for data handling and customer consent.
Customer Consent: Always obtain explicit customer consent before accessing their financial data through the Account Aggregator network. Consent must be informed, specific, and revocable.
Data Retention: Follow data minimization principles and retain financial data only for the duration necessary to fulfill the stated purpose. Implement secure data deletion processes.
Privacy Regulations: Comply with applicable data protection regulations including the Digital Personal Data Protection Act (DPDPA) when handling customer financial information.
Purpose Limitation: Use the fetched financial data only for the specific purpose disclosed to and consented by the customer (e.g., loan underwriting or monitoring).

Request

Header Params

Body Params application/jsonRequired

Examples

Responses

🟢200Success
application/json
Body

🟢202Accepted
🟠404Client Not Found
🟠422Consent Status Pending
🟠422Consent Status Rejected
🟠422Consent Status Revoked
🟠422Account Data Not Found
🟠422Account Data Fetch Expired
🟠422Account Data Fetch Error
🟠422No Financial Information Request Found
🔴500Server Error
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://api.finpass.ai/api/v1/services/account-aggregator/fetch-json-report' \
--header 'X-API-Key: LG8zVXK1MZv1jP6i4l6QZQ2nD9kLTvFWipV_anPvacE' \
--header 'X-API-Secret: M5RwMtvbYGqAGZpG8d223xkEq1298kjcGGpJ7s7_' \
--header 'Content-Type: application/json' \
--data-raw '{
    "client_id": "aa_oOx8989898RfypvwDqMjti"
}'
Response Response Example
200 - Success
{
    "data": {
        "client_id": "aa_69873a09_e75a2206a81212cd7f93f32533",
        "account_aggregator_json": [
            {
                "account_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                "status": "READY",
                "profile_details": {
                    "name": "John Doe",
                    "dob": "1985-01-15",
                    "mobile": "9000000000",
                    "nominee": "Jane Doe",
                    "landline": "011-1234567",
                    "address": "123 Fake Street, Springfield, USA, PIN : 000000",
                    "email": "john.doe@example.com",
                    "pan": "ABCDE1234F",
                    "ckyc_registered": "true",
                    "type": "SINGLE"
                },
                "summary_details": {
                    "branch": "00001",
                    "facility": "NO_FACILITY_GRANTED",
                    "micr_code": "123456789",
                    "opening_date": null,
                    "current_od_limit": "0.00",
                    "drawing_limit": "50000.00",
                    "status": "ACTIVE",
                    "account_type": "",
                    "account_sub_type": "SAVINGS",
                    "ifsc": "FAKE0000001",
                    "current_balance": "98765.43",
                    "currency": "INR",
                    "balance_date_time": "2025-07-23T18:35:29+05:30"
                },
                "transaction_data": {
                    "transaction_details": [
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "DEBIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2024-08-01T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        },
                        {
                            "transaction_id": "T000002",
                            "amount": 2000,
                            "narration": "NEFT/CR/Fake Transfer 2",
                            "type": "CREDIT",
                            "mode": "NEFT",
                            "transaction_timestamp": "2024-08-02T11:15:00+05:30",
                            "value_date": "2024-08-02T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "99265.43"
                        },
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "DEBIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2025-08-10T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        },
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "DEBIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2025-08-11T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        },
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "CREDIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2024-08-01T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        },
                        {
                            "transaction_id": "T000001",
                            "amount": 1500,
                            "narration": "UPI/DR/Fake Payment 1",
                            "type": "CREDIT",
                            "mode": "UPI",
                            "transaction_timestamp": "2024-08-01T10:00:00+05:30",
                            "value_date": "2024-08-01T00:00:00+05:30",
                            "reference": "",
                            "transactional_balance": "97265.43"
                        }
                    ],
                    "start_date": "2024-07-23",
                    "end_date": "2025-07-23"
                },
                "transaction_type": "deposit",
                "masked_account_number": "XXXXXXXXXXXXX1234"
            }
        ]
    },
    "status_code": 200,
    "success": true,
    "message": "Success",
    "message_code": "success"
}
Previous
Initialize
Next
Fetch PDF Report
Built with