Skip to main content
POST
/
getfidata
Get FI Data
curl --request POST \
  --url https://api.example.com/getfidata

Overview

The Get FI Data API retrieves detailed transaction history and account information for a single financial account that has been linked through an approved consent. This endpoint returns data in JSON format, making it ideal for applications that need to process, analyze, or display transaction-level financial information for individual accounts.
This API fetches data for one specific account identified by its linkReferenceNumber. If you need data for all accounts under a consent, use the Get All FI Data endpoint instead. For XML format output, use the Get FI Data XML endpoint.

Use Cases

This API is particularly useful for:
  • Spend analysis and categorization: Applications that analyze user spending patterns, categorize transactions automatically, and provide insights into financial behavior.
  • Account aggregation dashboards: Personal Finance Management (PFM) platforms that display transaction history and account details for individual accounts in a unified interface.
  • Transaction reconciliation: Systems that match transactions against invoices, receipts, or expected payments for accounting or expense management purposes.
  • Financial insights and reporting: Services that generate reports on cash flow, income patterns, expense tracking, and budget adherence based on actual transaction data.
  • Periodic data updates: Implementations that fetch transaction data at scheduled intervals to keep local databases synchronized with source financial institutions.

Authentication

All requests to this endpoint must include the following authentication headers:
HeaderTypeRequiredDescription
client_idstringYesThe unique client identifier assigned to your organization during onboarding. This value is available in the FinPro admin portal.
client_secretstringYesThe confidential client secret key paired with your client_id. Store this securely and never expose it in client-side code.
organisationIdstringYesYour organization’s unique identifier in the FinPro system, used to scope all API requests to your tenant.
appIdentifierstringYesThe application identifier that distinguishes different applications within your organization, useful for multi-product setups.
Content-TypestringYesMust be set to application/json to indicate the request body format.

HTTP Request

POST {{Base_URL}}/getfidata

Query Parameters (Optional)

You can append optional query parameters to control pagination and response size:
ParameterTypeRequiredExampleDescription
limitbooleanNo?limit=trueWhen set to true, limits the number of transactions returned in a single response. The exact limit value is configured at the platform level. Useful for managing large transaction datasets.
offsetbooleanNo?offset=trueWhen set to true in combination with limit, specifies the starting point for returned results, enabling pagination through large transaction sets.
Example with query parameters: {{Base_URL}}/getfidata?limit=true&offset=true

Request Parameters

ParameterTypeRequiredValidationDescription
consentIDstringYesMust be a valid GUID (Globally Unique Identifier) provided by the Account Aggregator after consent approval.The unique identifier for the consent record under which this account is linked. The consent must be in ACTIVE status to retrieve data.
linkReferenceNumberstringYesMust be a valid UUID that exists in the system and is associated with the specified consent ID.The unique identifier for the specific financial account you want to retrieve data for. This value is obtained from webhook notifications or previous API responses when accounts are linked.

Request Body Example

{
    "linkReferenceNumber": "7f8227f1-697f-40d3-a4af-0508f5d0a1dd",
    "consentID": "3c92001e-57ea-4320-bbb8-66d524bfb435"
}

Response Format

Success Response

A successful response returns a JSON object containing comprehensive account information and transaction details for the requested account.

Response Parameters

