GET /v1/movements is your source
of truth for reconciliation: nothing moves money without leaving an entry.
Querying movements
from/to (YYYY-MM-DD, UTC), type, asset, page,
page_size (max 200). Every entry carries reference_type +
reference_id: the business resource that originated it.
Export to CSV / Excel
Addformat=csv or format=xlsx to download the same rows as an
accounting-ready file (up to 10,000 rows per download). Also available on
the payouts, payins and transfers listings:
Complete type catalog
Banking balances live in your bank accounts (not in the USDT ledger): only
their fees appear here. Transactional fees for payouts/payins/
withdrawals have no entry of their own — they travel inside their
operation’s amount (
total_debit, usdt_credited).Reconciliation in three layers
Your integration has three views of the same money. They map like this:Daily reconciliation recipe
1
Download the day's movements
GET /v1/movements?from=YESTERDAY&to=YESTERDAY paginating to the end.2
Cross against your internal records
Your
idempotency_key derived from your internal id lets you join
each of your operations with its CBPay reference_id.3
Verify balance continuity
Sort by date: each entry’s
balance_after must be the previous one ±
amount. Any gap means you are missing an entry (not a ledger error —
it is immutable).4
Close the period with the statement
The statement guarantees the accounting
identity
opening + credits − debits = closing and serves as your
formal backup (PDF/Excel).Movements vs statement: when to use which?
GET /v1/movements— programmatic, paginated, live: for your automatic reconciliation and your history UI.- Statement — period snapshot with totals, per-product/country/currency breakdowns and guaranteed balance: for accounting closes, audits and sharing with your finance team.