How it works
1
An address is monitored
WaaS: derive an address with
enable_monitoring: true. CaaS: every provisioned wallet
is monitored automatically.2
Funds arrive on-chain
Rach’s monitor watches the relevant chains continuously and picks up the incoming
transfer.
3
Deposit detected (pending)
Rach records a pending deposit, finds its on-chain transaction, and POSTs
wallet.deposit.detected with the real tx_hash. Nothing is credited yet — dedupe
on deposit_id.4
Hash resolved (only if it was not indexed yet)
If the transaction was not indexed when the balance moved,
detected carries a
pending_… placeholder (hash_pending: true), and wallet.deposit.hash_resolved
supplies the real hash as soon as it is found.5
Deposit confirmed → you credit
Once the transaction reaches the network’s
confirmation depth, Rach POSTs
wallet.deposit.confirmed with safe_to_credit: true and the real tx_hash — that’s
your signal to credit the customer.WaaS monitoring
Turn monitoring on when you derive an address:"monitored": true. Deposits are detected and confirmed on all
13 networks, for the network’s own coin and its stablecoins: ETH, BNB, POL, AVAX, CELO,
TRX, SOL, BTC, LTC, BCH and XRP, plus USDT and USDC on the EVM chains and Solana and USDT
on TRON. The networks page lists
each network’s confirmation depth and how long detection takes. When a deposit confirms,
Rach fires wallet.deposit.confirmed and the funds show up in
GET /wallet/{id}/balances.
CaaS monitoring
CaaS smart-contract wallets are monitored from the moment they’re provisioned. An inbound transfer to a wallet you operate fires atransfer.received webhook — including transfers
sent to a phone number that was never provisioned (Rach creates the wallet on the fly and
notifies the recipient by SMS).
Reconciliation
If your endpoint was down, you won’t miss anything:- Rach retries failed deliveries.
- Every delivery is recorded in a delivery ledger you can review.
- You can always re-read balances —
GET /wallet/{id}/balances(WaaS) orGET /v1/users/balance(CaaS) — and reconcile bydeposit_id.
For WaaS reconciliation, add
?live=true to read the chain directly rather than Rach’s
stored figure. The stored figure is kept in step with the chain by the monitor and is right
for everyday use, but when you are specifically auditing for drift you want the chain read.
