jz_*_pk_*) and a client session from your backend (jaza.init → getSession / authEndpoint). Never put your secret key in the frontend.
Server-side: @jazadev/node — init for the handshake, consume for debits. The SDK mints short-lived top-up JWTs from the client session.
Source and examples live on GitHub: packages/@jaza-react. The Next.js sample under
example/ mirrors the full sign-in → init → top-up → consume path.Install
react ≥18, react-dom ≥18, @base-ui/react ≥1 (Drawer only — no Tailwind or shadcn required).
Framework notes
Provider setup
Top-up drawer
Checkout uses a Base UI Drawer:- ≤767px — slides up from the bottom
- Desktop — slides in from the right
Widgets and customization
Default UI works out of the box. Pass a children render prop (orItemComponent on the ledger) to wrap your own components while reusing SDK state.
JazaBalance
JazaTopUpButton
JazaLedger
JazaActionButton
Gate only — your BFF must call jaza.consume. See Gating actions.
Sandbox → live
TEST and LIVE customer ids are isolated. Remint withcreateCustomer under live keys and overwrite your host DB. See Authentication.