Prerequisites
Before you post your first transaction, make sure you have the following in place:- An API key with the TRANSACTIONS_WRITE and ACCOUNTS_READ scopes granted.
- At least two accounts already created in the ledger (one to debit, one to credit).
- The account UUIDs for the accounts you want to use in your transaction lines.
Post a transaction
Each request toPOST /api/v1/transactions must include an Idempotency-Key header and a body containing at least two journal lines. The lines array accepts between 2 and 1 000 entries per request.
- On-chain entry
- Fiat entry
Use
OnChainEntryDto when recording a stablecoin transfer that has already occurred or is expected on-chain. Provide the transaction hash, block number, wallet address, and token contract so the ledger can correlate the entry against settlement expectations.Idempotency
EveryPOST /api/v1/transactions request requires an Idempotency-Key header containing a unique string of up to 255 characters. The idempotency key protects you against duplicate transactions when a network timeout or server error forces you to retry a request.
The rules are straightforward:
- If your request succeeds and you send the same key again, the API returns the original committed transaction without creating a new one.
- If a request with a given key is still in progress when you retry, the API returns
409 Conflict— back off and retry after a short delay. - If your request fails with a client error (4xx), the key is not consumed, so you can correct the body and resubmit with the same key.
Transaction metadata
Themetadata field accepts a flat object of string key-value pairs. Use it to attach your own business context to a transaction — such as an order ID, customer reference, or processing region — without embedding that information in the journal line descriptions.