All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 4s
3.5 KiB
3.5 KiB
Accounts & Balances
Account numbers and balances are returned by the Select Profile call (routePath: P47). The login init call (A41) returns an empty accountBalance array — balances are only available after P47.
Select Profile — sfunc=n, routePath: P47
Key: session key (from sfunc=i response)
Request:
{
"sfunc": "n",
"xxid": "<session xxid>",
"data": {
"profileType": "<profileType from A41 operatingProfiles>",
"profileId": "<profileId from A41 operatingProfiles>",
"nonce": "<computed nonce>",
"appId": "<appId>",
"sodium": "<random 20-bit int>",
"routePath": "P47",
"xxid": "<session xxid>"
}
}
Response:
{
"success": true,
"reasonCode": "101",
"reasonText": "Profile Selected!",
"landingPage": "0",
"accountBalance": [ ... ],
"accessRights": { ... },
"services": []
}
To switch between profiles (personal ↔ business), call P47 again with the other profile's profileId and profileType.
Profiles (from A41 response)
The A41 login init response includes operatingProfiles:
{
"operatingProfiles": [
{
"profileId": "<profile ID>",
"customerProfileId": "<customer profile ID>",
"annexId": "<annex ID>",
"customerId": "<customer ID>",
"name": "<display name>",
"cifType": "Individual",
"customerImage": "<image hash>",
"profileType": "0",
"color": "<hex color>"
}
]
}
profileType |
Meaning |
|---|---|
"0" |
Individual (personal) |
"1" |
Sole Proprietor (business) |
accountBalance Array
Each element represents one account:
{
"cif": "<CIF number>",
"accountNumber": "<full account number>",
"accountBriefName": "<short label, e.g. 'SAR MVR - Savings'>",
"template": "<display template ID>",
"currencyCode": "<ISO 4217 numeric>",
"currencyName": "<ISO 4217 alpha>",
"accountTypeName": "<account type label>",
"transfer": "Y",
"branchName": "<branch name>",
"availableBalance": "<decimal string>",
"currentBalance": "<decimal string>",
"blockedAmount": "<decimal string, may be negative>",
"settlementBalance": "<decimal string>",
"mvrBalance": "<MVR equivalent>",
"statusDesc": "Active"
}
| Field | Description |
|---|---|
accountNumber |
Full account number |
accountBriefName |
Human-readable account label |
currencyCode |
ISO 4217 numeric (e.g. "462" = MVR, "840" = USD) |
currencyName |
ISO 4217 alpha (e.g. "MVR", "USD") |
accountTypeName |
Account type (e.g. "Saving Account") |
availableBalance |
Spendable balance (decimal string) |
currentBalance |
Ledger balance (decimal string) |
blockedAmount |
Held/blocked funds — negative means funds are held |
settlementBalance |
Balance including pending settlements |
mvrBalance |
All balances converted to MVR for unified display |
transfer |
"Y" if usable as transfer source |
statusDesc |
Account status (e.g. "Active") |
cif |
Customer Information File number |
template |
UI template ID |
All balance fields are decimal strings, not numbers — parse with
Decimalfor precision.
accessRights
{
"numAccounts": "<number of accounts>",
"packageRights": "[1,2,3,4,6,7,8,9,10,11,12]",
"roleRights": "[]"
}
packageRights is a JSON array encoded as a string — parse it separately.
← Login Flow Next → Transaction History