The Deposit object

A deposit represents a single-use payment intent. When created, Aeses generates a fresh on-chain address derived from a hardened HD wallet. Funds sent to that address are detected via blockchain webhooks, confirmed against the network's threshold, and credited to the account's internal balance.

Deposits are address-bound to a single asset/chain pair — sending the wrong token to the address (e.g. USDT to a USDC deposit address) results in funds that require manual reconciliation.

Lifecycle

  1. pending — address generated, no on-chain transaction seen.
  2. confirming — at least one confirmation observed, awaiting threshold.
  3. completed — confirmation threshold met, internal balance credited.
  4. underpaid / overpaid — completed but received amount differs from expected_amount.
  5. expired — 30-minute window elapsed without sufficient confirmations.

Attributes

stringOptional

Unique identifier of the form dep_….

stringOptional

Always "deposit".

enumOptional

One of pending, confirming, completed, underpaid, overpaid, expired.

stringOptional

Asset code the address accepts. Sending any other asset to the address will not credit the deposit.

stringOptional

Blockchain network. Examples: ethereum, bitcoin, solana, tron, polygon, base, arbitrum, bnb, optimism.

stringOptional

On-chain address to send funds to. Always in font-mono-formatted display.

string | nullOptional

Expected amount as a decimal string. null when the merchant did not specify one.

string | nullOptional

Actual received amount once a transaction is detected. null until confirming.

string | nullOptional

On-chain transaction hash once observed.

integerOptional

Current confirmation count. 0 until the transaction is mined.

integerOptional

Unix timestamp (seconds) after which the address window closes.

string | nullOptional

Your own reference, as sent at creation.

string | nullOptional

Per-resource webhook URL, if any. Otherwise events go to the account-level endpoints.

objectOptional

Free-form key/value pairs you attached at creation. Up to 20 keys, 500 chars each.

integerOptional

Unix timestamp (seconds) when the deposit was created.

Endpoints

deposit.created, deposit.confirming, deposit.completed, deposit.underpaid, deposit.overpaid, deposit.expired. See Webhook events.

The Deposit object
{
"id": "dep_01HXYZ7M2P5RT4VG3K8AQWE9FN",
"object": "deposit",
"status": "completed",
"asset": "USDC",
"chain": "ethereum",
"deposit_address": "0x8f3a9c2bF7e1A4d62D8b9fF6E3c5a7E1d2B4c8A9",
"expected_amount": "99.50",
"received_amount": "99.50",
"tx_hash": "0xabc123def456...",
"confirmations": 12,
"expires_at": 1731600000,
"webhook_url": "https://example.com/webhooks/aeses",
"metadata": { "order_id": "ord_4421" },
"created_at": 1731598200
}