Strong Customer Authentication Transactions in the European Economic Area
On December 31, 2020, legislation from the European Union introduced Strong Customer Authentication (SCA) requirements for users in the European Economic Area (EEA) that may impact how they complete online purchases. While the App Store and Apple Pay supports SCA, you need to verify your app’s implementation of StoreKit and Apple Pay to ensure purchases are handled correctly.
The Payment Services Directive 2 (PSD2) is a European Union regulation that requires SCA for certain online purchases in order to protect against fraud. When certain transactions are initiated via credit or debit card on a website, in an app, or on the App Store, they must be authenticated by the bank or payment service provider before they can be completed.
- For auto-renewable subscriptions, SCA is required only for the first transaction.
- Purchases under €30 may not require SCA.
- Purchases made with Apple Pay, which already meets SCA requirements, will not require additional authentication.
- Purchases made with mobile phone billing, other payment services, or an Apple ID balance (from gift cards or adding funds) will not require additional authentication.
Handling transactions with StoreKit
For in-app purchases that require SCA, the user is prompted to authenticate their credit or debit card. They’re taken out of the purchase flow to the bank or payment service provider’s website or app for authentication, then redirected to the App Store where they’ll see a message letting them know that their purchase is complete. Handling this interrupted transaction is similar to Ask to Buy purchases that need approval from a family organizer or when users need to agree to updated App Store terms and conditions before completing a purchase.
Make sure your app properly handles interrupted transactions by initializing a transaction observer to respond to new transactions and synchronize pending transactions with Apple. This observer helps your app handle SCA transactions, which can update your payment queue to a state of “failed” or “deferred” as the user exits the app. When the user is redirected to the App Store after authentication, a new transaction with a state of “purchased” is immediately delivered to the observer and may include a new value for the
transactionIdentifier property. You can test interrupted purchase scenarios in sandbox for a specific Sandbox Apple ID.
- Learn about billing and purchases in Europe
- Setting up the Transaction Observer for the Payment Queue
- Offering, Completing, and Restoring In-App Purchases
- Testing In-App Purchases with Sandbox
- Testing In-App Purchases in Xcode
Handling transactions with Apple Pay
Apple Pay includes built-in authentication and doesn’t require additional authentication by banks. However, to avoid issues with payments made with Apple Pay on your apps and websites, make sure you’re using the correct country code on payment requests and showing the final amount on the payment sheet.
countryCode value on the
PKPaymentRequest (for apps) and
ApplePayPaymentRequest (for websites) should be set to the correct two-letter country code for the country in which you’re processing the funds. Setting this correctly ensures a PSD2-compliant cryptogram when the merchant
countryCode and the user’s card issuer both fall within the EEA.
Show the final amount, not a pending amount, on the payment sheet. This will help with dynamic linking, where the transaction amount and a merchant identifier are included in the cryptogram to prove the origin and authenticity of the transaction.