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 backend verifies the transaction, marks the checkout settled, and redirects to the merchant’s origin. 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.
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: 45000,
currency: "NGN",
});
sdk.openModal(session);
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.