SUQODocs
User GuideAPI ReferenceSDKs

Flutter SDK

Official SUQO SDK for Flutter.

Collect a SUQO payment on a full-screen checkout screen in your Flutter app. Your backend creates a checkout session through SUQO's API and hands your app its id; this package opens SUQO's own checkout page for that id, lets the buyer pay, and tells you how it went.

Source: github.com/suqo-ai/suqo-flutter · pub.dev: suqo_checkout · v0.1.1

No credential in the app. This package makes no SUQO API calls of its own and holds no API key. The session id is the only thing it knows — single-use, short-lived, and carrying no buyer details — so nothing sensitive and nothing long-lived ever sits in your app bundle.

Install

flutter pub add suqo_checkout

That pulls in webview_flutter and url_launcher. The only platform configuration is one manifest block on Android, and only if your gateways hand off to bank apps. Requires Flutter >=3.3.0 and Dart >=2.18.0.

What's included

  • SuqoCheckout.open() — pushes a full-screen route and returns a Future that completes with exactly one SuqoOutcome: SuqoSuccess, SuqoFailure or SuqoClosed. No callbacks to wire; you await the result.
  • Exhaustive handling with when — one callback per outcome, so the compiler catches a case you forgot.
  • Sandbox by default — mode is SuqoMode.sandbox unless you say SuqoMode.live, so an app that names neither cannot take a live payment by accident.
  • An optional SuqoProvider — app-wide defaults only. There is no screen for it to own, so you do not need to mount it.
  • Gateway hand-off handled for you — bank and wallet deeplinks, including Android intent:// URLs, are passed to the OS, and the buyer returns to the screen exactly as they left it.
  • An ordinary route — the header's back button, Android's hardware back button and your own Navigator.of(context, rootNavigator: true).pop() all dismiss it.
The session must already have a customer. There is no buyer-detail argument anywhere on open. A session created without a customer shows the page's own "can't be paid" explanation and reports an unavailable event with SuqoUnavailableReason.noCustomer. Assign the customer on your backend, through the checkout-session API, before you hand the id to open.

Next

On this page