Recommended
Use the Cashier when you want an OMNO-hosted checkout that handles card, APM and crypto payments — with KYC and routing handled inside the flow — and supports both deposit and withdrawal in a single session. It is the recommended flow for new integrations.
- Your backend obtains an access token.
- Your backend creates a cashier session (
POST /public/cashier/session) and receives asessionId, a short-livedtoken, and URLs. - You pass the
sessionIdandtokento your frontend and open the cashier with the Web SDK (open({ sessionId, token })). - The customer completes payment in the cashier.
- The PSP processes the payment.
- OMNO delivers a webhook to your backend with the outcome.
- Your backend optionally verifies the status via Get Transaction Info.
⚠️ Warning: The final result comes from webhooks or Get Transaction Info, never from redirects or client-side events.
You create a session from your backend and open it on your frontend with the Web SDK. See Integrating the Cashier.
Handle these outcomes from webhooks / Get Transaction Info, not from the UI:
- Decline — the PSP declined the payment (
DECLINEDfor pay-in). - PSP failure — processing failed before or at the PSP (
FAILED). - Timeout — no final response in time (
TIMEOUT); may resolve later. [TBD: can TIMEOUT transition to SUCCESS later?] - Customer abandons — the customer closes the cashier without paying; no final webhook arrives. Reconcile via Get Transaction Info.
- Pending resolving asynchronously — status is
PENDING/PENDING_3DSand resolves later via webhook.