Skip to main content
POST
/
v2
/
statements
Statements
curl --request POST \
  --url https://api.sandbox.pawapay.io/v2/statements \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "wallet": {
    "country": "ZMB",
    "currency": "ZMW",
    "provider": "MTN_MOMO_ZMB"
  },
  "callbackUrl": "https://merchant.com/statementCallbacks",
  "startDate": "2025-05-10T10:00:00",
  "endDate": "2025-05-11T10:00:00"
}'
{
"statementId": "f4401bd2-1568-4140-bf2d-eb77d2b2b639",
"status": "ACCEPTED",
"created": "2025-10-19T11:17:01Z"
}
The statements endpoint allows you to generate a financial statement for a wallet. The statement can be downloaded as a CSV file. Learn more about statements from our Dashboard docs.
  • Each wallet is defined by its country and currency.
  • If you have provider specific wallet, also specify the provider for the wallet.
  • The date range must not exceed 31 days per statement.
  • The CSV statement can be downloaded from the downloadUrl.
  • The downloadUrl expires after 1 day.
  • Statement data for the may be up to 60 minutes behind the latest transactions.
  • Since the request can be rejected, you must check the status code in the response for each submitted request. The failureReason in the response will contain information about the reason of the rejection.
Each request can get one of the statuses on initiation:
StatusDescription
ACCEPTEDYesThe statement has been accepted by pawaPay for generation.
REJECTEDNoThe statement has been rejected. See failureReason for details.

How to know which wallets i have?

You can find all your wallets with their balances from the Wallet Balances endpoint. You can iterate over all of them and use the country and currency from the response as parameters for your request. If the response includes a not empty provider, it should be passed into the request as well to generate a provider specific wallets statement.

How to find out the final status of this statement?

As the pawaPay Merchant API is an asynchronous API, you can find out the final status of the ACCEPTED statement by either:

Authorizations

Authorization
string
header
required

Body

application/json
wallet
object
required
callbackUrl
string
required
Example:
startDate
string<date-time>
required
Example:
endDate
string<date-time>
required
Example:

Response

status
enum<string>
required
Available options:
ACCEPTED,
REJECTED
statementId
string<uuid>
Required string length: 36
Example:
created
string<date-time>
Example:
failureReason
object