A hosted payment page. A signed webhook. A verifiable receipt. No KYC, no custody, no monthly retainer — 0.4% flat on settled volume.
// $50 invoice — customer pays in BTC-Lightning or USDT-TRC20. curl https://orbchain.io/v1/payment/invoice \ -H "merchant_api_key: mk_live_…" \ -H "Content-Type: application/json" \ -d '{ "amount": 50, "currency": "USD", "accepted_coins": ["BTC_LN", "USDT_TRC20"], "order_id": "order_7f92a1", "callback_url": "https://shop.example/webhooks/orbchain" }' // response { "track_id": "pay_01JR3K9T…", "pay_link": "https://orbchain.io/pay/pay_01JR3K9T…", "expires_at": "2026-04-20T18:45:00Z", "event_id": "01H8KP9M3FRA8YTVKX6ZBN4AX2" }
Compute HMAC-SHA512 of the raw request body, keyed on your webhook_secret, and compare with the HMAC header in constant time. Full reference implementations for Node, Python, Go, Rust, PHP at /docs#webhooks.
The invoice stays CONFIRMING until the full amount lands. Partial credits are never applied automatically — reconcile via GET /v1/payment/:track_id and settle with the customer out of band.
Yes. Post to /v1/payment/white-label instead. OrbChain returns the address and QR payload, and you host the surface entirely on your own domain. See White Label.
Five retries with exponential backoff at 2, 4, 8, 16, and 32 seconds. Every attempt writes to WebhookLog; failed dispatches are replayable from the dashboard after recovery.
No. Derived addresses sit on a BIP-44 branch that you control. We never hold keys you did not give us. Withdrawals to your cold wallet are an on-demand parameter, not a ticketed request.
Email and password. No KYC, no monthly retainer — 0.4% flat on settled volume. The entire tariff.