Quickstart

This guide walks you through the four steps needed to start accepting crypto payments with Aeses: create an API key, check your balances, generate a deposit address, and verify an incoming webhook. You will be ready to integrate in production by the end.

1. Create an API key

Sign in to the Aeses Dashboard and open Developers → API keys. Create a new test mode key for development. Test mode uses public test networks (Sepolia, Bitcoin testnet, Tron Nile, Solana devnet) and never moves real funds.

Your secret key looks like sk_live_4eC39HqLyjWDarjtT1zdp7dc. Store it in an environment variable — never commit it to source control or expose it to a browser.

Treat secret keys like passwords

Anyone with your secret key can authorize transfers and view all your account data. Rotate immediately if exposed.

2. List your balances

Every Aeses account has an internal ledger of balances per asset. List them to confirm the key is working.

Request
curl https://api.aeses.io/v1/balances \
-H "x-api-key: sk_live_4eC39HqLyjWDarjtT1zdp7dc"

A fresh account returns an empty data array. After you receive your first deposit the corresponding balance appears here.

3. Create a deposit

Generate a single-use address for a customer to send funds to. Aeses derives the address from a hardened HD wallet — you never handle private keys.

Request
curl https://api.aeses.io/v1/deposits \
-H "x-api-key: sk_live_4eC39HqLyjWDarjtT1zdp7dc" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
  "asset": "USDT",
  "chain": "ethereum",
  "amount": "10.00",
  "webhook_url": "https://example.com/webhooks/aeses"
}'

The response contains a fresh address valid for 30 minutes:

Response
{
"id": "dep_01HXYZ7M2P5RT4VG3K8AQWE9FN",
"object": "deposit",
"status": "pending",
"asset": "USDT",
"chain": "ethereum",
"address": "0x8f3a9c2bF7e1A4d62D8b9fF6E3c5a7E1d2B4c8A9",
"expected_amount": "10.00",
"expires_at": 1731600000
}

Send the customer to the address. On testnet, you can fund it from a faucet.

4. Receive and verify the webhook

When the deposit reaches the required confirmations, Aeses POSTs a deposit.completed event to the webhook_url. Every webhook carries an X-Webhook-Signature header you must verify before trusting the payload — see Webhook signatures for the full algorithm.

A minimal verification handler in Node:

Test the webhook locally
# Forward webhooks from the dashboard to your local server
ngrok http 3000

# Update webhook_url in the deposit request to the ngrok URL

# Trigger a test event from Developers → Webhooks → Send test event

Once you receive and verify the event, credit the customer's order in your own system and return 200 OK.

Next steps