2026-10-29 Changelog
Android
Mobile Payments SDK
Android Mobile Payments SDK 2.7.0
Important
- Breaking: Your application must use the Android Gradle Plugin version 9.1.0 or later, which requires Gradle 9.3.1 or later. The SDK now depends on Jetpack Compose 1.12, which doesn't support earlier versions of the Android Gradle Plugin. The Android Gradle Plugin 9 includes built-in Kotlin support, so remove the
org.jetbrains.kotlin.android plugin when you upgrade.
- Breaking: Your application's
compileSdkVersion must be 37. The SDK's libraries declare a minimum compile SDK of 37. The minSdkVersion (28) and targetSdkVersion (36) requirements haven't changed.
- Breaking:
CurrencyCode now lists only the currencies of the markets Square operates in: AUD, CAD, EUR, GBP, JPY, and USD. All other ISO 4217 codes were removed. Square already rejected payments in those currencies, so remove any references to them from your code.
- Breaking:
SdkSettings has a new required mpocVersion parameter, which reports the SDK's MPoC version. Code that constructs SdkSettings directly, such as a test fake, must pass it.
- If you use exhaustive
when expressions on ReaderChangedEvent.Change, ReaderUnavailableReason, or Payment.SourceType, add branches for the new values below.
- Added the
ReaderInfo.ReaderWarning enum with three thermal-fault warnings: USB_THERMAL_FAULT, THERMAL_FAULT_DISCONNECT_USB, and THERMAL_FAULT_POWER_OFF.
- Added the
ReaderChangedEvent.Change.WARNING_RAISED event and the ReaderInfo.warnings property. The property lists every warning the reader has reported during the current connection and is cleared when the reader disconnects. A reader that powers itself off because it is overheating reports as disconnected without THERMAL_FAULT_POWER_OFF, so act on WARNING_RAISED promptly.
- Added the
MICROPHONE_PERMISSION_REQUIRED value to ReaderUnavailableReason. Magstripe readers report it when your application hasn't been granted microphone permission.
- Added the
Payment.SourceType.UNKNOWN value for payments whose source type this version of the SDK doesn't recognize.
- Fixed an issue where pressing the system Back button on the manual card entry or cash entry screen closed the payment screen and left the payment stuck. Back now returns to the payment prompt.
PaymentHandle.cancel() now returns NO_PAYMENT_IN_PROGRESS once the payment has finished or has already been canceled.