I was experiencing '500 Internal Server Error' responses from the API when attempting to call StartPurchase and it took me a while to track down the issue. Turns out I had a few items in the catalog without any prices specified (and I didn't realize my code was trying to purchase those items). Just wanted to file a suggestion: if the error response could be more specific in this case that would be helpful. Thanks!
(Using latest Unity SDK, if that's useful info.)