Accept crypto without a redirect: Qvard’s embedded checkout
Accept crypto without redirect using Qvard’s embedded checkout widget. A JavaScript widget on your page, two ways to create payments, and webhook verification. Why embedded checkout matters and how it works.
Accepting crypto without redirect means keeping the customer on your page during payment. Qvard’s embedded checkout widget does exactly that: add a script from qvard.com/checkout.js, create payments via API or browser, and handle the webhook signature. This guide shows how.
Why the redirect costs conversions
Each redirect is a moment when a customer may stop. The customer leaves the shop, sees an unfamiliar page and must trust a new site. Keeping payment on your page reduces that friction and helps the customer finish the order.
How it works at Qvard
Qvard’s embedded checkout is live and ready to use. Add the script https://qvard.com/checkout.js to your page, create a payment via your backend or directly in the browser, and open the widget. The payment window is a Qvard checkout page in an iframe or popup: the customer sees their language, chooses an asset and network, and pays. Visit https://qvard.com/en/embedded-checkout/playground/ to see it in action.
Two ways to create the payment
Server-side (secure): POST /api/v1/payment with your secret key qvard_sk_... in the x-api-key header; you get back an id and redirectUrl. Browser-side (quick): pass your public key qvard_pk_... to the widget and let the customer pay from the page—their browser sends the amount, so verify it in the webhook. If you prefer not to embed, redirect to redirectUrl on the hosted page instead; that flow still works.
X-Qvard-Signature: t=1760950000,v1=…
{ "id": "order_1024", "status": "paid" }Reduce friction around the redirect
Create the payment only when the customer presses pay, not earlier. Show the total and the currency before the redirect, so the customer knows what to expect on the next page. Keep the order id and the total the same from cart to payment.
Verify the webhook signature
Every webhook carries an X-Qvard-Signature header: sign the request body with your secret key using HMAC-SHA256, format t=<timestamp>,v1=<hex>. Verify the signature, check the timestamp to reject old requests, and then mark the order as paid only when the webhook confirms the payment id and a paid status. Only then send the confirmation to the customer.
When to choose the embedded window
Choose the embedded window when your funnel loses customers to redirects. The widget keeps them on your page while they pay. The customer picks an asset and network; the window confirms amounts and details with them, so they know exactly what to expect.
FAQ
Can Qvard accept crypto without any redirect today?
Yes. Use the embedded checkout widget from qvard.com/checkout.js to keep the payment window on your page. The customer pays without leaving, and you handle the webhook to confirm the payment.
Does a redirect lower conversion?
It can, because customers may leave on the way. The embedded widget solves this by keeping payment on your page and showing the customer their language and final amounts upfront.
What do I need to embed the widget?
Add the script https://qvard.com/checkout.js, create a payment via API or browser, and listen for onSuccess, onClose, or onError events. The webhook confirms the payment once the customer pays.
Is the public key safe to put in the browser?
Yes, the public key qvard_pk_... is meant for the browser. Set limits on which websites can use it in your merchant dashboard. Always verify the amount in the webhook because the browser amount can be changed.
