Retrieves the transaction history for a specific merchant collection account over a given date range. The statement includes both credit and debit transactions with detailed metadata.
Endpoint
GET /account/{account_number}/statement?startDate={startDate}&endDate={endDate}
x-request-id* — Unique UUID per request for tracing
Request URL Parameters
startDate* (string) — Start of the date range (format: YYYY-MM-DD)
endDate* (string) — End of the date range (format: YYYY-MM-DD). Must be on or after startDate
Date Range Rules
Date Format — Use YYYY-MM-DD format (e.g., 2024-12-12)
Date Range — endDate must be on or after startDate
Inclusive Range — Both start and end dates are included in the results
Responses
200 SUCCESS
Response Format
Response Fields
accountNo(string) — The account number queried
statement(array) — List of transactions within the given period
Statement Transaction Fields
Each item in the statement array contains:
transactionId(string) — Internal transaction UUID
reference(string) — Transaction reference
creditOrDebit(string) — Indicates if the transaction is a CREDIT or DEBIT
transactionDate(string) — Date and time when the transaction occurred
valueDate(string) — Effective date of the transaction
narration(string) — Description or metadata attached to the transaction
currency(string) — Currency code (e.g., TZS)
amountCredit(number) — Amount credited to the account
amountDebit(number) — Amount debited from the account
availableBalance(number) — Available balance after the transaction was cleared
currentBalance(number) — Balance including uncleared (pending) transactions
senderAccountNo(string | null) — Sender's account number (may be null if unavailable)
senderAccountName(string | null) — Sender's account name (may be null if unavailable)
senderBankIdentifier(string | null) — Identifier for sender’s bank (may be null if unavailable)
400 BAD REQUEST
This error occurs when the request contains missing or invalid parameters. The API validates all required fields and data formats before processing your request.
Common causes:
The accountNo field is empty or missing
Missing required date fields (startDate or endDate)
Invalid date format (must be YYYY-MM-DD)
endDate is before startDate
Invalid JSON syntax in the request body
Missing Content-Type: application/json header
Error format:
Or for specific validation issues:
Resolution:
Verify all required fields (accountNo, startDate, endDate) are included
Ensure dates are in YYYY-MM-DD format
Confirm endDate is on or after startDate
Validate JSON syntax before sending the request
401 UNAUTHORIZED
This error indicates authentication failure. The API could not verify your identity using the provided credentials.
Common Causes:
Missing Authorization header in the request
Invalid bearer token format (should be Bearer YOUR_TOKEN)
Expired or revoked API token
Incorrect API token value
Error Format
Resolution
Ensure your request includes the correct authorization header:
Authorization: Bearer YOUR_API_TOKEN
404 NOT FOUND
This error indicates that the specified account number does not exist or is not accessible with your current credentials.
Why this happens:
Account number doesn't exist in your allocated pool
Typo in the account number
Account was never successfully allocated
Error format
HTTP 404 status with no response body.
Resolution:
Verify the account number is correct and properly formatted
Confirm the account was successfully allocated using the allocate endpoint
500 INTERNAL SERVER ERROR
This error indicates a temporary server-side issue that prevented the request from being processed. These are typically transient problems that resolve automatically.
Common causes:
Temporary banking system connectivity issues
Server maintenance or updates in progress
Third-party service temporary unavailability
Error format
Resolution:
Wait 1-2 minutes and retry the request
Contact support with your x-request-id if the issue persists beyond 10 minutes
Note: These errors are usually temporary and resolve within a few minutes.