How to Fill App Encryption Information in Info.plist
App Store Connect asks about encryption when you upload a build to TestFlight or submit a version for App Review. If the answer never changes, put the encryption declaration directly in your app’s Info.plist. This prevents the same export compliance questionnaire from appearing on every upload.
The key you usually need is ITSAppUsesNonExemptEncryption. The name is easy to misread: it does not ask whether your app uses any encryption at all. It asks whether your app uses non-exempt encryption.
Quick Answer
Section titled “Quick Answer”For most apps, the decision looks like this:
- Set
ITSAppUsesNonExemptEncryptiontoNO/falseif the app uses no encryption, or only encryption that is exempt from export compliance documentation. - Set
ITSAppUsesNonExemptEncryptiontoYES/trueif the app uses non-exempt encryption. - Add
ITSEncryptionExportComplianceCodeonly after Apple approves your export compliance documentation and gives you the code. - If you omit
ITSAppUsesNonExemptEncryption, App Store Connect can ask the encryption questions every time you upload a new build.
Common examples that often fit false include apps that only use HTTPS through Apple’s networking APIs, Keychain, CryptoKit, Security framework APIs, CloudKit, StoreKit, Sign in with Apple, or other encryption limited to Apple’s operating system. Verify this if your app ships a third-party SDK that implements its own cryptography.
Add The Key In Xcode
Section titled “Add The Key In Xcode”Open the app target in Xcode:
- Select the project in the navigator.
- Select your app target.
- Open the Info tab.
- Add a new custom property named App Uses Non-Exempt Encryption.
- Set the type to Boolean.
- Set the value to NO or YES.
Xcode writes this as the raw Info.plist key ITSAppUsesNonExemptEncryption.
For this Boolean key, NO means false, and YES means true.
If your app does not use non-exempt encryption, set NO in Xcode. The raw plist entry should be:
<key>ITSAppUsesNonExemptEncryption</key><false/>If your app does use non-exempt encryption, set YES in Xcode. The raw plist entry should be:
<key>ITSAppUsesNonExemptEncryption</key><true/>Make sure the value is a real Boolean, not the string "NO", "YES", "FALSE", or "TRUE".
When To Use NO / false
Section titled “When To Use NO / false”Use NO in Xcode, or false in the raw plist, when the app either does not use encryption, or uses only encryption that Apple treats as exempt from export compliance documentation.
Typical cases:
- the app connects to your backend over HTTPS;
- encryption is limited to APIs provided by iOS, iPadOS, macOS, watchOS, tvOS, or visionOS;
- the app stores credentials in Keychain;
- the app uses Apple frameworks for authentication, purchases, iCloud, CloudKit, or push notifications;
- third-party SDKs do not add their own non-exempt encryption.
This is the most common setup for a normal consumer app that talks to an API over TLS and does not implement its own security layer.
When To Use YES / true
Section titled “When To Use YES / true”Use YES in Xcode, or true in the raw plist, when the app uses non-exempt encryption. This can include cases where the app contains or links encryption that is not limited to Apple’s operating system, uses proprietary or unpublished cryptography, or requires export compliance documentation based on the App Store Connect questionnaire.
Examples that need extra review:
- a VPN, secure messaging, password manager, encrypted storage, security, or antivirus app;
- proprietary or non-standard encryption algorithms;
- bundled crypto libraries such as OpenSSL, libsodium, or a custom cryptography module;
- industry-standard algorithms implemented outside Apple’s operating system;
- features where encryption is a primary product capability.
If App Store Connect says documentation is required, upload the requested documentation before submitting the build for TestFlight review or App Review.
Add The Compliance Code
Section titled “Add The Compliance Code”When documentation is required, App Store Connect can provide a code after the export compliance documentation is approved. Put that value in ITSEncryptionExportComplianceCode.
<key>ITSAppUsesNonExemptEncryption</key><true/><key>ITSEncryptionExportComplianceCode</key><string>YOUR_APPROVED_CODE</string>Do not invent this value. It must be the code Apple provides after reviewing your documentation.
Use App Store Connect If You Are Unsure
Section titled “Use App Store Connect If You Are Unsure”If the app’s encryption status is unclear, answer Apple’s questionnaire first:
- Open App Store Connect.
- Select the app.
- Open App Information.
- Find App Encryption Documentation.
- Click the add button and answer the questions.
You can also click Manage next to a build that is missing encryption information on the TestFlight or Distribution screen.
Once App Store Connect confirms that no documentation is required, set ITSAppUsesNonExemptEncryption to NO / false. If documentation is required, upload it, wait for Apple’s review, attach the approved documentation to the build if needed, then add the compliance code to Info.plist.
Check The Built App
Section titled “Check The Built App”The value must be in the plist that is actually bundled into the uploaded app. If App Store Connect still asks the same encryption questions, check these issues:
- the key was added to the wrong target;
- the Release configuration uses a different
Info.plist; - a build script generates or overwrites the plist during archive;
- the key was added as a string instead of a Boolean;
- the build was uploaded before the plist change;
ITSAppUsesNonExemptEncryptionisYES/true, but the required documentation has not been approved or attached.
For React Native, Flutter, Unity, and other cross-platform projects, edit the iOS app target’s final Info.plist, not only the framework-level config file.
Example For A Typical HTTPS App
Section titled “Example For A Typical HTTPS App”Many apps only call a backend over HTTPS and use Apple frameworks for local storage, purchases, notifications, and authentication. For that case, the usual plist entry is:
<key>ITSAppUsesNonExemptEncryption</key><false/>After uploading a new build with this key, App Store Connect should stop asking you to answer the export compliance questionnaire for every submission, as long as your app’s encryption behavior does not change.