{"_id":"@capgo/capacitor-stripe-terminal","_rev":"5-567dca4884ce3fa5ee1ba582cd6c7736","name":"@capgo/capacitor-stripe-terminal","dist-tags":{"latest":"8.0.4"},"versions":{"8.0.1":{"name":"@capgo/capacitor-stripe-terminal","version":"8.0.1","keywords":["capacitor","plugin","stripe","terminal","tap-to-pay"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-stripe-terminal@8.0.1","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/stripe-terminal/","bugs":{"url":"https://github.com/Cap-go/capacitor-stripe-terminal/issues"},"dist":{"shasum":"93fc913d17289def7031f0df53139dce269ebafe","tarball":"https://registry.npmjs.org/@capgo/capacitor-stripe-terminal/-/capacitor-stripe-terminal-8.0.1.tgz","fileCount":49,"integrity":"sha512-IlaKgZ5vLHVrA33CHDM93CFGdNbMtnfcgenW9W8IhiTAeislt5azsZp6Kn4hFy/q4jY3FbEAh6asng6aWWR0mw==","signatures":[{"sig":"MEUCIE6yqI2RMR+ygg/teG6v2JQOSx7kPDRonFw8wUHXJVWvAiEAgV8uPoYydS/kwB54WlVFGSopfP8Alxu84SPEY1AShdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-stripe-terminal@8.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":525714},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"a581983f49f61848116ed5e4a1b13b3db4c0f7a5","scripts":{"fmt":"bun run eslint -- --fix && bun run prettier -- --write && bun run swiftlint -- --fix --format","lint":"bun run eslint && bun run prettier -- --check && bun run swiftlint -- lint","build":"bun run clean && bun run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"bun run verify:ios && bun run verify:android && bun run verify:web","prettier":"prettier-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorStripeTerminal -destination generic/platform=iOS","verify:web":"bun run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","example:build":"bun run build && cd example-app && bun install --frozen-lockfile && bun run build","prepublishOnly":"bun run build","verify:android":"cd android && ./gradlew clean build test && cd ..","example:install":"cd example-app && bun install --frozen-lockfile"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-stripe-terminal.git","type":"git"},"_npmVersion":"11.13.0","description":"Capacitor plugin for Stripe Terminal in-person payments.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@stripe/terminal-js":"^0.24.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-stripe-terminal_8.0.1_1782249791301_0.5855134432349078","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@capgo/capacitor-stripe-terminal","version":"8.0.2","keywords":["capacitor","plugin","stripe","terminal","tap-to-pay"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-stripe-terminal@8.0.2","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/stripe-terminal/","bugs":{"url":"https://github.com/Cap-go/capacitor-stripe-terminal/issues"},"dist":{"shasum":"0931b4160f33f7a5478414ee6123f5f4150e405e","tarball":"https://registry.npmjs.org/@capgo/capacitor-stripe-terminal/-/capacitor-stripe-terminal-8.0.2.tgz","fileCount":49,"integrity":"sha512-70hWBpHa/zZddX2ZNJXbn8/5zbZEjpAFbJrBHlzgytE9i6WCkGMIWzOE3oVrWP69+r6jghI5HGRMd900jk8BAw==","signatures":[{"sig":"MEUCIBLdxD08mYa9F94q25qSp/QMo79bTDoW0S+8KW9IQNq9AiEAnS61KXfGVoucLoEI3CwGFZYu3wml0hrk7c2PgdWefrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-stripe-terminal@8.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526388},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"4523397efb0385553aa9a6aee7ca9a3aaed0ea12","scripts":{"fmt":"bun run eslint -- --fix && bun run prettier -- --write && bun run swiftlint -- --fix --format","lint":"bun run eslint && bun run prettier -- --check && bun run swiftlint -- lint","build":"bun run clean && bun run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"bun run verify:ios && bun run verify:android && bun run verify:web","prettier":"prettier-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorStripeTerminal -destination generic/platform=iOS","verify:web":"bun run build","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","example:build":"bun run build && cd example-app && bun install --frozen-lockfile && bun run build","prepublishOnly":"bun run build","verify:android":"cd android && ./gradlew clean build test && cd ..","example:install":"cd example-app && bun install --frozen-lockfile"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-stripe-terminal.git","type":"git"},"_npmVersion":"11.13.0","description":"Capacitor plugin for Stripe Terminal in-person payments.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@stripe/terminal-js":"^0.24.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-stripe-terminal_8.0.2_1782341508630_0.16959090444505565","host":"s3://npm-registry-packages-npm-production"}},"8.0.3":{"name":"@capgo/capacitor-stripe-terminal","version":"8.0.3","keywords":["capacitor","plugin","stripe","terminal","tap-to-pay"],"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","_id":"@capgo/capacitor-stripe-terminal@8.0.3","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"}],"homepage":"https://capgo.app/docs/plugins/stripe-terminal/","bugs":{"url":"https://github.com/Cap-go/capacitor-stripe-terminal/issues"},"dist":{"shasum":"257b026d9839ac4744549600b0c78288b36b8ec9","tarball":"https://registry.npmjs.org/@capgo/capacitor-stripe-terminal/-/capacitor-stripe-terminal-8.0.3.tgz","fileCount":49,"integrity":"sha512-7dwuYQZGbOaqCaGuOapvB7S++5xXxjVf+6OOoUCsiLyIcRUhCBYCr8RTcWpRP/SWioQAl8pIphqD3F3QC/wuFg==","signatures":[{"sig":"MEQCIBvBcSn5MoaZX3EiKd0z77utlxpPSRP9ID1LqxHFxP+YAiBl8+GaG8plxm/sGqssDU3zoD1nJT5dGs6gjvkEYnYu4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-stripe-terminal@8.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":526450},"main":"dist/plugin.cjs.js","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"8d34c25b7610afd0b3d97b7f890439ba5457bc3c","scripts":{"fmt":"bun run eslint -- --fix && bun run prettier -- --write && bun run swiftlint -- --fix --format","lint":"bun run eslint && bun run prettier -- --check && bun run swiftlint -- lint","build":"bun run clean && bun run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"bun run verify:ios && bun run verify:android && bun run verify:web","prettier":"prettier-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorStripeTerminal -destination generic/platform=iOS","verify:web":"bun run build","changelog:ai":"node scripts/generate-ai-changelog.mjs","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","example:build":"bun run build && cd example-app && bun install --frozen-lockfile && bun run build","prepublishOnly":"bun run build","verify:android":"cd android && ./gradlew clean build test && cd ..","example:install":"cd example-app && bun install --frozen-lockfile"},"_npmUser":{"name":"riderx","email":"martin.donadieu@hey.com"},"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-stripe-terminal.git","type":"git"},"_npmVersion":"11.16.0","description":"Capacitor plugin for Stripe Terminal in-person payments.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@stripe/terminal-js":"^0.24.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/capacitor-stripe-terminal_8.0.3_1783763249814_0.3223493987016288","host":"s3://npm-registry-packages-npm-production"}},"8.0.4":{"_id":"@capgo/capacitor-stripe-terminal@8.0.4","bugs":{"url":"https://github.com/Cap-go/capacitor-stripe-terminal/issues"},"dist":{"shasum":"6e8581bdda8157d193759388c8608aa523cc8db1","tarball":"https://registry.npmjs.org/@capgo/capacitor-stripe-terminal/-/capacitor-stripe-terminal-8.0.4.tgz","integrity":"sha512-1WW+pentxNU+KB60lNT7C1GC0MvFnDkpiioF6LwDEz1g9YLJmSg0+RZZfLS+1Rr8v961XeKBpbhtvBMPHpCGGA==","fileCount":49,"unpackedSize":526521,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@capgo%2fcapacitor-stripe-terminal@8.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHs+VC+s/WGniUBHa8p1sxal1/Ii3oK6YCB7woJmOWkAAiEA6xdRIl13YqSZK5Z+w9hZPOqbvTa02JTEshrnzBWC8Ro="}]},"main":"dist/plugin.cjs.js","name":"@capgo/capacitor-stripe-terminal","types":"dist/esm/index.d.ts","unpkg":"dist/plugin.js","author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"module":"dist/esm/index.js","engines":{"node":">=22.0.0"},"gitHead":"918e32a4d7914ce89385e1290a036dee4a511312","license":"MPL-2.0","scripts":{"fmt":"bun run eslint -- --fix && bun run prettier -- --write && bun run swiftlint -- --fix --format","lint":"bun run eslint && bun run prettier -- --check && bun run swiftlint -- lint","build":"bun run clean && bun run docgen && tsc && rollup -c rollup.config.mjs","clean":"rimraf ./dist","watch":"tsc --watch","docgen":"docgen --api StripeTerminalPlugin --output-readme README.md --output-json dist/docs.json","eslint":"eslint . --ext ts","verify":"bun run verify:ios && bun run verify:android && bun run verify:web","prettier":"prettier-pretty-check \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java","swiftlint":"node-swiftlint","verify:ios":"xcodebuild -scheme CapgoCapacitorStripeTerminal -destination generic/platform=iOS","verify:web":"bun run build","changelog:ai":"node scripts/generate-ai-changelog.mjs","check:wiring":"node scripts/check-capacitor-plugin-wiring.mjs","example:build":"bun run build && cd example-app && bun install --frozen-lockfile && bun run build","prepublishOnly":"bun run build","verify:android":"cd android && ./gradlew clean build test && cd ..","example:install":"cd example-app && bun install --frozen-lockfile","check:cap9-deprecated":"node scripts/check-cap9-deprecated.mjs"},"version":"8.0.4","_npmUser":{"name":"torichancapgo","email":"tori@capgo.app","approver":{"name":"torichancapgo","email":"tori@capgo.app"}},"homepage":"https://capgo.app/docs/plugins/stripe-terminal/","keywords":["capacitor","plugin","stripe","terminal","tap-to-pay"],"prettier":"@ionic/prettier-config","capacitor":{"ios":{"src":"ios"},"android":{"src":"android"}},"swiftlint":"@ionic/swiftlint-config","repository":{"url":"git+https://github.com/Cap-go/capacitor-stripe-terminal.git","type":"git"},"_npmVersion":"11.19.1","description":"Capacitor plugin for Stripe Terminal in-person payments.","directories":{},"maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"},{"name":"torichancapgo","email":"tori@capgo.app"}],"_nodeVersion":"24.20.0","dependencies":{"@stripe/terminal-js":"^0.24.0"},"eslintConfig":{"extends":"@ionic/eslint-config/recommended"},"devDependencies":{"eslint":"^8.57.1","rimraf":"^6.1.0","rollup":"^4.53.2","prettier":"^3.6.2","swiftlint":"^2.0.0","typescript":"^5.9.3","@types/node":"^24.10.1","@capacitor/ios":"^8.0.0","@capacitor/core":"^8.0.0","@capacitor/docgen":"^0.3.1","@capacitor/android":"^8.0.0","@ionic/eslint-config":"^0.4.0","eslint-plugin-import":"^2.31.0","prettier-plugin-java":"^2.7.7","prettier-pretty-check":"^0.2.0","@ionic/prettier-config":"^4.0.0","@ionic/swiftlint-config":"^2.0.0"},"peerDependencies":{"@capacitor/core":">=8.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capacitor-stripe-terminal_8.0.4_1789495704741_0.5759283882752326"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T21:23:11.133Z","modified":"2026-09-15T18:08:25.270Z","8.0.1":"2026-06-23T21:23:11.453Z","8.0.2":"2026-06-24T22:51:48.778Z","8.0.3":"2026-07-11T09:47:29.973Z","8.0.4":"2026-09-15T18:08:24.841Z"},"bugs":{"url":"https://github.com/Cap-go/capacitor-stripe-terminal/issues"},"author":{"name":"Martin Donadieu","email":"martin@capgo.app"},"license":"MPL-2.0","homepage":"https://capgo.app/docs/plugins/stripe-terminal/","keywords":["capacitor","plugin","stripe","terminal","tap-to-pay"],"repository":{"url":"git+https://github.com/Cap-go/capacitor-stripe-terminal.git","type":"git"},"description":"Capacitor plugin for Stripe Terminal in-person payments.","maintainers":[{"name":"riderx","email":"martin.donadieu@hey.com"},{"name":"torichancapgo","email":"tori@capgo.app"}],"readme":"# @capgo/capacitor-stripe-terminal\n\n<a href=\"https://capgo.app/\"><img src=\"https://capgo.app/readme-banner.svg?repo=Cap-go/capacitor-stripe-terminal\" alt=\"Capgo - Instant updates for Capacitor\" /></a>\n\n<div align=\"center\">\n  <h2>\n    <a href=\"https://capgo.app/?ref=plugin_stripe_terminal\"> ➡️ Get Instant updates for your App with Capgo</a>\n  </h2>\n  <h2>\n    <a href=\"https://capgo.app/consulting/?ref=plugin_stripe_terminal\"> Missing a feature? We'll build the plugin for you 💪</a>\n  </h2>\n</div>\n\nCapacitor plugin for Stripe Terminal — connect readers, collect in-person payments, and manage Tap to Pay, Bluetooth, USB, and internet readers on iOS and Android.\n\n## Why this plugin\n\nThis plugin is a maintained fork of [@capacitor-community/stripe](https://github.com/capacitor-community/stripe). Capgo split the community project into focused packages — each with its own docs, example app, and CI.\n\nWe track open issues and pull requests in the community repository, merge relevant fixes into our repos, and ship them on current Stripe SDKs. Our goal is to be more reactive than the community maintainers when bugs land or platforms change.\n\nThis package covers **Stripe Terminal** — Tap to Pay, Bluetooth, USB, and internet readers.\n\nIf you use the community package today, this is the maintained upgrade path from the community package.\n\n## Documentation\n\nThe most complete documentation is available here: https://capgo.app/docs/plugins/stripe-terminal/\n\n## Compatibility\n\n| Plugin version | Capacitor compatibility | Maintained |\n| -------------- | ----------------------- | ---------- |\n| v8.*.*         | v8.*.*                  | ✅         |\n| v7.*.*         | v7.*.*                  | On demand  |\n\n> **Note:** The major version of this plugin follows the major version of Capacitor. Use the version that matches your Capacitor installation (e.g., plugin v8 for Capacitor 8). Only the latest major version is actively maintained.\n\n## Install\n\nYou can use our AI-Assisted Setup to install the plugin. Add the Capgo skills to your AI tool using the following command:\n\n```bash\nnpx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins\n```\n\nThen use the following prompt:\n\n```text\nUse the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-stripe-terminal` plugin in my project.\n```\n\nIf you prefer Manual Setup, install the plugin by running the following commands and follow the platform-specific instructions below:\n\n```bash\n# Install (choose one)\nnpm install @capgo/capacitor-stripe-terminal\npnpm add @capgo/capacitor-stripe-terminal\nyarn add @capgo/capacitor-stripe-terminal\nbun add @capgo/capacitor-stripe-terminal\n\n# Then sync Capacitor (choose one)\nnpx cap sync\npnpm exec cap sync\nyarn cap sync\nbunx cap sync\n```\n\n## Platform setup\n\nWe have confirmed that it works well in the demo project. Refer to:\n\n- Tap to Pay / Internet / Bluetooth demo: https://github.com/Cap-go/capacitor-stripe-terminal/tree/main/demo/angular\n- App on Devices demo: https://github.com/Cap-go/capacitor-stripe-terminal/tree/main/demo/app-on-devices\n\n### Web\n\nNo additional steps are necessary.\n\n### iOS\n\nNo additional steps are necessary.\n\n### Android\n\nAdd permissions to your `android/app/src/main/AndroidManifest.xml` file:\n\n```diff\n+ <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />\n+ <uses-permission android:name=\"android.permission.BLUETOOTH\" android:maxSdkVersion=\"30\" />\n+ <uses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" android:maxSdkVersion=\"30\" />\n+ <uses-permission android:name=\"android.permission.BLUETOOTH_SCAN\" />\n+ <uses-permission android:name=\"android.permission.BLUETOOTH_ADVERTISE\" />\n+ <uses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\" />\n```\n\nAnd update minSdkVersion to 26 in your `android/app/build.gradle` file:\n\n```diff\n  ext {\n-    minSdkVersion = 23\n+    minSdkVersion = 26\n```\n\nIf you are developing apps for Stripe Android devices (e.g. Stripe Reader S700), follow the Stripe's documentation for the client-side setup.\n- [Stripe - Android configure your app](https://docs.stripe.com/terminal/features/apps-on-devices/build?terminal-sdk-platform=android&lang-android=java#setup-app)\n\n\n## Usage\n\n### Simple collect payment\n\n#### Use plugin client\n\n```typescript\n(async ()=> {\n  /**\n   * tokenProviderEndpoint: The URL of your backend to provide a token. Use Post request to get a token.\n   */\n  await StripeTerminal.initialize({ tokenProviderEndpoint: 'https://example.com/token', isTest: true })\n  const { readers } = await StripeTerminal.discoverReaders({\n    type: TerminalConnectTypes.TapToPay,\n    locationId: \"**************\",\n  });\n  await StripeTerminal.connectReader({\n    reader: readers[0],\n  });\n  // Collect payment intent\n  await StripeTerminal.collectPaymentMethod({ paymentIntent: \"**************\" });\n  // Process and confirm payment intent\n  await StripeTerminal.confirmPaymentIntent();\n  // disconnect reader\n  await StripeTerminal.disconnectReader();\n});\n```\n\n#### set string token\n\n```typescript\n(async ()=> {\n  // run before StripeTerminal.initialize\n  StripeTerminal.addListener(TerminalEventsEnum.RequestedConnectionToken, async () => {\n    const { token } = (await fetch(\"https://example.com/token\")).json();\n    StripeTerminal.setConnectionToken({ token });\n  });\n});\n(async ()=> {\n  await StripeTerminal.initialize({ isTest: true })\n  const { readers } = await StripeTerminal.discoverReaders({\n    type: TerminalConnectTypes.TapToPay,\n    locationId: \"**************\",\n  });\n  await StripeTerminal.connectReader({\n    reader: readers[0],\n  });\n  // Collect payment intent\n  await StripeTerminal.collectPaymentMethod({ paymentIntent: \"**************\" });\n  // Process and confirm payment intent\n  await StripeTerminal.confirmPaymentIntent();\n  // disconnect reader\n  await StripeTerminal.disconnectReader();\n});\n````\n\n### Listen device update\n\nThe device will **if necessary** automatically start updating itself. It is important to handle them as needed so as not to disrupt business operations.\n\n```ts\n(async ()=> {\n  StripeTerminal.addListener(TerminalEventsEnum.ReportAvailableUpdate, async ({ update }) => {\n    if (window.confirm(\"Will you update the device?\")) {\n      await StripeTerminal.installAvailableUpdate();\n    }\n  });\n  StripeTerminal.addListener(TerminalEventsEnum.StartInstallingUpdate, async ({ update }) => {\n    console.log(update);\n    if (window.confirm(\"Will you interrupt the update?\")) {\n      StripeTerminal.cancelInstallUpdate();\n    }\n  });\n  StripeTerminal.addListener(TerminalEventsEnum.ReaderSoftwareUpdateProgress, async ({ progress }) => {\n    // be able to use this value to create a progress bar.\n  });\n  StripeTerminal.addListener(TerminalEventsEnum.FinishInstallingUpdate, async ({ update }) => {\n    console.log(update);\n  });\n});\n```\n\n### Get terminal processing information\n\nFor devices without leader screen, processing information must be retrieved and displayed on the mobile device. Get it with a listener.\n\n```ts\n/**\n * Listen battery level. If the battery level is low, you can notify the user to charge the device.\n */\nStripeTerminal.addListener(TerminalEventsEnum.BatteryLevel, async ({ level, charging, status }) => {\n  console.log(level, charging, status);\n});\n\n/**\n * Listen reader event. You can get the reader's status and display it on the mobile device.\n */\nStripeTerminal.addListener(TerminalEventsEnum.ReaderEvent, async ({ event }) => {\n  console.log(event);\n});\n\n/**\n * Listen display message. You can get the message to be displayed on the mobile device.\n */\nStripeTerminal.addListener(TerminalEventsEnum.RequestDisplayMessage, async ({ messageType, message }) => {\n  console.log(messageType, message);\n});\n\n/**\n * Listen reader input. You can get the message what can be used for payment.\n */\nStripeTerminal.addListener(TerminalEventsEnum.RequestReaderInput, async ({ options, message }) => {\n  console.log(options, message);\n});\n```\n\n### More details on the leader screen\n\nThe contents of the payment can be shown on the display. This requires a leader screen on the device.\nThis should be run before `collectPaymentMethod`.\n\n```ts\nawait StripeTerminal.setReaderDisplay({\n  currency: 'usd',\n  tax: 0,\n  total: 1000,\n  lineItems: [{\n    displayName: 'winecode',\n    quantity: 2,\n    amount: 500\n  }] as CartLineItem[],\n})\n\n// Of course, erasure is also possible.\nawait StripeTerminal.clearReaderDisplay();\n```\n\n### Simulate reader status changes for testing\n\nTo implement updates, etc., we are facilitating an API to change the state of the simulator. This should be done before discoverReaders.\n\n```ts\nawait StripeTerminal.setSimulatorConfiguration({ update: SimulateReaderUpdate.UpdateAvailable })\n```\n\n## API\n\n<docgen-index>\n\n* [`initialize(...)`](#initialize)\n* [`discoverReaders(...)`](#discoverreaders)\n* [`setConnectionToken(...)`](#setconnectiontoken)\n* [`setSimulatorConfiguration(...)`](#setsimulatorconfiguration)\n* [`connectReader(...)`](#connectreader)\n* [`getConnectedReader()`](#getconnectedreader)\n* [`disconnectReader()`](#disconnectreader)\n* [`cancelDiscoverReaders()`](#canceldiscoverreaders)\n* [`collectPaymentMethod(...)`](#collectpaymentmethod)\n* [`cancelCollectPaymentMethod()`](#cancelcollectpaymentmethod)\n* [`confirmPaymentIntent()`](#confirmpaymentintent)\n* [`installAvailableUpdate()`](#installavailableupdate)\n* [`cancelInstallUpdate()`](#cancelinstallupdate)\n* [`setReaderDisplay(...)`](#setreaderdisplay)\n* [`clearReaderDisplay()`](#clearreaderdisplay)\n* [`rebootReader()`](#rebootreader)\n* [`cancelReaderReconnection()`](#cancelreaderreconnection)\n* [`setTapToPayUxConfiguration(...)`](#settaptopayuxconfiguration)\n* [`addListener(TerminalEventsEnum.Loaded, ...)`](#addlistenerterminaleventsenumloaded-)\n* [`addListener(TerminalEventsEnum.RequestedConnectionToken, ...)`](#addlistenerterminaleventsenumrequestedconnectiontoken-)\n* [`addListener(TerminalEventsEnum.DiscoveredReaders, ...)`](#addlistenerterminaleventsenumdiscoveredreaders-)\n* [`addListener(TerminalEventsEnum.ConnectedReader, ...)`](#addlistenerterminaleventsenumconnectedreader-)\n* [`addListener(TerminalEventsEnum.DisconnectedReader, ...)`](#addlistenerterminaleventsenumdisconnectedreader-)\n* [`addListener(TerminalEventsEnum.ConnectionStatusChange, ...)`](#addlistenerterminaleventsenumconnectionstatuschange-)\n* [`addListener(TerminalEventsEnum.UnexpectedReaderDisconnect, ...)`](#addlistenerterminaleventsenumunexpectedreaderdisconnect-)\n* [`addListener(TerminalEventsEnum.ConfirmedPaymentIntent, ...)`](#addlistenerterminaleventsenumconfirmedpaymentintent-)\n* [`addListener(TerminalEventsEnum.CollectedPaymentIntent, ...)`](#addlistenerterminaleventsenumcollectedpaymentintent-)\n* [`addListener(TerminalEventsEnum.Canceled, ...)`](#addlistenerterminaleventsenumcanceled-)\n* [`addListener(TerminalEventsEnum.Failed, ...)`](#addlistenerterminaleventsenumfailed-)\n* [`addListener(TerminalEventsEnum.ReportAvailableUpdate, ...)`](#addlistenerterminaleventsenumreportavailableupdate-)\n* [`addListener(TerminalEventsEnum.StartInstallingUpdate, ...)`](#addlistenerterminaleventsenumstartinstallingupdate-)\n* [`addListener(TerminalEventsEnum.ReaderSoftwareUpdateProgress, ...)`](#addlistenerterminaleventsenumreadersoftwareupdateprogress-)\n* [`addListener(TerminalEventsEnum.FinishInstallingUpdate, ...)`](#addlistenerterminaleventsenumfinishinstallingupdate-)\n* [`addListener(TerminalEventsEnum.BatteryLevel, ...)`](#addlistenerterminaleventsenumbatterylevel-)\n* [`addListener(TerminalEventsEnum.ReaderEvent, ...)`](#addlistenerterminaleventsenumreaderevent-)\n* [`addListener(TerminalEventsEnum.RequestDisplayMessage, ...)`](#addlistenerterminaleventsenumrequestdisplaymessage-)\n* [`addListener(TerminalEventsEnum.RequestReaderInput, ...)`](#addlistenerterminaleventsenumrequestreaderinput-)\n* [`addListener(TerminalEventsEnum.PaymentStatusChange, ...)`](#addlistenerterminaleventsenumpaymentstatuschange-)\n* [`addListener(TerminalEventsEnum.ReaderReconnectStarted, ...)`](#addlistenerterminaleventsenumreaderreconnectstarted-)\n* [`addListener(TerminalEventsEnum.ReaderReconnectSucceeded, ...)`](#addlistenerterminaleventsenumreaderreconnectsucceeded-)\n* [`addListener(TerminalEventsEnum.ReaderReconnectFailed, ...)`](#addlistenerterminaleventsenumreaderreconnectfailed-)\n* [Interfaces](#interfaces)\n* [Type Aliases](#type-aliases)\n* [Enums](#enums)\n\n</docgen-index>\n\n<docgen-api>\n<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->\n\n### initialize(...)\n\n```typescript\ninitialize(options: { tokenProviderEndpoint?: string; isTest: boolean; }) => Promise<void>\n```\n\n| Param         | Type                                                              |\n| ------------- | ----------------------------------------------------------------- |\n| **`options`** | <code>{ tokenProviderEndpoint?: string; isTest: boolean; }</code> |\n\n--------------------\n\n\n### discoverReaders(...)\n\n```typescript\ndiscoverReaders(options: DiscoverReadersOptions) => Promise<{ readers: ReaderInterface[]; }>\n```\n\n| Param         | Type                                                                      |\n| ------------- | ------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#discoverreadersoptions\">DiscoverReadersOptions</a></code> |\n\n**Returns:** <code>Promise&lt;{ readers: ReaderInterface[]; }&gt;</code>\n\n--------------------\n\n\n### setConnectionToken(...)\n\n```typescript\nsetConnectionToken(options: { token: string; }) => Promise<void>\n```\n\n| Param         | Type                            |\n| ------------- | ------------------------------- |\n| **`options`** | <code>{ token: string; }</code> |\n\n--------------------\n\n\n### setSimulatorConfiguration(...)\n\n```typescript\nsetSimulatorConfiguration(options: { update?: SimulateReaderUpdate; simulatedCard?: SimulatedCardType; simulatedTipAmount?: number; }) => Promise<void>\n```\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.models/-simulator-configuration/index.html)\n\n| Param         | Type                                                                                                                                                                                 |\n| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **`options`** | <code>{ update?: <a href=\"#simulatereaderupdate\">SimulateReaderUpdate</a>; simulatedCard?: <a href=\"#simulatedcardtype\">SimulatedCardType</a>; simulatedTipAmount?: number; }</code> |\n\n--------------------\n\n\n### connectReader(...)\n\n```typescript\nconnectReader(options: { reader: ReaderInterface; autoReconnectOnUnexpectedDisconnect?: boolean; merchantDisplayName?: string; onBehalfOf?: string; }) => Promise<void>\n```\n\n| Param         | Type                                                                                                                                                                       |\n| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`options`** | <code>{ reader: <a href=\"#readerinterface\">ReaderInterface</a>; autoReconnectOnUnexpectedDisconnect?: boolean; merchantDisplayName?: string; onBehalfOf?: string; }</code> |\n\n--------------------\n\n\n### getConnectedReader()\n\n```typescript\ngetConnectedReader() => Promise<{ reader: ReaderInterface | null; }>\n```\n\n**Returns:** <code>Promise&lt;{ reader: <a href=\"#readerinterface\">ReaderInterface</a> | null; }&gt;</code>\n\n--------------------\n\n\n### disconnectReader()\n\n```typescript\ndisconnectReader() => Promise<void>\n```\n\n--------------------\n\n\n### cancelDiscoverReaders()\n\n```typescript\ncancelDiscoverReaders() => Promise<void>\n```\n\n--------------------\n\n\n### collectPaymentMethod(...)\n\n```typescript\ncollectPaymentMethod(options: { paymentIntent: string; }) => Promise<void>\n```\n\n| Param         | Type                                    |\n| ------------- | --------------------------------------- |\n| **`options`** | <code>{ paymentIntent: string; }</code> |\n\n--------------------\n\n\n### cancelCollectPaymentMethod()\n\n```typescript\ncancelCollectPaymentMethod() => Promise<void>\n```\n\n--------------------\n\n\n### confirmPaymentIntent()\n\n```typescript\nconfirmPaymentIntent() => Promise<void>\n```\n\n--------------------\n\n\n### installAvailableUpdate()\n\n```typescript\ninstallAvailableUpdate() => Promise<void>\n```\n\n--------------------\n\n\n### cancelInstallUpdate()\n\n```typescript\ncancelInstallUpdate() => Promise<void>\n```\n\n--------------------\n\n\n### setReaderDisplay(...)\n\n```typescript\nsetReaderDisplay(options: Cart) => Promise<void>\n```\n\n| Param         | Type                                  |\n| ------------- | ------------------------------------- |\n| **`options`** | <code><a href=\"#cart\">Cart</a></code> |\n\n--------------------\n\n\n### clearReaderDisplay()\n\n```typescript\nclearReaderDisplay() => Promise<void>\n```\n\n--------------------\n\n\n### rebootReader()\n\n```typescript\nrebootReader() => Promise<void>\n```\n\n--------------------\n\n\n### cancelReaderReconnection()\n\n```typescript\ncancelReaderReconnection() => Promise<void>\n```\n\n--------------------\n\n\n### setTapToPayUxConfiguration(...)\n\n```typescript\nsetTapToPayUxConfiguration(options: TapToPayUxConfiguration) => Promise<void>\n```\n\nConfigure the Tap to Pay UX appearance (Android only).\nCall this after initialize() but before connectReader().\nHas no effect on iOS or web platforms.\n\n| Param         | Type                                                                        |\n| ------------- | --------------------------------------------------------------------------- |\n| **`options`** | <code><a href=\"#taptopayuxconfiguration\">TapToPayUxConfiguration</a></code> |\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.Loaded, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.Loaded, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                     |\n| ------------------ | ------------------------------------------------------------------------ |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.Loaded</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                               |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.RequestedConnectionToken, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.RequestedConnectionToken, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                       |\n| ------------------ | ------------------------------------------------------------------------------------------ |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.RequestedConnectionToken</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                                                 |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.DiscoveredReaders, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.DiscoveredReaders, listenerFunc: ({ readers }: { readers: ReaderInterface[]; }) => void) => Promise<PluginListenerHandle>\n```\n\nWhen searching for iOS Bluetooth, this will be executed multiple times.\nhttps://docs.stripe.com/terminal/payments/connect-reader?terminal-sdk-platform=ios&reader-type=bluetooth\n\n| Param              | Type                                                                                |\n| ------------------ | ----------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.DiscoveredReaders</a></code> |\n| **`listenerFunc`** | <code>({ readers }: { readers: ReaderInterface[]; }) =&gt; void</code>              |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ConnectedReader, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ConnectedReader, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                              |\n| ------------------ | --------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ConnectedReader</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                                        |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.DisconnectedReader, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.DisconnectedReader, listenerFunc: ({ reason }: { reason?: DisconnectReason | undefined; }) => void) => Promise<PluginListenerHandle>\n```\n\nEmitted when the reader is disconnected, either in response to [`disconnectReader()`](#disconnectreader)\nor some connection error.\n\nFor all reader types, this is emitted in response to [`disconnectReader()`](#disconnectreader)\nwithout a `reason` property.\n\nFor Bluetooth and USB readers, this is emitted with a `reason` property when the reader disconnects.\n\n**Note:** For Bluetooth and USB readers, when you call [`disconnectReader()`](#disconnectreader), this event\nwill be emitted twice: one without a `reason` in acknowledgement of your call, and again with a `reason` when the reader\nfinishes disconnecting.\n\n| Param              | Type                                                                                                 |\n| ------------------ | ---------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.DisconnectedReader</a></code>                 |\n| **`listenerFunc`** | <code>({ reason }: { reason?: <a href=\"#disconnectreason\">DisconnectReason</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ConnectionStatusChange, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ConnectionStatusChange, listenerFunc: ({ status }: { status: ConnectionStatus; }) => void) => Promise<PluginListenerHandle>\n```\n\nEmitted when the Terminal's connection status changed.\n\nNote: You should *not* use this method to detect when a reader unexpectedly disconnects from your app,\nas it cannot be used to accurately distinguish between expected and unexpected disconnect events.\n\nTo detect unexpected disconnects (e.g. to automatically notify your user), you should instead use\nthe UnexpectedReaderDisconnect event.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-terminal-listener/on-connection-status-change.html)\n\n| Param              | Type                                                                                                |\n| ------------------ | --------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ConnectionStatusChange</a></code>            |\n| **`listenerFunc`** | <code>({ status }: { status: <a href=\"#connectionstatus\">ConnectionStatus</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.UnexpectedReaderDisconnect, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.UnexpectedReaderDisconnect, listenerFunc: ({ reader }: { reader: ReaderInterface; }) => void) => Promise<PluginListenerHandle>\n```\n\nThe Terminal disconnected unexpectedly from the reader.\n\nIn your implementation of this method, you may want to notify your user that the reader disconnected.\nYou may also call [`discoverReaders()`](#discoverreaders) to begin scanning for readers, and attempt\nto automatically reconnect to the disconnected reader. Be sure to either set a timeout or make it\npossible to cancel calls to `discoverReaders()`\n\nWhen connected to a Bluetooth or USB reader, you can get more information about the disconnect by\nimplementing the DisconnectedReader event.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-terminal-listener/on-unexpected-reader-disconnect.html)\n\n| Param              | Type                                                                                              |\n| ------------------ | ------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.UnexpectedReaderDisconnect</a></code>      |\n| **`listenerFunc`** | <code>({ reader }: { reader: <a href=\"#readerinterface\">ReaderInterface</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ConfirmedPaymentIntent, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ConfirmedPaymentIntent, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                     |\n| ------------------ | ---------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ConfirmedPaymentIntent</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                                               |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.CollectedPaymentIntent, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.CollectedPaymentIntent, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                     |\n| ------------------ | ---------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.CollectedPaymentIntent</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                                               |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.Canceled, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.Canceled, listenerFunc: () => void) => Promise<PluginListenerHandle>\n```\n\nEmitted when [`cancelCollectPaymentMethod()`](#cancelcollectpaymentmethod) is called and succeeds.\nThe Promise returned by `cancelCollectPaymentMethod()` will also be resolved.\n\n| Param              | Type                                                                       |\n| ------------------ | -------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.Canceled</a></code> |\n| **`listenerFunc`** | <code>() =&gt; void</code>                                                 |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.Failed, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.Failed, listenerFunc: (info: { message: string; code?: string; declineCode?: string; }) => void) => Promise<PluginListenerHandle>\n```\n\nEmitted when either [`collectPaymentMethod()`](#collectpaymentmethod) or [`confirmPaymentIntent()`](#confirmpaymentintent)\nfails. The Promise returned by the relevant call will also be rejected.\n\n| Param              | Type                                                                                      |\n| ------------------ | ----------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.Failed</a></code>                  |\n| **`listenerFunc`** | <code>(info: { message: string; code?: string; declineCode?: string; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReportAvailableUpdate, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReportAvailableUpdate, listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise<PluginListenerHandle>\n```\n\nEmitted when a software update is available for the connected reader.\n\n| Param              | Type                                                                                                                          |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReportAvailableUpdate</a></code>                                       |\n| **`listenerFunc`** | <code>({ update }: { update: <a href=\"#readersoftwareupdateinterface\">ReaderSoftwareUpdateInterface</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.StartInstallingUpdate, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.StartInstallingUpdate, listenerFunc: ({ update }: { update: ReaderSoftwareUpdateInterface; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\nEmitted when the connected reader begins installing a software update.\nIf a mandatory software update is available when a reader first connects, that update is\nautomatically installed. The update will be installed before ConnectedReader is emitted and\nbefore the Promise returned by [`connectReader()`](#connectreader) resolves.\nIn this case, you will receive this sequence of events:\n\n1. StartInstallingUpdate\n2. ReaderSoftwareUpdateProgress (repeatedly)\n3. FinishInstallingUpdates\n4. ConnectedReader\n5. `connectReader()` Promise resolves\n\nYour app should show UI to the user indiciating that a software update is being installed\nto explain why connecting is taking longer than usual.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-start-installing-update.html)\n\n| Param              | Type                                                                                                                          |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.StartInstallingUpdate</a></code>                                       |\n| **`listenerFunc`** | <code>({ update }: { update: <a href=\"#readersoftwareupdateinterface\">ReaderSoftwareUpdateInterface</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReaderSoftwareUpdateProgress, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReaderSoftwareUpdateProgress, listenerFunc: ({ progress }: { progress: number; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\nEmitted periodically while reader software is updating to inform of the installation progress.\n`progress` is a float between 0 and 1.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-report-reader-software-update-progress.html)\n\n| Param              | Type                                                                                           |\n| ------------------ | ---------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReaderSoftwareUpdateProgress</a></code> |\n| **`listenerFunc`** | <code>({ progress }: { progress: number; }) =&gt; void</code>                                  |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.FinishInstallingUpdate, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.FinishInstallingUpdate, listenerFunc: (args: { update: ReaderSoftwareUpdateInterface; } | { error: string; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-finish-installing-update.html)\n\n| Param              | Type                                                                                                                                          |\n| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.FinishInstallingUpdate</a></code>                                                      |\n| **`listenerFunc`** | <code>(args: { update: <a href=\"#readersoftwareupdateinterface\">ReaderSoftwareUpdateInterface</a>; } \\| { error: string; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.BatteryLevel, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.BatteryLevel, listenerFunc: ({ level, charging, status }: { level: number; charging: boolean; status: BatteryStatus; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\nEmitted upon connection and every 10 minutes.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-battery-level-update.html)\n\n| Param              | Type                                                                                                                                             |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.BatteryLevel</a></code>                                                                   |\n| **`listenerFunc`** | <code>({ level, charging, status }: { level: number; charging: boolean; status: <a href=\"#batterystatus\">BatteryStatus</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReaderEvent, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReaderEvent, listenerFunc: ({ event }: { event: ReaderEvent; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listenable/on-report-reader-event.html)\n\n| Param              | Type                                                                                    |\n| ------------------ | --------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReaderEvent</a></code>           |\n| **`listenerFunc`** | <code>({ event }: { event: <a href=\"#readerevent\">ReaderEvent</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.RequestDisplayMessage, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.RequestDisplayMessage, listenerFunc: ({ messageType, message }: { messageType: ReaderDisplayMessage; message: string; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\nEmitted when the Terminal requests that a message be displayed in your app.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-request-reader-display-message.html)\n\n| Param              | Type                                                                                                                                            |\n| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.RequestDisplayMessage</a></code>                                                         |\n| **`listenerFunc`** | <code>({ messageType, message }: { messageType: <a href=\"#readerdisplaymessage\">ReaderDisplayMessage</a>; message: string; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.RequestReaderInput, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.RequestReaderInput, listenerFunc: ({ options, message }: { options: ReaderInputOption[]; message: string; }) => void) => Promise<PluginListenerHandle>\n```\n\n**Only applicable to Bluetooth and USB readers.**\n\nEmitted when the reader begins waiting for input. Your app should prompt the customer\nto present a source using one of the given input options. If the reader emits a message,\nthe RequestDisplayMessage event will be emitted.\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-reader-listener/on-request-reader-input.html)\n\n| Param              | Type                                                                                               |\n| ------------------ | -------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.RequestReaderInput</a></code>               |\n| **`listenerFunc`** | <code>({ options, message }: { options: ReaderInputOption[]; message: string; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.PaymentStatusChange, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({ status }: { status: PaymentStatus; }) => void) => Promise<PluginListenerHandle>\n```\n\n[*Stripe docs reference*](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-terminal-listener/on-payment-status-change.html)\n\n| Param              | Type                                                                                          |\n| ------------------ | --------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.PaymentStatusChange</a></code>         |\n| **`listenerFunc`** | <code>({ status }: { status: <a href=\"#paymentstatus\">PaymentStatus</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReaderReconnectStarted, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReaderReconnectStarted, listenerFunc: ({ reader, reason }: { reader: ReaderInterface; reason: string; }) => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                                                      |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReaderReconnectStarted</a></code>                                  |\n| **`listenerFunc`** | <code>({ reader, reason }: { reader: <a href=\"#readerinterface\">ReaderInterface</a>; reason: string; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReaderReconnectSucceeded, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReaderReconnectSucceeded, listenerFunc: ({ reader }: { reader: ReaderInterface; }) => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                              |\n| ------------------ | ------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReaderReconnectSucceeded</a></code>        |\n| **`listenerFunc`** | <code>({ reader }: { reader: <a href=\"#readerinterface\">ReaderInterface</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### addListener(TerminalEventsEnum.ReaderReconnectFailed, ...)\n\n```typescript\naddListener(eventName: TerminalEventsEnum.ReaderReconnectFailed, listenerFunc: ({ reader }: { reader: ReaderInterface; }) => void) => Promise<PluginListenerHandle>\n```\n\n| Param              | Type                                                                                              |\n| ------------------ | ------------------------------------------------------------------------------------------------- |\n| **`eventName`**    | <code><a href=\"#terminaleventsenum\">TerminalEventsEnum.ReaderReconnectFailed</a></code>           |\n| **`listenerFunc`** | <code>({ reader }: { reader: <a href=\"#readerinterface\">ReaderInterface</a>; }) =&gt; void</code> |\n\n**Returns:** <code>Promise&lt;<a href=\"#pluginlistenerhandle\">PluginListenerHandle</a>&gt;</code>\n\n--------------------\n\n\n### Interfaces\n\n\n#### DiscoverReadersOptions\n\n| Prop                        | Type                                                                  | Description                                                                                                                                                                                                                                                                                                                                           |\n| --------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`type`**                  | <code><a href=\"#terminalconnecttypes\">TerminalConnectTypes</a></code> |                                                                                                                                                                                                                                                                                                                                                       |\n| **`locationId`**            | <code>string</code>                                                   |                                                                                                                                                                                                                                                                                                                                                       |\n| **`bluetoothScanWaitTime`** | <code>number</code>                                                   | Only applies to Bluetooth scan discovery (iOS only). During discovery, readers are reported via DiscoveryDelegate.didUpdateDiscoveredReaders. This timeout controls how long to wait before resolving the `discoverReaders` method with the current list. If this setting is not specified or is set to 0, the initial scan results will be returned. |\n\n\n#### TapToPayUxConfiguration\n\nConfiguration for the Tap to Pay UX (Android only).\n\n| Prop           | Type                                                                | Description                            |\n| -------------- | ------------------------------------------------------------------- | -------------------------------------- |\n| **`colors`**   | <code><a href=\"#taptopaycolorscheme\">TapToPayColorScheme</a></code> | Color scheme for the Tap to Pay screen |\n| **`darkMode`** | <code><a href=\"#taptopaydarkmode\">TapToPayDarkMode</a></code>       | Dark mode setting                      |\n| **`tapZone`**  | <code><a href=\"#taptopaytapzone\">TapToPayTapZone</a></code>         | Tap zone position configuration        |\n\n\n#### TapToPayColorScheme\n\nColor scheme for the Tap to Pay screen.\n\n| Prop          | Type                                                    | Description                                                  |\n| ------------- | ------------------------------------------------------- | ------------------------------------------------------------ |\n| **`primary`** | <code><a href=\"#taptopaycolor\">TapToPayColor</a></code> | Primary color (tap zone indicator). Hex string or 'default'. |\n| **`success`** | <code><a href=\"#taptopaycolor\">TapToPayColor</a></code> | Success state color. Hex string or 'default'.                |\n| **`error`**   | <code><a href=\"#taptopaycolor\">TapToPayColor</a></code> | Error state color. Hex string or 'default'.                  |\n\n\n#### PluginListenerHandle\n\n| Prop         | Type                                      |\n| ------------ | ----------------------------------------- |\n| **`remove`** | <code>() =&gt; Promise&lt;void&gt;</code> |\n\n\n### Type Aliases\n\n\n#### ReaderInterface\n\n<code>{ /** * The unique serial number is primary identifier inner plugin. */ serialNumber: string; label: string; batteryLevel: number; batteryStatus: <a href=\"#batterystatus\">BatteryStatus</a>; simulated: boolean; id: number; availableUpdate: <a href=\"#readersoftwareupdateinterface\">ReaderSoftwareUpdateInterface</a>; locationId: string; ipAddress: string; status: <a href=\"#networkstatus\">NetworkStatus</a>; location: <a href=\"#locationinterface\">LocationInterface</a>; locationStatus: <a href=\"#locationstatus\">LocationStatus</a>; deviceType: <a href=\"#devicetype\">DeviceType</a>; deviceSoftwareVersion: string | null; /** * iOS Only properties. These properties are not available on Android. */ isCharging: number; /** * Android Only properties. These properties are not available on iOS. */ baseUrl: string; bootloaderVersion: string; configVersion: string; emvKeyProfileId: string; firmwareVersion: string; hardwareVersion: string; macKeyProfileId: string; pinKeyProfileId: string; trackKeyProfileId: string; settingsVersion: string; pinKeysetId: string; }</code>\n\n\n#### ReaderSoftwareUpdateInterface\n\n<code>{ deviceSoftwareVersion: string; estimatedUpdateTime: <a href=\"#updatetimeestimate\">UpdateTimeEstimate</a>; requiredAt: number; }</code>\n\n\n#### LocationInterface\n\n<code>{ id: string; displayName: string; address: { city: string; country: string; postalCode: string; line1: string; line2: string; state: string; }; ipAddress: string; }</code>\n\n\n#### DeviceType\n\n<code>Stripe.Terminal.Reader.<a href=\"#devicetype\">DeviceType</a></code>\n\n\n#### Cart\n\n<code>{ currency: string; tax: number; total: number; lineItems: CartLineItem[]; }</code>\n\n\n#### CartLineItem\n\n<code>{ displayName: string; quantity: number; amount: number; }</code>\n\n\n#### TapToPayColor\n\nColor value for <a href=\"#taptopayuxconfiguration\">TapToPayUxConfiguration</a>.\nUse 'default' to use Stripe's default color, or a hex string like '#965D35'.\n\n<code>'default' | string</code>\n\n\n#### TapToPayTapZone\n\nTap zone position configuration.\nControls where the tap indicator appears on screen.\n\n<code>{ type: 'default' } | { type: 'front'; xBias: number; yBias: number } | { type: 'behind'; xBias: number; yBias: number } | { type: 'above'; bias?: number } | { type: 'below'; bias?: number } | { type: 'left'; bias?: number } | { type: 'right'; bias?: number }</code>\n\n\n### Enums\n\n\n#### BatteryStatus\n\n| Members        | Value                   |\n| -------------- | ----------------------- |\n| **`Unknown`**  | <code>'UNKNOWN'</code>  |\n| **`Critical`** | <code>'CRITICAL'</code> |\n| **`Low`**      | <code>'LOW'</code>      |\n| **`Nominal`**  | <code>'NOMINAL'</code>  |\n\n\n#### UpdateTimeEstimate\n\n| Members                    | Value                                  |\n| -------------------------- | -------------------------------------- |\n| **`LessThanOneMinute`**    | <code>'LESS_THAN_ONE_MINUTE'</code>    |\n| **`OneToTwoMinutes`**      | <code>'ONE_TO_TWO_MINUTES'</code>      |\n| **`TwoToFiveMinutes`**     | <code>'TWO_TO_FIVE_MINUTES'</code>     |\n| **`FiveToFifteenMinutes`** | <code>'FIVE_TO_FIFTEEN_MINUTES'</code> |\n\n\n#### NetworkStatus\n\n| Members       | Value                  |\n| ------------- | ---------------------- |\n| **`Unknown`** | <code>'UNKNOWN'</code> |\n| **`Online`**  | <code>'ONLINE'</code>  |\n| **`Offline`** | <code>'OFFLINE'</code> |\n\n\n#### LocationStatus\n\n| Members       | Value                  |\n| ------------- | ---------------------- |\n| **`NotSet`**  | <code>'NOT_SET'</code> |\n| **`Set`**     | <code>'SET'</code>     |\n| **`Unknown`** | <code>'UNKNOWN'</code> |\n\n\n#### DeviceType\n\n| Members                | Value                           |\n| ---------------------- | ------------------------------- |\n| **`tapToPayDevice`**   | <code>'tapToPayDevice'</code>   |\n| **`wisePad3s`**        | <code>'wisePad3s'</code>        |\n| **`appleBuiltIn`**     | <code>'appleBuiltIn'</code>     |\n| **`chipper1X`**        | <code>'chipper1X'</code>        |\n| **`chipper2X`**        | <code>'chipper2X'</code>        |\n| **`etna`**             | <code>'etna'</code>             |\n| **`stripeM2`**         | <code>'stripeM2'</code>         |\n| **`stripeS700`**       | <code>'stripeS700'</code>       |\n| **`stripeS700DevKit`** | <code>'stripeS700Devkit'</code> |\n| **`wiseCube`**         | <code>'wiseCube'</code>         |\n| **`wisePad3`**         | <code>'wisePad3'</code>         |\n| **`wisePosE`**         | <code>'wisePosE'</code>         |\n| **`wisePosEDevKit`**   | <code>'wisePosEDevkit'</code>   |\n| **`unknown`**          | <code>'unknown'</code>          |\n\n\n#### TerminalConnectTypes\n\n| Members         | Value                     |\n| --------------- | ------------------------- |\n| **`Simulated`** | <code>'simulated'</code>  |\n| **`Internet`**  | <code>'internet'</code>   |\n| **`Bluetooth`** | <code>'bluetooth'</code>  |\n| **`Usb`**       | <code>'usb'</code>        |\n| **`TapToPay`**  | <code>'tap-to-pay'</code> |\n| **`HandOff`**   | <code>'hand-off'</code>   |\n\n\n#### SimulateReaderUpdate\n\n| Members                        | Value                                      |\n| ------------------------------ | ------------------------------------------ |\n| **`UpdateAvailable`**          | <code>'UPDATE_AVAILABLE'</code>            |\n| **`None`**                     | <code>'NONE'</code>                        |\n| **`Required`**                 | <code>'REQUIRED'</code>                    |\n| **`Random`**                   | <code>'RANDOM'</code>                      |\n| **`LowBattery`**               | <code>'LOW_BATTERY'</code>                 |\n| **`LowBatterySucceedConnect`** | <code>'LOW_BATTERY_SUCCEED_CONNECT'</code> |\n\n\n#### SimulatedCardType\n\n| Members                               | Value                                             |\n| ------------------------------------- | ------------------------------------------------- |\n| **`Visa`**                            | <code>'VISA'</code>                               |\n| **`VisaDebit`**                       | <code>'VISA_DEBIT'</code>                         |\n| **`Mastercard`**                      | <code>'MASTERCARD'</code>                         |\n| **`MastercardDebit`**                 | <code>'MASTERCARD_DEBIT'</code>                   |\n| **`MastercardPrepaid`**               | <code>'MASTERCARD_PREPAID'</code>                 |\n| **`Amex`**                            | <code>'AMEX'</code>                               |\n| **`Amex2`**                           | <code>'AMEX_2'</code>                             |\n| **`Discover`**                        | <code>'DISCOVER'</code>                           |\n| **`Discover2`**                       | <code>'DISCOVER_2'</code>                         |\n| **`DinersClub`**                      | <code>'DINERS'</code>                             |\n| **`DinersClulb14Digits`**             | <code>'DINERS_14_DIGITS'</code>                   |\n| **`JCB`**                             | <code>'JCB'</code>                                |\n| **`UnionPay`**                        | <code>'UNION_PAY'</code>                          |\n| **`Interac`**                         | <code>'INTERAC'</code>                            |\n| **`EftposAustraliaDebit`**            | <code>'EFTPOS_AU_DEBIT'</code>                    |\n| **`VisaUsCommonDebit`**               | <code>'VISA_US_COMMON_DEBIT'</code>               |\n| **`ChargeDeclined`**                  | <code>'CHARGE_DECLINED'</code>                    |\n| **`ChargeDeclinedInsufficientFunds`** | <code>'CHARGE_DECLINED_INSUFFICIENT_FUNDS'</code> |\n| **`ChargeDeclinedLostCard`**          | <code>'CHARGE_DECLINED_LOST_CARD'</code>          |\n| **`ChargeDeclinedStolenCard`**        | <code>'CHARGE_DECLINED_STOLEN_CARD'</code>        |\n| **`ChargeDeclinedExpiredCard`**       | <code>'CHARGE_DECLINED_EXPIRED_CARD'</code>       |\n| **`ChargeDeclinedProcessingError`**   | <code>'CHARGE_DECLINED_PROCESSING_ERROR'</code>   |\n| **`EftposAustraliaVisaDebit`**        | <code>'EFTPOS_AU_VISA_DEBIT'</code>               |\n| **`EftposAustraliaMastercardDebit`**  | <code>'EFTPOS_AU_DEBIT_MASTERCARD'</code>         |\n| **`OfflinePinCVM`**                   | <code>'OFFLINE_PIN_CVM'</code>                    |\n| **`OfflinePinSCARetry`**              | <code>'OFFLINE_PIN_SCA_RETRY'</code>              |\n| **`OnlinePinCVM`**                    | <code>'ONLINE_PIN_CVM'</code>                     |\n| **`OnlinePinSCARetry`**               | <code>'ONLINE_PIN_SCA_RETRY'</code>               |\n\n\n#### TapToPayDarkMode\n\n| Members      | Value                 |\n| ------------ | --------------------- |\n| **`System`** | <code>'SYSTEM'</code> |\n| **`Dark`**   | <code>'DARK'</code>   |\n| **`Light`**  | <code>'LIGHT'</code>  |\n\n\n#### TerminalEventsEnum\n\n| Members                            | Value                                               |\n| ---------------------------------- | --------------------------------------------------- |\n| **`Loaded`**                       | <code>'terminalLoaded'</code>                       |\n| **`DiscoveredReaders`**            | <code>'terminalDiscoveredReaders'</code>            |\n| **`DiscoveringReaders`**           | <code>'terminalDiscoveringReaders'</code>           |\n| **`CancelDiscoveredReaders`**      | <code>'terminalCancelDiscoveredReaders'</code>      |\n| **`ConnectedReader`**              | <code>'terminalConnectedReader'</code>              |\n| **`DisconnectedReader`**           | <code>'terminalDisconnectedReader'</code>           |\n| **`ConnectionStatusChange`**       | <code>'terminalConnectionStatusChange'</code>       |\n| **`UnexpectedReaderDisconnect`**   | <code>'terminalUnexpectedReaderDisconnect'</code>   |\n| **`ConfirmedPaymentIntent`**       | <code>'terminalConfirmedPaymentIntent'</code>       |\n| **`CollectedPaymentIntent`**       | <code>'terminalCollectedPaymentIntent'</code>       |\n| **`Canceled`**                     | <code>'terminalCanceled'</code>                     |\n| **`Failed`**                       | <code>'terminalFailed'</code>                       |\n| **`RequestedConnectionToken`**     | <code>'terminalRequestedConnectionToken'</code>     |\n| **`ReportAvailableUpdate`**        | <code>'terminalReportAvailableUpdate'</code>        |\n| **`StartInstallingUpdate`**        | <code>'terminalStartInstallingUpdate'</code>        |\n| **`ReaderSoftwareUpdateProgress`** | <code>'terminalReaderSoftwareUpdateProgress'</code> |\n| **`FinishInstallingUpdate`**       | <code>'terminalFinishInstallingUpdate'</code>       |\n| **`BatteryLevel`**                 | <code>'terminalBatteryLevel'</code>                 |\n| **`ReaderEvent`**                  | <code>'terminalReaderEvent'</code>                  |\n| **`RequestDisplayMessage`**        | <code>'terminalRequestDisplayMessage'</code>        |\n| **`RequestReaderInput`**           | <code>'terminalRequestReaderInput'</code>           |\n| **`PaymentStatusChange`**          | <code>'terminalPaymentStatusChange'</code>          |\n| **`ReaderReconnectStarted`**       | <code>'terminalReaderReconnectStarted'</code>       |\n| **`ReaderReconnectSucceeded`**     | <code>'terminalReaderReconnectSucceeded'</code>     |\n| **`ReaderReconnectFailed`**        | <code>'terminalReaderReconnectFailed'</code>        |\n\n\n#### DisconnectReason\n\n| Members                    | Value                                 |\n| -------------------------- | ------------------------------------- |\n| **`Unknown`**              | <code>'UNKNOWN'</code>                |\n| **`DisconnectRequested`**  | <code>'DISCONNECT_REQUESTED'</code>   |\n| **`RebootRequested`**      | <code>'REBOOT_REQUESTED'</code>       |\n| **`SecurityReboot`**       | <code>'SECURITY_REBOOT'</code>        |\n| **`CriticallyLowBattery`** | <code>'CRITICALLY_LOW_BATTERY'</code> |\n| **`PoweredOff`**           | <code>'POWERED_OFF'</code>            |\n| **`BluetoothDisabled`**    | <code>'BLUETOOTH_DISABLED'</code>     |\n\n\n#### ConnectionStatus\n\n| Members            | Value                        |\n| ------------------ | ---------------------------- |\n| **`Unknown`**      | <code>'UNKNOWN'</code>       |\n| **`NotConnected`** | <code>'NOT_CONNECTED'</code> |\n| **`Connecting`**   | <code>'CONNECTING'</code>    |\n| **`Connected`**    | <code>'CONNECTED'</code>     |\n\n\n#### ReaderEvent\n\n| Members            | Value                        |\n| ------------------ | ---------------------------- |\n| **`Unknown`**      | <code>'UNKNOWN'</code>       |\n| **`CardInserted`** | <code>'CARD_INSERTED'</code> |\n| **`CardRemoved`**  | <code>'CARD_REMOVED'</code>  |\n\n\n#### ReaderDisplayMessage\n\n| Members                                | Value                                              |\n| -------------------------------------- | -------------------------------------------------- |\n| **`CheckMobileDevice`**                | <code>'CHECK_MOBILE_DEVICE'</code>                 |\n| **`RetryCard`**                        | <code>'RETRY_CARD'</code>                          |\n| **`InsertCard`**                       | <code>'INSERT_CARD'</code>                         |\n| **`InsertOrSwipeCard`**                | <code>'INSERT_OR_SWIPE_CARD'</code>                |\n| **`SwipeCard`**                        | <code>'SWIPE_CARD'</code>                          |\n| **`RemoveCard`**                       | <code>'REMOVE_CARD'</code>                         |\n| **`MultipleContactlessCardsDetected`** | <code>'MULTIPLE_CONTACTLESS_CARDS_DETECTED'</code> |\n| **`TryAnotherReadMethod`**             | <code>'TRY_ANOTHER_READ_METHOD'</code>             |\n| **`TryAnotherCard`**                   | <code>'TRY_ANOTHER_CARD'</code>                    |\n| **`CardRemovedTooEarly`**              | <code>'CARD_REMOVED_TOO_EARLY'</code>              |\n\n\n#### ReaderInputOption\n\n| Members           | Value                       |\n| ----------------- | --------------------------- |\n| **`None`**        | <code>'NONE'</code>         |\n| **`Insert`**      | <code>'INSERT'</code>       |\n| **`Swipe`**       | <code>'SWIPE'</code>        |\n| **`Tap`**         | <code>'TAP'</code>          |\n| **`ManualEntry`** | <code>'MANUAL_ENTRY'</code> |\n\n\n#### PaymentStatus\n\n| Members               | Value                            |\n| --------------------- | -------------------------------- |\n| **`Unknown`**         | <code>'UNKNOWN'</code>           |\n| **`NotReady`**        | <code>'NOT_READY'</code>         |\n| **`Ready`**           | <code>'READY'</code>             |\n| **`WaitingForInput`** | <code>'WAITING_FOR_INPUT'</code> |\n| **`Processing`**      | <code>'PROCESSING'</code>        |\n\n</docgen-api>\n","readmeFilename":"README.md"}