General FAQs
How can I integrate Clover payments into a non-Clover device?
If you're developing an application on a non-Clover device and want to accept payments using Clover, you have two options:
- Card-present payments: These typically require Clover hardware. To process in-person payments, you can use the REST Pay Display APIs for semi-integration, which allow your app to communicate with a Clover payment device.
- Card-not-present payments: For online or remote transactions, you can use the Ecommerce API, which supports web-based payment processing without requiring Clover hardware.
Which Clover integration workspace should I use for a REST API and JavaScript-based payment system?
Clover provides the following integrations:
- Clover Ecommerce API: This is the primary workspace for JavaScript-based web applications. It uses REST APIs to manage payments using Hosted Checkout or Iframe integrations. It is "card-not-present" and does not require physical Clover hardware.
- Clover Go: Although it offers an SDK for mobile apps (iOS/Android), it is primarily designed for card-present transactions using a Bluetooth-connected card reader. It does not support standard web-based JavaScript frameworks or browser-only flows.
- Payments (semi) integration: This workspace is for developers who have their own POS software but want to use Clover devices, such as the Flex or Mini, to process payments. While there is a JavaScript SDK for this (remote-pay-cloud), it requires the physical device to be present to function.
Tip: If you are building a web-based POS but do want to use hardware eventually, look into the REST Pay Display API. It enables a browser-based app to trigger payments on a Clover device using simple REST calls, eliminating the need for a heavy SDK.
Can I connect my Authorize.Net payment gateway to my Clover merchant account?
No, Clover does not support third-party payment gateways such as Authorize.Net. Clover merchants must use the built-in Clover payment processing system. If you are a merchant and need alternative options, contact Clover support to explore any available solutions.
Why am I getting a 401 Unauthorized error when accessing the Customers endpoint in the Clover REST API?
A 401 error usually indicates that your app’s permissions have not been updated correctly. Even if your token is valid and other endpoints work, the Customers endpoint requires specific Customers Read or Customers Write permissions. For more information, see 401 Unauthorized.
Why is my American Express test card returning a 402 Payment Required error (card_declined) error in Clover sandbox, even with a valid CVV?
You can complete the following troubleshooting:
- CVV length: Ensure you are using a 4-digit CVV; 3-digit codes will fail validation.
- Transaction amount: In the sandbox, AMEX success is tied to the amount. Use a whole number (such as $1.00) to ensure approval; specific decimal values are programmed to trigger declines (402 errors) for testing.
- Fraud settings: Check your Merchant Dashboard to ensure the CVV Verification filters aren't blocking test codes.
- Void log: If a transaction fails but appears in Transactions > Voids, the API connection is successful, and the bank declined the charge.
- If the issue persists, email [email protected] for support.
How do I enable webhooks in production to capture payloads from Clover?
To enable webhooks in production, follow these steps using the Clover Developer Dashboard:
- Log in to your production Clover Developer account.
- Go to App Settings > Webhooks.
- In the Edit Webhooks pop-up, enter your callback URL, such as from
webhook.site. - Click Send Verification Code. Clover sends a POST request to your callback URL containing a
verificationCode. - Copy the
verificationCodefrom the payload and paste it into the Verification Code field. - Click Verify to activate the webhook. Once verified, Clover will send payloads to your callback URL for the selected events. The setup process is the same as in the sandbox, but must be completed in the production dashboard for live data.
Note: Currently, Clover does not support tying webhooks directly to a POS device in production. Webhooks are configured at the app level through the Developer Dashboard and are triggered by merchant-level events, such as payments, orders, and inventory updates, not device-specific actions.
Can I get an event or callback when a user selects a tender type in the Clover Register app before payment is completed?
No, Clover currently does not provide a broadcast event or callback for tender selection before payment completion in the Register app. While Clover offers a range of broadcast intents and events, none are triggered specifically when a tender key is selected.
Steps:
- Use the
TenderConnectorto create and register a custom tender. - Implement your app to launch from the Register or Sale apps using Clover Activity Intents.
- Use broadcast receivers to listen for events such as
ACTION_ORDER_CREATEDorACTION_PAYMENT_COMPLETED, but note that these occur after the tender selection.
You can only retrieve the tender type used after the transaction is processed by pulling the payment or order data using the Clover REST API. For details, see Intents and Broadcasts documentation.
How can I retrieve business information for all locations under a single merchant ID?
Clover APIs work on a per-merchant basis using an access token. To get details such as street address, city, state, and ZIP code for each location, you can send a GET request to /v3/merchants/{mId}?expand=merchantsseparately for each location using its specific access token. See Get a single merchant.
Why do I get a 401 Unauthorized error when adding a customer, even though listing customers works?
A 401 error usually indicates an authentication or permission issue. Ensure that
- Your request body is not null and includes valid customer details, such as name, email, and phone number.
- Your access token has the correct permissions for creating customers.
If permissions were changed after the merchant installed your app, they must uninstall and reinstall the app to generate a new access token.
See 401 Unauthorized troubleshooting for more details.
Updated 1 day ago
