Account statements

Generate a periodic (monthly) statement of an account's activity for a billing period.

A statement is a periodic summary of an account's activity for one billing period — typically a month. Where the ledger is a live, entry-by-entry feed, a statement is a fixed document for a closed period: the kind of record you hand to a customer or keep for compliance.

You request a statement for a specific account and a specific period, and PCE generates it.


Request a statement

Make a POST request to /v1/customer/id/{id}/account/id/{accountId}/statement, or the externalId path variant /v1/customer/externalId/{external-id}/account/externalId/{account-external-id}/statement.

The body carries a single field — the billing period as MM/YYYY.

Request

POST /v1/customer/id/4223433/account/id/9914118/statement
PromiseMode: NEVER

{
  "period": "02/2026"
}

PromiseMode: synchronous vs. asynchronous

Like other Treasury generate/update calls, this endpoint requires the PromiseMode header:

PromiseModeBehaviorResponse
NEVERProcess synchronously and wait for the result204 No Content on success
ALWAYSQueue for asynchronous processing202 Accepted — the statement is generated in the background

Response codes

CodeMeaning
204 No ContentStatement generated successfully (PromiseMode: NEVER)
202 AcceptedRequest accepted for asynchronous processing (PromiseMode: ALWAYS)
299Success, but with a warning that may affect the account
400 Bad RequestMalformed request — e.g., a missing or invalid period

Scenarios

Generate last month's statement

Produce a closed-period statement for a customer-facing document or record.

  • Use PromiseMode: NEVER and pass the completed period (e.g., "02/2026").
  • Request a period only after it has closed — an open period isn't final.

Generate statements in bulk

When generating many statements at once (e.g., all accounts at month-end), don't block on each call.

  • Use PromiseMode: ALWAYS to queue generation and get 202 Accepted immediately.
  • Queue all requests, then retrieve each statement once its generation completes.

Statement vs. ledger

Reach for the right tool:

  • Need a fixed document for a closed period (customer statement, compliance record)? Use a statement.
  • Need live, entry-level activity or a running balance (activity feed, reconciliation)? Use the ledger.

Best practices

PracticeWhy
Request closed periods onlyA statement for an open period isn't final; wait until the billing period ends.
Use ALWAYS for batchesAsynchronous processing avoids timeouts when generating many statements at month-end.
Format the period as MM/YYYYThe period field expects month and year (e.g., 02/2026), not a date range.
Reconcile detail against the ledgerFor line-by-line detail behind a statement total, read the ledger for the same window.

See also


Did this page help you?
.readme-logo { display: none !important; }