A Flutter plugin for the SumUp SDK. Supports card reader and Tap-to-Pay payments on Android and iOS.
Support this project by purchasing SumUp terminals through our affiliate links for your country:
- Argentina (es-AR): Acquista ora su SumUp
- Australia (en-AU): Buy now on SumUp
- Austria (de-AT): Jetzt kaufen auf SumUp
- Belgium (nl-BE): Koop nu op SumUp
- Belgium (fr-BE): Achetez maintenant sur SumUp
- Brazil (pt-BR): Compre agora na SumUp
- Bulgaria (bg-BG): Купете сега от SumUp
- Canada (en-CA): Buy now on SumUp
- Canada (fr-CA): Achetez maintenant sur SumUp
- Chile (es-CL): Compra ahora en SumUp
- Colombia (es-CO): Compra ahora en SumUp
- Croatia (hr-HR): Kupite sada na SumUp
- Cyprus (el-CY): Αγοράστε τώρα στο SumUp
- Czech Republic (cs-CZ): Kupte nyní na SumUp
- Denmark (da-DK): Køb nu på SumUp
- Estonia (et-EE): Osta kohe SumUpist
- Finland (fi-FI): Osta nyt SumUpista
- France (fr-FR): Achetez maintenant sur SumUp
- Germany (de-DE): Jetzt kaufen auf SumUp
- Greece (el-GR): Αγοράστε τώρα στο SumUp
- Hungary (hu-HU): Vásároljon most a SumUp-on
- Ireland (en-IE): Buy now on SumUp
- Italy (it-IT): Acquista ora su SumUp
- Latvia (lv-LV): Pērciet tagad SumUp
- Lithuania (lt-LT): Pirkite dabar SumUp
- Netherlands (nl-NL): Koop nu op SumUp
- Norway (nb-NO): Kjøp nå på SumUp
- Poland (pl-PL): Kup teraz na SumUp
- Portugal (pt-PT): Compre agora na SumUp
- Slovakia (sk-SK): Kúpte teraz na SumUp
- Slovenia (sl-SI): Kupite zdaj na SumUp
- Spain (es-ES): Compra ahora en SumUp
- Sweden (sv-SE): Köp nu på SumUp
- Switzerland (fr-CH): Achetez maintenant sur SumUp
- Switzerland (de-CH): Jetzt kaufen auf SumUp
- Switzerland (it-CH): Acquista ora su SumUp
- U.S. (en-US): Buy now on SumUp
- United Kingdom (en-GB): Buy now on SumUp
- Registered for a merchant account via SumUp's country websites (or received a test account).
- Received a SumUp card terminal: Solo, Air, Air Lite, PIN+ terminal, Chip & Signature reader, or SumUp Air Register.
- Requested an Affiliate (Access) Key and registered your application ID via the SumUp Dashboard.
- iOS deployment target 16.0+ (16.4+ for Tap-to-Pay).
- Android minSdkVersion 26+ (30+ for Tap-to-Pay).
Add sumup to your pubspec.yaml:
dependencies:
sumup:Import sumup:
import 'package:sumup/sumup.dart';// 1. Initialise the SDK with your Affiliate Key
await Sumup.init(affiliateKey);
// 2. Log in — either interactively or with an OAuth token
await Sumup.login();
// or
await Sumup.loginWithToken(token);
// 3. (Optional) Ask the user to pick / configure a card reader
await Sumup.openSettings();
// 4. Optionally warm up the reader before checkout
await Sumup.prepareForCheckout();
// 5. Run a checkout
var payment = SumupPayment(
title: 'Coffee',
total: 3.50,
currency: 'EUR',
foreignTransactionId: '', // leave empty to auto-generate a unique ID
saleItemsCount: 1,
skipSuccessScreen: false,
tip: 0.0,
);
var checkout = await Sumup.checkout(SumupPaymentRequest(payment));
// checkout.success — bool
// checkout.transactionCode — String
// checkout.amount — double (not available on Android Tap-to-Pay)
// checkout.currency — String (not available on Android Tap-to-Pay)
// checkout.products — List<SumupProduct>; iOS and Android card reader only
// checkout.merchantCode — String; Android Tap-to-Pay only
// checkout.cardScheme — String; Android Tap-to-Pay only
// checkout.errors — String; non-null when success is falseSumup.init(affiliateKey);
Sumup.login();
Sumup.loginWithToken(token);
Sumup.isLoggedIn;
Sumup.merchant;
Sumup.openSettings();
Sumup.prepareForCheckout();
Sumup.isTipOnCardReaderAvailable;
Sumup.isCardTypeRequired; // iOS only
Sumup.isCheckoutInProgress; // iOS only
// Card reader checkout
Sumup.checkout(SumupPaymentRequest(payment));
// Tap-to-Pay checkout
Sumup.checkout(SumupPaymentRequest(payment, paymentMethod: PaymentMethod.tapToPay));
Sumup.checkTapToPayAvailability(); // → TapToPayAvailabilityResult
Sumup.presentTapToPayActivation(); // iOS only; no-op on Android
Sumup.logout();Accept contactless payments directly on compatible smartphones, without any additional hardware.
Requirements:
- iPhone XS or later, iOS 16.4+
- Entitlement
com.apple.developer.proximity-reader.payment.acceptanceadded to your project (requires approval from Apple) - See Apple's HIG for Tap to Pay on iPhone
Setup:
- Log in with
Sumup.login()orSumup.loginWithToken(). - Call
Sumup.checkTapToPayAvailability(). IfisActivatedisfalse, callSumup.presentTapToPayActivation()to run the one-time activation flow. - Use
PaymentMethod.tapToPayin your request:var request = SumupPaymentRequest(payment, paymentMethod: PaymentMethod.tapToPay); var checkout = await Sumup.checkout(request);
Requirements:
- NFC-enabled physical device, Android 11 (API 30)+
- The TTP SDK is distributed via a private SumUp Maven repository — contact
integration@sumup.comto get credentials, then add them to yourgradle.properties:SUMUP_TTP_MAVEN_USERNAME=... SUMUP_TTP_MAVEN_PASSWORD=... - Add the
utopia-sdkdependency to your app'sbuild.gradle(same version used by the plugin) and configure the Maven repository. Seeexample/android/for a full working setup. - TTP requires a release build: the SDK performs device attestation and will refuse to run if USB Debugging or Developer Options are enabled.
Usage:
- You must use
Sumup.loginWithToken(accessToken)— token login is required for the TTP SDK to authenticate in the background. - Use
PaymentMethod.tapToPayin your request:var request = SumupPaymentRequest(payment, paymentMethod: PaymentMethod.tapToPay); var checkout = await Sumup.checkout(request);
Note: The Android TTP SDK does not return
amountorcurrencyin the transaction result. If you need them, query the SumUp Transactions API usingcheckout.transactionCodeorcheckout.foreignTransactionId.