Imagine this: a courier arrives with an order, but the terminal battery is dead. Or a customer wants to pay by card, but the reader won't connect after the screen locks. Such errors cost businesses significant revenue — according to statistics, one in five mPOS terminals loses connection during a transaction, representing 20% of lost income. Our mobile development team, with 8 years of fintech experience (15+ projects), solves these problems systematically: we design mPOS apps that reliably accept payments even in challenging scenarios. We build turnkey mPOS solutions: from SDK selection and reader integration to fiscalization and store publication. We'll evaluate your project in 1–2 days — contact us for a consultation.
Ensuring Stable Bluetooth Connection with the Reader
Bluetooth connection is the primary source of mPOS issues: the reader disconnects mid-transaction, the phone can't find it after screen lock, the battery dies. We implement reconnect logic with automatic search and reconnection to the last used reader. We use CoreBluetooth (iOS) or BluetoothAdapter (Android) with constant scanning, automatic reconnection on drop, and connection state notifications. Stripe Terminal SDK handles reconnection itself, reducing development time by 30–40% compared to implementing the EMV stack and Bluetooth connection from scratch. We test with specific readers under interference conditions.
Hardware and SDK
| Reader | Interface | SDK |
|---|---|---|
| Verifone e285 | Bluetooth | Verifone Commander SDK |
| Ingenico iSMP4 | Bluetooth | Ingenico mPOS SDK |
| PAX A920 | Built-in Android | PAX SDK |
| BBPOS Chipper 2X | Bluetooth/Audio | Stripe Terminal SDK |
| Square Reader | Lightning/USB-C/Bluetooth | Square Reader SDK |
Stripe Terminal SDK (stripe-terminal-ios, stripe-terminal-android) is the most documented choice for new projects. It supports multiple reader types and handles EMV transactions, online and offline mode. According to Stripe, 70% of users prefer contactless payments, so NFC support is mandatory. Integrating Stripe Terminal SDK reduces development time by 30–40% compared to building from scratch. Detailed documentation.
Why Apple Tap to Pay is Changing the mPOS Market
Apple Tap to Pay (iPhone with modern iOS) accepts contactless cards via iPhone's NFC without an external reader. Requires a Partner SDK from an Apple-approved PSP (Stripe, Adyen, Checkout.com support it). Integration via the ProximityReader framework. This changes the mPOS market — no reader needed. Reduces hardware costs up to 3x compared to buying a separate reader. For Android, similar functionality is available via HCE, but requires payment system certification.
EMV and NFC
Card transactions follow international standards — EMV (Chip & PIN, Chip & Sign) and contactless (NFC). Stripe Terminal SDK handles the full EMV dialog with the chip — the developer doesn't need to implement ISO 7816 APDU commands manually. NFC on the device without a reader: iOS only supports Apple Pay via PassKit; Android HCE (Host Card Emulation) allows accepting contactless Visa/MC via NFC, but requires certification.
What to Do When There's No Network?
A courier in an underground passage — no network. The transaction must complete. Stripe Terminal supports offline mode: the transaction is authorized locally on the device, queued, and synced when network is restored. The offline amount limit is configurable. Chargeback risk with offline transactions is accepted by the business knowingly.
| Mode | Description | Limitations |
|---|---|---|
| Online | Transaction via server, fast authorization | Requires internet |
| Offline | Local authorization, delayed sync | Amount limit, possible chargeback |
Receipts: Electronic and Printed
Electronic receipt — SMS or email. Printed receipt — integration with a Bluetooth printer (Star Micronics TSP143, Epson TM-P20). Star Bluetooth SDK (iOS/Android) — the printer works as a CBPeripheral, commands in StarIO format. Fiscal receipt in Russia — integration with OFD through FN/SKNO. ATOL, Evotor, Комтет are popular solutions. Mobile fiscal registers (ATOL 91F, SHTRIKH-MPAY-F) connect via Bluetooth, using the manufacturer's SDK.
Main Screen and UX
For a cashier using the mPOS app, speed is paramount. Main screen: amount input field (digital keypad, large font) + "Accept Payment" button. Product catalog is optional for those managing inventory. Shifts: opening/closing cash register shifts with Z-report. Operator authorization via PIN code. Transaction history with search and filter by period. Refunds — partial and full, confirmed with a manager PIN.
What's Included
- Architecture documentation and API specification
- Terminal SDK integration and Bluetooth connection
- Payment flow (EMV + contactless + NFC)
- Receipts (electronic and printed)
- Fiscalization (for Russia/Belarus)
- Testing with real readers
- PSP certification and publication on App Store / Google Play
- Technical support for 2 months after release
Tech Stack
Native Swift + Kotlin — preferred for mPOS due to direct access to CoreBluetooth/BluetoothAdapter, ProximityReader, and hardware interfaces. React Native with native modules for Bluetooth and Terminal SDK is a viable option for cross-platform requirements. Stripe Terminal SDK vs. proprietary reader SDKs: Stripe wins on multi-reader support and built-in offline mode, reducing development time by 30-40%.
Process
Reader and PSP selection → Terminal SDK integration → Bluetooth connection and reconnect → Payment flow (EMV + contactless) → Receipts (electronic and printed) → Fiscal integration → Testing with real equipment → PSP certification → Publication.
Timeline Estimates
Basic mPOS (amount input, payment via Stripe Terminal, electronic receipt): 3–4 weeks. Full-featured app with catalog, shifts, refunds, fiscal register, and Bluetooth printer: 2–3 months. Cost is determined after requirements analysis. Our engineers support the project at every stage — from idea to release and beyond. Contact us for a consultation on your mPOS project. Request an individual cost estimate.







