Add the Tap to Pay dependency to your build.gradle: `com.stripe:stripeterminal-taptopay` (the artifact was renamed in SDK v4; update to the new artifact name or it will not be updated).
Initialize the Terminal SDK, then discover readers using `TapToPayDiscoveryConfiguration` (renamed from `LocalMobileDiscoveryConfiguration` in SDK v4).
Build a `TapToPayConnectionConfiguration` that includes a `TapToPayReaderListener`, then call `Terminal.getInstance().connectReader()` to connect.
Verify device eligibility: `connectReader` checks that the device is not rooted, the bootloader is locked, a recent security update is installed, and Google Mobile Services are present.
Create a PaymentIntent server-side; call `collectPaymentMethod` then `confirmPaymentIntent`; the collection times out after 60 seconds and raises `CARD_READ_TIMED_OUT`.
For PIN collection (SDK v4.3.0 or later), ensure the account has PIN entry enabled; a `FEATURE_NOT_ENABLED_ON_ACCOUNT` error is raised if PIN is requested but not enabled.
Known gotchas
SDK v4 renamed `LocalMobileDiscoveryConfiguration` to `TapToPayDiscoveryConfiguration` and `connectLocalMobileReader` to `connectReader`; mixing old names with SDK v4 will not compile.
The background process used by the SDK was renamed to use your application's ID suffixed with `:stripetaptopay`; update any process allow-lists or MDM profiles that reference the old process name.
PIN support requires SDK v4.3.0 or later and must be enabled on your Stripe account; without it, PIN-required transactions will fail with `FEATURE_NOT_ENABLED_ON_ACCOUNT`.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp