Build with ZettaPay.
Multi-chain, non-custodial crypto payments that confirm themselves. Install the SDK, configure your pubkey
in env vars (MERCHANT_BTC_PUBKEY / MERCHANT_ETH_PUBKEY / MERCHANT_SOL_PUBKEY) — we watch the chain
and post a signed webhook the moment the customer pays. BTC, ETH (mainnet + L2s), USDC on Solana. Open
SDKs in TypeScript, Python, PHP and Rust. x402 + MCP native.
Get your API key, drop a <script> tag with your pubkey in your <head> — done.
Recipes for plain HTML, vanilla JS, React and Next.js.
Get your API key, install the SDK, configure your pubkey in env vars
(ZETTAPAY_API_KEY + MERCHANT_*_PUBKEY), call zp.register(), verify the webhook. Snippets in
TypeScript, Python, PHP and Rust.
HMAC-SHA256 signature, 300 s tolerance window, idempotent by tx_hash,
exponential-backoff retries.
npm install @zettapay/sdk — full API surface, webhook verifier, on-chain helpers.
pip install zettapay — typed client, verify_webhook helper.
composer require zettapay/sdk — PSR-18 HTTP client, Webhook::verify helper.
cargo add zettapay — async tokio client, constant-time webhook verifier.
npm install @zettapay/listener — non-custodial BTC payment watcher
you run on your own box (systemd, Docker, Railway, Fly). BIP-84 xpub in,
HMAC-SHA256 webhooks out. Zero phone-home. Free forever.
Every REST endpoint, webhook event, and AI-agent surface. x402 and MCP included. Errors, idempotency, rate limits.
Paste one <script> tag in your <head>. Pay button, QR
code, address, all bundled.
AI agents pay autonomously via the open x402 header. ZettaPay also exposes a
pay_with_zettapay MCP tool.
Liveness, readiness and metrics endpoints — plug them into your monitoring.