All checks were successful
Auto Tag on Version Change / check-version (push) Successful in 4s
4.8 KiB
4.8 KiB
Account Transaction History
Fetch paginated transaction history for a CASA (savings/current) account.
Endpoint
GET https://www.bankofmaldives.com.mv/internetbanking/api/mobile/account/{accountId}/history/{page}
| Path parameter | Description |
|---|---|
accountId |
Internal account ID (id field from dashboard) |
page |
Page number, 1-based |
Prerequisites
- Valid
access_tokenfrom OAuth Token Exchange - Internal account
idfrom the Dashboard response (not the account number)
Request
Headers
| Header | Value |
|---|---|
Authorization |
Bearer <access_token> |
User-Agent |
bml-mobile-banking/348 ({manufacturer}; Android {version}; {model}) |
x-app-version |
2.1.44.348 |
curl --request GET \
--url 'https://www.bankofmaldives.com.mv/internetbanking/api/mobile/account/abc123def456/history/1' \
--header 'Authorization: Bearer <access_token>' \
--header 'User-Agent: bml-mobile-banking/348 ({manufacturer}; Android {version}; {model})' \
--header 'x-app-version: 2.1.44.348'
Pagination
The API uses 1-based page numbering. The response includes totalPages — increment the page number until you reach or exceed it.
| Page | URL |
|---|---|
| First | /api/mobile/account/{id}/history/1 |
| Second | /api/mobile/account/{id}/history/2 |
| N-th | /api/mobile/account/{id}/history/N |
Stop when the current page number exceeds totalPages, or when the history array is empty.
Response
{
"success": true,
"payload": {
"totalPages": 5,
"history": [
{
"id": "TXN001",
"bookingDate": "2026-05-16",
"description": "Transfer Debit",
"narrative1": "16-05-2026 15-10-25",
"narrative2": "Mohamed Ali",
"amount": -500.00,
"currency": "MVR",
"reference": "FT20260516123456"
},
{
"id": "TXN002",
"bookingDate": "2026-05-15",
"description": "Transfer Credit",
"narrative1": "15-05-2026 10-30-00",
"narrative2": "Ahmed Hassan",
"amount": 1000.00,
"currency": "MVR",
"reference": "FT20260515103000"
},
{
"id": "TXN003",
"bookingDate": "2026-05-14",
"description": "Purchase",
"narrative1": "14-05-2026 041500",
"narrative2": "",
"amount": -75.00,
"currency": "MVR",
"reference": ""
}
]
}
}
Response Fields
Top-level
| Field | Type | Description |
|---|---|---|
success |
bool |
true on success |
payload.totalPages |
number |
Total number of pages |
payload.history |
array |
List of transactions for this page |
Transaction Object
| Field | Type | Description |
|---|---|---|
id |
string |
Transaction ID |
bookingDate |
string |
Booking date (fallback date — prefer parsed narrative1 where available) |
description |
string |
Transaction type — see table below |
narrative1 |
string |
Encodes the precise timestamp; format depends on description |
narrative2 |
string |
Counterparty name (for transfers); may be blank |
amount |
number |
Amount — negative = debit, positive = credit |
currency |
string |
ISO 4217 currency code |
reference |
string |
Transfer reference number; blank for non-transfer entries |
Transaction Descriptions
description |
Meaning |
|---|---|
Transfer Debit |
Outgoing transfer |
Transfer Credit |
Incoming transfer |
Purchase |
Card purchase or point-of-sale transaction |
| Other | Various bank-generated transaction types |
Date Parsing from narrative1
The bookingDate field is date-only. For precise timestamps, parse narrative1:
Transfer Debit / Transfer Credit
Format: DD-MM-YYYY HH-mm-ss
"16-05-2026 15-10-25" → 2026-05-16 15:10:25
Parse with SimpleDateFormat("dd-MM-yyyy HH-mm-ss").
Purchase
Format: DD-MM-YYYY HHmmSS (time is first 4 digits of the numeric suffix)
"14-05-2026 041500" → date: 14-05-2026, time part: "0415" → 04:15
→ 2026-05-14 04:15:00
Parse: split on space → date part DD-MM-YYYY, time part take first 4 chars → HH:mm. Combine and parse with SimpleDateFormat("dd-MM-yyyy HH:mm:ss").
All other descriptions
Fall back to bookingDate as-is.
Amount Sign Convention
| Sign | Meaning |
|---|---|
Positive (+) |
Credit — money received |
Negative (-) |
Debit — money spent |
Error Responses
| HTTP Code | Meaning |
|---|---|
401 / 419 |
Access token expired — attempt token refresh |
← User Info Next → Card Statement