Skip to main content

createRampClient

The five functions

ramp.createSession(input)

Routes: POST /api/partner/v0/sessions (create), GET /api/partner/v0/sessions/{sessionRef} (status).

ramp.attachPaneBridge(handlers)

Returns a PaneBridge with .close(), .sendZecSendResult(requestId, txid), .sendZecSendCancel(requestId, reason), .getStats().

ramp.getStatus(sessionRef, opts?)

Pass { statusTicket } explicitly if running more than 16 concurrent sessions or after a fresh client process.

ramp.restoreSession(saved)

Revalidates the full session and origin, restores the status ticket without a POST.

ramp.parseReturnUrl(url)

Missing fields return null; only unparseable input throws InvalidReturnUrl.

ramp.isAllowedPaneUrl(url)

Returns boolean. Checks against configured pane origins.

Bridge events (pane to host)

Envelope: { v: 1, type, sessionRef, payload }

Host to pane replies

Transaction arrays: 1-32 individual 64-hex IDs. Evidence for reconciliation, not proof of settlement.

Send request payload

Session lifecycle

created -> opened -> user-active -> { settled | failed | expired | cancelled } expired is reversible — keep the saved session and journal for late-deposit reconciliation.

Error codes

All SDK errors extend PspError. Branch on error.code, never on message text.

Versioning

0.x until pilot completes. PSP-v1 frozen at 0.1.0: additive changes only afterward. Breaking change = new envelope version (psp/v2). ESM, strictly typed, React-free. Targets React Native, Electron, browsers.