IAP rejected under 2.1(b) "failed to load" — products work in Sandbox/TestFlight but fail in App Review

I'm getting repeatedly rejected under Guideline 2.1(b) - App Completeness, with the message that the in-app purchase products "failed to load." This has happened on multiple submissions now, and I'm stuck because everything works fine on my end. My setup:

2 auto-renewable subscriptions + 1 in-app purchase, all in "Waiting for Review" status and attached to the current version (1.0.0). All three products load and purchase successfully when I test via TestFlight with a Sandbox account. No errors at all. Paid Apps Agreement, banking, and tax forms are all Active. I have another app on the same account where IAPs are live and working, so I don't think it's an account/agreement issue. Review device was iPad Air 11-inch (M3), iPadOS 26.5.

One detail that might be relevant: this account was migrated from an individual to an organization account a while back, and there were some app transfers involved on the account (though not for this specific app). What I've already tried/confirmed:

Product IDs in code match App Store Connect exactly. Products are attached to the build (there's no separate section to re-attach them on resubmit, which I understand means they're already linked). Resubmitted multiple times with the same result.

My questions:

Has anyone seen IAPs load fine in Sandbox/TestFlight but consistently fail in App Review specifically? What was the root cause? Could the individual-to-organization migration or prior app transfers cause IAPs to fail loading only in the review environment, even when agreements show Active? Is there anything region/storefront-specific that would make SKProductsRequest / Product.products(for:) return an empty list for the reviewer but not for me?

Any pointers would be hugely appreciated. Thanks!

IAP rejected under 2.1(b) "failed to load" — products work in Sandbox/TestFlight but fail in App Review
 
 
Q