Fastlane and EAS deploy to production error when adding Stripe

Although the build has completing without error on EAS, after deploying via Transporter I receive an “Invalid Binary” email from App Store Connect.


App Store Connect

Dear Developer,

We identified one or more issues with a recent delivery for your app, “AppName” 1.0.0 (18). Please correct the following issues, then upload again.

ITMS-90683: Missing purpose string in Info.plist - Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “AppName.app” bundle should contain a NSCameraUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. If your app supports multiple locales, you’re now required to provide a purpose string value in the Info.plist file in addition to a valid localized string across each of your app’s localization folders. If you’re using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. For details, visit: Requesting access to protected resources | Apple Developer Documentation.

Best regards,

The App Store Team


Turns out that this is because Stripe requires access to the camera within their SDK to scan credit cards by phone. I don’t need this with Apple Pay but it is still required for the App Store.

To fix this issue you need to update your app.json like this:

{
  expo: {
    ios: {
      "infoPlist": {
        "NSCameraUsageDescription": "To scan credit cards using Stripe sdk."
      }
    }
  }
}

Note: The string “To scan credit cards using Stripe sdk.” above can be whatever you think best describes why you need the camera. This could be what I wrote or your purpose.

1 Like