Get FI Data
Retrieve comprehensive transaction details and account information for a specific linked account, delivered in JSON format for easy integration and processing.
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.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:| Header | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | The unique client identifier assigned to your organization during onboarding. This value is available in the FinPro admin portal. |
client_secret | string | Yes | The confidential client secret key paired with your client_id. Store this securely and never expose it in client-side code. |
organisationId | string | Yes | Your organization’s unique identifier in the FinPro system, used to scope all API requests to your tenant. |
appIdentifier | string | Yes | The application identifier that distinguishes different applications within your organization, useful for multi-product setups. |
Content-Type | string | Yes | Must be set to application/json to indicate the request body format. |
HTTP Request
Query Parameters (Optional)
You can append optional query parameters to control pagination and response size:| Parameter | Type | Required | Example | Description |
|---|---|---|---|---|
limit | boolean | No | ?limit=true | When 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. |
offset | boolean | No | ?offset=true | When set to true in combination with limit, specifies the starting point for returned results, enabling pagination through large transaction sets. |
{{Base_URL}}/getfidata?limit=true&offset=true
Request Parameters
| Parameter | Type | Required | Validation | Description |
|---|---|---|---|---|
consentID | string | Yes | Must 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. |
linkReferenceNumber | string | Yes | Must 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
Response Format
Success Response
A successful response returns a JSON object containing comprehensive account information and transaction details for the requested account.Response Parameters
| Parameter | Type | Required | Description | Supported Values |
|---|---|---|---|---|
status | string | No | Indicates whether the request was processed successfully. | success, failure |
ver | string | No | The version number of the API specification being used in this response. | e.g., “1.21.0” |
data | object | Yes | The main data container holding all account and transaction information. | Data object |
data.linkReferenceNumber | string | Yes | The unique identifier for this linked account, matching the value provided in the request. | UUID format |
data.maskedAccountNumber | string | Yes | The account number with most digits masked for security and privacy purposes, typically showing only the last 4 digits. | e.g., “XXXXXXXX3900” |
data.balance | string | Yes | The 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.fipName | string | Yes | The name of the Financial Information Provider (FIP), which is typically the bank or financial institution holding the account. | Institution name string |
data.fipId | string | Yes | The unique identifier for the Financial Information Provider in the Account Aggregator ecosystem. | FIP identifier (e.g., “finsharebank”) |
data.fiType | string | Yes | Categorizes 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.fiData | array | Yes | An array of transaction objects, each representing a single financial transaction on the account. | Array of transaction objects |
data.fiData[].transactionTimestamp | string | Yes | The exact date and time when the transaction was processed by the financial institution. | ISO 8601 timestamp format |
data.fiData[].txnId | string | Yes | The unique transaction identifier assigned by the financial institution, useful for transaction tracking and reconciliation. | Transaction ID string |
data.fiData[].type | string | Yes | Indicates whether money was added to or removed from the account. | CREDIT, DEBIT |
data.fiData[].amount | string | Yes | The transaction amount in the account’s base currency, represented as a string to maintain precision. | Numeric string (e.g., “5000.00”) |
data.fiData[].currentBalance | string | No | The account balance immediately after this transaction was processed, useful for balance reconciliation. | Numeric string |
data.fiData[].mode | string | No | The 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[].narration | string | No | A descriptive text provided by the financial institution explaining the transaction purpose or source/destination details. | Free-form text string |
data.fiData[].reference | string | No | Additional reference information such as cheque numbers, UPI transaction IDs, or other institution-specific identifiers. | Reference string |
data.fiData[].valueDate | string | No | The 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) |
timestamp | string | No | The server timestamp when this response was generated, useful for tracking data freshness. | ISO 8601 timestamp format |
Response Example
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.| Field | Type | Required | Description |
|---|---|---|---|
ver | string | Optional | The API version number, included when the error occurs after version validation. |
timestamp | string | Optional | The exact time when the error was encountered, useful for log correlation and debugging. |
errorCode | string | Optional | A machine-readable error identifier that categorizes the type of failure encountered. |
errorMsg | string | Optional | A human-readable description of the error, providing context about what went wrong and potentially how to fix it. |
status | string | Optional | Set to “failure” to indicate the request did not complete successfully. |
Common Error Codes
| Error Code | Error Message | Description | Resolution |
|---|---|---|---|
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
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.
Usage Notes and Best Practices
Consent and Account Linking Prerequisites
- 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
limitandoffsetquery 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
narrationfield 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
currentBalancefield 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
balancefield 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.
Related Endpoints
- 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.
Authorizations
Your unique client identifier provided by MoneyOne during FIU onboarding
Your confidential client secret provided by MoneyOne
Your organization's unique identifier in the FinPro system
Application-specific identifier for tracking API calls
Query Parameters
When set to true, limits the number of transactions returned in a single response. The exact limit value is configured at the platform level.
When set to true in combination with limit, specifies the starting point for returned results, enabling pagination through large transaction sets.
Body
The unique reference number for the linked account. Identifies the specific customer account from which to retrieve financial data. This value is obtained from the consent list APIs when the customer has linked their accounts.
The unique consent identifier that authorizes access to the financial data. This must be an active consent that includes the account specified by the linkReferenceNumber.
Response
Financial data retrieved successfully
The version of the FinPro API that processed this request.
Overall API call status. Will be 'success' for successful requests.
ISO 8601 timestamp indicating when the response was generated.
Contains the account information and transaction data.
