NFC Tap-to-Pay


The POS terminal can write your payment URL to a physical NFC tag using the Web NFC API. A customer taps that tag with their phone, and the payment page opens directly. No QR scanner needed.
Platform support
Web NFC is part of the Web NFC API and uses the NDEFReader browser interface. Support is narrow:
- Android Chrome (supported). Requires HTTPS, physical NFC hardware on the device, and Chrome version 89 or later. This is the only supported combination today.
- iOS Safari and all iOS browsers (not supported). Apple does not expose the Web NFC API on iOS regardless of browser. Chrome, Firefox, and Edge on iOS all run on WebKit and share the same restriction.
- Desktop Chrome (not supported). Desktops have no NFC hardware, so
NDEFReaderis not present in the browser.
Fluxus detects support at runtime by checking whether NDEFReader exists in the window object. The NFC button only renders when support is confirmed. iOS devices display a disabled fallback button with a message indicating that the QR code should be used instead.
How NFC write works
When you tap Tap to Pay (NFC) in the POS QR screen, the app calls NDEFReader.write() with an NDEF URL record containing the same payment URL that the QR code encodes. Hold an NFC-capable Android device near a writable NFC tag to complete the write.
The write operation runs asynchronously and returns an AbortController. If you leave the POS page or cancel before the write completes, the operation is cleanly aborted. A success callback fires when the tag is written; any hardware or permission error routes to an error handler.
The NFC tag stores a URL. When a customer taps the tag, their phone opens the payment page in their browser. The experience matches scanning the QR code. No special app is required.
Finding the NFC button
The NFC button is part of the POS terminal, not a standalone page. To reach it:
- Open the POS terminal at
/app/pos - Enter a payment amount
- Click Generate QR Code
- The Tap to Pay (NFC) button appears below the QR code on devices where
NDEFReaderis available
On devices without NFC support the button is absent entirely, keeping the interface clean. On iOS, a disabled fallback button explains the limitation.
Browser permission: Chrome on Android requires the user to grant NFC permission the first time the write is attempted. A browser prompt will appear automatically when you tap the NFC button.

