Account Statement
POST
/wallet/account-statementOpen in the API playground →
Info
Generate downloadable account statements in PDF or CSV format for a specified date range.
Request
Authorizationstringheaderrequired
Bearer olive_live_xxx or Bearer eyJ... (JWT)
Body Parameters
subscriber_idstringbodyrequired
Subscriber UUID
pinstringbodyrequired
Subscriber's 4-digit PIN
from_datestringbodyrequired
Start date (YYYY-MM-DD)
to_datestringbodyrequired
End date (YYYY-MM-DD)
formatstringbodydefault:
pdfOutput format: pdf or csv
Response
successboolean
Whether generation succeeded
statement_urlstring
Download URL (valid for 24 hours)
transaction_countinteger
Number of transactions in statement
Examples
Request
cURL - PDF Statement
curl -X POST "https://demo.api.vultlocal.com/api/v1/wallet/account-statement" \
-H "Authorization: Bearer olive_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"subscriber_id": "sub_abc123",
"pin": "1234",
"from_date": "2025-01-01",
"to_date": "2025-01-31",
"format": "pdf"
}'
cURL - CSV Statement
curl -X POST "https://demo.api.vultlocal.com/api/v1/wallet/account-statement" \
-H "Authorization: Bearer olive_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"subscriber_id": "sub_abc123",
"pin": "1234",
"from_date": "2025-01-01",
"to_date": "2025-01-31",
"format": "csv"
}'
Response
200 Success
{
"success": true,
"message": "Statement generated successfully",
"statement_url": "https://storage.smartpay.example.com/statements/stmt_abc123.pdf",
"transaction_count": 45,
"period": {
"from": "2025-01-01",
"to": "2025-01-31"
},
"opening_balance": "50,000.00 SLE",
"closing_balance": "125,000.00 SLE",
"expires_at": "2025-02-01T10:30:00Z"
}
400 Invalid Date
{
"error": "Invalid date range",
"code": "INVALID_DATE_RANGE",
"details": "from_date must be before to_date"
}
Statement Contents
Professional statement including:
- Account holder details
- Opening/closing balance
- Transaction table with dates
- Running balance column
- Summary totals
Date Range Limits
| Period | Maximum Range |
|---|---|
| Standard | 90 days |
| Premium | 365 days |
| Corporate | Unlimited |
Warning
Statement URLs expire after 24 hours. Download or share immediately.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_DATE_RANGE | Invalid or excessive date range |
| 400 | INVALID_FORMAT | Format must be pdf or csv |
| 400 | INVALID_PIN | PIN verification failed |
| 401 | UNAUTHORIZED | Invalid API key |
| 404 | SUBSCRIBER_NOT_FOUND | Subscriber not found |
| 500 | GENERATION_FAILED | Statement generation error |