Skip to content

Sessions & tokens

Omno uses two different tokens. They have different purposes, lifetimes and scopes — keep them separate.

The two tokens

API access tokenCashier session token
PurposeAuthenticate server-to-server API callsAuthorize opening one Cashier session
IssuerToken endpoint (sso.omno.com)Returned by POST /v3/public/cashier/session
FormatOAuth 2.0 bearer (JWT)JWT
Lifetime~300 seconds (expires_in)15 minutes, from session creation
Where it livesYour backend onlyCreated on your backend, passed to your frontend to open the Cashier
ScopeAll /v3/public/... calls your credentials allowOnly its own Cashier session — it cannot open or act on any other

The Cashier token

  • It is mandatory: open the Cashier with open({ sessionId, token }). Opening without the token is rejected.
  • It is a JWT, but treat it as opaque — don't decode, validate or inspect it. Omno verifies it.
  • It is bound to its session and expires with the session (15 minutes). It has no separate expiry.
  • You may reuse it for the same session until the session expires — for a reload, a refresh, or switching between deposit and withdrawal.

Session lifetime

create session (token issued)

open({ sessionId, token })

customer pays

15 min

15 min

15 min

create a new session

Created

Opened

InProgress

Expired

NewSession

create session (token issued)

open({ sessionId, token })

customer pays

15 min

15 min

15 min

create a new session

Created

Opened

InProgress

Expired

NewSession

A session (and its token) is valid for 15 minutes from creation. When it expires, the Cashier shows a session-expired screen; create a new session and call open() again.

Rules

  • Create the session right before you open the Cashier — for example when the player clicks Deposit — not at page load. This avoids customers hitting expiry mid-flow.
  • Create it server-side. Never create sessions from the browser.
  • Never log or store the token. Pass it straight through from your backend to the frontend and into the SDK.
  • On expiry, create a new session — there is no refresh for an expired session.

Build it →