Skip to content

A deposit is a standalone crypto top-up to a merchant balance. You create it through the API (POST /deposit) or the admin panel; Cryptonly returns a unique deposit address, a QR code, a payment link, and expiresAt.

The customer sends crypto to that unique deposit address, used for this deposit only. Cryptonly monitors the blockchain, runs compliance checks, and settles the payment into your merchant balance.

Deposit amounts are expressed in crypto. The customer can send any amount at or above the currency minimum. There is no fixed total.

  • The minimum for a currency is minDepositAmount on GET /currencies.
  • The network fee is fixed when the deposit is created and withheld from the received amount. Commission is taken on what remains.
  • Pass orderId on POST /deposit. It is the idempotency key.
  • The payment link is valid for 20 minutes by default. A payment that arrives within 4 hours after expiresAt is still processed — see Late payments.
  • Each top-up needs its own deposit. Create a new one when the same customer pays again.

Deposits have statuses. Cryptonly sends a signed deposit.statusChanged webhook when a standalone deposit’s status changes.

Important behaviors for integrators:

  • On create, the deposit is created: the address is already assigned, and Cryptonly is waiting for an on-chain payment.
  • When an on-chain transaction is first detected, the deposit moves to processing, then to completed (balance credited) or suspended (not credited).
  • suspended is a final status for a standalone deposit. The funds stay on the deposit address.
  • A deposit that ends in expired can still move to processing if a payment reaches its address within 4 hours — see Late payments.

Invoice-linked deposits do not send deposit.statusChanged webhooks. Listen for invoice.statusChanged for checkout payments.