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). Usemode: "local"in the constructor for local development, ormode: "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/checkoutand/v1/payments. Seesdk/src/config/api.tsfor the shared path helper.
Operator deployment checklist
- DNS: point
api.suioutkit.xyzto 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
- Flutterwave:
- 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.