ParameterTypeRequiredDescriptionSupported Values
statusstringNoIndicates whether the request was processed successfully.success, failure
verstringNoThe version number of the API specification being used in this response.e.g., “1.21.0”
dataobjectYesThe main data container holding all account and transaction information.Data object
data.linkReferenceNumberstringYesThe unique identifier for this linked account, matching the value provided in the request.UUID format
data.maskedAccountNumberstringYesThe account number with most digits masked for security and privacy purposes, typically showing only the last 4 digits.e.g., “XXXXXXXX3900”
data.balancestringYesThe current account balance as of the most recent data fetch, represented as a string to preserve decimal precision.Numeric string (e.g., “101666.33”)
data.fipNamestringYesThe name of the Financial Information Provider (FIP), which is typically the bank or financial institution holding the account.Institution name string
data.fipIdstringYesThe unique identifier for the Financial Information Provider in the Account Aggregator ecosystem.FIP identifier (e.g., “finsharebank”)
data.fiTypestringYesCategorizes the type of financial information being shared from this account, determining the structure of additional fields.DEPOSIT, TERM_DEPOSIT, RECURRING_DEPOSIT, MUTUAL_FUNDS, EQUITIES, INSURANCE_POLICIES, etc.
data.fiDataarrayYesAn array of transaction objects, each representing a single financial transaction on the account.Array of transaction objects
data.fiData[].transactionTimestampstringYesThe exact date and time when the transaction was processed by the financial institution.ISO 8601 timestamp format
data.fiData[].txnIdstringYesThe unique transaction identifier assigned by the financial institution, useful for transaction tracking and reconciliation.Transaction ID string
data.fiData[].typestringYesIndicates whether money was added to or removed from the account.CREDIT, DEBIT
data.fiData[].amountstringYesThe transaction amount in the account’s base currency, represented as a string to maintain precision.Numeric string (e.g., “5000.00”)
data.fiData[].currentBalancestringNoThe account balance immediately after this transaction was processed, useful for balance reconciliation.Numeric string
data.fiData[].modestringNoThe payment method or channel through which the transaction was executed.CASH, UPI, IMPS, NEFT, RTGS, CARD, ATM, CHEQUE, DEMAND_DRAFT, AUTO_DEBIT, INTEREST_CREDIT, NACH, ECS, REMITTANCE, OTHERS
data.fiData[].narrationstringNoA descriptive text provided by the financial institution explaining the transaction purpose or source/destination details.Free-form text string
data.fiData[].referencestringNoAdditional reference information such as cheque numbers, UPI transaction IDs, or other institution-specific identifiers.Reference string
data.fiData[].valueDatestringNoThe effective date when the transaction amount was actually credited or debited for interest calculation purposes, which may differ from the transaction timestamp.Date string (YYYY-MM-DD format)
timestampstringNoThe server timestamp when this response was generated, useful for tracking data freshness.ISO 8601 timestamp format

Response Example

{
    "ver": "1.21.0",
    "status": "success",
    "timestamp": "2025-11-14T10:30:00.000Z",
    "data": {
        "linkReferenceNumber": "7f8227f1-697f-40d3-a4af-0508f5d0a1dd",
        "maskedAccountNumber": "XXXXXXXX3900",
        "balance": "101666.33",
        "fipName": "FinShareBankServer",
        "fipId": "finsharebank",
        "fiType": "DEPOSIT",
        "fiData": [
            {
                "transactionTimestamp": "2025-11-13T14:25:30.000Z",
                "txnId": "TXN123456789",
                "type": "CREDIT",
                "amount": "5000.00",
                "currentBalance": "101666.33",
                "mode": "UPI",
                "narration": "UPI/SALARY CREDIT/REF123",
                "reference": "REF123",
                "valueDate": "2025-11-13"
            },
            {
                "transactionTimestamp": "2025-11-12T09:15:00.000Z",
                "txnId": "TXN123456788",
                "type": "DEBIT",
                "amount": "1500.00",
                "currentBalance": "96666.33",
                "mode": "CARD",
                "narration": "POS Purchase - Retail Store",
                "reference": "CARD5678",
                "valueDate": "2025-11-12"
            }
        ]
    }
}

Error Handling

Error Response Format

When an error occurs during request processing, the API returns a standardized error response containing diagnostic information to help identify and resolve the issue.
FieldTypeRequiredDescription
verstringOptionalThe API version number, included when the error occurs after version validation.
timestampstringOptionalThe exact time when the error was encountered, useful for log correlation and debugging.
errorCodestringOptionalA machine-readable error identifier that categorizes the type of failure encountered.
errorMsgstringOptionalA human-readable description of the error, providing context about what went wrong and potentially how to fix it.
statusstringOptionalSet to “failure” to indicate the request did not complete successfully.

Common Error Codes

Error CodeError MessageDescriptionResolution
InvalidRequest”consentID is required” or “linkReferenceNumber is required”One or both mandatory parameters are missing from the request body.Ensure both consentID and linkReferenceNumber are included in the request body.
InvalidConsentId”Consent ID does not exist”The provided consent ID is not found in the system or belongs to a different organization.Verify the consent ID is correct and was successfully created for your organization.
InvalidLinkReference”Link Reference Number does not exist” or “Link Reference Number not associated with this consent”The linkReferenceNumber is invalid or doesn’t belong to the specified consent.Check that the linkReferenceNumber was obtained from a webhook notification or API response for this specific consent.
ConsentNotActive”Consent is not in active state”The consent has been paused, revoked, or expired, preventing data access.Check the consent status and obtain a new consent approval if needed.
DataNotAvailable”Financial data not available”The FIP has not yet provided data for this account, or data fetch is still in progress.Wait for the DATA_READY webhook notification before attempting to retrieve data.
Unauthorized”Invalid credentials”The authentication headers are incorrect, missing, or the credentials have expired.Verify your client_id, client_secret, organisationId, and appIdentifier are correct and active.
RateLimitExceeded”Too many requests”The API rate limit has been exceeded for your organization.Implement exponential backoff and reduce request frequency. Check rate limit headers in the response.

