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:
| PromiseMode | Behavior | Response |
|---|---|---|
NEVER | Process synchronously and wait for the result | 204 No Content on success |
ALWAYS | Queue for asynchronous processing | 202 Accepted — the statement is generated in the background |
Response codes
| Code | Meaning |
|---|---|
204 No Content | Statement generated successfully (PromiseMode: NEVER) |
202 Accepted | Request accepted for asynchronous processing (PromiseMode: ALWAYS) |
299 | Success, but with a warning that may affect the account |
400 Bad Request | Malformed 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: NEVERand 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: ALWAYSto queue generation and get202 Acceptedimmediately. - 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
| Practice | Why |
|---|---|
| Request closed periods only | A statement for an open period isn't final; wait until the billing period ends. |
Use ALWAYS for batches | Asynchronous processing avoids timeouts when generating many statements at month-end. |
Format the period as MM/YYYY | The period field expects month and year (e.g., 02/2026), not a date range. |
| Reconcile detail against the ledger | For line-by-line detail behind a statement total, read the ledger for the same window. |
See also
- Account ledger & activity — the live, entry-level view of the same activity
- Account lifecycle — account balances and statuses
Updated about 18 hours ago