Skip to main content
Rach monitors every WaaS and CaaS wallet 24/7. You don’t poll the chain or run indexers — when funds arrive at a monitored address, Rach detects the deposit, records it, and sends your backend a signed webhook. Monitoring runs on a dedicated always-on service, independent of your API traffic.

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 and POSTs wallet.deposit.detected. Nothing is credited yet — dedupe on deposit_id.
4

Deposit confirmed → you credit

Once it reaches the confirmation threshold, Rach POSTs wallet.deposit.confirmed with safe_to_credit: true — that’s your signal to credit the customer.
5

Real hash backfilled

A later wallet.deposit.hash_resolved (same deposit_id) replaces the provisional pending_… tx_hash with the real on-chain hash.

WaaS monitoring

Turn monitoring on when you derive an address:
Monitored addresses report "monitored": true. Supported assets include native coins and USDT/USDC on the EVM chains. When a deposit confirms, Rach fires a wallet deposit webhook and the funds show up in GET /wallet/{id}/balances.
Enable your wallet webhook stream by configuring a URL with wallet_webhook_enabled: true (see Webhooks).

CaaS monitoring

CaaS smart-contract wallets are monitored from the moment they’re provisioned. An inbound transfer to a wallet you operate fires a transfer.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) or GET /v1/users/balance (CaaS) — and reconcile by deposit_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.
Reusing a deposit address is safe. Rach tracks each address’s balance in both directions, so a later deposit is detected correctly even if it is smaller than a previous one the customer has since spent.
Next: wire up Webhooks to receive and verify these events.