Checkout Widget

Accept ZKZ without building any checkout UI yourself. Every session you create can be presented to the customer two ways, chosen by the mode field at creation. Both are served by your own treasury node — never by zupayments.com — so the token, the transfer code, and the coin flow stay entirely inside your trust domain.

Redirect mode — available today

No SDK required. Create the session server-side, then send the browser to the checkout_url from the response. The hosted page handles code display, live status, expiry, and returns the customer to your success_url / cancel_url.

// server-side: create the session (mode: "redirect")
const session = await createSession({ amount: "125", order_id: "order_8842", mode: "redirect" });

// client-side (or return a 302 from your server):
window.location = session.checkout_url;

Embed mode — on the roadmap

Heads up: the embeddable JS widget (an iframe mounted in your own page via a /sdk/zupayments.js bundle your node serves) is specified but not yet shipped. Use redirect mode today; watch the changelog before wiring the embed. The planned surface:
<!-- planned API — not yet available -->
<div id="pay"></div>
<script src="https://<your-node-host>/sdk/zupayments.js"></script>
<script>
  // sessionToken = the token (cs_…) from your backend's create call
  ZuPayments.mount(sessionToken, "#pay", { mode: "embed" });
</script>

Session API →   Integration docs →