Files
thijooree/docs/mibapi/03-accounts.md
Shihaam Abdul Rahman 256f216da4
All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 4s
update docs
2026-05-23 23:46:00 +05:00

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 Decimal for 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