Skip to main content

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: pdf

Output 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

PeriodMaximum Range
Standard90 days
Premium365 days
CorporateUnlimited
Warning

Statement URLs expire after 24 hours. Download or share immediately.


Errors

StatusCodeDescription
400INVALID_DATE_RANGEInvalid or excessive date range
400INVALID_FORMATFormat must be pdf or csv
400INVALID_PINPIN verification failed
401UNAUTHORIZEDInvalid API key
404SUBSCRIBER_NOT_FOUNDSubscriber not found
500GENERATION_FAILEDStatement generation error