Skip to main content
The balance is what each account of a client, or of your integrator account, holds. The ledger lists the movements in and out. Start with GET /dapi/v1/client/balance. Send X-Hevn-Account to act for a client (Acting as a client).

Balance

Response: 200
Fields: Read a client’s balances. The account keys are in Account keys. The balance has no FDIC_EUR row. If POST /dapi/v1/payouts returns insufficient_funds while the balance looks sufficient, a debit is in flight.

Walk the ledger

GET /dapi/v1/transactions returns rows newest first, in cursor pages (Pagination).
Response: 200
Fields and filters: List transactions, newest first. A row has accountId when an external account or a sub account moved the money. It is absent on a main wallet row.

Filters

Summary

GET /dapi/v1/transactions/summary takes the same filters and returns settled and pending totals in USD (Inflow and outflow totals).
Response: 200

Single transaction

GET /dapi/v1/transactions/{transactionId} returns the row with more detail (Retrieve one transaction).

Exports

GET /dapi/v1/transactions/export streams a file: the filtered transaction list, a transaction report for one virtual account (kind=statement), a confirmation that a virtual account exists with its account details (kind=confirmation), or a receipt for one transaction (kind=receipt). The parameters each kind needs and the formats it takes: Export transactions.
The download helper is in the reference client.

Reconcile

  1. Store the newest createdAt you have processed, per client, and per accountId when you reconcile accounts apart.
  2. Request from=<watermark> and walk the cursor to the end.
  3. Match your records on id, and a payout on the transactionId its read returns.
  4. Move the watermark after the walk completes. Ids are stable, so an overlapping replay is safe.
A row appears once the partner bank reports the payment or the chain confirms the transfer. Until then, read the payin or payout by its id. A pending row is not an error.

Refresh the ledger

POST /dapi/v1/transactions/sync refreshes one client’s ledger from the partner bank and the chains its money moved over (Refresh the ledger).
Response: 200
Reads do not refresh the ledger. When a transfer made outside your integration must be visible, call sync once before a walk. The route is rate-limited.

Next: Escrow