Error Response Example

{
    "ver": "1.21.0",
    "timestamp": "2025-11-14T11:51:28.773Z",
    "errorCode": "InvalidLinkReference",
    "errorMsg": "Link Reference Number not associated with this consent.",
    "status": "failure"
}

Supported Account Types

This API supports data retrieval for the following account types:
  • Current Account: Business or high-transaction-volume checking accounts with no balance restrictions.
  • Savings Account: Personal deposit accounts that typically earn interest and have transaction limits.
  • Fixed Deposit (Term Deposit): Time-bound deposits with fixed interest rates and maturity dates.
  • Recurring Deposit: Regular installment-based deposits that build savings over time with predefined contributions.
Additional account types may be supported depending on the capabilities of connected Financial Information Providers and the consent template configuration.

Usage Notes and Best Practices

  • Before calling this API, ensure that you have received a DATA_READY webhook notification for the specific linkReferenceNumber you want to query.
  • The linkReferenceNumber is generated and provided by the Account Aggregator when a user successfully links an account during the consent approval flow.
  • Store linkReferenceNumber values from webhook notifications in your database, indexed by consent ID, to enable efficient data retrieval.

Data Freshness and Timing

  • The data returned reflects the information available at the time of the last successful data fetch from the Financial Information Provider (FIP).
  • For PERIODIC consents, data is refreshed according to the fetch frequency configured in your consent template (e.g., daily, weekly).
  • For ONETIME consents, data represents a snapshot at the time of consent approval and will not update automatically.
  • Do not assume real-time data; transaction information may be delayed by several hours or days depending on the FIP’s data provision schedule.

Pagination for Large Transaction Sets

  • When dealing with accounts that have extensive transaction histories, use the optional limit and offset query parameters to paginate results.
  • Implement pagination logic to fetch data in chunks, preventing memory issues and improving application responsiveness.
  • Store the pagination state (offset value) between requests to systematically retrieve complete transaction histories.

Transaction Data Processing

  • Transactions are typically ordered reverse chronologically (most recent first), but always verify the ordering by checking transactionTimestamp values.
  • The narration field contains unstructured text that varies significantly across different banks and transaction types; implement robust parsing logic to extract meaningful information.
  • Transaction categorization (merchant names, expense categories) should be performed in your application logic, as this information is not standardized across FIPs.

Balance Reconciliation

  • Use the currentBalance field in transaction records to verify the accuracy of your balance calculations when processing transaction sequences.
  • Discrepancies between calculated and reported balances may indicate missing transactions or data quality issues that should be logged for investigation.
  • The top-level balance field represents the most current balance available, which may be more recent than the latest transaction timestamp.

Performance Optimization

  • Cache account profile data (masked account number, FIP details) as this information rarely changes, reducing redundant API calls.
  • For applications displaying multiple accounts, make parallel API requests (respecting rate limits) to improve overall data loading performance.
  • Monitor the size of transaction response payloads and adjust pagination parameters to balance between number of API calls and payload sizes.

Error Handling and Retry Logic

  • Implement exponential backoff with jitter for retry logic to handle transient network errors or temporary service unavailability.
  • Distinguish between retryable errors (rate limits, temporary unavailability) and permanent errors (invalid credentials, non-existent references) to avoid unnecessary API calls.
  • Log all error responses with full context (consent ID, link reference, timestamp) to facilitate troubleshooting and support escalation.

Compliance and Data Security

  • Financial transaction data contains sensitive personal information; ensure compliance with data protection regulations (GDPR, DPDPA, etc.) in how you store and process this data.
  • Implement data retention policies aligned with regulatory requirements and delete transaction data when it is no longer needed or consent is revoked.
  • Use encrypted storage for cached transaction data and ensure secure transmission (TLS 1.2+) for all API communications.
  • Get All FI Data: Retrieves transaction data for all accounts linked to a consent in a single API call, useful for bulk data retrieval.
  • Get FI Data XML: Provides the same transaction data in XML format for systems that require XML parsing or have XML-based integration requirements.
  • Get All Latest Data: Fetches only incremental updates for PERIODIC consents, optimizing bandwidth and processing for regularly updated data.
  • Get FI Balance: Retrieves only the current balance for an account without transaction details, ideal for dashboard displays and quick balance checks.