Skip to main content

Package

For terminal transaction processing, Flutter has a companion package: flutter_tappa.

Installation

Add the dependency:
Then run:

Android Repository Setup

For Gradle < 7 (android/build.gradle):
For Gradle 7+ (android/settings.gradle):
Set credentials in gradle.properties:
Or set environment variables:

Android Manifest Configuration

Register the HCE service and receiver inside <application> in android/app/src/main/AndroidManifest.xml.

iOS Setup

Create .env in your project root:
Run:

Initialization

Initialize once near app startup.
Environment:
  • isSandBox: true for sandbox
  • isSandBox: false for production

Health Checks

Optional Security Behavior

Use setRequireAuth(true) if you want foreground access and biometric checks during payment access.

Register Card

You register cards with RegistrationData. Required fields:
  • walletId
  • paymentAppInstanceId
  • accountId
  • jwtToken
Optional fields:
  • secret
  • cardNumber
  • expiryDate
  • cardHolderName

Digitalization Fetch Pattern

If you already have your own card-management system, you can build and pass your own RegistrationData directly to registerCard using the required fields walletId, paymentAppInstanceId, accountId, and jwtToken. If you do not manage that payload yourself, fetch the onboarding or digitalization payload from your backend first, then pass it to registerCard. For endpoint details, see Card Digitalization Reference.

Card Management

Get Cards

Freeze or Unfreeze

Set isFreeze: false to unfreeze.

Delete Card

Wipe Wallet

Use this only after explicit user confirmation.

Manual Key Replenishment

Token Usage Summary

QR and Transactions

Generate EMV QR

amount is in the smallest unit and typically zero-padded.

Read Saved Transactions

getSavedTransactions() returns recent cached transactions, up to 5.

NFC and Settings

NFC Chip Indicator Helpers

Requirements

  • Flutter 2.5.0+
  • Android API 21+
  • iOS 13.0+
NFC-enabled device is required for NFC payments, but not for QR.

Troubleshooting

Initialization Fails

  • Confirm SDK repository credentials are set correctly on Android.
  • Confirm the iOS .netrc auth step was completed before pod install.
  • Check that you called init() before card operations.

NFC Not Working

  • Confirm the device supports NFC.
  • Confirm NFC is enabled in system settings.
  • Confirm your app is set as default payment app when required.
  • Verify the HCE service and receiver entries in AndroidManifest.xml.
  • Confirm the receiver class is africa.sudo.cloudcard_flutter.HceEventReceiver.

Card Registration Fails

  • Verify walletId, paymentAppInstanceId, accountId, and jwtToken.
  • Ensure the onboarding token is still valid.
  • Check that your backend is issuing tokens for the correct environment.

QR Generation Fails

  • Use a valid cardId.
  • Ensure amount is formatted correctly.

Empty Transaction List

  • getSavedTransactions() uses local cache and returns recent transactions only.
  • Complete at least one transaction flow first, then reload.

Support

Contact support@sudo.africa.