Processing

Create a Wallet and Derive Addresses

A wallet groups the addresses you hand out to users for deposits. This guide creates one wallet, then derives fresh addresses per chain so each user gets a unique deposit target. Keys stay under your control unless you opt into custodial signing.

Before you start
  • An API key with C2 access (create the key in the dashboard).
  • A decision on where signing happens — non-custodial by default, custodial signing is a separate opt-in.

1Create the wallet

POST an empty body to /v1/wallets. The response returns the wallet id you use to derive addresses.

curl -X POST https://api.1st-node.com/v1/wallets \
  -H "Authorization: Bearer sk_live_..."
> {"id":"wlt_9f3a","created_at":"2026-07-04T10:00:00Z"}

2Derive an address per chain

Call the derive endpoint with the target chain. Repeat per user so each deposit maps to one address; addresses are watched for you.

curl -X POST https://api.1st-node.com/v1/wallets/wlt_9f3a/addresses \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"chain":"tron"}'
> {"address":"TQ1n7...","chain":"tron","index":0}

3Attach a reference and store the mapping

Persist the returned address against your user id. Derive on eth and btc the same way; each chain has an independent index space.

curl -X POST https://api.1st-node.com/v1/wallets/wlt_9f3a/addresses \
  -H "Authorization: Bearer sk_live_..." \
  -d '{"chain":"eth"}'
> {"address":"0x8f2c...","chain":"eth","index":0}

Frequently asked

Do you hold my private keys?

No. Wallet and address creation is non-custodial by default — you decide where signing happens. Custodial signing is a separate opt-in primitive.

Are derived addresses watched automatically?

Yes. Derived addresses are registered for deposit detection, so incoming transfers appear via GET /v1/deposits or your webhook.

Keep reading

Top up, get a key, ship.

Self-serve. Pay in crypto or card. Metered by credits — heavy primitives cost more, simple ones are cheap.

Get API key