Using external USB devices



If your app uses external device(s), we will ask you to provide the device for app approval or support. Clover will review the external device and app for functionality and security.

USB HID devices

Clover supports all standard USB HID (human interface devices). This includes keyboards, mice, and most barcode readers. It's common for other USB peripherals to be implemented as the HID class because support for USB HID is almost universal.

When a USB HID device is connected to a Clover device, the user will see a notification asking them if the device is a keyboard. If Yes is selected, the platform's soft keyboard is disabled while this device is connected.

This preference is reset at reboot unless the don't ask again is selected. The don't ask again preference can be cleared from Settings > Language and Input > Clear USB keyboard defaults.



While an external Magnetic Stripe Reader (MSR) is a USB HID that you can connect to a Clover device, you cannot use it to accept payments.

Other USB devices

All other USB devices must be added to Clover's database to work with Clover devices. This database maps a developer app to a USB vendor and product ID. Only the specific app on the specific environment is allowed to use the USB device.

Please contact us on our Developer Community with your App ID, USB product and vendor ID, environment (e.g., sandbox or production), and a description of your app. You may be required to provide additional details and/or schedule a call.

Supported barcode readers

Clover has special handling for supported USB HID barcode scanners. Supported means that they are known to the Clover platform and tested. For more information, see the list of supported USB HID barcode readers.

Using barcode readers with Clover Android SDK

Apps should use​ the BarcodeScanner class for barcode scanning. Here is an example:

private static Bundle getBarcodeSetting(final boolean enabled) {
    final Bundle extras = new Bundle();
    extras.putBoolean(Intents.EXTRA_START_SCAN, enabled);
    extras.putBoolean(Intents.EXTRA_SHOW_PREVIEW, enabled);
    extras.putBoolean(Intents.EXTRA_SHOW_MERCHANT_PREVIEW, enabled);
    extras.putBoolean(Intents.EXTRA_LED_ON, false);
    return extras;
public boolean startBarcodeScanner() {
    return new BarcodeScanner(this).startScan(getBarcodeSetting(true));
public boolean stopBarcodeScanner() {
    return new BarcodeScanner(this).stopScan(getBarcodeSetting(false));

Note that the Clover Station and Clover Mini use the same mechanism to handle barcodes read from the internal device camera and the Mobile laser scanner. Apps do not need to be aware of the hardware the merchant is using to scan.

Did this page help you?