Skip to main content
The payment surface — quote lock + countdown, QR, live status, edge states — renders inside a Pulse-controlled iframe dropped into your screen. It’s driven by the short-lived session_token (cs_…) your backend minted with pulse.collectionSessions.create (see Create a session).
Your keys, your users’ BVN/NIN, and order internals never enter your DOM — they stay inside the Pulse-controlled iframe. See Embed deployment for the hosting and security header requirements, and Theming for every theme token and strings placeholder.

Selection flow vs. a single pinned view

Selection flow is the default. The embed walks the user through Select asset → Choose network → Pay; their choice re-targets the order (new address, QR, and re-locked quote) before payment. To pin the asset/network you set at session creation and skip straight to the single payment view, pass flow: "direct".

Granular components

For partners composing their own payment screen around individual pieces, mount just one:
  • component: "quote" — the live locked quote and its re-lock control only.
  • component: "status" — progress and state banners only.

No bundler? Use the script tag

A script-tag build ships alongside the ESM package, for pages with no bundler: