StableOps
FAQ

Which integration should I use, the SDK or hosted Checkout?

How to choose between building your own payment page with the SDKs and redirecting payers to the StableOps-hosted Checkout page.

StableOps gives you two ways to collect a stablecoin payment. Both create the same payment orders and settle through the same webhooks. The only difference is who builds the payment page.

  • Self-integration with the SDKs: you build the payment UI yourself with @stableops/api-sdk (create orders on your server) and @stableops/wallet-sdk (ask the payer's browser wallet to send the transfer).
  • Hosted Checkout: your server creates a Checkout Session and redirects the payer to the StableOps-hosted payment page. Wallet payment, manual/auto network selection, address display, and live status tracking are built in.

At a glance

Self-integration (SDK)Hosted Checkout
Who builds the payment pageYouStableOps
Frontend workBuild amount, address, status, wallet connectNone, one redirect
Server workCreate orders + handle webhooksCreate sessions + handle webhooks
UI control / brandingFullStableOps-branded hosted page
Wallet + manual transferYou wire it up (wallet SDK)Built in
Settlement source of truthWebhooksWebhooks
Best forEmbedded/custom checkout, full design controlShipping fast, minimal frontend

Choose hosted Checkout if…

  • You want the least frontend work. Your integration only needs to create sessions and handle webhooks, and you never build the payment UI.
  • You're fine with a StableOps-hosted, StableOps-branded page and a redirect out of your app and back via successUrl / cancelUrl.
  • You want wallet payment, automatic/manual network selection, the receiving address, and live status tracking to work out of the box.

See Checkout for the session-creation call and parameter guidance.

Choose self-integration if…

  • You want the payment experience embedded in your own app with full control over layout, branding, and copy.
  • You're already rendering your own cart/checkout and don't want a redirect.
  • You want to drive the on-chain transfer directly from your frontend with @stableops/wallet-sdk, or present paymentInstructions for manual transfer in your own UI.

The Quickstart walks through this path end to end.

What's the same either way

Both paths share the entire settlement engine, so the decision is only about the payment page, not about how money is tracked:

  • One order model. Both create the same payment orders and advance through created → detected → confirmed → finalized.
  • The same receiving addresses. Deposits land on the on-chain addresses you manage; see BYO addresses.
  • Non-custodial either way. StableOps never holds your funds, never touches your private keys, and never signs or moves transactions on your behalf. Payers transfer straight to the addresses you control; StableOps only detects and reconciles those on-chain payments.
  • Webhooks are the source of truth. Fulfill on payment.confirmed / payment.finalized webhooks in both cases. Never trust a successUrl redirect or a manual "I sent it" claim as proof of payment.

Because the backend is identical, you can start with Checkout and migrate to self-integration later (or run both) without changing how you reconcile payments.

Still not sure?

Try hosted Checkout on the Checkout page, and the SDK integration in the Playground. Start with hosted Checkout—it's the fastest path to a working payment, and switching to the SDK later won't change your webhook or reconciliation code.

How is this guide?

Last updated

On this page