Three objects, one deposit
A bank transfer to a virtual bank account produces a pay-in and no session. A hosted payment produces a
session and a pay-in — the session tracks initiation, the pay-in tracks settlement.
The pay-in record
Response (200)
Amounts are decimal strings — never floats.
Lifecycle
Build on the webhooks and use the reads for reconciliation and recovery — listing the ledger with
status=RECEIVED or SETTLING older than your expected settlement time is a cheap stuck-deposit
check.
Listing the ledger
GET /pay-ins spans every account in your company.
All filters combine with AND:
Sorted by
createdAt descending; sortOn accepts only createdAt.
Reading sessions back
Before 1.8.0 a pay-in session could not be read after creation. Now List pay-in sessions and Get a pay-in session return the persisted state — never a live provider call — so you can render a deposits view or recover a session whosecallbackUrl notification was missed.
To poll for changes, sort updatedAt descending and read only the first page, sized above your
expected change volume. from/to filter on createdAt, so there is no “changed since” filter, and a
session that changes between your page-1 and page-2 requests shifts position and is skipped.
Errors worth knowing on session creation
1.8.0 added preconditions to creating a hosted pay-in session when the account settles through a EUR virtual bank account:Next steps
Virtual bank accounts
Issuing — and now closing — the bank details pay-ins arrive on.
Webhooks
PAY_IN_SETTLED and PAY_IN_FAILED, and how to debug a delivery you didn’t get.Wallets & balances
Where
netCryptoAmount lands.
