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.

66 Responses to “Invalid Product IDs”

  1. I meant in the ID field of the product!

  2. THANKYOU!!!
    I needed to remove the App off my device and reinstall from scratch.
    You saved me hours of head scratching!!
    Cheers

  3. You are a life saver. After going through it over and over again..I finally got In-App purchases working..It’s not even my first attempt at it because I did it for a previous App!

  4. thanks for your summarizing. and sharing. Great.

  5. [...] Are your bank details active on iTunes Connect? (via Mark) [...]

  6. You are a live saver, seems uploading the binary did the trick, (worked in the ios 5 simulator, but not device)

  7. where i can see my bank details on iTunes? and if they are not active then where i should submit them?

  8. com.myco.appname.product did not work, only needed the ‘product’ bit.

  9. > Have you tried deleting the app from your device and reinstalling?

    No but after I did it began to work. Thank you so much for the list as I thought I had it all covered.

  10. Same as Kvaran, deleted from device and all works fine. DUDE YOUR AMAZING FOR DOING THIS LIST, SAVED SO MUCH TROUBLE!! :D :D:D:D

  11. Jailbreak was my problem..

    Excellent article though.. made sure i was covering up other aspects.

    Much thanks… you definitely saved many people a lot of time and frustration.

  12. [...] If you haven’t already, take a look at Troy Brandt’s exhaustive list of invalid product ID issues. [...]

  13. I stumbled on another thing that can seem obvious, but you need to add your in app products to your application details (in itunes connect) before submitting it.

    Thanks for this very usefull checklist.

  14. Troy,

    Your blog has been awesome on all of this. Thank you very much. If I can offer my 1 finding:

    I was trying
    [NSSet setWithObject:@"com.metal-sole.slider.all50"]
    and it was failing (over and over… ug). Then I decided to try every variation in one:
    [NSSet setWithObjects:@"com.metal-sole.slider.all50", @"com.metal-sole.slider", @"all50", nil ];
    and it was the last one that worked! Somehow the “full productID” thing was what was killing me. Not sure.

    Thanks again though. Your help has been simply AWESOME.

    -M@

  15. Non of the above worked for me.

    What was even stranger, is that it worked on my iPhone, but not on my iPad – and I’ve tried removing the app and reinstalling.

    What solved it was – RESTARTING MY DEVICE, lol.

  16. [...] re-visited this same blog post again and again at least 10 times since I started iOS developing, every time with different answer, [...]

Leave a Reply