All articles
Deep dive9 min read

A refund on Apple's monthly subscription with a 12-month commitment can end the whole year, or just one month of it

Apple's monthly subscription with a 12-month commitment splits refunds in two. Refund a past month and billing carries on. Refund the current month and the commitment ends on the spot. Here's how each case reaches your server, what it costs, and what to send Apple.

A year wall calendar with one month torn away next to a smartphone, illustrating a refund on a monthly subscription with a 12-month commitment

Key takeaways

  • On Apple's monthly subscription with a 12-month commitment, a refund for a prior billing period revokes only that month's transaction, and the customer stays subscribed with billing on schedule.
  • When Apple refunds the current billing period of a monthly subscription with a 12-month commitment, the commitment ends immediately and the remaining monthly payments are never billed.
  • A customer who cancels a 12-month commitment plan cancels the renewal of the commitment, not the remaining payments, so Apple keeps billing every month and sends EXPIRED only after the 12th period.
  • Billing Grace Period doesn't apply to monthly subscriptions with a 12-month commitment. Apple tells developers to revoke access on DID_FAIL_TO_RENEW and restore it on DID_RENEW with subtype BILLING_RECOVERY.
  • If Apple can't recover a failed monthly payment on a 12-month commitment plan within 90 days, the commitment ends and the revocation is final.
  • A refund request on a commitment plan triggers a CONSUMPTION_REQUEST, and Apple asks for consumption data and a refund preference for that billing period within 12 hours.
  • Upgrading from a 12-month commitment plan to a higher tier ends the commitment immediately, and the customer may receive a prorated refund for the unused part of the current period.

One approved refund on Apple's monthly subscription with a 12-month commitment can take back a single payment or cancel every payment left in the year. Which one happens depends on a detail most server code never checks: whether the refunded month is the current one. Apple's documentation spells it out. A refund for a past billing period leaves the commitment running. A refund for the current period ends it immediately. Treat both the same way and you'll either cut off a customer who's still paying or keep serving one who isn't.

How Apple's 12-month commitment plan bills

Apple launched the option in April 2026. It isn't a new product type. You add a monthly billing plan to an existing one-year auto-renewable subscription in App Store Connect, and the product ID stays the same. The customer pays every month, has committed to 12 payments, and the commitment renews into another 12 months when the last payment completes, unless they cancel first.

RuleWhat Apple's documentation says
Where it's soldEvery storefront except the United States and Singapore
Devices and SDKOS 26.4 or later, not watchOS, in apps built with the 26.5 SDK or later
Price limitsThe 12-month total must be at least the upfront annual price and no more than 1.5 times it
PrerequisiteUpfront annual availability must be set up in a country before monthly billing can be offered there
How it appears in databillingPlanType is MONTHLY, and commitmentInfo carries billingPeriodNumber, totalBillingPeriods, commitmentExpiresDate and commitmentPrice
If you remove the optionExisting customers don't renew at the end of their commitment, and new customers can't choose it

Each billing period produces its own transaction and grants one month of access. That detail is what makes refunds behave the way they do. Apple refunds transactions, and on a commitment plan every month is a separate transaction.

What a refund does to a 12-month commitment

Apple's guide to the commitment life cycle splits refunds into two cases. The difference is which billing period the refund applies to.

Refund applies toWhat happens to the commitmentWhere you see itWhat your server should do
A prior billing periodContinues unaffected. Billing stays on schedulerevocationDate on that period's transactionRevoke that transaction only. Keep the subscription active
The current billing periodEnds immediatelyrevocationDate on the latest transactionEnd access. No further payments will come
An upgrade to a higher tierEnds immediately and the new plan startsDID_CHANGE_RENEWAL_PREF, subtype UPGRADESwitch the entitlement. A prorated refund for the unused period may follow

Does a refund in month two cancel the rest of the year?

No, as long as month two is in the past. Say a customer is in month five and Apple refunds their month-two payment. Apple revokes the month-two transaction, and the customer stays subscribed. Billing for months six through twelve continues. Apple's guidance is explicit here: check the revocationDate on the affected transaction, but don't interpret it as a commitment cancellation.

When a refund ends the commitment

If the refund applies to the current billing period, the commitment ends right away. The signal is a revocationDate on the latest transaction. Its presence means the current period has been revoked and there are no more payments coming, so access ends too.

Upgrades can refund money too

Apple notes that customers may receive a refund after changing their plan, not only after asking for one. An upgrade from a commitment plan to a higher-tier subscription is immediate. The commitment ends, the new plan starts, and the customer may get a prorated refund for the unused part of the commitment's current period. Downgrades work the other way. They wait until the 12-month commitment completes.

Cancelling isn't a refund

A customer who taps Cancel on a 12-month commitment plan hasn't stopped paying. Apple says they're cancelling the renewal of the commitment, not the remaining payments in the current term. Here's what reaches your server.

  • Apple sends DID_CHANGE_RENEWAL_STATUS with subtype AUTO_RENEW_DISABLED.
  • The commitment's auto-renew status drops to 0, so the commitment won't renew when the term ends.
  • The subscription renewal info still shows willAutoRenew as 1, because monthly billing continues.
  • DID_RENEW notifications keep arriving for each remaining month. EXPIRED comes after the 12th period, and that's when access ends.

Apple tells developers to check the billing plan type before running their usual cancellation logic. If it's MONTHLY, don't revoke anything. Honor every remaining billing period.

There's one regional exception. App Store Connect Help says a customer who cancels keeps paying until the commitment is complete, except in certain regions, and links to Apple's page on cancelling subscriptions in Germany, Israel, South Africa and Türkiye. In those four countries, customers have the right to cancel a subscription with immediate effect and get a prorated refund at any time.

Failed payments end access right away

Commitment plans drop a safety net you may rely on elsewhere. Billing Grace Period doesn't apply. When a monthly renewal fails, Apple tells you to revoke access while the subscription sits in billing retry and to restore it only if the payment recovers.

NotificationWhat it tells youWhat to do
DID_FAIL_TO_RENEWisInBillingRetryPeriod is trueRevoke access now
DID_RENEW, subtype BILLING_RECOVERYcommitmentExpiresDate shifts to reflect the recovery dateRestore access and store the new end date
EXPIRED, subtype BILLING_RETRYApple couldn't recover the payment within 90 daysThe commitment is over. Your earlier revocation is final

After a recovery, read commitmentExpiresDate from the latest transaction. It won't match the original end date, and every later renewal follows the shifted schedule.

A developer at a laptop late at night checking subscription notifications on a server dashboard, with a smartphone beside the keyboard

What a commitment plan refund costs you

Here's the money, using example prices. Say your upfront annual plan costs €59.99 and the monthly commitment option costs €6.99, which totals €83.88 over 12 months. That sits inside Apple's limit of 1.5 times the upfront price.

Scenario, customer in month 4Payments refundedFuture payments lostCommitment value gone
Apple refunds month 2€6.99None. Months 5 to 12 still bill€6.99
Apple refunds month 4, the current period€6.99€55.92, eight payments never billed€62.91
Customer cancels, no refundNoneNone. Months 5 to 12 still bill€0
Customer in Germany cancelsA prorated share of month 4€55.92Up to €62.91

Those are customer prices. What you actually lose is your share of each payment. Apple pays 70% of the subscription price, minus applicable taxes, during a subscriber's first year of paid service, and 85% after that or for members of the App Store Small Business Program.

The refund is only half the bill. A month of access isn't free to serve. If your app runs AI generations, calls paid third-party APIs, or stores customer files, you paid for that compute, those calls and that storage during the refunded month. A past-month refund hands the payment back and leaves those costs with you. A current-month refund does the same and also deletes the rest of the year from your forecast.

How to answer the CONSUMPTION_REQUEST for a commitment plan

This is the one point where you get a say. When a customer requests a refund on a commitment plan, Apple sends a CONSUMPTION_REQUEST to your App Store Server Notifications V2 endpoint. You answer with Send Consumption Information, and Apple asks you to respond within 12 hours. The response carries consumption data and your refund preference for that billing period, not for the whole commitment.

  • Send data only if the customer consented. Apple's documentation says that without consent, you shouldn't respond to the request at all.
  • Leave consumptionPercentage out. The API returns ConsumptionPercentageAutoRenewableSubscriptionError when you send it for an auto-renewable subscription.
  • Base your refund preference on that month's usage. A customer who ran 300 paid generations in the disputed month left a record of real costs. One who never opened the app didn't.
  • Look at which period the request covers. A request on the current period, if Apple approves it, ends the commitment. A request on a past period doesn't.

What your server needs to handle

  • Read billingPlanType on every transaction and renewal notification. MONTHLY means commitment rules apply.
  • Grant access from the transaction's expirationDate. Apple says commitmentInfo's expiration date is for showing progress, not for deciding access.
  • On a refund, check whether the latest transaction carries a revocationDate before ending the subscription.
  • On cancellation, keep access until EXPIRED arrives after the 12th period.
  • On DID_FAIL_TO_RENEW, revoke at once. Don't wait for a grace period that won't come.
  • Store commitmentExpiresDate again after every BILLING_RECOVERY.

Apple decides every App Store refund, so the CONSUMPTION_REQUEST is your only chance to put usage in front of it. RefundHalt answers those requests automatically inside the 12-hour window and records which billing period each refund hit, so a past-month refund never gets mistaken for a lost subscriber.

Frequently asked questions

What happens when Apple refunds one payment of a monthly subscription with a 12-month commitment?
It depends on the billing period. A refund for a prior period revokes only that month's transaction, and the commitment continues with billing on schedule. A refund for the current period ends the commitment immediately, so the remaining payments are never billed.
Can customers cancel Apple's monthly subscription with a 12-month commitment early?
They can cancel, but cancelling stops the commitment from renewing, not the remaining payments. Billing continues through all 12 periods and access continues with it. App Store Connect Help notes exceptions in certain regions, and Apple's support page says customers in Germany, Israel, South Africa and Türkiye can cancel with immediate effect and get a prorated refund.
Does Billing Grace Period apply to 12-month commitment plans?
No. Apple says Billing Grace Period doesn't apply to monthly subscriptions with a 12-month commitment. Revoke access when DID_FAIL_TO_RENEW arrives, restore it on DID_RENEW with subtype BILLING_RECOVERY, and treat EXPIRED with subtype BILLING_RETRY after 90 days as final.
Do I get a CONSUMPTION_REQUEST for a 12-month commitment plan?
Yes. A refund request on a commitment plan sends a CONSUMPTION_REQUEST to your App Store Server Notifications V2 endpoint. Respond within 12 hours with consumption data and your refund preference for that billing period, and only if the customer consented to sharing data with Apple.
Is the monthly subscription with a 12-month commitment available in the United States?
No. Apple offers it on every App Store storefront except the United States and Singapore, on OS 26.4 or later, excluding watchOS, in apps built with the 26.5 SDK or later.

Sources and further reading

RefundHalt

The refund autopilot for the App Store and Google Play

Keep reading

The next refund request is already on its way.

Set up RefundHalt in the time it takes to read another support email about a refund you didn't get to contest.