How can you provide better customer support and refund handling with Apple’s latest updates?

In the last two days, we’ve been covering Apple’s WWDC 2021 and the main takeaways from the event. If you haven’t seen our previous posts, make sure to check them out. We already discussed the new features of StoreKit 2 and updates to managing in-app purchases. It’s been a busy week, but we couldn’t complete our series without mentioning the latest updates to customer support and refund-related features. Let’s get started.

Customer Support

Top-notch customer support is imperative for any business, mobile apps are no exception. So, how can you provide a smoother customer experience from now on?

This year, Apple is helping you deal with support issues seamlessly by introducing new StoreKit and App Store server APIs. Besides providing support, they are here to facilitate relationship management with existing customers, boost retention levels, increase customer satisfaction, and reduce churn.

As you may know, until now, customers could contact developers directly or turn to Apple whenever faced with in-app purchase issues. Typically, whatever they’d be reaching out about — you would end up asking yourself one of these questions:

Let’s take a closer look at each one of these scenarios.

Identifying purchases made by a customer

Whenever customers make an in-app purchase, they receive a corresponding invoice via email. The invoice contains some basic information, including an Order ID. Now, you can ask the customer for this identification and use the new server-to-server API to lookup in-app purchases for that particular invoice. Moreover, you’ll be able to validate the invoice and identify any existing issues with the purchase. For example, if the purchase in question has already been refunded by the App Store.

How does the new invoice lookup API work?

After you get the customer Order ID, your server can call the invoice lookup API. In response, the App Store will return the status and the transactions for that invoice, signed in a JWS format. Then, using this information, you can provide support for the correct in-app purchases.

As previously mentioned, you’ll see a new status field that has the following possible values:

0 = the invoice is valid

1 = the Order ID is invalid

2 = the invoice is valid, but no matching transactions were found for this Order ID.

Looking up past refunds

Until now, you’ve probably relied on the verifyReceipt API or App Store server notifications to get notified about refunds. Unfortunately, whenever there was an outage and your server couldn’t receive any notification from the App Store, you’d struggle to lookup a customer’s past refunds.

The good news is, Apple is introducing a new server-to-server API to lookup refunded transactions for a customer by using the original transaction ID for any of their in-app purchases within your app. This means, that you’ll now be able to handle an outage or scheduled maintenance by quickly looking up refunds at any time.

Issuing compensations for issues

In iOS 14, Apple introduced a new feature — Subscription Offer Codes. It helps you acquire, retain, and win back subscribers by providing a subscription at a reduced price or offering a free trial for a limited time.

These one-time codes can be distributed via online or offline channels. Moreover, for customer service issues, you can provide offer codes as compensation. This strategy has actually been proven to increase retention. You can also use this opportunity to suggest another subscription to the customer. For instance, a longer duration plan that provides better value at a lower price point.

Appeasing customers for outages or canceled events

Thanks to Apple’s new renewal extension server-to-server API the renewal date for a paid, active subscription can be extended. Also, you are able to offer free service for additional time. This can be great for appeasing users after a temporary outage or a service issue.

You can use this API whenever a customer contacts your support team for a service issue or an outage. In turn, you appease them by calling this API, in response to which, the App Store extends the subscription and notifies the customer via email.

Alternatively, if there is a cancelation to an event due to an unforeseen situation, your support team can proactively use the API. Just like before, the App Store will extend the subscriptions and notify the customer via email.

Helping customers manage their subscription within the app

With the new StoreKit 2 API you’ll be able to provide subscription management functionality right within your app and even present a save offer before a subscriber sees the manage subscriptions page or an exit survey. Finally, you’ll also have the opportunity to test manage subscriptions in the sandbox environment.

Enabling customers to request refunds inside your app

We’ve finally reached the final common scenario you might face whenever a customer reaches out to your support team.

This year, Apple introduced a new StoreKit 2 API called beginRefundRequest that lets customers request a refund directly from within your app. In case of approval, the app will be notified and your server will receive a REFUND notification from the App Store. Similarly, in case of denial, your server will get a new REFUND_DECLINED notification. Moreover, just like we said in the previous section, you’ll be able to initiate and test refunds in sandbox.

Refunds Handling

As we said at the beginning, there are also some updates to managing refunds. Since the launch of refund notifications, Apple has been closely monitoring its performance and developer feedback.

Having received many requests calling for the ability to let developers have a more active role in refund decisions, Apple announced a new feature. It is the new Consumption API that is meant to improve and inform the refund process. With it, you can share information about a customer’s in-app purchase with the App Store.

Specifically, when a customer requests a refund for a consumable in-app purchase, the App Store will send your server a new CONSUMPTION_REQUEST notification. Then, you’ll respond back with the consumption data.

Most of the time, customers begin consuming content pretty soon after purchasing it. This is important to note in the refund decision process. Hence, you should make sure to send consumption information to the App Store within 12 hours of receiving the CONSUMPTION_REQUEST. That way, it’ll be used to inform the refund decision.

The consumption payload includes the following fields:

For refund requests, there are three related App Store server notifications:

  • CONSUMPTION_REQUEST – notifies you when a refund request has been initiated for a consumable in-app purchase.
  • REFUND – notifies you when a refund is issued to a customer.
  • REFUND_DECLINED – notifies you when a refund was declined for a request that was initiated through the Store Kit API.

The consumption and refund flow will now be as follows:

  1. The customer requests a refund
  2. The App Store server sends your server a consumption request notification
  3. Your server responds back within 12 hours with the consumption data
  4. In case of approval, the App Store sends the REFUND notification
  5. Your server responds with an HTTP OK response
  6. You take the appropriate action for that refund

To finish up, you’ll be happy to know that the consumption API is now available for testing in both — production and sandbox.

As you can imagine, the new consumption API helps increase transparency and improve the refund process. Naturally, this leads to better overall outcomes for customers. Moreover, the new REFUND notification provides you with much more opportunities to reach your customer, thus leading to an improvement in communication efforts.

Ready to Improve Your Customer Support and Refund Handling?

To summarize, with the new StoreKit APIs, you can now add custom help UI in your app for customers to request a refund or manage their subscriptions within the app. Additionally, you gain the ability to review customer support journeys with the help of server-to-server APIs. 

Overall, the new APIs now help provide seamless support for in-app purchases right within your app and across other support channels. The better support you provide, the higher the overall retention you will witness. Moreover, customer satisfaction will improve and lead to higher engagement and better ratings.

This concludes our 3-part WWDC 2021 summary series. We were glad to summarize the key takeaways for you. As we mentioned in previous posts — we will always stay up-to-date with Apple’s latest developments to make sure we provide products and services that best serve your needs.

More articles from WWDC 2021:

You might also like: Guide to handle StoreKit Errors here and in discussions.