App subscription plan upgrades/downgrades

Hey @Min_Liu, part of what you’re seeing is a dev store limitation. Test subscriptions don’t create real billing records, so the deferral doesn’t work there. Same limitation I mentioned earlier in this thread about test charges.

One thing to know for production though: the subscription object in the API updates immediately when a merchant downgrades. A merchant can only have one active subscription at a time, so when they accept the downgrade, activeSubscriptions reflects the free plan right away. The deferral is specifically about billing. The merchant has paid through currentPeriodEnd, so use that timestamp to gate feature access instead of the subscription name.

Another developer ran into this exact scenario with managed pricing and I walked through it in detail here: