Hi everyone,
I’m seeing a consistent one-day discrepancy between the expiresDate returned by the App Store Server API and the “Expires on” date shown in the iOS Settings / App Store subscription list. I’d like to confirm whether this behavior is expected or if I’m misunderstanding the way Apple rounds dates.
Reproduction steps
1 | Purchase a 1-month auto-renewable subscription on 23 June 2025 14:00 JST (UTC+9) | Transaction succeeds |
2 | Immediately fetch the transaction with GET /inApps/v1/subscriptions/{transactionId} | Response contains "expiresDate": "2025-07-23T05:00:00Z" (= 23 July 2025 14:00 JST) |
3 | On the same device open Settings › Apple ID › Subscriptions (or App Store › Account › Subscriptions) | UI shows Expires on: 22 July 2025 |
The same happens for every monthly renewal and on multiple devices. Region is Japan, device time zone Asia/Tokyo.
What I understand so far (and my hypothesis)
- Apple’s docs say a monthly subscription renews “on the same calendar date” of the next month, so renewal in this example is 23 July.
- If the renewal is scheduled for 23 July at 14:00 JST, the subscription is fully usable until the end of 22 July in calendar terms, because the new billing period starts the moment the 23rd begins in Apple’s canonical time zone.
- Therefore, it might be intentional for the UI to display 22 July—i.e., “you can keep using it through the 22nd; on the 23rd it renews.”
This hypothesis makes sense internally, yet it still looks confusing to end users who read “Expires on 22 July” and assume access ends at 00:00 on the 22nd, a whole day earlier than in reality.
Questions
Is showing the day before the renewal date the official/expected behavior? If so, could Apple clarify that the “Expires on” label represents the last full calendar day rather than the exact expiry timestamp? Which value should we surface in-app when telling users “Your subscription is valid until …”?
- The server’s expiresDate (precise to the second, converted to user time zone), or
- A UI-style date that’s one day earlier, matching Settings / App Store?
- Does Apple have a public document describing this rounding/visual convention?
- Have other developers encountered user confusion about the apparent 1-day “shortening” and, if so, how did you word your in-app messaging?
Any insight from Apple engineers or fellow developers would be greatly appreciated.
Thank you!