Warning: join(): Invalid arguments passed in /home/troyb/troybrant.net/blog/wp-content/themes/hybrid-hacked/hybrid-hacked/library/functions/breadcrumbs.php on line 79

Invalid Product IDs

Do you have an invalid product ID that won’t go away? Good thing the StoreKit API provides error codes and detailed error information explaining why the ID is invalid.

Oh, what’s that? There are no error codes or error details of any kind when you have an invalid product ID, you say? Bah, silly me.

To save you the pain of exhaustively searching the web for the cause of your error, here is a checklist of everything I have stumbled across that can cause an invalid product ID. Make sure you can answer “Yes” to each of these questions:

  • Have you enabled In-App Purchases for your App ID?
  • Have you checked Cleared for Sale for your product?
  • Have you submitted (and optionally rejected) your application binary?
  • Does your project’s .plist Bundle ID match your App ID?
  • Have you generated and installed a new provisioning profile for the new App ID?
  • Have you configured your project to code sign using this new provisioning profile?
  • Are you building for iPhone OS 3.0 or above?
  • Are you using the full product ID when when making an SKProductRequest?
  • Have you waited several hours since adding your product to iTunes Connect?
  • Are your bank details active on iTunes Connect? (via Mark)
  • Have you tried deleting the app from your device and reinstalling? (via Hector, S3B, Alex O, Joe, and Alberto)
  • Is your device jailbroken? If so, you need to revert the jailbreak for IAP to work. (via oh my god, Roman, and xfze)

If you answered “No” to any one of these questions, there’s your problem.

If you answered “Yes” for each of these questions and you still have an invalid product ID, then you have a problem I haven’t seen before. Check out the links in the next section, several of which are Developer Forum posts that were especially helpful in my hunt for debugging invalid product IDs.

Resources for Debugging an Invalid Product

Here are the docs and resources I used to debug invalid product IDs:

If your solution for invalid product IDs wasn’t mentioned in the checklist above, please leave a comment detailing how you fixed the problem so I can keep the checklist up to date.

158 Responses to “Invalid Product IDs”

  1. FYI, SKProductsRequest doesn’t work in Apple TV **SIMULATOR**. For me I always get those product id I put back in `invalidProductIdentifiers`. Working on real device works fine.

  2. Hi team, since yesterday I’m unable to add any product to the cart. It is always getting prompt message as invalid product I’d. Please heLo me out to resolve this issue.
    Many thanks,
    Krishnamai

  3. I had similar issues and was resolved by verifying email address of sandbox user account.

  4. I must say it was hard to find your site in search results.
    You write interesting articles but you should rank your blog higher in search engines.
    If you don’t know how to do it search on youtube:
    how to rank a website Marcel’s way

  5. For me, it was an issue with “Agreements, Tax, and Banking” in iTunes Connect.

  6. Wow, thank you. For me it was Agreements, Tax, and Banking”. After submitting all of those agreements, they were “processing” for 15 minutes and then it worked.

    Thank you for this post, I don’t know how long I would have been stuck if I hadn’t found it.

  7. Very helpful, thanks!

    A note: IAP worked great in the sandbox, but when publishing the app to the App Store, fetching products just failed (the ID delivered in invalidProductIdentifiers). I let Xcode manage provisioning, but the distribution profile pointed to the wildcard app ID it had set up, instead of the explicit ID it created when I enabled in-app purchases. I thought this might be the reason that it didn’t work.

    This was late at night, and I had to wrap up. But the next day I realised that updating the distribution profile was unnecessary. The issue was that the IAP product (an auto-renewing subscription, if that is relevant) needed a few more hours to process before becoming available to the app. So it turned out that although the distribution profile pointed to the wildcard app ID, either Xcode or iTunes Connect managed to resolve this anyway.

    It might also be relevant that this was the first time this app was made available in the store.

    Another possible relevant thing was that I began preparing a new submission the night before. So I deleted the wildcard app ID and pointed the distribution profile to the specific app ID. However, this was after the app had passed review, and made public in the store, so I wouldn’t think that the app somehow picked up these changes afterwards.

Leave a Reply