> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulseshiga.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pulse Collect

> Collect stablecoin from your users and settle to fiat — one backend integration, your brand on every screen.

Pulse Collect lets your users pay in stablecoin while you receive fiat where you
need it — NGN to a user's named virtual account, USD to your omnibus. Your backend
creates a payment session, a drop-in component renders the money moment inside your
own UI, and settlement is confirmed by signed webhooks. Your brand is on every screen.

<Note>
  **What's live today — updated 2026-07-23.** The direct engine APIs — quotes, rates,
  offramp, onramp, and bank resolution, called from your backend with an `sk_` API key —
  are live and reconciled against the Pulse engine. The **embedded collection product**
  documented here (server-minted `cs_` client sessions, the drop-in components, and signed
  webhooks) is in **preview**: it runs against the sandbox today, and order lifecycle is
  observed by polling [`collectionOrders.retrieve`](/backend/orders) rather than by webhook.
  Treat the client-session and webhook shapes as provisional until they land on the engine —
  details in [Contract status](/reference/contract-status).
</Note>

## How the pieces fit

```mermaid theme={null}
flowchart TD
  A["Partner backend<br/>@pulsebyshiga/node · holds sk_"] -- "sk_ key" --> P["Pulse API"]
  P -- "signed webhooks" --> A
  A -- "session_token (cs_)" --> B["Partner frontend<br/>@pulsebyshiga/collect-*"]
  B -- "iframe / WebView" --> E["Hosted embed<br/>quote · QR · status · edge states"]
  P -- "cs_ token only" --> E
```

<Note>
  Your secret key (`sk_…`) and any user identity (BVN/NIN) stay **only** between
  your backend and Pulse. The browser only ever holds a single short-lived client
  session token (`cs_…`) scoped to one order — never the secret key.
</Note>

<Warning>
  **Credit a customer only after a verified `disbursement.completed` webhook.**
  Client-side callbacks such as `onSuccess` are UX signals — they can be spoofed.
  The signed webhook is the only source of truth for crediting a user.
</Warning>

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Zero to a working sandbox integration.
  </Card>

  <Card title="Backend integration" icon="server" href="/backend/install">
    Sessions, rates, and webhooks with `@pulsebyshiga/node`.
  </Card>

  <Card title="Render the payment moment" icon="browser" href="/render/choose-a-model">
    In-app, embedded, hosted, or fully headless.
  </Card>

  <Card title="SDK Reference" icon="book" href="/reference/node">
    Every method and webhook event.
  </Card>
</CardGroup>
