We're hitting a hard block on TestFlight beta distribution and cannot find a way to recover. Posting here in case others have seen this and in case Apple engineering can clarify what to check.
Symptoms
Every TestFlight submission for our app fails with:
status: 422 code: ENTITY_UNPROCESSABLE.BETA_CONTRACT_MISSING title: "Beta contract is missing for the app." detail: "Beta Contract is missing."
The build itself uploads and finishes processing normally in App Store Connect. It just cannot be assigned to any tester group (internal or external). Adding internal testers and trying to install on a personal device returns "The requested application is unavailable."
What we've already verified
- Account is active (Account Holder can sign in to App Store Connect normally).
- Paid Applications agreement shows as "Active" under Agreements, Tax, and Banking.
- Free Apps agreement is also active.
- No pending agreements, no banking warnings, no tax forms outstanding.
- Builds for the same app processed successfully (no ITC errors during upload).
- Reproduced across multiple builds (1004, 1005), same error every time.
- App Store Connect API call to /v1/buildBetaDetails returns the same 422.
- TestFlight tab shows the build under "Internal Testing — Missing Compliance", but compliance answers are filled in correctly.
- Re-uploaded via Transporter and via
xcrun altool— identical result.
What we've already tried
- Removed and re-added the app's primary App Store Connect app record (kept).
- Toggled export compliance answers off/on.
- Created and re-created internal tester groups.
- Deleted and re-added internal testers.
- Verified Apple Developer Program membership status (Active, renewed 2026-04-23).
- Verified bundle ID provisioning profile and entitlements.
- Submitted a Developer Program Support ticket (no response after 5 business days).
Question
- Is ENTITY_UNPROCESSABLE.BETA_CONTRACT_MISSING expected to surface on an account where Paid Apps and Free Apps agreements both show as Active?
- Is the "Beta contract" a separate agreement that needs to be re-accepted somewhere other than Agreements, Tax, and Banking? If so, where?
- Are there cases where this state is set server-side and cannot be cleared by re-accepting agreements? If yes, what is the proper channel to request server-side reset?
Any pointers from Apple engineering or other developers who have hit this would be appreciated.
Environment:
- Xcode 17.x
- macOS 26
- App Store Connect API: latest
- Apple Developer Program membership: Active
- App type: iOS app, network extensions, family sharing enabled