Skip to main content
The statement consolidates every movement of an account in a period — payouts, payins, crypto deposits and withdrawals, internal transfers, card purchases, balance conversions, banking operations and service charges — into one auditable document. A single endpoint serves it in three formats:

Requesting the statement

  • from / to: YYYY-MM-DD dates, inclusive, in your organization timezone. Maximum range: 400 days.
  • The response field period.timezone contains the real IANA timezone of the organization (for example America/New_York), not a constant UTC label.
  • lang=en|es|zh: language of the PDF/Excel (default en). Also Content-Language.
  • Files arrive with Content-Disposition: attachment. The basename follows the locale (statement_… / cartola_… / 对账单_…).

What it contains

Sections:
  1. summary — opening balance, inflows, outflows, closing balance, fees by service and the balanced flag of the USDT balance (the main summary always reconciles USDT).
  2. assets — one reconciled section per non-USDT balance with activity or balance (USD, USDC, BTC, GOLD, SILVER, PLATINUM, BOB, MXN, ARS and, if you use Banking, the BANK_USD/BANK_EUR mirrors of your bank accounts): opening/closing balance, inflows, outflows and its own balanced flag, in each currency’s precision, WITHOUT raw detail in the client view; the raw per-asset detail lives only in the org-admin statement. Empty if you only operate USDT.
  3. breakdown — by product, by country (payouts and payins with local amount and USDT), by fiat currency and by month.
  4. Per-product detail — payouts (beneficiary, rate and debit), payins (per mode), crypto (with tx_id and its asset), transfers (with counterparty and asset), card purchases (card_transactions, with merchant and spending balance), balance conversions (swaps), banking operations (banking_operations) and service charges (with refunds).
  5. Product sections and audit trail — the client statement omits the raw ledger movements and per-asset assets[].movements; it also omits summary.counts.movements. Reconcile by product section, using balance_after on charges and crypto deposits. For deep audit, use the org-admin statement or GET /v1/movements.
Transparent fees. On payouts, payins and crypto withdrawals, when the fee combines a percentage and a fixed component, the statement splits them into fee_percent and fee_fixed (they add up exactly to fee). Standalone charges (compliance, wallets, banking, verifications and cards) are always fixed-amount charges, include the charged asset (USDT for the USDT-only fee summary), and carry fee_model: "fixed" — the PDF/Excel labels them Fixed Com.

How to reconcile it (for your accountant)

The statement satisfies exact accounting identities, without rounding:
  • balanced: true confirms the identity against the ledger for the USDT summary and independently for every assets section. Balances from different assets are never added together.
  • Each product section is reconciled using its own amounts and statuses. Charges and crypto deposits include balance_after, so you can verify their effect on the relevant balance without relying on a raw ledger dump.
  • The client statement intentionally omits the raw USDT ledger movements, assets[].movements, and summary.counts.movements. For deep audit, an org admin can use the administrator statement or GET /v1/movements, the paginated ledger view.
  • The closing balance of one period matches the opening balance of the next.
  • The from/to range is interpreted in the organization’s timezone (period.timezone), but each operation’s detail timestamps are in UTC (JSON in RFC3339 with Z; Date (UTC) columns in PDF/Excel).
  • Fees are never hidden: each operation exposes gross, fee and net separately, while fees_by_service remains USDT-only by design.
  • XLSX sheet names follow the requested lang (en, es or zh), including Crypto, Segregated, Cards, Swaps, Banking and Margins when those sections are present.
  • The Excel Payouts sheet carries a Bank ref column (right after the reference/concept column) with the transaction id assigned by the destination bank once it confirms the payment. The statement PDF omits it on purpose (table density) — the individual payout receipt does show it.

For the administrator (org admin)

The CBPay team can generate any of its accounts’ statements:
The administrator view also includes additional operational information for the period (detailed in the administration documentation).

Errors

FAQ

On demand — every request builds it live from the ledger for the from/to range you pass (both required, YYYY-MM-DD, organization timezone).
Each asset reconciles independently: opening + credits − debits = closing for USDT, USD, USDC, BTC, GOLD, SILVER, PLATINUM, BOB, MXN, ARS and the banking mirrors. If any asset does not balance the flag is false — report it to your CBPay team.
They mirror your banking money inside the statement so the account reconstructs completely. The authoritative balance is always the bank’s (GET /v1/banking/accounts/{id}/balance); these mirrors are never spendable.
JSON (integration), PDF and XLSX — both branded with your organization’s identity. Use the format parameter of the endpoint (format=json|pdf|xlsx).
Standalone service charges (verifications, screenings, wallet services) are fixed-only fees, labeled “Fixed Com” in the statement — as opposed to percent+fixed transactional fees.
Yes — every operation has a receipt with a public verification code; anyone can validate it without authentication.

Disputes in the statement

The account statement includes disputes[] when a case was created in the period. Each item contains created_at, dispute_id, kind, status, disputed_usdt, held_usdt, optional case_number and deadline_at. The preventive hold is represented once; the provider chargeback is the separate financial debit.

Asset-aware payin rows

Payin rows include credit_asset and optional fiat_credited; refund rows include debited_asset and debited_amount. JSON, PDF and XLSX preserve the real asset precision and keep the USDT equivalent separate.
Last modified on October 4, 2026