Skip to main content
Every session picks one of two fiat gates. Construct the client once (see Install & initialize), then mint a session with pulse.collectionSessions.create(payload, { idempotencyKey }).
The naira gate carries per-user identity: add user_ref and an account block — { provision: true, bvn, nin } for a first-time customer, so Pulse provisions their named virtual account, or { provision: false, virtual_account_ref } for a returning one.
BVN/NIN are sensitive — they travel server-to-server only in this call and never reach the browser.

Idempotency

Pass an idempotencyKey (e.g. keyed off your own deposit/order id) so a retried request — a network blip, a duplicate click — mints the same session instead of a second one.

The returned shape

Return only session.session_token to your frontend — it is the only Pulse credential the browser ever holds. See Render the payment moment for how the client consumes it, and Webhooks for how you confirm settlement.