- RPC access — reading chain state, fetching transaction receipts, submitting sweep transactions.
- Address Activity webhooks — real-time notification when a payment arrives at a session’s deposit address.
Credentials
You need two separate credentials from Alchemy:
Direct link to the webhooks page:
dashboard.alchemy.com/apps/latest/webhooks
Can’t find the AUTH TOKEN button? It only appears once the webhooks page has at
least one webhook — with zero webhooks Alchemy shows an empty “Create a webhook”
prompt and hides the token. Click Create Webhook, pick Address Activity, choose
any network and address, and save. The page then switches to the populated list and the
AUTH TOKEN button appears in the top-right. You can delete that webhook afterward —
the app creates and manages its own webhooks automatically. Note: Security → Access
Keys is a different credential (JSON-RPC / NFT / Gas Manager) and does not work
as the Notify Auth Token.
Dashboard setup
- Sign in to your My Crypto Server dashboard.
- Go to Integrations → Alchemy.
- Enter your API Key, Notify Auth Token, and Webhook Public URL (your app’s public HTTPS URL).
- Toggle Enabled on and click Save.
Webhooks are created lazily, one per chain, only while a payment is in flight. You hold at most one webhook per chain with an active session — never all supported chains at once — so this stays comfortably under Alchemy’s free-tier webhook limit and never leaves an empty webhook listening to chain-wide activity.
Inspecting webhooks
Webhooks come and go automatically. To see what currently exists:How it works
- When a checkout session is created, its deposit address is added to that chain’s Alchemy webhook — creating the webhook (with the address already attached) if it doesn’t exist yet.
- When the customer sends funds, Alchemy POSTs to
/api/webhooks/alchemy(EVM),/api/webhooks/alchemy/solana, or/api/webhooks/alchemy/btc. - Each request is HMAC-SHA256 verified against the signing key stored in the
alchemy_webhookstable. - On session completion (paid, expired, or failed), the address is removed — and if it was the webhook’s last address, the webhook is deleted.
- An hourly reconcile job re-asserts this from the database: it (re)creates any webhook a failed add missed and removes ones with no active sessions. The poller is the safety net throughout.