Requesting the statement
from/to:YYYY-MM-DDdates, inclusive, in your organization timezone. Maximum range: 400 days.- The response field
period.timezonecontains the real IANA timezone of the organization (for exampleAmerica/New_York), not a constant UTC label. lang=en|es|zh: language of the PDF/Excel (defaulten). AlsoContent-Language.- Files arrive with
Content-Disposition: attachment. The basename follows the locale (statement_…/cartola_…/对账单_…).
What it contains
summary— opening balance, inflows, outflows, closing balance, fees by service and thebalancedflag of the USDT balance (the main summary always reconciles USDT).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, theBANK_USD/BANK_EURmirrors of your bank accounts): opening/closing balance, inflows, outflows and its ownbalancedflag, 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.breakdown— by product, by country (payouts and payins with local amount and USDT), by fiat currency and by month.- Per-product detail — payouts (beneficiary, rate and debit), payins
(per mode), crypto (with
tx_idand itsasset), transfers (with counterparty andasset), card purchases (card_transactions, with merchant and spending balance), balance conversions (swaps), banking operations (banking_operations) and service charges (with refunds). - Product sections and audit trail — the client statement omits the raw ledger
movementsand per-assetassets[].movements; it also omitssummary.counts.movements. Reconcile by product section, usingbalance_afteron charges and crypto deposits. For deep audit, use the org-admin statement orGET /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: trueconfirms the identity against the ledger for the USDT summary and independently for everyassetssection. 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, andsummary.counts.movements. For deep audit, an org admin can use the administrator statement orGET /v1/movements, the paginated ledger view. - The closing balance of one period matches the opening balance of the next.
- The
from/torange is interpreted in the organization’s timezone (period.timezone), but each operation’s detail timestamps are in UTC (JSON in RFC3339 withZ; Date (UTC) columns in PDF/Excel). - Fees are never hidden: each operation exposes gross, fee and net
separately, while
fees_by_serviceremains USDT-only by design. - XLSX sheet names follow the requested
lang(en,esorzh), 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:Errors
FAQ
How often is the statement generated?
How often is the statement generated?
On demand — every request builds it live from the ledger for the
from/to
range you pass (both required, YYYY-MM-DD, organization timezone).What does balanced: true mean?
What does balanced: true mean?
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.Why do I see BANK_USD / BANK_EUR balances?
Why do I see BANK_USD / BANK_EUR balances?
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.Which formats are available?
Which formats are available?
JSON (integration), PDF and XLSX — both branded with your organization’s
identity. Use the
format parameter of the endpoint (format=json|pdf|xlsx).What is fee_model: fixed?
What is fee_model: fixed?
Standalone service charges (verifications, screenings, wallet services) are
fixed-only fees, labeled “Fixed Com” in the statement — as opposed to
percent+fixed transactional fees.
Can I verify an individual movement?
Can I verify an individual movement?
Yes — every operation has a receipt with a public
verification code; anyone can validate it without authentication.
Disputes in the statement
The account statement includesdisputes[] 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 includecredit_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.