This page contains the release notes for Pay by Link, Checkout API, and Drop-in/Components for web, iOS, Android, React Native, and Flutter starting from 2020.
Release notes
Learn about the latest updates to our API, and Drop-in/Components for web, iOS, and Android.
We recommend you use Checkout API v71 or later.
- For native 3D Secure 2, when a shopper cancels the payment during the payment flow, the
didProvide()
delegate method is now triggered. What this means for your integration depends on whether you already make a/payments/details
call to handle 3D Secure 2 errors:- If yes, you do not need to make any changes to your integration.
- If not, update your integration to make a
/payments/details
request to get the details of the canceled transaction.
- Support to distinguish between the regular redirect flow where you redirect the shopper through the browser and native redirects to improve the handling of failed native redirects.
We recommend that you use Checkout API v71 or later.
- When using Drop-In: the
maxIssuerNumber
for Twint can now be set.
- You can now highlight a list item by changing its background color when the shopper selects it. To do this, use the new optional
ListItemStyle.highlightedBackgroundColor
property. Contribution by Github user.
- For Drop-in, some components that are used in the same Drop-in session no longer have stale parts such as the following:
- For gift cards, error messages.
- For cards, brand logos.
- If your app uses more than one payment service provider SDK that uses the TwintSDK, a potential runtime crash no longer occurs.
We recommend you use Checkout API v71 or later.
-
For Component integrations, you can now implement a custom pay button. Use the following:
Description showsSubmitButton
Set to false to hide the default pay button. Default: true. validate()
Validates the payment data. submit()
Submits the payment data. - For Twint, you can now reduce the required number of
LSApplicationQueriesSchemes
values. InTwintActionComponent.Configuration
, set the newmaxIssuerNumber
property. - For Boleto Bancario, support for the following payment method types:
- Boleto Bancario Itaú: boletoBancarioItau
- PrimeiroPay Boleto: primeiroPayBoleto
- Boleto Bancario: boletoBancario
- For Pay by Bank in the US, support for stored payment methods.
- For Pay by Bank payments in the US (payment method type:paybybank_AIS_DD): Drop-in now shows supported bank logos and a confirmation screen, before redirecting the shopper to the issuer.
- For Delegated Authentication: during Secure Checkout, you can now optionally reset credentials on the error screen.
- Twint SDK version: v8.0.2.
- For Titres-Restaurant meal vouchers, the correct
type
andbrand
values are now included in the payment details.
We recommend that you use Checkout API v71 or later.
- Support for tokenization in Twint payments, allowing shoppers to securely save their Twint payment details for future transactions.
- For testing during development, the
UISwitch
testability is now enabled for external tools like Appium. - For delegated authentication, payment information is consumed so that the UI shows the card number, brand logo, and payment amount.
- CashAppPay SDK Version: 0.6.2
- For cards:
- In the Expiry date field, when the shopper tries to enter additional characters to the field after having already entered characters, the field no longer ends up in an invalid state.
- In the Card number field, the shopper can now move the cursor and edit the number where the cursor is positioned.
- On iOS 18, if the shopper has two identical stored payment methods, Drop-in/Component no longer crashes when the shopper selects a payment method that's not the default stored one.
- On iOS 18, if the shopper has two identical stored payment methods, Drop-in/Component no longer crashes when the shopper selects a payment method that's not the default stored one.
- You can now use the
AdyenEncryption
module independently with a reduced size, because it no longer depends onAdyenCore
.
- Support for Library Evolution in Swift.
- When you set
isEnabled
= false, only Drop-in/Components analytics are not sent to Adyen.
- The following protocol and classes that were recently made internal
(@_spi(AdyenInternal))
are now public again:Validator
CardNumberValidator
CardExpiryDateValidator
CardSecurityCodeValidator
LengthValidator
NumericStringValidator
- TWINT SDK version: 8.0.1
- The privacy manifest path in Package.swift now ensures correct Swift Package Manager (SPM) integration.
- Support for the UPI Intent flow, where the shopper can choose a UPI app to pay through. They are redirected to and complete the payment on the selected app.
- For Drop-in with Sessions flow, the shopper can now remove their stored payment methods. To do so:
- In the
/sessions
request, includeshowRemovePaymentMethodButton
: true. - Set the
StoredPaymentMethodsDelegate
tosession
:dropInComponent.StoredPaymentMethodDelegate = self.session
- In the
- Support for the following locales:
bg-BG
,ca-ES
,et-EE
,is-IS
,lt-LT
,lv-LV
.
- For cards, when the shopper selects Cancel to exit the address input screen, the address fields no longer gets reset.
We recommend you use Checkout API v71 or later.
-
The new iDEAL payment flow where the shopper is redirected to the iDEAL payment page to select their bank and authorize the payment.
You must now useInstantPaymentComponent
for iDEAL:let paymentMethods = session.sessionContext.paymentMethods // Check that the payment method is supported before showing the Component. guard let paymentMethod = paymentMethods.paymentMethod(ofType: .ideal) else { return } let component = InstantPaymentComponent(paymentMethod: paymentMethod, context: context, order: nil) self.currentComponent = component // Set the session as the delegate. component.delegate = session component.initiatePayment() -
When shoppers select the prefix picker in the phone number input field, they can now search through the prefix list using their ISO code, prefix, or country/region name.
iDEAL does not work in the test environment if your test Adyen merchant account is not configured to use the new payment flow. You must first contact our Support Team to configure your test merchant account.
IdealComponent
is no longer available. UseInstantPaymentComponent
instead.
We recommend you use Checkout API v71 or later.
- The new iDEAL payment flow where the shopper is redirected to the iDEAL payment page to select their bank and authorize the payment.
iDEAL does not work in the test environment if your test Adyen merchant account is not configured to use the new payment flow. You must first contact our Support Team to configure your test merchant account.
We recommend you use Checkout API v71 or later.
Support for Twint SDK integration through the TwintComponent
module.
- Flag icons are removed from the UI.
- The text Country is now replaced with Country/Region.
Fixed an issue that incorrectly cancelled successful redirect payments in some cases.
We recommend you use Checkout API v71 or later.
- 3D Secure 2 SDK version: 2.4.2.
- The privacy manifest file issue that blocked the App Store upload process has been fixed by upgrading the 3D Secure 2 SDK version to 2.4.2.
We recommend you use Checkout API v71 or later.
- 3D Secure 2 SDK version: 2.4.2.
- The privacy manifest file issue that blocked the App Store upload process has been fixed by upgrading the 3D Secure 2 SDK version to 2.4.2.
We recommend you use Checkout API v71 or later.
PrivacyInfo.xcprivacy
lists all the data collected by Drop-in and Components.-
In the country/region picker for the payment form, you can now choose if the images of flags are shown using
showCountryFlags
.For Drop-in:
var style = DropInComponent.Style() style.formComponent.addressStyle.showCountryFlags = cardSettings.showsCountryFlags let dropInConfiguration = DropInComponent.Configuration(style: style) let dropInComponent = DropInComponent(paymentMethods: paymentMethods, context: context, configuration: dropInConfiguration) For Components (the Card Component, for example):
let cardConfiguration = CardComponent.Configuration() cardConfiguration.style.addressStyle.showCountryFlags = true/false let cardComponent = CardComponent(paymentMethod: paymentMethod, context: context, configuration: cardConfiguration)
- 3D Secure 2 SDK version: 2.4.1.
- When
clientKey
is invalid or mismatched with the environment,PublicKeyProvider
now returns a corresponding error message.
We recommend you use Checkout API v71 or later.
PrivacyInfo.xcprivacy
lists all the data collected by Drop-in and Components.
3D Secure 2 SDK version: 2.4.1
- For stored card payments using Drop-in, the pay button is now enabled correctly when entering the security code with the traditional Chinese Cantonese keyboard.
- For all payment methods that include input fields for the shopper's address, the address input fields are now on a separate screen. This declutters the payment screen to improve user experience.
- Custom conformances to
PaymentMethod
andStoredPaymentMethod
are now required to beEncodable
.
- For Apple Pay, when the
allowOnboarding
property ofApplePayConfiguration.init
is set to true, the onboarding check now runs correctly. - In landscape mode, the search bar height no longer expands and obstructs other visual elements like the issuer list on the screen.
- For stored card payments using Drop-in, the pay button is now enabled correctly when entering the security code with the traditional Chinese Cantonese keyboard.
We recommend you use Checkout API v71 or later.
- When you offer installment payments, you can now show the number of installments and the amount of each installment in the picker. For example, 3x $20.
- For Sessions flow, when you make a /sessions request, include showInstallmentAmount:true and installmentOptions. We use these values to show installment options in the picker.
- For Advanced flow, in the
InstallmentConfiguration
object, setshowInstallmentAmount
to true when you initialize it.
- Support for Library Evolution.
For cards, the address lookup feature now supports a 2-step lookup process (for example, used by the Google Maps API):
- Providing suggested addresses that might be incomplete.
- Optionally, making another API request to complete the suggestions.
You must change the callback:
5.4.1 or earlier | 5.5.0 |
---|---|
.lookup(LookupProvider) |
.lookup(AddressLookupProvider) |
- When the shopper's phone number is included in the
shopperInformation
object, the pre-filled phone number prefix on the payment form automatically updates to match the correct country code. - Drop-in now updates the payment method list after the shopper applies a gift card, in case the available payment methods change because of the updated payment amount.
- When you define custom localizations in your app bundle using
Localizable.strings
, they are now applied correctly. - Bizum is no longer shown as an available payment method.
We recommend you use Checkout API v70 or later.
- For Apple Pay using Drop-in, the Apple Pay payment form is now properly dismissed when the shopper cancels the payment.
This fixes the issue introduced in v5.4.0.
We recommend you use Checkout API v70 or later.
Known issue
For Apple Pay using Drop-in, the Apple Pay payment form is not dismissed when the shopper cancels the payment.
Fixed in v5.4.1.
- For redirect payment methods, when the shopper opens the current payment web page in the default browser by tapping the toolbar button,
RedirectComponent
now triggersActionComponentDelegate.didOpenExternalApplication
. - Bancontact cards are now supported in the
CardComponent
. - Dual-branded Bancontact cards now allow brand selection in the
BCMCComponent
.
- Support for Xcode 15.
- iOS 11 is no longer supported because it is not supported by Xcode 15.
- The minor units for the following currencies:
Currency code | Minor units |
---|---|
ISK | 2 |
RSD | 2 |
MRU | 2 |
GHS | 2 |
- A problem no longer occurs where, when the shopper cancelled a payment in progress,
DropInComponentDelegate
didn't calldidCancel
. - Cash App payments are no longer refused because of the missing
customerId
field in the/payments/details
request. - The
SwiftUI
helper now supportsAlertViewController
. - The
formValueItemView
no longer has a memory leak.
We recommend you use Checkout API v70 or later.
- 3D Secure 2 SDK version: 2.3.3
- Support for Xcode 15.
@Observable
renamed to@AdyenObservable
.
- iOS 11 is no longer supported because it is not supported by Xcode 15.
We recommend you use Checkout API v70 or later.
- Bancontact cards are now supported in the
CardComponent
. - Dual-branded Bancontact cards now allow brand selection in the
BCMCComponent
.
- 3D Secure 2 SDK version: 2.3.2. Includes enhancements to authentication flows and improved error handling during the in-app 3D Secure 2 challenge.
-
The minor units for the following currencies:
Currency code Minor units ISK 2 RSD 2 MRU 2 GHS 2
We recommend you use Checkout API v70 or later.
func didComplete(with resultCode: SessionPaymentResultCode, component: Component, session: AdyenSession)
Use the new didComplete
method with the AdyenSessionResult
object instead.
- The
countryCode
property ofAdyenSession.Context
is now optional to allow not including it in the/sessions
request. Because this property isn't meant to be read, this breaking change shouldn't cause any build errors. - 3D Secure 2 SDK version: 2.3.2. Includes enhancements to authentication flows and improved error handling during the in-app 3D Secure 2 challenge.
-
The Session delegate has a new
didComplete
method with theAdyenSessionResult
object. This ensures that the callback is compatible with potential backend changes.func didComplete(with result: AdyenSessionResult, component: Component, session: AdyenSession)
This replaces the removed
didComplete
function. -
For Apple Pay,
ApplePayConfiguration
now supports the capabilities ofPKPaymentRequest
. PassPKPaymentRequest
when initializing Apple Pay. For example:public init(paymentRequest: PKPaymentRequest, allowOnboarding: Bool = false)
-
You can now set the formatting for monetary values. Use the
locale
property onLocalizationParameters
. -
You can now enforce a specific locale and formatting for monetary values regardless of the locale used by the shopper's device. Use
LocalizationParameters(enforcedLocale: MY_LOCALE)
. -
You can now configure the payment form to suggest billing addresses when the shopper starts to enter their address. Set the
configuration.card.billingAddress.mode
to.lookup(handler:)
. -
For gift cards using Drop-in, you can now configure the visibility of the security code field. Set
showsSecurityCodeField
(boolean) in thegiftcard
payment method configuration.
- When the shopper selects a country and region in the payment form, the selection is now fullscreen and includes a search input field where the shopper can enter a value to search for.
- For cards:
- The address input form now shows on a separate screen.
- Icons now have accessibility labels. When the shopper selects the Pay button, and an input field is invalid, focus moves to the field.
We recommend you use Checkout API v70 or later.
Live environment for the Asia Pacific and South East region. Set environment
to Environment.liveApse.
- The Icelandic Krona currency (ISK) now has the number of minor units according to ISO-4217.
- 3D Secure 2 SDK version: 2.3.1.
- For gift cards, the shopper can now enter more than 20 digits in the Card number field.
- In
DropInComponent.Configuration
, whenallowsSkippingPaymentList
is set to true, Drop-in now stays in theloading
state until the shopper cancels or completes the payment.
We recommend you use Checkout API v70 or later.
-
Payment methods:
- CashApp Pay. Payment method type: cashapp.
- Titres-Restaurant (French Meal Vouchers).
-
For Drop-in, you can now configure the ACH Direct Debit payment method. When creating a Drop-in configuration, set the following in
ach
properties:showsStorePaymentMethodField
showsBillingAddress
billingAddressCountryCodes
-
For Apple Pay, you can now choose to only accept either debit cards or
credit cards.
- The Icelandic Krona currency (ISK) now has the number of minor units according to ISO-4217.
- 3D Secure 2 SDK version: 2.3.1.
- For gift cards, the shopper can now enter more than 20 digits in the Card number field.
- Drop-in now shows the correct size when used in split screen mode on iPad or on a Mac application designed for iPad.
- For alerts under input fields, you can now see full messages that do not fit on one line.
- For UPI, when in dark mode:
- For QR codes, the image now shows correctly. Previously, the image appeared completely black.
- The background color is now black.
- The background color of the search bar is now black.
- The
amountToPay
property ofPaymentComponentData
. Use theamount
property instead.
We recommend you use Checkout API v69 or later.
- Payment methods:
- PayNow.
paymentMethod.type
: paynow. - DuitNow.
paymentMethod.type
: duitnow. - Open banking UK.
paymentMethod.type
: openbanking_UK. - UPI:
- UPI Collect: The shopper pays by entering their virtual payment address (VPA).
paymentMethod.type
: upi_collect. - UPI QR: The shopper pays by scanning a QR code.
paymentMethod.type
: upi_qr.
- UPI Collect: The shopper pays by entering their virtual payment address (VPA).
- PayNow.
- For Drop-in, you can now stop the loading state after the shopper selects the Pay button. By doing this, you can allow the shopper to try the payment again instead of dismissing Drop-in if you get an error during the payment. Use the new
stopLoading
method. - For QR code payment methods, the QR code screen now has a Cancel button instead of a cross (x) button in the corner for the shopper to cancel the payment.
- For cards,
CardComponentDelegate.didChangeBIN(:component:)
now provides the 8-digit bank identification number (BIN) when the card number is 16 or more digits. Previously, it only provided the 8-digit BIN when the card number was 17 or more digits. - In
DropInComponent.Configuration
, whenallowsSkippingPaymentList
is set to true, Drop-in now stays in the loading state until the shopper cancels or completes the payment. - When the shopper submits a payment, the billing address that the shopper entered is now submitted. Previously, when the selected country/region didn't include a state or province field, the submitted value was nil.
- For stored payment methods, the section header now gets the style from
ListSectionHeaderStyle
. - When a list of issuers is shown during checkout, the background is no longer transparent.
We recommend you use Checkout API v69 or later.
- Apple Pay no longer prevents Drop-in from closing.
- Apple Pay now shows the full list of networks supported by the shopper's iOS device.
We recommend you use Checkout API v69 or later.
- When the shopper submits a payment, the billing address that the shopper entered is now submitted. Previously, the submitted value was nil if:
- there was no input in the State/Province field.
- there was no input in the Apartment/Suite field.
- The Drop-in/Component now detects when a shopper enters an invalid email address in the payment form. Previously, sometimes the Drop-in/Component detected invalid email addresses as valid.
- When the shopper enters a card number in the payment form, and a dual branded card is detected, we no longer automatically select a brand.
We recommend you use Checkout API v69 or later.
- Using the /sessions endpoint, you can integrate Drop-in and Components with a single API call.
If you already integrated using the /paymentMethods, /payments, and /payments/details endpoints, you can continue using this back end setup in version 5.0.0. - When using the /sessions endpoint, the new
AdyenSession
object handles all actions after the payment session is created. - For Drop-in you can now customize the payment method title or subtitle in the payment methods list. Use the new function
overrideDisplayInformation(ofPaymentMethod:with:)
inPaymentMethods
. APIContext.init(environment: AnyAPIEnvironment, clientKey: String)
now throws exception if the client key is invalid.- Analytics feature turned on by default. Find out what we track and how you can configure it.
finalBIN
that provides the BIN when the shopper selects the Pay button. - The
PaymentMethodType
enum includes supported payment methods. This replaces using strings for payment method types. - For Drop-in, you can now configure the Boleto payment method using the
boleto
property. - Payment methods:
- Atome.
- Online banking Poland.
- Online banking Czech Republic.
- For ACH Direct Debit payments, the shopper can now save their payment details.
- For cards:
CardComponentDelegate.didChangeBIN(:component:)
now provides the 8-digit BIN when the card number is more than 16 digits.CardComponentDelegate.didSubmit(lastFour:finalBIN:component)
now has the parameter
- The Apple Pay Component now supports shipping options.
- Support for DocC documentation.
- Support for delegated authentication.
- You can now configure the 3D Secure 2 Component with
threeDSRequestorAppURL
.
The Observer
is protocal has been renamed to AdyenObserver
.
Follow the steps in the migration guide if you are upgrading your integration from an earlier version.
We recommend you use Checkout API v67 or later.
- The
ViewControllerPresenter
SwiftUI helper is now compatible with iOS 16. - For the stored cards, shoppers can now only enter 4 digits in the CVC input field if the card brand is American Express. Previously 4 digits were accepted for other card brands also.
- The Google Pay payment method is now blocked and is no longer shown.
We recommend you use Checkout API v67 or later.
For 3D Secure 2.2.0, the threeDSRequestorAppURL
parameter is automatically populated with the returnUrl
value from the /payments
request.
The URL
extension. It caused conflict with the code in some integrations.
The properties in RedirectDetails
are now public.
A successful QR code payment now always triggers a callback.
We recommend you use Checkout API v70 or later.
The finalizeIfNeeded(with: Bool)
method. Use finalizeIfNeeded(with success: Bool, completion: (() -> Void)?)
instead.
Successful Apple Pay payments are now finalized with finalizeIfNeeded(with success: Bool, completion: (() -> Void)?)
, which increases conversion rates.
We recommend you use Checkout API v67 or later.
- For the Card Component, use the new
billingAddressRequirementPolicy
parameter in the configuration object to specify card brands for which the billing address field is optional.
- For Drop-in, when you make a partial payment with a gift card and select another payment method, the payment button now shows the remaining amount.
- For Drop-in, you can now use Apple Pay to complete a partial gift card payment.
- For the Apple Pay Component, the
PaymentData.amount
passed from the SDK to thedidSubmit
callback is no longer nil. This fixes the issue introduced in v4.0.0.
The URL extension. This shouldn't affect your integration because this is an internal code change.
In the RegionRepository
class, the functions getSubRegions
and getCountries
are removed. This shouldn't affect your integration because this is an internal code change.
We recommend you use Checkout API v67 or later.
- Fixed a bug where country/region picker was being shown briefly after selecting Pay.
- Upgraded the 3D Secure 2 SDK version to v2.2.6.
- The errors for invalid form fields are now read out by screen readers.
- Prevent conflicts with the host application bundle by specifying the bundle when initializing any internal SDK.
We recommend you use Checkout API v67.
- Upgraded the 3D Secure 2 SDK version to v2.2.5.
- If you're using a custom localization, the stored card component now also inherits it.
We recommend you use Checkout API v67 or later.
- You can now use more than one client key for your integration, for example, if you need different credentials for some merchant accounts.
- Fixed the known issue from v4.5.0 where Cartes Bancaires did not work on Apple Pay.
We recommend you use Checkout API v67 or later.
- New supported payment method: ACH Direct Debit.
- For an API-only integration, you can now use the
BankDetailsEncryptor
to encrypt bank details (account number and routing number). This is required for ACH. - For the Card Component, you can configure the countries/regions in the billing address drop-down menu using
billingAddressCountryCodes
.
- Moved the WeChat binary from the
AdyenWeChatPay
module to an external repository. If you're using WeChat Pay with Carthage, addAdyenWeChatPayInternal
to your project. If you're using WeChat Pay with CocoaPods and Swift Package Manager, the change happens automatically as part of the update.
- For the Card Component, the focus moves to the next field when the entered card number reaches the expected length.
- If testing Apple Pay using the Simulator, you get an
invalidToken
error. The error description now explains that you must use a device instead. - Increased the reliability of app-to-app redirect detection by increasing the delay for the
BrowserComponent
. - Update the WeChat Pay Component to use WeChat SDK 1.9.2.
- Apple Pay Component no longer calls
didFail
for a successful payment. This used to happen if you didn't dismiss the Apple Pay view immediately after callingfinalizeIfNeeded(with: success)
. - Text fields, except the card number and CVC, now allow the system default input options.
We recommend you use Checkout API v67 or later.
- Values entered in the card number and CVC fields can no longer be copied or shared.
- For stored card payments, the CVC field value is now cleared when the shopper cancels or an error happens.
We recommend you use Checkout API v67 or later.
- BACS Direct Debit is now supported through a native flow.
- On Drop-in, you can configure if you want to show the preselected stored payment method using
allowPreselectedPaymentView
.
- Fix
NSLayoutConstraint
errors in the debug log.
We recommend you use Checkout API v67 or later.
- On Drop-in, the
allowsSkippingPaymentList
flag lets you skip the screen with the list of payment methods, if there is only one payment method available to the shopper. For example, if card is the only available payment method, the shopper will be taken directly to the card details input screen. - On Drop-in, you can now customize the screen with the Apple Pay button using
DropInComponent.Style.applePay
.
We added support for the following card networks in Apple Pay:
- Cartes Bancaires (
cartesBancaires
) in France. - MADA (
mada
) in the Middle East.
- Card brand detection for dual-branded cards is now based on the first 11 digits of the card number.
- Cartes Bancaires does not work with Apple Pay. Fixed in v4.7.1.
- You can now use
CardEncryptor.Card.encryptedToToken()
to encrypt all card details as a single token.
- Upgraded the 3D Secure 2 SDK version to v2.2.4..
- The
CardDetails
object now contains the version of the 3D Secure SDK inthreeDS2SDKVersion
.
We recommend you use Checkout API v67 or later.
- For dual-branded cards, the Card Component now renders both brands, and allows the cardholder to choose the brand they want to pay with.
- You can now prefill shopper information for card payments. You can prefill the cardholder name, billing address, postal code and social security number, by injecting it when creating the component.
- On Drop-in, you can now allow shoppers to remove stored cards. Implement
StoredPaymentMethodsDelegate
and set
paymentMethodListConfiguration.allowDisablingStoredPaymentMethods
to true in the Drop-in configuration. - For the Card Component UI, once the card brand is detected, the supported card brand logos become more transparent to make them less prominent.
- Upgraded the 3D Secure 2 SDK version to v2.2.4.
- Shoppers can no longer enter invalid characters in the checkout form.
- Fixed an issue with the Drop-in slide-in animation.
- If there's a network error when polling for the status of a payment with
action.type
: await, Drop-in/Components now does another check before returning a failure response. This applies to payment methods where the shopper needs to go to another app to complete the payment, for example BLIK and MB WAY.
- Fixed an issue where turning on both Reduce motion and Prefer cross-fade transitions accessibility settings, caused the card component fields to not be visible.
- Drop-in and Component now compile for Any iOS Device when using Xcode 13.
We recommend you use Checkout API v67.
- Doku, Affirm, MB WAY and Japanese conveninence store payments now support prefilling the shopper information in the payment form. You can prefill shopper infromation by injecting it when creating the component.
- Added translations for the warning text the shopper sees when they enter a card brand you do not support.
- For shoppers who do not have cards set up on Apple Pay, use
allowOnboarding
to either:- Allow shoppers to set up Apple Pay by going through the Apple Pay onboarding.
- Not show Apple Pay in the checkout form.
- The Boleto Component now allows shoppers to edit the prefilled billing address.
- Fixed an issue with form views freezing when updating the layout.
We recommend you use Checkout API v67 or later.
- New supported payment method: Multibanco.
- The Card Component now allows you to accept credit card payments in installments using
InstallmentConfiguration
. - Shoppers can now dismiss pickers using the new Done button.
- If you're using Objective-C, we renamed
TextField
toADYTextField
to avoid naming conflicts.
- The Encryption Component now uses JSON Web Encryption (JWE) with RSA OAEP 256 and AES CBC 256 with HMAC SHA 512. You do not need to make any changes to your integration.
- The Card Component now shows an error message to the shopper if the card brand they are using is not supported.
- Fixed a UI bug where only part of the Pay button was visible.
- Fixed an issue with
socialSecurityNumber
where setting it to show would still hide the field based on the card's BIN.
We recommend you use Checkout API v67.
- New supported payment methods: Affirm, OXXO.
- The Card Component now has support for:
- Korean card payments through KCP.
- Brazillian card payments that require the social security number.
- UK addresses.
- Shoppers can now add vouchers to Apple Wallet.
- Get the last 4 digits of the entered card number using
didSubmit(lastFour:component:)
.
- If a shopper enters card data and then closes the payment screen, the component now clears the values for improved security.
- The Card Component now runs validation on optional CVC fields if the shopper enters a value.
- Disabled Luhn checks for private label cards (also known as white label cards), because the check fails even if the card number is valid.
- The card number field now has a numeric keypad for input.
- The Boleto Component has improved validation for social security numbers.
- There are smoother transitions between Drop-in screens.
- Redesigned the Drop-in UI for iPad so that it is responsive to screen size and feels native to the iPad.
- Redesigned the UI for voucher payment methods to make it easy for shoppers to find the call to action.
- Added a README.md file for the demo projects.
- Updated the 3D Secure SDK to v2.2.3.
- Moved the networking layer into a separate framework as a dependency.
- You can now use CocoaPods on M1 Mac devices.
- Fixed a bug where card brand logos were not showing up if the shopper deleted the initial card number and entred a value again.
- Single digit house numbers no longer fail validation.
We recommend you use Checkout API v67.
- Removed support for iOS 10.0.
- The new minimum required TLS version is 1.2.
- iOS Components has a new module structure.
- Each component initialization requires an instance of
apiContext
, which specifies the client key and the environment. - Changed how the end of a component flow is handled.
- Renamed the payment method configuration objects.
- In the
Adyen
module, theAmount
object now adopts theCodable
protocol. - Moved the
payment
property fromPresentableComponent
toPaymentComponent
. - Specifying the country code is now required for the
Payment
object. - Moved the
Amount
property outside of thePayment
object. - The
didCancel
method fromDropInComponentDelegate
now returnsPaymentComponent
instead ofPresentableComponent
. - Moved card configuration to the
CardComponent.Configuration
object. - Moved Apple Pay configuration to the
ApplePayComponent.Configuration
object. - Moved the
payment
parameter to theApplePayComponent.Configuration
constructor. - Changed how you specify supported Apple Pay card networks.
- The Apple Pay token is now a base64-encoded string. This replaces the plain text JSON format.
- To proccess voucher payments your app's Info.plist must contain
NSPhotoLibraryAddUsageDescription
. - Renamed
DropInActionComponent
toAdyenActionComponent
and moved it toAdyenActions
module. This allows you to use the component outside ofAdyenDropIn
. - Renamed
AdyenActionComponent.perform()
toAdyenActionComponent.handle()
for consistency with other action components. - To present the redirect component UI, you now need to set
RedirectComponent.presentationDelegate
. - The styles for all action components are now grouped under
ActionComponentStyle
.
Have a look at the migration guide for details about the more complex breaking changes.
- Deprecated classes, functions, properties.
disableCloseButton
frompresent(component: PresentableComponent)
inPresentationDelegate
.cancelHandler
from theApplePayComponent
.cancelCallback
from the Apple Pay component. Use thedidFail(with error: Error, from component: PaymentComponent)
function withComponentError.cancelled
instead.
paymentData
is now optional inRedirectAction
,ActionComponentData
andRedirectComponent
. This is to support the removal ofpaymentData
starting Checkout API v67.
- The
ThreeDS2Component
supports the new 3D Secure flow from Checkout API v67. The old flow is still supported if you are using an API version earlier than v67. VoucherComponent
handles actions for voucher payment flows, for example Doku Alfamart.QRCodeComponent
to handle payment methods that use QR codes, like PIX.DropInComponent
now has thecardComponentDelegate
property.DropInComponentDelegate
now has thedidOpenExternalApplication(component:)
callback which notifies you about redirects to an external app.DropInDelegate.didSubmit
now has aPaymentMethod
object to allow you to identify which payment method is being submitted.didComplete(from component: DropInComponent)
method forDropInComponentDelegate
andActionComponentDelegate
.- Support for right-to-left layout.
- Arabic (international) is now a supported language.
- Adds support for stored payment details for BLIK.
- You can configure button border color and width using
ButtonStyle
.
Payment method support:
- Pix,
PixComponent
- Boleto,
BoletoComponent
- Indonesian bank transfers and cash payments at convenience stores through
DokuComponent
. - Japanese voucher payments through econtext:
- At Seven Eleven stores,
SevenElevenComponent
. - At other convenience stores,
EContextStoreComponent
. - Using ATM machines,
EContextATMComponent
. - Online,
EContextOnlineComponent
.
- At Seven Eleven stores,
- Prevent leaking API keys when URL responses are cached.
- Added CVC length validation for the stored cards component.
- You can now use
CardEncryptor
to encrypt individual card fields, for example CVC or expiry month. - Added assertion validation for country code and currency code.
- Improved accuracy for card brand detection.
- Added billing address fields to the card component.
GiftCardComponent
now has native support for full and partial payments using gift cards.- Uses a continous curve by default for rounding corners.
- You can now control the position of the title and Cancel button for DropIn.
- You can now add a custom image to the Cancel button.
- Added a configuration screen to the UIKit and SwiftUI demo apps so you can change configuration fields during runtime.
- The
MBWayComponent
now shows Portugal and Spain in the phone prefix dropdown list of phone extensions. - Fixed a bug where gift card payment methods had a missing logo.
- Fixes localization warning when using Swift Package Manager.
- For Swish redirects, you now get all the query parameters in
returnUrlQueryString
. - Fixed an issue where users couldn't scroll properly through a form.
For the Apple Pay Component, the `PaymentData.amount
passed from the SDK to the didSubmit
callback is nil. Fixed in v4.8.0.
This version will be End-of-Life on October 1, 2025.
We recommend that you upgrade to v6.0.0 or later.
- The Card Component has better card type detection for Diners cards.
- Added a postal code field to the Card Component.
- Drop-in now shows the Apple Pay button according to Apple's Human Interface Guidelines.
- The BCMC Component no longer shows the additional large title with the component's name on Drop-in.
- Removed a bug in the Apple Pay Component where
delegate.didFail()
was sometimes called for a successful transaction. - The Apple Pay icon in the Drop-in payment methods list is now compliant with Apple guidelines. This means any customizations in
ListItemStyle
are not applied to the Apple Pay icon.
- For stored cards, you can now show or hide the CVC field separately from the card form. To do this, use
PaymentMethodsConfiguration.CardConfiguration.stored.showsSecurityCodeField
.
- Fixed an issue where the public
delegate
property of theUILabel
could clash with code elsewhere in your integration.
This release requires Checkout API v52 or later.
- Support for Swift Package Manager.
- We now support SwiftUI applications. Have a look at our example SwiftUI App on GitHub.
- New supported payment method: BLIK. For more information see the BLIKComponent class reference.
- Updated the 3D Secure SDK to v2.2.1.
- Optional parameter
LocalizationParameters.bundle
that you can use to override the default translation strings.
We are deprecating the following classes and parameters:
- Header section:
showsLargeTitle
andFormHeaderItem
. - Footer section:
FormFooterItem
,FormFooterItemView
andFormFooterStyle
. UseFormButtonItem
andFormLabelItem
instead.
- Xcode 12 support for CocoaPods and Carthage.
- The card encryption code has been rewritten in Swift.
- You can now hide the CVC field for stored card payments. To do this in:
- Drop-in, set
PaymentMethodsConfiguration.card.showsSecurityCodeField
to false. - Components, set
CardComponent.showsSecurityCodeField
to false.
- Drop-in, set
- We removed the footer note from
SEPADirectDebitComponent
to bring it in line with other Adyen frontend libraries. - When you are doing zero-value auth, the submit button text is now Confirm preauthorization.
- Dismissing
ApplePayComponent
now correctly invokes the callback. - Canceling the web view using a swipe down now calls
RedirectComponent.delegate
. - All card types now appear as an icon once you start typing a card number and the card type is detected.
- We fixed an issue where
AdyenWeChatPay.xcscheme
wasn't being tracked to buildAdyenWeChatPay.framework
on Carthage.
- New supported payment method: MB WAY,
MBWayComponent
. - Added the
AwaitComponent
to handle the await action type for payment methods like MB WAY. - Added the client key to remove the need for configuring the
cardPublicKey
in your integration. The client key fetches your client encryption public key automatically from your Customer Area. - Enabled programmatic dismissal for the
RedirectComponent
using thedismiss(animated:completion:)
method. - Added a closure callback to the
ApplePayComponent
which will be called when the user closes the payment sheet. - Added support to exclude card brands from the
ApplePayComponent
. - Support for JCB cards in the
ApplePayComponent
. - Enabled customisation for the presentation style of the
RedirectComponent
by addingmodalPresentationStyle
toRedirectComponentStyle
. - Added
didCancel(component:from:)
to theDropInComponentDelegate
to call back client code when a managed component is dismissed by the shopper. - Updated the 3D Secure SDK to v2.1.0-rc6.
- More accurate card brand detection for the
CardComponent
using the new client key.
- The
clientKey
must be set in instances ofCardComponent
andBCMCComponent
even when you use the initializer that receives the client key.
- You can now choose to show or hide the security code field, and we added a delegate for
onBrand
andonBin
to the Card Component. AnyCardPaymentMethod
now containsCardFundingSource
.- When the app goes to the background, sensitive form components are blurred in the UI.
- You can now customize rounded corners, and we added a customized
tintColor
andseparator
. - We introduced a new issue type Assistance needed on GitHub.
- We have enabled dynamic font adjustments. When iPhone users change the font size in their settings, our SDK now supports that.
- We now accept card expiry dates up to 30 years in the future when we validate card data.
- We made the
AmountFormatter
public and added a helper function to convert major unit double values into minor unitInt
values. - We enabled a loading state for the
PaymentMethodListComponent
. - We improved warnings, tests coverage, documentation and translation.
- While a payment is in progress, you cannot cancel a payment using Drop-in and the open all button is disabled.
- We adjusted the preselected payment method component height for iOS 10 and fixed bug with the iOS 10
PreselectedComponent
. - We fixed the background for
ListItemView
, focusing onCVC
field and navigation glitches for half-screen presentation.
barTintColor
andbarBackgroundColor
inNavigationStyle
have been deprecated.- We currently present
Redirect
from the top mostviewController
onkeyWindow
and we deprecatedRedirectComponent.presenterViewController
.
- The
browserInfo
is now included in thePaymentComponentData
returned by Drop-in/Component. - We added UI customization options to the preselected payment screen rendered by Drop-in.
- Inline validation for text entry is now supported for the Card Component, the SEPA Direct Debit Component, and others.
- The Redirect Component can now deal with a native app redirect.
- We fixed an issue where the Apple Pay Component would freeze in the payment screen rendered by Drop-in.
- We fixed an issue where the keyboard would cover the UI.
- New supported payment methods: WeChat Pay, Qiwi wallet
- Drop-in has a new, half-screen presentation style.
- The Card Component shows a visual hint for the location of the CVC/CVV on the card.
- Support for website cross-origin isolation using COOP and COEP.
- Drop-in shows the first available stored payment method prominently.
- We improved the card brand recognition by the Card Component.
PaymentMethodDetails
now allows encoding without access to the concrete type.- You can now use the Apple Pay Component to collect the billing and delivery address of the shopper.
- The Card Component now only allows card expiry dates from 3 months in the past to 15 years in the future.
- The Card Component no longer crashes when receiving non-numerical input.
- We added options for customizing the Component appearance, for example with fonts and text colors.
- You can now specify a custom localization key separator.
We fixed an issue where a custom localization table name would apply to default localizations.