Hosted API

api.suioutkit.xyz, v1 routes, deploy checklist, and merchant vs operator roles.

SuiOutKit is offered as SDK + hosted backend. Merchants integrate with npm install suioutkit; settlement runs on infrastructure operated by SuiOutKit, not on each merchant’s server.

API base URL

Environment Origin Mode Sui network
Production (planned) https://api.suioutkit.xyz "live" (default) mainnet
Staging https://api.staging.suioutkit.xyz "test" testnet
Local http://localhost:5000 "local" testnet

Currently operating on Testnet. The "live" endpoint maps to Mainnet for production go-live.

All checkout and payment routes are versioned under /v1/.

Example:

POST https://api.suioutkit.xyz/v1/checkout/session

Unversioned paths on the same host (not under /v1/):

Path Purpose
GET /health Load balancer / ops health check
GET /style.css Modal stylesheet (served by API host today)
GET /assets/* Payment method icons
GET /sdk/* SDK bundle and assets for HTML demos

v1 route map

Checkout (SDK)

Method Path
POST /v1/checkout/session
POST /v1/checkout/charge
GET /v1/checkout/status/:nonce
GET /v1/checkout/validate/:nonce
POST /v1/checkout/crypto/intent
POST /v1/checkout/crypto/confirm

OPay Callback (browser redirect)

Method Path
GET /v1/checkout/opay/callback

After OPay authorization, Flutterwave redirects the user’s browser to this route. The route renders an HTML page that posts a suioutkit_opay_complete message back to the opening window and auto-closes; settlement is handled by background polling and the Flutterwave webhook, not by this callback. The URL is derived from PUBLIC_URL.

Payments (SDK - SSE)

Method Path
GET /v1/payments/stream/:nonce

Webhooks (providers → SuiOutKit only)

Method Path
POST /v1/checkout/webhook
POST /v1/checkout/stripe-webhook

Configure Flutterwave and Stripe dashboards to these URLs on the production host.

Payment methods

Method Provider Notes
bank_transfer Flutterwave Virtual account details in modal
opay Flutterwave Requires phoneNumber at charge time
ussd Flutterwave USSD bank code; customer dials to complete payment
stripe Stripe Card element in modal
sui_wallet Sui + Payment Kit Wallet connect
outpay Payment Kit QR QR-based outPay flow

NGN customers see bank transfer, OPay, USSD, card, and crypto. GHS customers see bank transfer, card, and crypto. Other customers see card and crypto. Cross-region payments are supported - a USD-settled merchant can accept NGN from a Nigerian customer via Flutterwave’s local rails.

Merchant integration (no codebase required)

npm install suioutkit
import { SuiOutKit } from "suioutkit";

const sdk = new SuiOutKit({
  merchantAddress: "0xYOUR_MERCHANT_SUI_ADDRESS",
});

const session = await sdk.initCheckout({
  amount: 29.99,
  currency: "USD",
});

sdk.openModal(session);

40 fiat currencies supported - see Currencies for the full list.

Merchants do not need to clone this repo, run Docker, or manage backend/.env.

Implementation notes

  • SDK mode defaults to "live" (production). Use mode: "local" in the constructor for local development, or mode: "test" for staging.
  • API routes are versioned under /v1/. Clients and the SDK should use /v1/* for checkout and payment routes.
  • The backend mounts routers at /v1/checkout and /v1/payments. See sdk/src/config/api.ts for the shared path helper.

Operator deployment checklist

  • DNS: point api.suioutkit.xyz to your load balancer/ingress (for go-live)
  • Obtain and deploy a TLS certificate for the API hostname
  • Run the backend and Redis with production-grade secret management (vaults, K8s/Docker secrets)
  • Configure and fund the treasury; set contract IDs and operator keys in the environment
  • Configure provider webhooks to point to the production host:
    • Flutterwave: https://api.suioutkit.xyz/v1/checkout/webhook
    • Stripe: https://api.suioutkit.xyz/v1/checkout/stripe-webhook
  • Perform a smoke test (staging):
curl -sS https://api.staging.suioutkit.xyz/health

Self-hosting (operators only)

This repository can be self-hosted by operators. The monorepo backend is intended for operator-managed deployments (not required for merchants using the hosted API).

Quick start (development / testing):

docker compose up --build

Versioning note

All checkout and payment routes are versioned under /v1/. The SDK defaults to /v1/*; clients should use the versioned paths. Legacy unversioned paths (for example /api/checkout/*) are not supported for merchant integrations and should not be relied upon.