Skip to main content
The Zapyd widget runs the whole user journey (sign-up, KYC, bank linking, payin and payout) in a UI that carries your logo, colors and emails. You don’t build any payment screens. Widget sign-in screen branded for a sample partner: the partner's logo in the header, and the partner's brand color on the consent checkbox, the terms link and the Continue button.

Two ways to open it

Send users to the widget with your app_id. It works on desktop and mobile.
Your app_id comes with onboarding. Sandbox and production have different app_id values.

Initialize API

Use this when your app already knows what the user wants, for example “sell 10 USDT on Tron”.
1

Call Widget Initialize from your server

Widget Initialize takes a buy or a sell body:
Widget Initialize uses its own signature: lowercase hex of HMAC-SHA256 over the raw body followed by the timestamp. See Widget Initialize signing.
2

Pass the link to your frontend

The response contains data.widget_link. Send only this URL to the browser. Your API secret stays on the server.
3

Embed it

Keep allow="camera; microphone". The KYC selfie and document capture need the camera.

Your backend’s job

The widget handles the screens, but your backend still has to:
  • Register a webhook URL and verify each event’s signature.
  • Act on final statuses. For example, don’t credit a payin that is ON_HOLD.
  • Record order IDs for reconciliation and support.
See User journey for what users see and which webhooks each step sends.

Branding

Zapyd sets your branding during onboarding, and it applies to both the hosted link and embedded sessions. To change it, email support@zapyd.com. The widget at the top of this page shows the sample partner “Acme”. Emails get the same branding:

Test it in sandbox

Open the hosted link with your sandbox app_id, or call Widget Initialize with sandbox credentials. The widget runs against sandbox data, and no real money moves.