A live playground for previewing these settings is coming. Until then, this
page is the reference — every option here is real and current.
1. Look and feel — theming
How the hosted payment page renders: colours, font, and corner radius. Set as query parameters on the embed (or redirect) URL — no CSS, no build step.
Full table, validation rules, and a worked example: Theming.
2. Presentation — redirect vs embed
A created session returns two URLs, and they are not interchangeable:3. Widget behaviour — createParentBridge
When you embed the widget and your app already has a wallet connected, the
parent bridge lends that connection to the iframe so the payer never reconnects.
Its options are the behavioural hooks:
Keep it in sync with the wallet — tear the bridge down and start a new one when
address or chainId changes, and call bridge.sendAddressChanged(address, chainId) / bridge.sendDisconnected() on wallet events. Call bridge.stop()
on unmount.
4. Client options
Payment client — PaymentsClientOptions
Second argument to createCheckout / createDeposit / createWithdrawal /
getPayment. Server-side only.
Read client — new Hypermid(config)
For chains, tokens, quotes, status, and balances. Safe anywhere; the key is
optional.
5. Webhook verification — verifyWebhook
Handling the events Hypermid sends you. Verify against the raw body, before
any JSON parsing.
Sandbox
Every surface toggles to sandbox by the key, not a flag or a different host. Use ansk_test_… secret key (payments) or a test publishable key (read
client); everything else is identical, testnets only. See
Environments.