v2.39.0
2025-07-15

🚀 New features

This release introduces Apple Pay merchant tokens, a powerful new feature that enables merchants to process recurring payments, subscriptions, and automatic reloads without being tied to specific customer devices.

Ready to get started? Follow our implementation guides to request merchant tokens (MPANs) and integrate this feature into your payment flow.

✨ Improvements

  • Added support for MM/YY expiry date format
  • Improved ApplePay error categorization

🔧 Fixes

  • Reduce console noise for nil remoteUrl in ImageManager
  • Reduce excessive validation logging

🛠️ Refactor

  • Introduce default values for PrimerError
  • Migrated many classes and files to async await
  • Clean up UI event posting
v2.38.3
2025-07-03

🔧 Fixes

  • Upgraded Primer3DS which includes a fix for missing CartesBancaires DirectoryServerID mapping.
v2.38.2
2025-06-12

🔧 Fixes

  • Fix memory crash in validateRawData with weak self capture (#1185)

✨ Improvements

  • Consolidate PrimerClientSession
v2.38.1
2025-06-04

✨ Improvements

  • UIColor: Added primer prefix to gray color variables to improve naming consistency and avoid potential conflicts with other libraries.
v2.38.0
2025-06-02

✨ Improvements

  • Klarna auto continues when single payment option
  • Implement the Co-badged Cards feature on Drop-in

✨ Improvements

  • Reduce init(coder:) boilerplate
  • Remove unused code from Networking
  • Finalise classes where appropriate
v2.37.0
2025-05-12

✨ Improvements

  • We have added CardFormUIOptions.payButtonAddNewCard to support the “Add New Card” option in the card form flow.
  • Introduced support for the ‘Continue payment flow’ workflow action to configure checkout outcome. See our documentation for more info.

🔧 Fixes

  • We have fixed a crash issue that occurred during NolPay initialization.

✨ Improvements

  • We have made several cleanups and improvements across the SDK.
v2.36.0
2025-03-25

✨ Improvements

  • The SDK will now default to using Api version 2.4 when initialised. It is possible to use API version 2.3 via PrimerSettings.apiVersion. For more information see our SDK reference, Api Reference and Migration Guides.

🔧 Fixes

  • We have fixed an issue which resulted in incorrect formatting of the currency strings in our UI for french locales.
v2.35.3
2025-03-19

✨ Improvements

  • Improved error handling when server returns 202 response code
v2.35.2
2025-02-26

🔧 Fixes

  • We have fixed a bug in the Drop-In Checkout which resulted in “Additional fees may apply” text being shown for the Card payment method, when no surcharge was present.

✨ Improvements

  • We have made changes to our internal Analytics logging system which will result in fewer unnecessary logs being sent.
v2.35.1
2025-02-11

✨ Improvements

  • We’ve increased the timeout for payment creation and handling for better stability.

🔧 Fixes

  • We have fixed a bug in our Drop-In Card Form, which resulted in a poor user experience while using RTL formatted languages.
v2.35.0
2025-02-04

✨ Improvements

  • With this version it is possible to opt-in to use Api v2.4, which is no longer in Beta. For more information see our SDK reference, Api Reference and Migration Guides. The SDK will continue to use API v2.3 by default.
  • Expanded Language Support: The iOS SDK now supports additional languages, including:
    • Arabic
    • Bulgarian
    • Czech
    • Spanish (Argentina & Mexico)
    • Estonian
    • Croatian
    • Hungarian
    • Japanese
    • Latvian
    • Portuguese (Brazil)
    • Romanian
    • Vietnamese
  • 3DS Sandbox Testing: Enhanced support for testing 3D Secure (3DS) flows in the sandbox environment. This requires upgrading your primer-sdk-3ds-ios dependency to version 2.4.2. For more information on 3DS SDK version, see here.
v2.34.0
2025-01-24

🧪 Experimental

✨ Improvements

  • API Timeout values have been updated to improve behaviour in the loading phases of the checkout.
v2.33.1
2024-12-23

🔧 Fixes

  • We have fixed an issue where PaymentInstrumentData.accountNumberLast4Digits was incorrectly named PaymentInstrumentData.accountNumberLastFourDigits when exposed via the PrimerHeadlessUniversalCheckout interface. Visit our SDK Reference for more information.
v2.33.0
2024-12-17

✨ Improvements

  • It is now possible to vault ACH via Stripe payments, and pay with vaulted ACH via Stripe tokens. See our docs for more info.
  • It is now possible to granularly control Apple Pay Billing and Shipping options. See our docs for more.

🔧 Fixes

  • We have fixed an issue where the wrong error (generic-underlying-errors) was passed when a user cancelled a PayPal payment. Now, the correct error (payment-cancelled) is reported.
  • We have updated the default background colour of the default theme for dark mode.
  • The close button is now disabled for Klarna during payment processing.
  • The success asset is now more prominent in dark mode.
v2.32.1
2024-11-21

🔧 Fixes

  • Updated the 3DS SDK to version 2.4.1 which fixes a crashing issue.
  • Remove precondition on presentPaymentMethod which could cause a crash in certain scenarios.
v2.32.0
2024-11-13

✨ Improvements

  • We have added additional dismissal controls to PrimerUIOptions. It is now possible to dismiss the Primer UI via gestures, an explicit close button, or both. See our SDK reference for more information.

🔧 Fixes

  • Fixes for range or index out of bounds crash in the Card Form UI.
  • Fixes for a crash in InternalCardComponentsManager.
v2.31.3
2024-10-24

✨ Improvements

  • Expose VaultedPaymentMethod initialiser

🔧 Fixes

  • Prevent dismissal of Drop-in card form while a payment is active
  • Discover card network image not showing
  • Move the cursor to the end of the text after pasting the card number
  • Errors in the card form are now correctly localized
v2.31.2
2024-10-21

🔧 Fixes

  • Adyen Blik dismissal issue and small UI glitch
v2.31.1
2024-10-04

🔧 Fixes

  • Fixed an issue where Adyen Vipps would not fall back to the Web flow in the event that the Vipps mobile app was not installed.
  • Fixed an issue where Adyen Blik was not present in PrimerHeadlessUniversalCheckout availablePaymentMethods.
  • Various stability improvements.
v2.31.0
2024-08-30

✨ Improvements

Stripe ACH is now available

  • We have added support for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.
  • ACH Direct Debit is a reusable, delayed notification payment method. It can take up to 4 business days to receive acknowledgement of success or failure.
  • This release includes: One-off payments, cancel, and refund actions. We aim to add support for recurring payments in the future.
  • You can easily integrate ACH via Stripe into your payment stack with just a few clicks through Primer. Visit the integrations section of the dashboard to learn more or consult the direct integration guide.
v2.30.1
2024-08-28

🔧 Fixes

  • Fixed an issue where the PayPal flow was unusable in the Drop-In Universal Checkout
  • Fixed an issue where PrimerCheckoutData was nil when reporting an error in payment creation.
v2.30.0
2024-08-20

✨ Improvements

  • Improved initialization: We have strengthened the iOS SDK’s initialization process, ensuring it remains reliable even if users experience connectivity drops. These changes guarantee a smoother experience
  • We have made improvements to our internal analytics to facilitate troubleshooting

🔧 Fixes

  • Setting the uiDelegate via PrimerHeadlessUniversalCheckout.current.start now works as expected.
v2.29.0
2024-08-09

✨ Improvements

Client Session caching It is now possible to cache the ClientSession configuration client-side, which can speed up certain flows in the SDK. This can be enabled via the clientSessionCachingEnabled flag. Before enabling the flag to true it’s recommended to reach out to Primer support for additional verification since there are edge cases where it is not advised.

v2.28.0
2024-08-07

✨ Improvements

Define merchant name on Apple Pay flow.

We now allow merchants to set a user-defined merchant name on the Apple Pay flow.

Details of the changes:

  • Create a client session with the desired merchant name as shown here
  • The iOS SDK will then show this name on the Apple Pay flow rather than the merchant name on your Primer account.
  • Setting this value via PrimerSettings is now deprecated.

🔧 Fixes

  • Fixed a crash that could occur when using PrimerSDK from multiple threads.
  • Fixed a crash that could occur during Primer3DS initialization.
v2.27.0
2024-07-10

✨ Improvements

  • We have removed Card Components and related UI from the SDK. Card components was previously deprecated.

🔧 Fixes

  • Fixed an issue where payment resume network responses weren’t being handled correctly.
  • Fixed a crash in CVV recapture caused by setting explanation text.
v2.26.7
2024-06-26

🔧 Fixes

  • We have aligned the card expiry date validation logic between the Drop-In and Headless integrations, which were previously different.
  • Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.
v2.26.6
2024-06-20

🔧 Fixes

  • Fixed a bug in the Klarna Headless implementation where the correct events were not fired during a manual payment flow.
v2.26.5
2024-06-12

✨ Improvements

  • We have aligned error handling across mobile platforms and enhanced our analytics capabilities. Additionally, we have thoroughly documented all errors. For more details, please refer to the official documentation here.
  • We have improved validation of the custom URL scheme setting used for payment methods with native UI.
v2.26.4
2024-05-07

🔧 Fixes

  • We have improved the PayPal payment method token by providing additional data, including the payer’s first name, last name, and external payer ID. For more information, see our SDK reference docs
v2.26.3
2024-04-29

✨ Improvements

🔧 Fixes

  • The release involves a fix to the Primer API client on iOS to allow payments made with NolPay to settle correctly.
v2.26.2
2024-04-15

✨ Improvements

✨ Improvements

  • We’ve simplified the way that we make network requests and improved how we log traces and analytics events when requests are made.

🔧 Fixes

  • Fix Nol pay Xcode errors
    • Addressed an intermittent build failure issue related to PrimerHeadlessUniversalCheckout not recognizing PrimerHeadlessNolPayManager due to specific Xcode build settings and packaging nuances within CircleCI/Fastlane environments.
    • The update ensures compatibility with Xcode 15.2 and proper handling of nested classes and conditional imports, stabilizing the integration of PrimerNolPaySdk and PrimerSDK.
v2.26.1
2024-04-11

🔧 Fixes

  • Fix Nol pay Xcode errors
    • Build failure issue related to PrimerHeadlessUniversalCheckout not recognizing PrimerHeadlessNolPayManager due to specific Xcode build settings and packaging nuances within CircleCI/Fastlane environments.
v2.26.0
2024-04-09

🚀 New feature

Recapture CVV feature on Drop-in checkout

  • Merchants can now prompt customers to re-enter their CVV for additional verification during checkout, improving security without storing CVV data.

✨ Improvements

  • Update 3DS to the latest version
v2.25.0
2024-03-28

🚀 New feature

Klarna EMD support on Drop-in checkout**

We have extended our support for Klarna extra merchant data (EMD) to the Drop-in checkout.

Klarna payment categories have been expanded to allow support for all the available categories on Drop-In, including:

  • Pay now
  • Pay later: Pay in 30 days
  • Pay over time: Pay in 3-4 instalments. First payment right away, then the rest in instalments (no interest)
  • Fair financing: Instalment plans of 6, 12, 24, and 36 months with flexible payments (with interest)

Support for Klarna EMD on Drop-in Mobile Checkout

Klarna may request extra merchant data (EMD) based on the merchant segment or consumer services. This additional information helps Klarna enhance risk assessment and improve conversion rates.

You can now dynamically pass any relevant EMD package via the Client Session as described here. Available schemas are documented here.

✨ Improvements

Other Klarna Improvements

  • The Klarna Drop-In integration now uses the same code as the headless integration under the hood, resulting in a more robust experience.
  • Klarna Drop-In now has a fresh new design.

Upgraded 3DS SDK

This version of the SDK is compatible with v2.3.0 or greater of the Primer 3DS SDK. See our docs for the full interoperability matrix

.

v2.24.0
2024-03-18

✨ Improvements

  • Bumped minimum iOS version to 13.0
    • This means that our SDK now works with apps that target iOS 13.0 and above
  • The loading spinner appears more promptly in drop-in checkout after the user submits the payment
  • Local card network identification is now significantly faster and more performant
v2.23.0
2024-03-07

✨ Improvements

  • We have included support for Klarna Extra Merchant Data
  • In this release we have added the PrimerHeadlessUniversalCheckoutKlarnaManager that provides access to the KlarnaComponent. Using the KlarnaComponent you can seamlessly integrate Klarna, with a custom payment category selection UI. Consult the guide to get a sense of how to seamlessly integrate Klarna.
  • We’ve made several internal improvements to our analytics service that improve its performance. This also fixes a memory leak that caused a crash in very specific circumstances for older versions of the SDK.
  • In drop-in checkout, the card icon now updates correctly whenever the entered card number is changed.
v2.22.0
2023-02-15

✨ Improvements

  • We have released support for co-badged cards. You can allow users to select a network if their card is co-badged.
  • We have also improved card network validation significantly for all card networks.
v2.21.0
2024-02-06

✨ Improvements since 2.20.1

  • Fix NOL pay bug - fetching of the cards
  • Implement new currency handling logic
  • Update 3DS to the latest version
v2.20.1
2024-01-26

✨ Improvements since 2.20.0

  • Fixes an issue where PrimerSDK had a dependency on KlarnaMobileSDK v2.2.2
v2.20.0
2024-01-19

💳 APMs support

iDEAL via Adyen

Adds the PrimerHeadlessUniversalCheckoutComponentWithRedirectManager that provides access to BanksComponent. Using the BanksComponent you can easily:

  • load list of all supported banks
  • submit user’s selection

✨ Improvements since 2.19.0

  • Throw error when using NativeUIManager for non-native payment method (#772)
  • Improved Errors in the event Apple Pay cannot be presented.
v2.19.0
2023-12-15

🚀 New Features since 2.18.3

  • In this release, our 3DS support has undergone significant enhancements, offering a multitude of improvements that improve the conversion rate of 3DS challenges. Please note, with this update, compatibility requires the use of the 2.1.0 version of the 3DS SDK (pod 'Primer3DS', '2.1.0')
  • We have also improved internal analytics by adding additional information to errors that the SDK can encounter. This will enable us to troubleshoot issues much quicker.
v2.18.3
2023-12-06

✨ Improvements since 2.18.2

  • Fixed analytics issue causing high memory usage and occasional freeze
v2.18.2
2023-11-13

✨ Improvements since 2.18.1

  • Fix phone validation
    • Add local empty phone validation before sending the string to server
v2.18.1
2023-11-13

✨ Improvements since 2.18.0

  • Fix State Machine for Nol Pay
    • Developers can now move through steps as expected
v2.18.0
2023-11-3

🚀 New Features since 2.18.0-b1

  • Logging interface for SDK
  • Implement async Phone Validation for Nol

✨ Improvements since 2.18.0-b1

  • Fixes ApplePay button rendering logic
v2.18.0-b1
2023-10-19

🚀 New Features since 2.17.6

nol Pay

Adds the PrimerHeadlessNolPayManager that provides following features:

v2.17.6
2023-10-06

✨ Improvements since 2.17.5

  • • Add UIKit import to Mock3DSService.swift - fixes Swift Package Manager compilation issue.
v2.17.5
2023-09-25

✨ Improvements since 2.17.4

  • Removed noisy analytics events during SDK init
v2.17.4
2023-09-19

✨ Improvements since 2.17.3

  • Upgrades for Xcode 15
v2.17.3
2023-09-08

✨ Improvements since 2.17.2

  • We’ve removed the UIKit import guards from all files

ℹ️ If you encounter any errors or warnings related to UIKit as a dependency, please submit a bug report here.

v2.17.2
2023-09-06

✨ Improvements since 2.17.1

  • Fix issue where Cardholder Name field would not accept spaces in Headless Integration.
v2.17.1
2023-08-09

✨ Improvements since 2.17.0

  • Fix Apple Pay crash
v2.17.0
2023-07-28

⚠️ If you are using Primer3DS in your integration, make sure to bump it to v.1.2.0

For detailed documentation and migration guides, please refer to the links provided in the changelog.

🚀 New Features since 2.16.7

  • Headless Vault Manager

    Add PrimerHeadlessUniversalCheckout.VaultManager() which returns an instance of PrimerHeadlessUniversalCheckout.VaultManager. It provides the following features:

  • Our 3DS service has been completely revamped.

    Primer SDK now supports 3DS protocol version 2.2.0. It includes the following enhancements:

    • Support 3DS weak validation.
    • Support 3DS OOB flow.
    • Improve 3DS reporting.
    • Set the 3DS sanity check in PrimerSettings to false when you are in DEBUG mode, to disable the device check when testing on the simulator.
  • PrimerPaymentMethodAsset now exposes the payment method’s friendly name

  • Reintroduce showing a payment method directly with the Drop-In UI integration.

  • Support for iPay88

    This version is adding support for iPay88 payments in Malaysia. Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.

✨ Improvements since 2.16.7

  • Fix vaulted payment method on Drop In not getting tapped
  • Enhance 3DS auth rates
  • Fix checkout not rendering when there are vaulted payment methods
  • Make performance improvements on raw data manager validation delegate
  • Fix the scenario where the payment method’s image file is missing
  • Print console warning when a decisionHandler is not implemented
  • Observability improvements
  • Improves cancellation happening from 3rd party payment apps through deep links
  • Fix Atome cancellation from within the web view
  • Fix UI unresponsiveness happening on iOS 16.0.x in certain cases
v2.17.0-rc.17
2023-07-17

✨ Improvements since 2.17.0-rc.16

  • Fix vaulted payment method on Drop In not getting tapped
v2.17.0-rc.16
2023-07-12

⚠️ If you are using Primer3DS in your integration, make sure to bump it to v.1.2.0

✨ Improvements since 2.17.0-rc.15

  • Enhance 3DS auth rates
v2.17.0-rc.15
2023-07-10

✨ Improvements

Headless Vault Manager

Add PrimerHeadlessUniversalCheckout.VaultManager() which returns an instance of PrimerHeadlessUniversalCheckout.VaultManager. It provides the following features:

✨ Improvements since 2.17.0-rc.14

  • Fix issue with Vipps getting presented
v2.17.0-rc.14
2023-06-07

✨ Improvements

  • Reintroduce showing a payment method directly with the Drop In UI integration

⚠️

✨ Improvements since 2.17.0-rc.13

  • Fix checkout not rendering when there are vaulted payment methods
  • Make performance improvements on raw data manager validation delegate
v2.17.0-rc.13
2023-05-31

⚠️ This version has a know bug and won’t render the Universal Checkout if there’re vaulted payment methods for the user defined in the client session

⚠️ If you are also integrating Primer3DS, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1

✨ Improvements since 2.17.0-rc.12

  • Apply fix on PayPal vaulting
  • Fix Klarna archiving issue
v2.17.0-rc.12
2023-05-30

✨ Improvements

⚠️ This version has a know bug and won’t render the Universal Checkout if there’re vaulted payment methods for the user defined in the client session

⚠️ If you are also integrating Primer3DS, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1

  • Our 3DS service has been completely revamped. Primer SDK now supports 3DS protocol version 2.2.0
  • Support 3DS weak validation
  • Support 3DS OOB flow
  • Improve 3DS reporting
  • Set 3DS sanity check in PrimerSettings to false when you are in DEBUG mode, to disable the device check when testing on the simulator.

Check out our detailed documentation here

✨ Improvements since 2.17.0-rc.11

  • Minor fixes
v2.17.0-rc.11
2023-05-10

🔧 Fixes

  • Take into account tax and discount on Apple Pay items
  • Prioritize merchant amount over total amount
  • Only take into account surcharge when merchant amount is not set

🔧 Fixes

  • Take into account tax and discount on Apple Pay items
  • Prioritize merchant amount over total amount
  • Only take into account surcharge when merchant amount is not set
v2.16.7
2023-05-10

🔧 Fixes

  • Take into account tax and discount on Apple Pay items
  • Prioritize merchant amount over total amount
  • Only take into account surcharge when merchant amount is not set
v2.17.0-rc.10
2023-04-24

🔧 Fixes

  • Expose payment instrument data on tokenization callback
  • Fix issue that prevented the client session from being updated when restarting headless checkout
  • Make iPay88 userContact optional
v2.16.6
2023-04-24

🔧 Fixes

  • Expose payment instrument data on tokenization callback
v2.17.0-rc.9
2023-04-17

🔧 Fixes

  • Fixed SDK crashing when Primer3DS is not included
  • Fixed build issue due to iPay88 when archiving
v2.17.0-rc.8
2023-04-10

⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to 2.17.0-rc.9 version.

✨ Improvements since 2.17.0-rc.7

  • Modify iPay88 validation rules
v2.17.0-rc.7
2023-04-06

⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to 2.17.0-rc.9 version.

✨ Improvements since 2.17.0-rc.6

  • Improved analytics
v2.17.0-rc.6
2023-04-03

⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to 2.17.0-rc.9 version.

✨ Improvements since 2.17.0-rc.5

  • Improved analytics
v2.17.0-rc.5
2023-03-28

⚠️ SDK is crashing on this version when Primer3DS pod is not included. Please update to 2.17.0-rc.9 version.

✨ Improvements

  • PrimerPaymentMethodAsset now exposes the payment method’s friendly name

✨ Improvements since 2.17.0-rc.4

  • Improved analytics
  • Fix scenario where payment method’s image file is missing
  • Print console warning when a decisionHandler is not implemented
v2.17.0-rc.4
2023-03-20

✨ Improvements since 2.17.0-rc.3

  • Fix for React Native
v2.17.0-rc.3
2023-03-15

✨ Improvements

This version is adding support for iPay88 payments in Malaysia.

Our documentation has been updated to reflect these changes. You can also find a Migration Guide detailing the changes.

✨ Improvements since 2.17.0-rc.2

  • Contains the features and improvements of 2.16.5
  • Observability improvements
  • Improves cancellation happening from 3rd party payment apps through deep links
  • Fix Atome cancellation from within the webview
  • Fix UI unresponsiveness happening on iOS 16.0.x on certain cases
  • Fix iOS console warnings
v2.16.5
2023-03-06

🔧 Fixes

  • Fix an issue that prevented 3DS from working with some card networks (AMEX, Maestro, Discover, and JCB)
  • Fix an issue that prevented 3DS from working when the billing address is set or updated after the SDK is initialized with a client session
  • Improve 3DS visibility
v2.17.0-rc.2
2023-01-23

✨ Improvements

It’s been more than 6 months that Headless Checkout has been released in Beta!

We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.

This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.

Our documentation detailing the changes.

✨ Improvements since 2.17.0-rc.1

  • Contains the features and improvements of 2.16.3 and 2.16.4
  • Remove Google Pay from the list of payment methods
v2.16.4
2023-02-09

✨ Improvements

  • Fix translations

🔧 Fixes

  • Fix build issue on Xcode 13
v2.16.3
2023-02-03

✨ Improvements

  • Add translations
  • Add analytics events and errors

🔧 Fixes

  • Fix theming issue
v2.17.0-rc.1
2023-01-23

⚠️ This version introduces breaking changes for Headless Checkout

✨ Improvements

It’s been more than 6 months that Headless Checkout has been released in Beta!

We gathered insightful feedback that pushed us to work on critical improvements to the developer experience of Headless Checkout.

This release candidate introduces a more robust, scalable, and stable flow for integrating Headless Checkout to implement a fully custom interface for your checkout.

Our documentation detailing the changes.

This release candidate will soon be merged into the main releases.

✨ Improvements since 2.16.2

  • Contains the features and improvements of 2.16.1 and 2.16.2
  • Remove Google Pay from the list of payment methods
v2.16.2
2023-01-20

🔧 Fixes

  • Fix Xendit OVO redirect
v2.16.1
2022-12-29

🔧 Fixes

  • Fix Klarna payment category
v2.16.0
2022-12-21

✨ Improvements

In this version we are adding support for iPay88 card payments.

We have also added events to monitor the Headless flow.

🔧 Fixes

  • Remove Xcode configuration flags from podspec.
  • Apple Pay will return an error on simulator
v2.15.1
2022-11-29

🔧 Fixes

  • Fixing the MBWay local asset loading
  • Removed the GENERATE_INFOPLIST_FILE as part of the xcconfig of the PrimerSDK podspec as it was causing an issue upon archiving the hosting apps
  • Added CODE_SIGNING_ALLOWED => NO to xcconfig in podspec to remove the Signing requirement introduced in Xcode 14+
v2.15.0
2022-11-17

🔧 Fixes

  • Fixed the Contributing link in our SDK Readme
  • Added the GENERATE_INFOPLIST_FILE as part of the xcconfig of the PrimerSDK podspec
  • Improved the Cardholder Name field availability in Card form
v2.14.3
2022-11-11

🔧 Fixes

  • Fixed an issue with regards to the availability of retrieving some assets
  • Small improvements in the way the Country selector in billing address gets loaded
v2.14.2
2022-11-08

🔧 Fixes

  • Fixed 3DS on frictionless flows
  • Sending analytics events with correct sdkVersion
v2.14.1
2022-11-04

🔧 Fixes

  • Fixed the PayPal vaulting service
v2.14.0
2022-10-27

In this version we are obsoleting the 3DS vaulting via the PrimerSettings.PrimerCardPaymentOptions .

Above flow is now obsoleted and 3DS will always follow workflows.

🔧 Fixes

  • We have fixed wrong cardholder name checkout modules evaluations which resulted in not requesting cardholder name on headless
  • We have fixed raw data validation callbacks not being fired on headless
v2.13.1
2022-10-24

🔧 Fixes

Fixing the Blik flow.

ℹ️ This fix solves the issue affecting versions from 2.7.0 to 2.13.0. We recommend updating to this 2.13.1 version.

v2.13.0
2022-10-21

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

💳 APMs support

Retail Outlets via Xendit

In this version of the SDK we added the support for Retail Outlets via Xendit.

Retail Outlets via Xendit Payment Method now is fully supported via Headless Universal Checkout (Beta) via the Raw Data Manager.

Check this out in our documentation 🙌

v2.12.2
2022-10-19

🔧 Fixes

Fixed on Headless Universal Checkout with ADYEN_BANCONTACT_CARD flow failing on some scenarios.

v2.12.1
2022-10-10

🔧 Fixes

Fix Klarna vault flow failing on some scenarios.

v2.12.0
2022-10-06

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

💳 APMs support

Bancontact via Adyen

In this version of the SDK we added the support for Bancontact Debit via Adyen.

Bancontact Debit via Adyen Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.

In this release, developers have the ability of initializing the raw data for a Bancontact Card 💳 and perform the Tokenization flow via their own fully customized UI yet utilizing all of the features that make Primer great.

This update also bring an improvement of CardFormUIManager , now accepting other Card inputs to perform payments.

In order to do so, you can now initialize the CardFormUIManager with **public** **init**(paymentMethodType: String) as opposed to its classic initializer which has been utilizing the standard PAYMENT_CARD payment method type.

Apple Pay billing address

Last but not least, we are now capturing the billing address out of an Apple Pay payment.

To enable this feature, when configuring the Checkout with the PrimerSettings , developers can setup PrimerApplePayOptions with another parameter: isCaptureBillingAddressEnabled . The SDK will take care of showing the option of adding the billing address and capture it.

v2.11.1
2022-10-03

🔧 Fixes

Fix crash with Primer’s raw data manager on HUC and processor 3DS

v2.11.0
2022-09-30

✨ Improvements

👌

Alongside the listed features below, we have performed improvements to our codebase.

In this version of the SDK we improved the raw data validation in the Headless Universal Checkout flow.

v2.9.0
2022-09-16

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

In this version of the SDK we added the support for Multibanco via Universal Checkout.

Multibanco Payment Method now is fully supported via Headless Universal Checkout (Beta) and the standard SDK implementation.

PromptPay is also now supported via Omise too 🙌.

In Headless Universal Checkout (Beta), developers will access to a new event which will provide an object PrimerCheckoutQRCodeInfo containing the data needed to build their awesome UI / UX on top.

For PromptPay specifically, the object will be PromptPayCheckoutAdditionalInfo

`func primerHeadlessUniversalCheckoutDidReceiveAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?)**

v2.8.0
2022-09-08

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

The PrimerKlarnaSDK is now also supported on Swift Package Manager. No changes are required if you’re integrating the PrimerSDK with the SPM, since it’s going to add the Klarna SDK by default.

Also there’s a fix on the infinite loading with Xendit.

Try it out and let us know what do you think 🙌!

v2.7.0
2022-09-01

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

This release changes the way that Klarna is integrated, and switches on Klarna’s native iOS SDK (with CocoaPods, SPM will soon follow). It also add MultiBanco and MBWay support on Headless Universal Checkout raw data manager.

Also there’s a fix on local images not being returned by the HUC.

Try it out and let us know what do you think 🙌!

v1.37.0
2022-09-01

✨ Improvements

This release changes the way that Klarna is integrated, and switches on Klarna’s native iOS SDK (with CocoaPods, SPM will soon follow).

Try it out and let us know what do you think 🙌!

v2.6.0
2022-08-24

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

Last release was all about bringing the possibility to Headless Checkout of utilizing the raw data a card 💳 contains so that developers could utilize their own fully customized UI and still use all of the features that make Primer great.

We kept expanding the Headless Checkout feature, now providing to our developers the raw phone number data they can utilize to create payments.

The payment method supporting that is only OVO via Xendit for now.

Try it out and let us know what do you think 🙌!


We didn’t stop here though, alongside the phone number capture, we have enriched our suite of available payment methods adding MB Way, working with Portuguese phone numbers 🇵🇹 and needing the MB Way App to complete the payment.

Here is a preview 👇

Simulator Screen Recording - iPhone 11 - 2022-08-23 at 18.48.28.gif

v2.5.0
2022-08-16

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

This release enhance the capabilities of our SDK in its Headless Checkout feature, bringing the possibility of utilizing your fully customized UI and still use all of the features that make Primer great. We now give to our developers all the raw data a card contains.

Try it out and let us know what do you think 🙌!

v2.4.0
2022-08-10

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

This release brings a totally new way of retrieving the APMs.

We have now the possibility of providing some APMs without even push a new release 🙌.

That’s a huge milestone for us and the developments of our product.


As everything game-changing, it comes with a cost. To be able to support this release, we have made some changes that requires some work in case you are already utilizing the SDK.

🚨 Migration info🚨

Payment methods’ types in version prior to this one (<2.4.0) were represented by a enum PrimerPaymentMethodType , hence accessible via: .paymentMethod .

In this version, we are no longer exposing the enum , and return a plain String instead.

v2.3.0
2022-07-29

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

💳 APMs support

Fast and PromptPay via Rapyd

Screen Shot 2022-07-28 at 17.45.42.png

Screen Shot 2022-07-28 at 17.52.14.png

v2.2.1
2022-07-18
  • Internal codebase refactors
  • Fix Danger check
v2.2.0
2022-07-13

✨ Improvements

👌 Alongside the listed features below, we have performed improvements to our codebase.

💳 APMs support

Grab Pay, Poli and GCash via Rapyd

Billing address support 🧾

We can now capture the billing address before performing a payment.

v1.36.2
2022-07-13
  • Fix checkout with Adyen iDeal
v2.1.0
2022-07-07

✨ Improvements

The version 2 of the Headless Universal Checkout is out!

💡 Take a look at the migration guide for updating your integration to version 2.

✨ Payments created automatically

Primer Headless Universal Checkout | SDK

Starting from this version, automatic payment creation is included in the Headless Universal Checkout. You should now only care about creating best possible and seamless experience for your users, we will take care of the rest. Please take a look at our simple explanation about the changes we made.

v2.0.1
2022-06-20
  • Fix Klarna checkout
  • Dummy APMs
v2.0.0
2022-06-08

✨ Improvements

The version 2 of the SDK is out! This includes a simplified way to integrate Primer

📚 Take a look at the migration guide for updating your integration to version 2.

✨ Payments created automatically

Universal Checkout | SDK

Creating payments with Universal Checkout is now seamless. There’s no more need for callbacks, API calls and headaches to create a payment. It’s all done under the hood 🧙

In the past, creating payments involved manual payment handling: On the client side, you would have had to implement the dreaded clientTokenCallback, onTokenizeSuccess and onResumeSuccess delegate functions:

extension MyViewController: PrimerDelegate {

   func clientTokenCallback(_ completion: @escaping(String ? , Error ? ) - > Void) {
      // API call to fetch client token from your backend.
      fetchClientToken() {
         (token, err) in
         completion(token, err)
      }
		}

	func onTokenizeSuccess(_ paymentMethodToken: PaymentMethodToken, resumeHandler: ResumeHandlerProtocol) {
	   // Send the payment method token to your server to create a payment
	   sendPaymentMethodToken(token: paymentMethodToken) { (res, err) in
	      if let err = err {
	         resumeHandler.handle(error: err)
	      } else if
	      let res = res {
	         guard
	         let requiredActionDic = res["requiredAction"] as ? [String: Any],
	            let clientToken = requiredActionDic["clientToken"] as ? String
	         else {
	            resumeHandler.handleSuccess()
	            return
	         }

	         resumeHandler.handle(newClientToken: clientToken)
	      }
	   }
	}

	func onResumeSuccess(_ resumeToken: String, resumeHandler: ResumeHandlerProtocol) {
	   // Resume the payment
	   sendResumeToken(resumeToken) {
	      (res, err) in
	      if let err = err {
	         resumeHandler.handle(error: err)
	      } else if let res = res {
	         resumeHandler.handleSuccess()
	      }
	   }
	}

}

On the server side, you had to manually call our Payments API in order to create a payment 🤷

Rejoice! As from version 2.0.0 no manual payment handling is required! Payment creation is now, as mentioned above, :chef-kiss: - seamless.

Feel free to rip out the above mentioned callbacks when migrating to version 2.0.0 and enjoy the feeling of utter relaxation as all your payment handling is now done by Universal Checkout 💆

🔨 Deprecation

The iOS SDK’s move to version 2 has brought a lot of exciting changes and along with these changes, some deprecations.

📚 Please take a look at our iOS SDK version 2 migration guide for a full list of the deprecations made.

v1.36.1
2022-06-15
  • Add Klarna checkout
v1.36.0
2022-06-02
  • Add the HUC beta feature
v1.35.0
2022-05-27
  • Fix vaulting with PayPal
  • Return error when vaulting without a customer id in the client session
v1.34.0
2022-05-23
  • Added following APMs
    • Coinbase
    • Opennode
    • 2c2p
    • PayShop
  • Minor codebase improvements
v1.33.1
2022-05-19
  • Fix Apple Pay merchant name not showing
v1.33.0 [BETA]
2022-05-11
  • Add the Processor3DS functionality
v1.32.5
2022-05-04
  • Refactor Apple Pay cancellation flow
  • Change primer error message to something generic
v1.32.4
2022-04-22
  • Translations updates
  • Better accents handling when uppercased text is presented
  • Better handling of subunits for VND (Vietnamese Dong) currency
v1.32.3
2022-04-19
  • Fixes cardholder name field not deleting characters
  • Changes cardholder name field’s keyboard type
v1.32.2
2022-04-14
  • Fixes Klarna tokenization when vaulting
  • Fixes disabled user interaction on Dot Pay
v1.32.1
2022-04-12
  • Fixes Klarna and Twint logos
v1.32.0
2022-04-11
  • Added following APMs
    • Paytrail
    • Interac
v1.31.0
2022-04-06
  • Client session validation improvement via dedicated BE API
  • React Native bridge fixes
  • PayPal logo aligned with other platforms
  • Other UI improvements
v1.30.0
2022-03-28
  • Adds payment method Blik
  • Adds React Native helpers.
v1.29.0
2022-03-11
  • Added right-to-left support
  • Various bug fixes and enhancements
v1.28.0 [BETA 9]
2022-05-19
  • Fix Apple Pay merchant name not showing
v1.28.0-beta.2
2022-02-28
  • Implements the Headless Universal Checkout for cards and APMs (except for Blik, Adyen Dot Pay and Adyen iDeal)
v1.27.4
2022-02-17
  • Add missing localized strings
  • Fix PayNow image color
v1.27.3
2022-02-15
  • Fix compiler warnings
v1.27.1
2022-02-07
  • Remove submodule responsible for localization because it was blocking SPM
  • Make License file a resource
  • Fix SPM import errors
v1.27.0
2022-02-07
  • Improved UI for loading, success & error screens
  • Fix APM redirect failing on some cases
  • Remove some warnings
v1.26.0
2022-02-03
  • Added the support for the 12 new languages;
    • Danish
    • Dutch
    • French
    • German
    • Greek
    • Italian
    • Norwegian
    • Polish
    • Portuguese
    • Spanish
    • Swedish
    • Turkish
v1.25.0
2022-02-01
  • Improvements to payment method redirections
v1.24.0
2022-01-28
  • Add Xfers
  • Add payer info on PayPal
  • Fix RN bug
v1.23.0
2022-01-18
  • Tokenization will always return a SINGLE_USE token
  • Add locale in analytics
v1.22.0
2022-01-11
  • Support for capturing postal code in card form and observing using client session actions
  • Additional currencies and associated symbols
  • Improved error handling
  • Improvements to surcharge UI
  • Autofocus on the next field in the card form feature added.
v1.20.0
2021-12-22
  • Add Atome Payment Method in beta
v1.19.7
2021-12-21
  • Fix replacing that was replacing country code.
v1.19.6
2021-12-20
  • Ignore client session warning if client session has already modified the settings
  • Fix bug with enum’s default case.
v1.19.5
2021-12-17
  • Fixes dark mode colors
  • Fixes searchfield return button tap bug
  • Add missing ”+” on payment methods surcharge
  • Changes amount in minor units in the example app
  • Sort picker view rows in the example app alphabetically
v1.19.4
2021-12-14
  • Fixes client token env issue
v1.19.3
2021-12-13
  • Fixes Apaya redirection for subdomains
v1.19.2
2021-12-13
  • Add tests
  • Minor fixes
v1.19.1
2021-12-08
  • Minor fixes
v1.19.0
2021-12-06
  • Minor fixes
  • Surcharge feature stable
v1.19.0-beta.3
2021-12-03
  • Adds surcharge functionality
  • Adds client session actions (documentation)
  • Fix laggy cardnumber field
  • Various fixes
v1.18.0
2021-11-30
  • Adds Bancontact, EPS, Giropay, iDeal and Sofort via Buckaroo
  • Minor fixes on the Example app
  • Minor fix on PayPal presentation
v1.17.0
2021-11-23
  • Deprecates amount, currency, countryCode, customerId, customer, billingAddress & orderItems from PrimerSettings in favour of setting them in the client-session with POST /client-session.

Settings Migration Guide

  • Deprecates PrimerTheme and introduces PrimerThemeData.
  • Restructure SDK theming
  • Adds Payconiq, Giropay & Bancontact via PayNL, and iDeal & Bancontact via Mollie
  • Focus on cardnumber field when opening card form
  • Provide error when a payment method hasn’t been configured
  • Provides the functionality to change the background view’s color
  • Integrate with client session (documentation)
v1.16.1
2021-12-13
  • Fixes Apaya redirection for subdomains
v1.16.0
2021-11-17
  • Fixes status bar bug on Apaya webview
  • Adds iDeal & DotPay view Adyen
  • Fixes 3DS challenge not being presented when opted-in in scenes
v1.15.1
2021-11-11
  • Hotfix for broken case, and its presentation.
v1.15.0
2021-11-05
  • Adds payment methods
    1. iDeal
    2. Hoolah
    3. Ali Pay
    4. Trustly
    5. Giropay
    6. Twint
v1.14.3
2021-11-04
  • Fixes Apaya crash when presenting and dismissing almost at the same moment.
v1.14.1
2021-11-01
  • Fixes Apaya bug when dismissed.
v1.14.0
2021-10-25
  • Add card network and validation icons on the card form
  • Bug fixes
v1.13.3
2021-10-04
  • Bump
v1.13.2
2021-10-04
  • Fix Apple Pay bug on React Native
v1.13.1
2021-10-04
  • Fix resume handler protocol in certain situations.
v1.13.0
2021-10-04
  • Adds dynamic 3DS logic
  • Applies minor fixes
v1.12.3
2021-10-01
  • Fixes unknown payment method parse.
v1.12.2
2021-09-29
  • Fixes SDK presentation when opted-in to UISceneDelegate
v1.12.1
2021-09-28
  • Fixes Swift Package Manager installation
v1.12.0
2021-09-24
  • Deprecates showCheckout(_ controller:, flow:) in favour of:
    1. showUniversalCheckout(on:)
    2. showVaultManager(on:)
    3. showPaymentMethod(:, withIntent:, on: UIViewController)
  • Applies minor fixes
  • Fixes failing tests
v1.11.4
2021-09-23

✨ Improvements

  • Phonenumber for Apaya can be passed in PrimerSettings.Customer
  • Minor fixes
v1.11.3
2021-09-22

✨ Improvements

  • Refactors UI
  • Fixes UI bugs introduced on iOS 15
v1.10.1
2021-09-20

✨ Improvements

  • Fix Xcode 12.4 building
  • Refactor currency formatting
v1.10.0
2021-09-16

✨ Improvements

  • Add the Apaya payment method
  • Fix card view validation
  • Apply minor fixes
v1.8.4
2021-07-19

✨ Improvements

  • Fix configuration parse bug on staging
  • Add missing Klarna tokenDetails on tokenization
  • Fix bottom view bouncing when the keyboard was presented at the same time as a push animation
  • Fix bottom view scrolling bug on universal checkout and vault manager
v1.8.0
2021-07-07

Breaking Changes

  • Delegate function’s clientTokenCallback completion handler has been modified.

✨ Improvements

  • Delegate functions tokenAddedToVault, onTokenizeSuccess, onCheckoutDismissed, checkoutFailed are now optional.
  • Deprecate authorizePayment delegate function in favour of onTokenizeSuccess.
  • Fix return & cancel urls for PayPal checkout
v1.7.3
2021-06-28

✨ Improvements

  • Add cancel error ( domain: "primer", code: 1500)
  • Add UI tests
  • Embed PromiseKit for future use
v1.7.0
2021-06-17

✨ Improvements

  • Automatically redirect from Klarna to BankId (if installed)
  • Fix UI bugs on universal checkout & vault
  • Fix Apple Pay cancel from button
v1.6.1
2021-06-14

✨ Improvements

  • Fix dismissing root view controller on error
  • Fix flows
  • Deprecate authorizePayment in favor of onTokenizeSuccess
v1.6.0
2021-05-31

Features

  • Add ApplePay

✨ Improvements

  • Add ApplePay functionality.
  • Add PENDING amount functionality on OrderItem. Initializer throws errors if not initialzied correctly.
  • Add payment networks
  • Change the order of fields on the card form view.
  • Modify extensions access levels.
  • Use subclasses and extend them, if needed.
  • Remove duplications and unused functionality.
v1.5.5
2021-05-21

✨ Improvements

  • countryCode can be passed from the backend or, optionally, on the SDK. Backend countryCode has higher priority.
  • Fix wrong error description.
  • Expose LocaleData and let it be set on the PrimerSettings object. If no LocaleData is provided the SDK will default to the system’s Locale.
  • Modify classes, protocols and extensions access level.
v1.5.4
2021-05-18

✨ Improvements

  • Update example
v1.5.3
2021-05-18

✨ Improvements

  • Fix vault title
  • Fix card form title
  • Update labels
  • General UI fixes
v1.5.2
2021-05-12

✨ Improvements

  • Validate token parameter on webview redirects
  • Catch cancel state on webview redirects
  • Refactor webview process, work with a completion handler instead of viewWillDisappear
  • Expose errors
  • Move various functionalities from view controllers’ view life-cycle to more appropriate places
  • All public facing API call are dispatched on the main queue (for now)
  • Add & fix Klarna validations
  • Fix missing super() calls
  • Add scheme variable for logging and default it to false
  • Remove alerts
  • Delegate methods are called on the main queue
  • Remove unused variables. Modify one-liners to be more readable.
v1.5.1
2021-05-07

Breaking Changes

  • The completion of the clientTokenCallback(_:) delegate function now expects a string

✨ Improvements

  • exp has been added in the client token payload and token validation is performed. If token is expired an error will be returned through the checkoutFailed(with:) delegate function
v1.4.4
2021-04-27

✨ Improvements

  • Provide isInitialLoadingHidden param which hides the initial loading view
  • Refactor the success/failure view
  • Expose errors trough the checkoutFailed(with:) delegate function
  • Update icons

Bug fixes

  • Remove card scanner button
  • From vault, move back to checkout if no card is present
  • Remove Add new card from the vault manager
  • Replace Klarna customer token copy with user’s Klarna email
v1.4.3
2021-04-22

✨ Improvements

  • Expose tokenAddedToVault(_: PaymentMethodToken) delegate function

Bug fixes

  • Rename Klarna Customer Token to user’s email (if present)
  • Rename SAVED CARD to SAVED PAYMENT METHOD
v1.4.2
2021-04-15

✨ Improvements

  • Refactor Klarna flow

Bug fixes

  • Update success screen
  • Update localizable strings
v1.4.1
2021-04-15

Bug fixes

  • Fix Swift Package Manager bundled resources
  • Fix Swift Package Manager localization strings
  • Update Swift version to 5.3
v1.3.1
2021-03-28

✨ Improvements

  • Introduce the Klarna payment method (in beta)
  • The Vault Manager now supports vaulting PayPal
  • Add Swift Package Manager integration support
  • Various performance and size optimisation

Bug fixes

  • Include toolbar above keyboard on date picker
  • Fix buggy behaviour of RN bridge
  • Improve the validation of the IBAN field in the Direct Debit form

Client Session Actions Guide

⚠️

If you are also integrating Primer3DS, make sure to install v.1.1.2 to avoid archiving issues with Xcode 14.3.1