Pave Bank
Statement (asynchronous)

Generate Statement Request

Viewer Access

Requests an asynchronous CSV statement for one or more accounts over a date range. The statement is generated in the background. Poll for its status, then download the file using the returned URL.

Statement Flow

This is the asynchronous statement API. The synchronous Generate CSV endpoint returns a download URL in a single call. This version generates the statement asynchronously instead, so it can handle large date ranges and many accounts.

  1. Request the statement with POST /v1/statement-async. It validates the accounts and date range, queues the statement, and returns a statement_export_id.
  2. Poll the status with GET /v1/statement-async/{exportRequestID}. Repeat until status is completed.
  3. Download the file using the download_url in the response. The URL is pre-signed and expires 15 minutes after it is generated.
  4. Cancel the statement with POST /v1/statement-async/{exportRequestID}/cancel while it is still processing.

API-initiated statements are always CSV.

Date range and timezone

Statement days run on GMT+4 (Georgian time). In UTC, a statement day YYYY-MM-DD covers 20:00:00Z on the previous calendar day through 19:59:59Z on the day itself.

Capturing a full statement day

start_date and end_date are applied as exact timestamps, so querying a UTC calendar day (00:00:00Z to 23:59:59Z) misses the first 4 hours of the statement day and includes the first 4 hours of the next one. To capture the full statement day 2026-01-02, query from 2026-01-01T20:00:00Z to 2026-01-02T19:59:59Z.

Example POST to request a statement

This example requests the statement days 2026-01-01 through 2026-01-31 (GMT+4), so the range starts at 20:00:00Z on the previous calendar day:

curl -X POST 'https://developer-api-staging.pavebank.dev/v1/statement-async' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>' \
  --data '{
  "account_ids": ["account_<YOUR_ACCOUNT_ID>"],
  "start_date": "2025-12-31T20:00:00Z",
  "end_date": "2026-01-31T19:59:59Z"
}'

This API responds with a statement_export_id:

{
  "statement_export_id": "statement_export_1jt9vwzof57z427158knbxsf2s"
}

Use this statement_export_id with the Get Statement Request endpoint to poll status and retrieve the download URL.

POST
/v1/statement-async

Authorization

AuthorizationRequiredBearer <token>

Enter your token in the format: Bearer {token}

In: header

Request Body

application/jsonRequired
account_idsRequiredarray<string>

The accounts to include in the export. Must belong to your legal entity.

start_datestring

Start of the statement period. Defaults to the current time if omitted.

Format: date-time
end_datestring

End of the statement period. Defaults to the current time if omitted. Must not be before start_date.

Format: date-time
export_nominal_subaccountsarray<string>

Optional. Nominal accounts to expand into their nominal subaccounts. Must be a subset of account_ids, and every ID must be a nominal account. Each listed nominal account is replaced in the statement by the combined transactions of its subaccounts.

Response Body

Success response

statement_export_idRequiredstring

The ID of the created statement export. Use it to poll status and retrieve the download URL.

curl -X POST "https://developer-api-staging.pavebank.dev/v1/statement-async" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "account_ids": [
      "string"
    ],
    "start_date": "2019-08-24T14:15:22Z",
    "end_date": "2019-08-24T14:15:22Z",
    "export_nominal_subaccounts": [
      "string"
    ]
  }'
{
  "statement_export_id": "string"
}