Pave Bank
Statement (asynchronous)

Get Statement Request

Viewer Access

Retrieves a single statement by ID. Poll this endpoint until the status is completed, then use the download URL to fetch the generated CSV file.

Poll a statement

After requesting a statement with the Generate Statement Request endpoint, poll this endpoint using the returned statement_export_id until status is completed.

curl 'https://developer-api-staging.pavebank.dev/v1/statement-async/<YOUR_EXPORT_ID>' \
  --header 'Authorization: Bearer <YOUR_BEARER_TOKEN>'

While the statement is processing, the response includes a progress object and no download_url:

{
  "id": "statement_export_1jt9vwzof57z427158knbxsf2s",
  "legal_entity_id": "legal_entity_<YOUR_LEGAL_ENTITY_ID>",
  "requested_by": "user_<YOUR_USER_ID>",
  "export_type": "CSV",
  "status": "processing",
  "created_at": "2026-02-01T09:00:00Z",
  "updated_at": "2026-02-01T09:00:05Z",
  "progress": {
    "total": 1200,
    "processed": 340
  }
}

Once status is completed, the response includes the document_id, file_name, and a pre-signed download_url. The progress object stays present, with processed equal to total:

{
  "id": "statement_export_1jt9vwzof57z427158knbxsf2s",
  "legal_entity_id": "legal_entity_<YOUR_LEGAL_ENTITY_ID>",
  "requested_by": "user_<YOUR_USER_ID>",
  "export_type": "CSV",
  "status": "completed",
  "created_at": "2026-02-01T09:00:00Z",
  "updated_at": "2026-02-01T09:00:42Z",
  "document_id": "document_1jt9w1abc57z427158knbxsf2s",
  "file_name": "statement_2026-01-01_2026-01-31.csv",
  "download_url": "https://storage.googleapis.com/pavebank/...",
  "progress": {
    "total": 1200,
    "processed": 1200
  }
}

The download_url is pre-signed and expires 15 minutes after it is generated. Poll this endpoint again to obtain a fresh URL if it expires.

Status values

StatusDescription
processingThe statement is still being generated.
completedThe statement is ready. Use download_url to fetch the file.
cancelledThe statement was cancelled before completion.
GET
/v1/statement-async/{exportRequestID}

Authorization

AuthorizationRequiredBearer <token>

Enter your token in the format: Bearer {token}

In: header

Path Parameters

exportRequestIDRequiredstring

The ID of the statement export.

Response Body

Success response

idRequiredstring

Unique identifier of the statement export request.

legal_entity_idRequiredstring

The legal entity that owns the export.

requested_byRequiredstring

The user who requested the export.

export_typeRequiredstring

The export file format. Developer API exports are always CSV.

Value in: "CSV"
statusRequiredstring

Current status of the export.

Value in: "processing" | "completed" | "cancelled"
created_atRequiredstring

Timestamp when the export was requested.

Format: date-time
updated_atRequiredstring

Timestamp when the export was last updated.

Format: date-time
document_idstring

The document ID of the generated file. Present once the export completes.

download_urlstring

A short-lived, pre-signed URL to download the generated file. Present once the export completes and expires 15 minutes after it is generated.

file_namestring

The name of the generated file.

progressRequiredobject

Generation progress. processed reflects live counts while processing and equals total once the export completes.

curl -X GET "https://developer-api-staging.pavebank.dev/v1/statement-async/string" \
  -H "Authorization: Bearer <token>"
{
  "id": "string",
  "legal_entity_id": "string",
  "requested_by": "string",
  "export_type": "CSV",
  "status": "processing",
  "created_at": "2019-08-24T14:15:22Z",
  "updated_at": "2019-08-24T14:15:22Z",
  "document_id": "string",
  "download_url": "string",
  "file_name": "string",
  "progress": {
    "total": 0,
    "processed": 0
  }
}