Different latest_receipt_info response structures between 2 apps

We have 2 apps on the appstore, they both are setup to have auto renewing subscriptions and I have compared them, aside from price, sku and name differences they appear to be setup in the same manner. The problem I am encounting is that one is returning a different structure for latest_receipt_info when utilizing the VerifyReceipt API endpoint.

Our first app returns:

"latest_receipt_info":{"original_purchase_date_pst":"2022-01-01 12:54:02 America/Los_Angeles", "quantity":"1", "unique_vendor_identifier":"xxx", "bvrs":"42", "expires_date_formatted":"2022-08-01 19:54:01 Etc/GMT", "is_in_intro_offer_period":"false", "purchase_date_ms":"1656705241000", "expires_date_formatted_pst":"2022-08-01 12:54:01 America/Los_Angeles", "is_trial_period":"false", "item_id":"1532749968", "unique_identifier":"00008020-xxx", "original_transaction_id":"100000994429060", "subscription_group_identifier":"00000000", "app_item_id":"0000000000", "transaction_id":"xxxx", "in_app_ownership_type":"PURCHASED", "web_order_line_item_id":"xxxx", "version_external_identifier":"83979xxx7", "purchase_date":"2022-07-01 19:54:01 Etc/GMT", "product_id":"subscription_monthly", "expires_date":"1659383641000", "original_purchase_date":"2022-01-01 20:54:02 Etc/GMT", "purchase_date_pst":"2022-07-01 12:54:01 America/Los_Angeles", "bid":"com.hittraxbaseball.StatsCenter", "original_purchase_date_ms":"1641070442000"}

And our newer app (released in May) returns:

"latest_receipt_info":[ {"quantity":"1", "product_id":"r_monthly", "transaction_id":"xxxxx", "original_transaction_id":"500xxxx", "purchase_date":"2022-06-03 03:24:39 Etc/GMT", "purchase_date_ms":"1654226679000", "purchase_date_pst":"2022-06-02 20:24:39 America/Los_Angeles", "original_purchase_date":"2022-06-03 03:24:40 Etc/GMT", "original_purchase_date_ms":"1654226680000", "original_purchase_date_pst":"2022-06-02 20:24:40 America/Los_Angeles", "expires_date":"2022-07-03 03:24:39 Etc/GMT", "expires_date_ms":"1656818679000", "expires_date_pst":"2022-07-02 20:24:39 America/Los_Angeles", "web_order_line_item_id":"xxxx", "is_trial_period":"false", "is_in_intro_offer_period":"false", "in_app_ownership_type":"PURCHASED", "subscription_group_identifier":"209xxxx"}]

It also contains pending_renewal_info which our old app receipts do not include.

Can anyone tell me why we are getting different response structures? Our processing code was originally built to handle the first app's receipt structure and is now bombing because this alternative receipt structure is so different.

@MFerrisHT did you ever get to the bottom of this? I'm seeing now that we're getting a different structure too, but on the same app. Originally we were getting the second version (array of pending_renewal_info) - which corresponds to the documentation. Now I'm getting the same response as your first app. Can't find any info on this

So I think I figured it out.

Your first app is using the transaction receipt: SKPaymentTransaction.TransactionReceipt.

The second app is using the AppStoreReceiptUrl: NSBundle.MainBundle.AppStoreReceiptUrl.

This second one is the correct one to use I think according to the documentation

Different latest_receipt_info response structures between 2 apps
 
 
Q