Reader SDK Requirements

Partner applications enabling sellers to take payments in person use the Reader SDK. The App Marketplace requirements described in this topic apply to partner applications that use the Reader SDK.

Link to section

Access token management

Access tokens must not be stored on mobile devices. They must be stored securely on a server and requests to the Square API must be proxied through that server.

Link to section

Mobile authorization code

Partner applications must be authorized to take payments on behalf of a seller account. The Mobile Authorization API returns a short-lived authorization code that cannot be stored or reused. The application server must send a Square Mobile Auth Code request that has an OAuth granted access token with the PAYMENTS_WRITE_IN_PERSON scope parameter. The application server sends the returned Auth Code to the mobile client for use in the ReaderSdk.authorizationManager().authorize(authorizationCode) call.

Link to section

Checkout parameters

Partner applications must submit checkout parameters that match the seller experiences in both the partner platform application and on Square. For example, if the partner application manages receipts, the [checkoutParameters.builder.skipReceipt](https://developer.squareup.com/docs/api/reader/ios/index.html /android/com/squareup/sdk/reader/checkout/CheckoutParameters.Builder.html#skipReceipt-boolean-) value must be true so that the receipt functionality isn't duplicated.

Link to section

Delayed capture

If the integration must support the delayed capture of payments, partners must use the Transactions API to capture the payment.

Link to section

Refunds

If the integration supports refunds, partners must use the Transactions API to perform refunds.

Link to section

International availability

The Reader SDK is currently not available outside the United States.

Link to section

Testing on a personal device

If you're testing your Reader SDK integration on a personal iOS device, you could encounter undesired behavior in your application if you have Apple Pay installed. This can happen when your device is in proximity to an NFC or RF card reader. The device senses the reader and might open the Apple Pay wallet over your Reader SDK application, making it difficult to enter a payment card in the application.

Reader SDK logic attempts to suppress the display of the Apple Pay wallet but can only do so if your application has the com.apple.developer.passkit.pass-presentation-suppression entitlement installed. Complete the following steps to do so:

  1. Request an entitlement to disable Apple Pay by contacting [email protected].
  2. In your Xcode project entitlements file, add a new key (com.apple.developer.passkit.pass-presentation-suppression) and set the value type to Boolean and the value to YES.