If you see IAP 2.1(b) completeness rejection 锟斤�?read this first
Apple's rejection message says Missing Metadata or In-App Purchase completeness issue. The real cause is almost always one thing: your IAP was never attached to the current review submission, and/or it is stuck at state READY_TO_SUBMIT ¡ª Apple auto-rejects within ~30 minutes.
Not in any Apple documentation. The fix is an App Store Connect web step the REST API cannot perform. Caught 3 of my 4 apps. Takes 15 min to fix once you know where to look.
The 5 rejection patterns that look like metadata problems
IAP 2.1(b) completeness 锟斤�?IAP not attached to review submission, or IAP stuck in READY_TO_SUBMIT state
Missing metadata 锟斤�?screenshot ratio wrong, not the screenshot itself
Guideline 4.3 锟斤�?App Store Connect build vs Xcode build bundle ID mismatch
IAP not enabled 锟斤�?capability drift between Xcode project and ASC portal
Binary rejected (Swift) 锟斤�?truncatingRemainder on signed accumulator in release build
The IAP 2.1(b) fix 锟斤�?exact steps
If your rejection says "In-App Purchase completeness issue" or "2.1(b)" 锟斤�?here's the check:
ASC API V1 锟斤�?Pre-flight IAP state check
# Step 1: Verify every IAP is in the right state before submitting
GET https://api.appstoreconnect.apple.com/v1/apps/{app_id}/inAppPurchasesV2
# Every IAP must show state: WAITING_FOR_REVIEW or APPROVED# If any IAP shows READY_TO_SUBMIT -> Apple auto-rejects within ~30 min# Step 2: The REST API CANNOT attach the IAP to the review submission.# POST /v1/reviewSubmissionItems only accepts:# appStoreVersion / appCustomProductPageVersion / appEvent# Every IAP relationship variant returns 409 ENTITY_ERROR.RELATIONSHIP.UNKNOWN## The fix is a web-UI-only step in App Store Connect:# App version page -> "In-App Purchases" section -> "Add for review" toggle
8-step IAP Rejection Diagnostic
1
Check ASC 锟斤�?App Store 锟斤�?TestFlight tab 锟斤�?build state
2
GET /v1/apps/{id}/appStoreVersions 锟斤�?find state
3
GET /v1/apps/{id}/inAppPurchasesV2 锟斤�?confirm every IAP state is WAITING_FOR_REVIEW or APPROVED, never READY_TO_SUBMIT
4
In App Store Connect web UI: version page 锟斤�?"In-App Purchases" section 锟斤�?toggle each IAP with "Add for review" (the REST API cannot do this step)
5
Confirm IAP review screenshot is uploaded in ASC web UI
6
Resubmit: POST /v1/apps/{id}/reviewSubmissions with appStoreVersion item only
7
Wait 2-4 hours 锟斤�?check state for READY_FOR_SALE or new rejection
8
If new rejection 锟斤�?check Resolution Center, loop back to step 1
7 of 7
apps approved on resubmit after the correct fix
15 min
avg diagnostic time
8
rejection cycles saved
1
expedited review earned
Key pattern
7 of 7 apps approved on resubmit after the correct fix ¡ª typically same-day
AltitudeNow v1.0.3 �PromptVault �DaysUntil �AutoChoice �NewDaysUntil �TipJar Now �FocusFlow Lite �HabitHash
All verified on App Store; approvals were same-day on the resubmit after the fix. Full pipeline �/a>
Apps that cleared review after this fix
AltitudeNow
v1.0.2 rejected (IAP 2.1b) 锟斤�?v1.0.3 APPROVED same-day after ASC web "Add for review" fix + expedited review. v1.0.4 in Apple Review (1st cycle).
PromptVault
Rejected twice 锟斤�?approved on resubmit after ASC web "Add for review" fix. No further rejections.
DaysUntil
Rejected once 锟斤�?approved same day after fix. LIVE on App Store.
NewDaysUntil
v1.0.3 APPROVED 2026-05-22. Caught IAP relationship mismatch in pre-flight. Approved first submission.
Encrypted habit tracker. APPROVED same day. Auto-released v1.0.1 the same morning as approval.
All 7 apps now LIVE. 7 approved on the resubmit after the IAP 2.1(b) fix — typically same-day. Full B2B pipeline
Which option is right for you?
Free
12-Point Rejection Checklist
If you have time and want to debug the API yourself. You get the diagnostic tree + code snippets. No strings attached. Download above.
$249
iOS Audit Sprint ??best for same-day urgency
If Apple already rejected you and you have a launch window. 60-min call + written audit + the exact fix. 30-day refund if it does not resolve. Book a 15-min call →
$890
Operator Sprint ??full hands-off recovery
If you want me to handle the entire resubmission: diagnostic + fix + API submit + reply to Apple. You do nothing. Best for agency owners or devs with no time.
Not sure which? Book a 15-min call and I will tell you honestly ??if the free checklist is enough, I will say so.
Common questions before booking
What exactly do I get for $249?
60-min screen share. You show me the rejection email, I walk through the ASC API response to find the broken field. Written audit + 14-point checklist after the call. 30-day Slack follow-up. If Apple rejects again after applying the fix, you get a full refund.
How long does the actual fix take?
IAP 2.1(b) fix (ASC web "Add for review" toggle + IAP state preflight): 15 minutes once you know the pattern. The 7 approvals above are all on this fix ¡ª typically same-day after the correct ASC web step. Other rejection types (4.3, 5.1.1, 2.3.3) vary ??the diagnostic call tells you exactly what you are facing.
What if the fix does not work?
30-day full refund. No questions asked. Apple rejected 4 of my own apps before I found the patterns ??I know what it feels like and I am not going to profit from a rejection that does not resolve.
Do you handle non-IAP rejections (4.3, 2.3.3, etc.)?
Yes. I have fixed screenshot 2.3.3 rejections (FocusFlow Lite + HabitHash), metadata 4.3 duplicates (PromptVault), and capability drift issues. The diagnostic call identifies the exact pattern before you pay anything.
Actual Fixes ??Same Day
AutoChoice + DaysUntil
Approved 2026-05-22 ??IAP "Add for review" fix + correct IAP state
Rejected for IAP completeness ??ASC web step applied, same-day release
FocusFlow Lite + HabitHash
Approved 2026-05-21 ??Screenshot 2.3.3 fix
Rejected for screenshot issues ??screenshots updated + resubmitted, same day
AltitudeNow v1.0.2 ??v1.0.3
Submitted for review ??v1.0.4 in Apple Review (1st cycle)
4 app binary updates shipped same week. 7 apps approved on resubmit after the correct fix.
7 of 7 iOS apps LIVE on the App Store ??7 apps approved on resubmit after the correct fix ¡ª typically same-day