# MIB Account Lookup Routing Before initiating a transfer, the recipient input must be resolved to a verified account name and account number. Three different endpoints are used depending on the format of the input. ## Input Format Routing | Input format | Endpoint | Body field | |-------------------------------------------|---------------------------------------|-----------------| | Starts with `7`, exactly 13 digits | `AjaxAlias/getIPSAccount` | `benefAccount` | | Starts with `9`, exactly 17 digits | `ajaxBeneficiary/getAccountName` | `accountNo` | | Starts with `7` or `9`, exactly 7 digits | `AjaxAlias/getAlias` | `aliasName` | | Starts with `A` followed by 6 digits | `AjaxAlias/getAlias` | `aliasName` | | Email address (contains `@`) | `AjaxAlias/getAlias` | `aliasName` | All endpoints share the same WebView session auth (see `contacts.md` for cookie format) and use `Referer: https://faisamobilex-wv.mib.com.mv/transfer/quick`. --- ## Endpoint Details ### 1. IPS Account Lookup — Local / BML accounts (13 digits, starts with 7) **POST** `https://faisamobilex-wv.mib.com.mv/AjaxAlias/getIPSAccount` Body: `benefAccount=7700000000000` (13 digits) **Success response:** ```json { "success": true, "responseCode": "2", "reasonCode": "201", "reasonText": "Request Successful. Account Found", "accountName": "ACCOUNT HOLDER NAME", "bankBic": "MALBMVMV" } ``` Fields used: - `accountName` — account holder name - `bankBic` — bank SWIFT/BIC code The account number is already known from the input; it is not returned in the response. --- ### 2. MIB Internal Account Name Lookup — MIB accounts (17 digits, starts with 9) **POST** `https://faisamobilex-wv.mib.com.mv/ajaxBeneficiary/getAccountName` Body: `accountNo=90100000000000000` (17 digits) **Success response** (exact structure to be confirmed): ```json { "success": true, "responseCode": "1", "reasonText": "Account found", "accountName": "ACCOUNT HOLDER NAME" } ``` Fields used: - `accountName` — account holder name (check at root level or inside `data` object) The account number is already known from the input; bank is always MIB (`MADVMVMV`). --- ### 3. Favara Alias Lookup — Shortcodes, A-IDs, emails **POST** `https://faisamobilex-wv.mib.com.mv/AjaxAlias/getAlias` Body: `aliasName=` Accepted alias formats: - `7` or `9` followed by 6 digits → e.g. `7012345`, `9198026` - `A` followed by 6 digits → e.g. `A123456` - Email address → e.g. `user@example.com` **Success response:** ```json { "success": true, "responseCode": "2", "reasonCode": "203", "reasonText": " Favara ID found", "data": { "TxId": "BANK00001", "CdtrAcct": { "Acct": "90100000000000000", "FinInstnId": "MADVMVMV" }, "BfyNm": "Account Holder Name", "RegDtTm": "2023-01-01T00:00:00" } } ``` Fields used from `data`: - `BfyNm` — beneficiary name (trim whitespace) - `CdtrAcct.Acct` — resolved account number to use for the transfer - `CdtrAcct.FinInstnId` — bank institution ID --- ## Error Handling All three endpoints return `"success": false` on failure with a human-readable `reasonText`: ```json { "success": false, "responseCode": "0", "reasonText": "Account not found" } ``` - Always show `reasonText` directly to the user as the error message. - For non-200 HTTP responses, also attempt to parse `reasonText` from the body before falling back to a generic error. - If the input does not match any known format, reject it client-side before making any request.