Skip to main content
The SDK is configured in four places, each with a different job. This page is the index of what you can tune; the deep dives live on their own pages.
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:
Details, plus the connected-wallet bridge: Widget.

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.
onPaymentComplete fires when the payer submits a transaction, not when funds settle — cross-chain routes still have a bridge leg. Release goods on the webhook plus a session read, never on this callback.

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.
More: Read client.

5. Webhook verification — verifyWebhook

Handling the events Hypermid sends you. Verify against the raw body, before any JSON parsing.
Rotation-safe by design: during a secret rotation two signatures are sent and either verifies, so in-flight retries don’t fail. Full flow: Webhooks.

Sandbox

Every surface toggles to sandbox by the key, not a flag or a different host. Use an sk_test_… secret key (payments) or a test publishable key (read client); everything else is identical, testnets only. See Environments.