BTC$68,420▲ 0.82% / ETH$3,841▼ 0.31% / LTC$94.05▲ 1.14% / SOL$221.60▲ 3.02% / USDT·TRC20$1.0000 / USDC·ERC20$0.9999 / XMR$168.42▼ 0.18% / TON$6.02▲ 0.47% / XRP$2.41▼ 0.09% / GAS·ETH18 gwei / Indicative prices · illustrative ticker / No-KYC · non-pooled · 0.4% flat / BTC$68,420▲ 0.82% / ETH$3,841▼ 0.31% / LTC$94.05▲ 1.14% / SOL$221.60▲ 3.02% / USDT·TRC20$1.0000 / USDC·ERC20$0.9999 / XMR$168.42▼ 0.18% / TON$6.02▲ 0.47% / XRP$2.41▼ 0.09% / GAS·ETH18 gwei / Indicative prices · illustrative ticker / No-KYC · non-pooled · 0.4% flat
OrbChain
UTC 18:47:02 Get started →
Business / White Label ▓ YOUR DOMAIN Your brand · our rails

Your domain.
Our rails.

POST to /v1/payment/white-label, get back an address + QR payload. You host the checkout surface. Your customers never leave your domain. The chain work, confirmations, webhooks, receipts — all OrbChain.

Your URL · Your UI · Your logs
§ Part I / V · The API surface

Four fields in,
address + QR out.

Stateless · synchronous
No hosted page on our side
SymFieldWhat it meansStatus
AMTamount + currencyDecimal + ISO 4217 (USD, EUR, …) or a crypto amount (set currency to BTC etc.).REQ
COINpay_currencyWhich coin this invoice should be paid in. One call = one coin, one address.REQ
REForder_idYour client reference. Idempotent — same order_id returns the same track_id.REC
CBcallback_urlWhere the HMAC-SHA512 webhook fires. Falls back to the merchant-wide default.REC
EXPexpires_inAddress watch window in seconds. After expiry the track returns EXPIRED; no new credits land.OPT
§ Part II / V · Integration

The entire surface
fits in one POST.

Languages
Any HTTP client works
POST /v1/payment/white-labelcurl · 200 OK
// $50 USD invoice payable in USDT on Tron. Hosted by YOU, not us.
curl https://orbchain.io/v1/payment/white-label \
  -H "merchant_api_key: mk_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "amount":        50,
    "currency":      "USD",
    "pay_currency":  "USDT_TRC20",
    "order_id":      "order_7f92a1",
    "callback_url":  "https://shop.example/webhooks/orbchain",
    "expires_in":    3600
  }'

// → 200 OK
{
  "track_id":        "pay_01JR3K9T…",
  "address":         "TXN7…9qF",
  "pay_amount":      "50.000000",
  "pay_currency":    "USDT_TRC20",
  "qr_payload":      "tron:TXN7…9qF?amount=50",
  "expires_at":      "2026-04-20T19:45:00Z"
}
§ Part III / V · Capabilities

Everything,
still on your domain.

Shared plumbing
Same webhooks, same receipts
SymFeatureWhat it shipsStatus
LNInstant LightningSet pay_currency to BTC_LN — returns a BOLT11 invoice for you to render.LIVE
DWDeterministic WebhooksSame event_id scheme as every other surface. Idempotent on retry.LIVE
SRSigned ReceiptsEvery PAID white-label payment gets an Ed25519 receipt at /v1/payment/:track_id/receipt.LIVE
STATStatus pollingIf you don't want webhooks, GET /v1/payment/:track_id returns the current state.LIVE
IDMIdempotencySame order_id + merchant + coin returns the same invoice. No dupes, no races.LIVE
NKNo-KYCMerchant signup is still email-only. Your customers never see OrbChain at all.LIVE
§ Part IV / V · Pattern

What you build
on your side.

Reference stack
Any language, any framework
#WhatWhyLayer
01Checkout pageOn your /checkout route, call the endpoint above with the cart total + picked coin, render the returned address + QR.FRONTEND
02Status pollClient-side, poll GET /v1/payment/:track_id every 5s OR listen for your own backend SSE fed by our webhook.FRONTEND
03Webhook handlerVerify HMAC-SHA512 on the raw body against your webhook_secret in constant time; mark the order paid.BACKEND
04Receipt storageOptional: fetch the Ed25519 receipt and stash alongside the order — gives auditors an offline-verifiable artifact.BACKEND
§ Part V / V · Questions

Things self-hosters
ask first.

Answered
Links to docs
Q.01Does OrbChain ever appear to my customer?

No. Your checkout page is on your domain; the API call is server-to-server. The only time our domain appears to the customer is if you choose to redirect them to /pay/:track_id — that's Invoice, not White Label.

Q.02How does the customer know when their payment confirmed?

Two options: your frontend polls GET /v1/payment/:track_id every few seconds, OR your backend receives our HMAC-signed webhook and pushes an update to the client via WebSocket/SSE. The polling approach is simpler; the webhook approach is instant.

Q.03Can I use White Label with Lightning?

Yes. pay_currency: "BTC_LN" returns a BOLT11 invoice string and a QR payload you render directly. Settlement is sub-second once the customer's wallet pays.

Q.04Do I still get signed receipts?

Yes — identical to the Invoice surface. GET /v1/payment/:track_id/receipt on any PAID payment returns the Ed25519-signed receipt. Verify against our public key from /v1/common/receipt-public-key.

Q.05What's the difference vs Invoice?

Invoice hosts the payment page at /pay/:track_id on our domain; you just hand the URL to the customer. White Label returns the raw address + QR + amount; you render the surface yourself. Pick the one matching your stack's shape.

Your domain.
Our chain-layer.

Email and password. The API surface above is the entire integration.