Skip to content
>
Mode: standard

Wallet Webhooks

Wallet events · Authenticated

Per-wallet and per-address delivery for every move.

Wallet webhooks fire on every transaction that touches a wallet you own — deposits, withdrawals, conversions, and platform sweeps. The transaction types you'll receive mirror the full transaction-type catalog, so anything you can observe via the Transactions API will reach this endpoint too.

No per-event subscription — you receive everything

A wallet (or per-address) webhook fires for every transaction that touches it — there is no way to subscribe to only certain transaction types at this time. The configuration is just a URL. The types below are what you'll receive, not a menu to pick from, so filter on the payload's transactionType and transactionStatus in your own handler. Be sure to respond with a 200 status code either way.

Direct deposit events

Incoming — credited to your wallet
External receives
3 deposit types
  • utxoExternalReceiveUTXO deposit

    External deposit on a UTXO chain — Bitcoin, Litecoin, Dogecoin, etc.

  • accountBasedExternalReceiveAccount-based deposit

    External native-coin deposit on an account-based chain — Ethereum, BSC, Solana, etc.

  • accountBasedExternalTokenReceiveToken deposit

    External ERC-20 / BEP-20 / SPL token deposit.

Withdrawal, conversion & sweep events

Outgoing — leaving the wallet
External spends and internal moves
4 outbound types
  • externalSpendNative withdrawal

    Native-coin withdrawal to an external address.

  • accountBasedTokenSpendToken withdrawal

    Token withdrawal to an external address.

  • conversionCurrency conversion

    Crypto-to-crypto conversion between your own wallets.

  • autoSweepingAuto-sweep

    Funds consolidated out of permanent addresses by the auto-sweep feature.

Same-user, internal, and test types are also delivered

Beyond the patterns above, internalReceive / internalSpend, sameUserReceive / sameUserSpend, and the LTCT pool events all deliver webhooks too — see the full transaction type catalog for every value you will receive.

Documented in camelCase, receive in PascalCase

These events are documented in camelCase names (e.g. externalSpend), but the delivered payload's type field — and the state inside it — arrive in PascalCase (e.g. ExternalSpend). Compare both case-insensitively so your handler matches regardless of casing.

One webhook per confirmation — until fully confirmed

For external deposits and withdrawals, CoinPayments fires a webhook on every confirmation accrued on-chain, not just the final one. Each payload includes confirmations and requiredConfirmations so you can render live progress without a separate Currencies lookup. Credit-processing logic should key off the terminal status: confirmedOnBlockchain for external transactions, or completed for internal ones (which settle in a single event). See Transaction Statuses for why the terminal value differs.

Where to next?

Pick the most useful next step.