Documentation Index
Fetch the complete documentation index at: https://developer.moneyone.in/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide describes the end-to-end integration flow for initiating user consent, handling user redirection, tracking transaction status, and fetching analytics data using the Intelligent Data Fetch system with AA + PDF fallback.
This integration uses a unified transactionId for all operations, simplifying the flow compared to the legacy consent-based approach.
What’s Changed
| Section | Change | Details |
|---|
| Request Consent API | No Change | All existing parameters supported |
| Request Consent Response | Updated | Added transaction_id in response |
| Webhook Callback | Updated | New payload format (see below) |
Data Fetch API (/getallfidata) | Updated | Request body changed: consentID → transactionId |
Analytics API (/analytics/*) | Updated | Request body changed: consentID + journeyID → transactionId |
Integration Flow
Initiate Consent
Call POST /v3/requestconsent to start the consent journey and receive a transaction_id
Redirect User
Redirect user to webRedirectionUrl to complete the consent journey
Track Status
Monitor status via webhook (recommended) or polling API
Fetch Data
Once eventStatus is SUCCESS, fetch analytics using /analytics/json, /analytics/xml, or /analytics/excel
Step 1: Initiate Consent
Endpoint
| Header | Description |
|---|
Content-Type | application/json |
client_id | Your client ID |
client_secret | Your client secret |
organisationId | Your organisation ID |
appIdentifier | Your app identifier |
Request Body
{
"vua": "<mobile_number>@onemoney",
"accountID": "<account_id>",
"productIDList": ["<product_id_1>", "<product_id_2>"],
"partyIdentifierValue": "<mobile_number>",
"partyIdentifierType": "MOBILE",
"redirectUrl": "<your_redirect_url>",
"fipID": ["<fip_id_1>", "<fip_id_2>"],
"pan": "<pan_number>"
}
Request Parameters
Virtual User Address (e.g., 9876543210@onemoney)
Unique account identifier
Array of product IDs for multi-consent. Use either this or productID
User identifier value (mobile, PAN, Aadhaar, etc.)
Type: MOBILE, PAN, AADHAR, EMAIL, DOB, GSTIN
Callback URL after consent journey
Array of FIP IDs for smart routing
PAN number (format: ABCDE1234F)
Configuration object for custom data range
Config Object (Optional)
{
"config": {
"fiDataRange": {
"from": "2023-01-01T00:00:00.000Z",
"to": "2024-01-01T00:00:00.000Z"
}
}
}
Sample Request
curl --location '<base_url>/v3/requestconsent' \
--header 'Content-Type: application/json' \
--header 'organisationId: <your_organisation_id>' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'appIdentifier: <your_app_identifier>' \
--data-raw '{
"vua": "9876543210@onemoney",
"accountID": "ACC001",
"productIDList": ["PROD001"],
"partyIdentifierValue": "9876543210",
"partyIdentifierType": "MOBILE",
"redirectUrl": "https://yourapp.com/callback"
}'
Response
{
"ver": "1.21.0",
"status": "success",
"data": {
"webRedirectionUrl": "<web_redirection_url>",
"transaction_id": "<transaction_id>"
},
"message": "Success"
}
Store the transaction_id for future reference. The webRedirectionUrl contains a time-bound access_token - do not modify it.
Step 2: User Redirection
Redirect the user to the webRedirectionUrl received in Step 1.
Post-Journey Redirect
After completing the consent journey, users are automatically redirected to your redirectUrl with the following parameters:
| Parameter | Description |
|---|
txnid | Transaction identifier |
status | Journey status (true = success, false = failure) |
Example:
https://yourapp.com/callback?txnid=abc123&status=true
Step 3: Status Tracking
You can track the transaction status using one of the following methods:
Webhook (Recommended)
Polling API
Configure a webhook endpoint to receive status updates when the transaction reaches a terminal state.Webhook Payload - Successful AA Flow
{
"timestamp": "2026-03-31T08:02:45.111480334Z",
"transactionID": "ad277c38-ca13-49b0-befd-38343e221e6b",
"eventType": "JOURNEY_COMPLETE",
"eventStatus": "SUCCESS",
"accountID": "ACC-78291",
"eventData": [
{
"type": "AA",
"status": "SUCCESS",
"consents": [
{
"consentID": "6934dcbb-ee3f-4ea0-85dc-b564c9e5e1d2",
"consentHandle": "7af9f26a-097c-4974-9e63-164a2b4c598e",
"consentStatus": "CONSENT_APPROVED",
"productID": "HOME2001",
"fetchType": "PERIODIC",
"fiFetch": "MANUAL",
"dataFetchStatus": "SUCCESS",
"accounts": [
{
"linkRefNumber": "9bd5e87a-7916-49ff-8ee1-969375f4f5e3",
"fiStatus": "DELIVERED",
"fipID": "finsharebank",
"maskedAccountNumber": "XXXXXXXX1100"
}
]
},
{
"consentID": "02914fb5-0e4c-43dc-ae1b-d31fe3829c7b",
"consentHandle": "b822049e-97f3-44d6-91fe-fa1bff1001db",
"consentStatus": "CONSENT_APPROVED",
"productID": "PL06S",
"fetchType": "ONETIME",
"fiFetch": "AUTOMATIC",
"dataFetchStatus": "SUCCESS",
"accounts": [
{
"linkRefNumber": "9bd5e87a-7916-49ff-8ee1-969375f4f5e3",
"fiStatus": "DELIVERED",
"fipID": "finsharebank",
"maskedAccountNumber": "XXXXXXXX1100"
}
]
}
]
},
{
"type": "PDF",
"status": "SKIPPED",
"accounts": []
}
]
}
Webhook Payload - AA Failed with PDF Fallback
{
"timestamp": "2026-03-31T06:59:46.465644026Z",
"transactionID": "c664bcaa-c0bf-4101-b9ac-31e6d78cdb48",
"eventType": "JOURNEY_COMPLETE",
"eventStatus": "SUCCESS",
"accountID": "ACC-90342",
"eventData": [
{
"type": "AA",
"status": "FAILED",
"consents": [
{
"consentID": null,
"consentHandle": "974e2b5d-196e-4965-bea2-eb5bcce88e01",
"consentStatus": "CONSENT_REJECTED",
"productID": null,
"fetchType": null,
"fiFetch": null,
"dataFetchStatus": "NOT_ATTEMPTED",
"accounts": []
},
{
"consentID": null,
"consentHandle": "44b0b90d-7593-462c-ae49-5bdb4b7ec6f8",
"consentStatus": "CONSENT_REJECTED",
"productID": null,
"fetchType": null,
"fiFetch": null,
"dataFetchStatus": "NOT_ATTEMPTED",
"accounts": []
}
]
},
{
"type": "PDF",
"status": "SUCCESS",
"accounts": [
{
"maskedAccountNumber": "10021535948",
"bankName": "idfc",
"accountType": "saving",
"startDate": "02-09-2025",
"endDate": "28-02-2026"
}
]
}
]
}
Webhook Payload - Journey Failed (Both Skipped)
{
"timestamp": "2026-04-20T09:23:28.838168037Z",
"transactionID": "d4e9259c-0ddb-437e-9955-6738f8a4caf1",
"eventType": "JOURNEY_COMPLETE",
"eventStatus": "FAILED",
"accountID": "D2C20260420070500007248",
"eventData": [
{
"type": "AA",
"status": "SKIPPED",
"consents": []
},
{
"type": "PDF",
"status": "SKIPPED",
"accounts": []
}
]
}
Webhook Payload Fields
| Field | Description |
|---|
timestamp | ISO 8601 timestamp of the event |
transactionID | Transaction identifier |
eventType | Type of event (JOURNEY_COMPLETE) |
eventStatus | Overall status (SUCCESS, FAILED) |
accountID | Account identifier |
eventData | Array of step-level data |
AA Flow Fields
| Field | Description |
|---|
consents[].consentID | Consent identifier (null if not created) |
consents[].consentHandle | Consent handle |
consents[].consentStatus | CONSENT_APPROVED, CONSENT_REJECTED |
consents[].productID | Product ID (null if consent rejected) |
consents[].fetchType | Fetch type (PERIODIC, ONETIME, null) |
consents[].fiFetch | FI fetch mode (MANUAL, AUTOMATIC, null) |
consents[].dataFetchStatus | SUCCESS, FAILED, NO_DATA, NOT_ATTEMPTED |
consents[].accounts[] | Linked account details |
consents[].accounts[].linkRefNumber | Link reference number |
consents[].accounts[].fiStatus | FI status (DELIVERED) |
consents[].accounts[].fipID | FIP identifier |
consents[].accounts[].maskedAccountNumber | Masked account number |
PDF Flow Fields
| Field | Description |
|---|
accounts[].maskedAccountNumber | Account number |
accounts[].bankName | Bank name |
accounts[].accountType | Account type |
accounts[].startDate | Statement start date |
accounts[].endDate | Statement end date |
Use this method only if webhook integration is not configured.Endpoint
Request
{
"transactionId": "<transaction_id>"
}
Sample Request
curl --location '<base_url>/transaction/status' \
--header 'Content-Type: application/json' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'organisationId: <your_organisation_id>' \
--header 'appIdentifier: <your_app_identifier>' \
--data '{
"transactionId": "<transaction_id>"
}'
Response
{
"status": "SUCCESSFUL",
"transaction_id": "<transaction_id>",
"data": [
{
"type": "health_check",
"status": "SUCCESSFUL",
"data": {
"healthy_fips": ["<fip_id_1>"],
"unhealthy_fips": ["<fip_id_2>"],
"fip_decisions": [
{
"fip": "<fip_id_1>",
"decision": "FIP_HEALTHY"
},
{
"fip": "<fip_id_2>",
"decision": "FIP_UNHEALTHY"
}
]
}
},
{
"type": "aa",
"status": "FAILED",
"data": {
"fips": [
{
"fip": "<fip_id_1>",
"status": "FAILED"
}
],
"consents": [
{
"consentHandle": "<consent_handle>",
"consentId": "<consent_id>",
"consentStatus": "CONSENT_APPROVED",
"productId": "<product_id>",
"dataFetchStatus": "FAILED",
"accounts": []
}
]
}
},
{
"type": "pdf",
"status": "SUCCESSFUL",
"data": {
"expected_fips": ["<fip_id_2>", "<fip_id_1>"],
"total_expected": 2,
"uploaded": 1,
"processed": 1,
"fetched": 1
}
},
{
"type": "analytics",
"status": "SUCCESSFUL"
},
{
"type": "smart_routing_decision",
"status": "SUCCESSFUL",
"data": {
"route": "PDF"
}
}
],
"message": null
}
Step Types
| Type | Description |
|---|
health_check | FIP health check results |
aa | Account Aggregator flow status |
pdf | PDF upload/parsing flow status |
analytics | Analytics processing status |
smart_routing_decision | Final routing decision (AA or PDF) |
Step Statuses
| Status | Description |
|---|
SUCCESSFUL | Step completed successfully |
UNSUCCESSFUL | Step failed |
FAILED | Step failed (alternative) |
SKIPPED | Step was skipped |
IN_PROGRESS | Step is executing |
PENDING | Step has not started |
PARTIAL | Step partially completed |
Overall Transaction Statuses
| Status | Description |
|---|
SUCCESSFUL | Transaction completed successfully |
UNSUCCESSFUL | Transaction failed (includes cancelled/expired) |
IN_PROGRESS | Transaction executing or awaiting input |
SKIPPED | Transaction was skipped |
PENDING | Transaction has not started |
Step 4: Fetch Data
Once the data fetch is completed (eventStatus = SUCCESS), fetch raw FI data or analytics.
Available Endpoints
| Type | Endpoint | Description |
|---|
| Raw FI Data | POST /getallfidata | Raw FI data (AA or PDF) |
| Analytics JSON | POST /analytics/json | Analytics in JSON format |
| Analytics XML | POST /analytics/xml | Analytics in XML format |
| Analytics Excel | POST /analytics/excel | Analytics as Excel file |
Request Body
All endpoints use the same request body:
{
"transactionId": "<transaction_id>"
}
Raw FI Data
Analytics JSON
Analytics XML
Analytics Excel
Endpoint
Sample Request
curl --location '<base_url>/getallfidata' \
--header 'Content-Type: application/json' \
--header 'organisationId: <your_organisation_id>' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'appIdentifier: <your_app_identifier>' \
--data '{
"transactionId": "<transaction_id>"
}'
Sample Response
{
"ver": "1.21.0",
"status": "success",
"data": [
{
"linkReferenceNumber": "243212010002508",
"maskedAccountNumber": "243212010002508",
"fiType": "DEPOSIT",
"bank": "ubi",
"isTampered": false,
"dataSource": "PDF",
"Profile": {
"Holders": {
"Holder": [
{
"name": "JOHN DOE",
"mobile": "9876543210",
"email": "john@example.com"
}
]
}
},
"Summary": {
"currentBalance": "6981.1",
"currency": "INR",
"type": "saving",
"ifscCode": "UBIN0824321"
},
"Transactions": {
"startDate": "07-12-2024",
"endDate": "25-01-2025",
"Transaction": [
{
"type": "credit",
"amount": "5500.0",
"currentBalance": "5501.0",
"transactionTimestamp": "10-12-2024",
"narration": "UPI/TRANSFER"
}
]
},
"type": "PDF"
}
]
}
Response Fields
| Field | Description |
|---|
data[].type | Data source (AA or PDF) |
data[].fiType | Financial information type (e.g., DEPOSIT) |
data[].isTampered | Data tampering flag |
data[].Profile | Account holder details |
data[].Summary | Account summary |
data[].Transactions | Transaction list |
Endpoint
Sample Request
curl --location '<base_url>/analytics/json' \
--header 'Content-Type: application/json' \
--header 'organisationId: <your_organisation_id>' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'x-request-id: <unique_request_id>' \
--header 'appIdentifier: <your_app_identifier>' \
--data '{
"transactionId": "<transaction_id>"
}'
Endpoint
Sample Request
curl --location '<base_url>/analytics/xml' \
--header 'Content-Type: application/json' \
--header 'organisationId: <your_organisation_id>' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'x-request-id: <unique_request_id>' \
--header 'appIdentifier: <your_app_identifier>' \
--data '{
"transactionId": "<transaction_id>"
}'
Endpoint
Sample Request
curl --location '<base_url>/analytics/excel' \
--header 'Content-Type: application/json' \
--header 'organisationId: <your_organisation_id>' \
--header 'client_id: <your_client_id>' \
--header 'client_secret: <your_client_secret>' \
--header 'x-request-id: <unique_request_id>' \
--header 'appIdentifier: <your_app_identifier>' \
--data '{
"transactionId": "<transaction_id>"
}'
Analytics output format is configurable. Contact support@moneyone.in to configure your preferred format.
UI Events (postMessage API)
When the orchestration UI is embedded in an iframe, it communicates with the parent window using the postMessage API.
Event Structure
{
"type": "REDIRECT",
"eventCode": "JOURNEY-SUCCESS",
"message": "Workflow completed successfully for transaction <transaction_id>",
"statusData": { ... }
}
Event Codes
| Event Code | Trigger Condition | Description |
|---|
JOURNEY-SUCCESS | status === 'SUCCESSFUL' | Workflow completed successfully |
JOURNEY-FAILURE | status === 'UNSUCCESSFUL' or 'EXPIRED' or 'CANCELLED' | Workflow failed |
JOURNEY-SKIPPED | status === 'SKIPPED' | Workflow was skipped |
JOURNEY-NETBANKING-REDIRECT | Netbanking redirect required | User needs netbanking redirect |
Listening for Events
window.addEventListener('message', (event) => {
const { type, eventCode, message, statusData } = event.data;
if (eventCode === 'JOURNEY-SUCCESS') {
console.log('Workflow success:', statusData);
} else if (eventCode === 'JOURNEY-FAILURE') {
console.log('Workflow failed:', message);
} else if (eventCode === 'JOURNEY-SKIPPED') {
console.log('Workflow skipped:', message);
}
});
Quick Reference
Endpoints
| Action | Method | Endpoint |
|---|
| Initiate Consent | POST | /v3/requestconsent |
| Check Status | POST | /transaction/status |
| Fetch Raw FI Data | POST | /getallfidata |
| Fetch Analytics (JSON) | POST | /analytics/json |
| Fetch Analytics (XML) | POST | /analytics/xml |
| Fetch Analytics (Excel) | POST | /analytics/excel |
| Header | Required |
|---|
Content-Type | Yes |
client_id | Yes |
client_secret | Yes |
organisationId | Yes |
appIdentifier | Yes |