Skip to main content
This guide walks you through the full flow for accepting crypto deposits: creating a custodial account, generating wallet addresses per chain, registering webhooks, and crediting user accounts when deposits confirm.
Test this entire flow against the Sandbox at https://crypto-sandbox.yativo.com/api/v1/ before going live. Sandbox deposits are simulated — no real funds are used.

Overview

The deposit flow has four components:
  1. Account — a logical container for assets belonging to one user or entity
  2. Wallet addresses — per-chain addresses derived from the account
  3. Webhooks — real-time notifications when deposits are detected and confirmed
  4. Business logic — your code credits the user after confirming the deposit
1

Create an account

Each user or entity in your system maps to a Yativo account. Create one at onboarding time and store the returned accountId.
Response:
Store accountId in your database alongside the user record. You will reference it for every wallet and transaction operation.
2

Create wallet addresses per chain

For each blockchain you want to support, add an asset to the account. This returns a deposit address on that chain.
Response (Ethereum example):
3

Register webhooks for deposit events

Register a webhook endpoint to receive deposit.detected (immediate, unconfirmed) and deposit.confirmed (safe to credit) events.
Response:
Store secret securely (e.g., in an environment variable). It is only returned once and is used to verify webhook signatures. See Step 6 for verification details.
4

Display wallet addresses to users

Fetch the wallet addresses for an account and present them in your UI. Users send crypto to these addresses.
Show a QR code for each address in your UI — most crypto wallets can scan them directly.
5

Handle webhook events and credit user accounts

When a deposit confirms, your webhook handler receives a deposit.confirmed event. Verify the signature (next step), then credit the user.Here is a complete Express.js webhook handler:
TypeScript (Express webhook handler)
6

Verify webhook signatures

All webhook requests from Yativo include an X-Webhook-Signature header containing an HMAC-SHA256 signature of the raw request body.

Webhook Payload: deposit.confirmed

Next Steps

  • See Webhook Integration for the full webhook reference including all event types and retry policy.
  • Use Send Crypto to move funds back out on behalf of users.