Back to docs

Changelog

Stay up to date with the latest changes across Tapaya products.

1.13.0

Accept Android 1.13.0

ChangedFixed

Changed

  • A plugin bind that fails now says why. PluginUnavailable used to be raised behind a single

Fixed

  • Every failed bind leaked a ServiceConnection. bindService() registers the connection before
  • A SecurityException from bindService() — the plugin's service not exported to the host app,
  • A plugin whose process died before it connected — killed, updated, or force-stopped mid-bind —
1.12.0

Accept Android 1.12.0

Added

Added

  • The hosted receipt page's URL is now available from the payment flow itself, instead of only from
1.11.0

Accept Android 1.11.0

Added

Added

  • NfcPositionConfig.ExternalReader for setups where the antenna is on a separate reader that is
1.10.0

Accept Android 1.10.0

AddedChanged

Added

  • AcceptPlugin.activateTerminal() now throws NoTidsAvailableForMerchant when the merchant has
  • Dual-sided ("double-sided") device support: Accept.displays (all(), customerFacing(),

Changed

  • PayHostActivity now declares an empty taskAffinity, so a payment always starts a fresh task
  • The SDK's remote diagnostics now identify the device behind a log line: device id, brand, model,
1.9.1

Accept Android 1.9.1

Fixed

Fixed

  • Location fixes now fall back to the OS's last-known location when a fresh fix times out or the
1.9.0

Accept Android 1.9.0

Added

Added

  • AcceptPlugin.updateInfo() reports whether a newer version of the plugin app is available on
1.8.0

Accept Android 1.8.0

Added

Added

  • ReceiptDetails on PayResult.Success/PayResult.Declined exposes structured card-receipt
1.7.0

Accept Android 1.7.0

AddedChangedFixed

Added

  • Optional transactionTimeout (Duration) on AcceptPayments.pay() and setOptions() controls

Changed

  • AcceptPayments.refund() is now public (previously internal and unreachable by SDK consumers),

Fixed

  • Consumer ProGuard/R8 rules: AcceptException subtypes not ending in Exception are now kept by
1.6.0

Accept Android 1.6.0

AddedChangedFixed

Added

  • Optional tip (Long, minor units) on AcceptPayments.pay() — when set, the plugin skips its
  • PayResult.Success.authCode exposes the processor authorization code reported by the terminal.
  • ReceiptPrintBehavior on PaymentReceiptConfig.Show (Automatic, OnDemand, Disabled)
  • nfcPosition payment config hint (NfcPositionConfig) tells the companion where the device's
  • Optional metadata param on AcceptPayments.pay(), threaded through to the plugin and echoed

Changed

  • Payment extras are no longer logged in full (extras=...) to avoid leaking metadata values;

Fixed

  • Removed dead AcceptService/AcceptConfigProvider manifest entries.
1.5.0

Accept Android 1.5.0

AddedChanged

Added

  • Accept.sdk.version, Accept.sdk.isProduction, and Accept.sdk.deviceId() for diagnostics
  • PaymentReceiptConfig controls the receipt screen the companion shows after an *approved*

Changed

  • The plugin's terminal now pre-warms in the background. Pure optimization — silent no-op until the
1.4.3

Accept Android 1.4.3

AddedChanged

Added

  • Accept.setLogLevel(AcceptLogLevel) for finer control over diagnostic log verbosity, with the
  • Accept.setLogger(AcceptLogger?) to route consumer-facing SDK logs into a custom sink (Timber,

Changed

  • Accept.setDebugLoggingEnabled(enabled) is now shorthand for setLogLevel: true maps to
1.4.2

Accept Android 1.4.2

Changed

Changed

  • The published -sources.jar and API reference documentation now contain only the public API;
1.4.1

Accept Android 1.4.1

Fixed

Fixed

  • CI: publish the API reference documentation site on release. No functional changes to the SDK from
1.4.0

Accept Android 1.4.0

AddedChanged

Added

  • New Accept entry point exposing SDK lifecycle as an observable state: StateFlow<SdkState>.
  • AcceptAuth.authenticate(merchantToken) for merchant authentication.
  • AcceptSdk.minimumAmounts() for merchant-configured minimum payment amounts per currency.
  • AcceptMerchant surface: info(), config(), onboardingStatus(), availableCurrencies().
  • AcceptPayments.pay() returning a Flow<PaymentEvent> (Creating, Created, Launched,
  • PaymentEvent.Created — the payment token is now available as soon as the backend creates
  • AcceptPlugin surface for the Accept terminal companion app: isInstalled(), install(),
  • pay() now fails fast with PluginNotReadyForPayments if the plugin isn't authenticated and
  • Typed, sealed AcceptException hierarchy for public failure modes (auth, plugin, location,
  • Accept.clear() to reset locally persisted SDK state on logout.
  • Accept.setDebugLoggingEnabled() for opt-in internal debug logging.
  • Location fix caching to speed up payment creation.

Changed

  • pay() is now Flow-based instead of Activity-for-result; results are correlated by request
  • Terminal activation is now a suspend function guarded against concurrent launches
  • Default environment is SANDBOX; target production explicitly via
1.3.2

Accept Android 1.3.2

Fixed

Fixed

  • AcceptUnknownException is now always constructed with a message, improving error reporting.
  • Companion-app discovery now matches only com.tapaya.accept.* packages.
  • Removed a hardcoded demo token.
1.3.1

Accept Android 1.3.1

Changed

Changed

  • Updated sandbox base URL to api.sandbox.tapaya.com.
  • Example app rewritten to match the iOS example app flow: initialize → login (with auto-register on
1.3.0

Accept Android 1.3.0

AddedChanged

Added

  • Optional com.tapaya:accept-stripe module providing embedded Stripe Tap to Pay. The core
  • Companion-app management API on Accept: isCompanionAppInstalled(), pairWithCompanionApp()

Changed

  • Reduced size of Accept SDK.
  • Companion app hand-off now uses an Android Intent instead of a com.tapaya.accept:// deep link.