v2.55.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.

v2.54.6
2025-07-07

🔧 Fixes

  • Fix issue where vaulted Stripe ACH tokens could not be selected to make payments due to an error.
v2.54.5
2025-06-20

✨ Improvements

  • Updated Payment types to include missing payment methods:
    • DLOCAL_PIX
    • ALMA
    • PAY_NL_RIVERTY
v2.54.4
2025-06-18

🔧 Fixes

  • Google Pay - Minor bug fix in some edge cases where it was impossible to disable button through headless SDK.
v2.54.3

This version has been deprecated. Please upgrade to version 2.54.4 onwards.

v2.54.2

This version has been deprecated. Please upgrade to version 2.54.4 onwards.

v2.54.1

This version has been deprecated. Please upgrade to version 2.54.4 onwards.

v2.54.0
2025-05-12

🔧 Fixes

  • Apple Pay - fixed a bug on headless that resulted in Checkout staying in loading state after cancelling Apple Pay payment sheet too quickly.

  • Improves accessibility of hidden inputs

v2.53.7
2025-05-07

✨ Improvements

  • Improved support for legacy mobile Safari versions by adjusting bundler settings.

  • Resolved compatibility issues affecting early iOS 15 and iOS 16 releases.

Our testing confirms the SDK now works as expected on these older browsers.

v2.53.6
2025-05-01

✨ Improvements

Minor enhancements to the TypeScript types exposed by the package.

v2.53.5
2025-04-24

Fixed a bug that prevented the 3DS Flow from continuing in some timeout scenarios.

v2.53.4
2025-04-16

Bug fixes and improvements

v2.53.3
2025-04-15

Bug fixes and improvements

v2.53.2
2025-04-10

🚀 New feature

Introduced support for the ‘Continue payment flow’ workflow action to configure checkout outcome. See our documentation for more info.

v2.53.1
2025-04-10

🚀 New feature

• Improved TypeScript typings for vaulted payment methods

This release enhances the type safety of vaulted payment methods by refining our TypeScript definitions. These changes enforce stricter typing, which may surface TypeScript errors in projects that previously relied on loosely typed vaulted items.

⚠️ Note: There are no changes to the runtime or processing logic—only TypeScript type definitions have been updated.
v2.53.0
2025-04-10

⚠️ Note: This version has been removed due to a minor display bug affecting the rendering of vaulted Stripe ACH items. If you’ve installed this version, we recommend upgrading to 2.53.1.

v2.52.2
2025-04-09

🔧 Fixes

We’ve released a fix for Klarna payment method and added a missing onPaymentMethodAction callback. Now PAYMENT_METHOD_SELECTED and PAYMENT_METHOD_UNSELECTED events are triggered.

v2.52.1
2025-04-03

🔧 Fixes

  • Fixed an issue where the payment method logo position, relative to the text, was sometimes ignored
v2.52.0
2025-03-25

✨ Improvements

  • The SDK will now default to using Api version 2.4 when initialised. It is possible to use the previous defaults by setting legacy via options.apiVersion. For more information see our SDK reference, Api Reference and Migration Guides.

🔧 Fixes

  • Surcharge information will not be displayed next to the card form when no surcharge is applied; the card form will not be automatically hidden when the surcharge is applied - use SDK Options to hide the card form if needed.
v2.51.0
2025-03-18

🔧 Fixes

  • Fixed a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly.
v2.50.6
2025-03-18

This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Fixed Google Pay OR_BIBED_15 error where the payment popup failed to open due to a network request. The popup is now triggered immediately upon clicking the Google Pay button, ensuring compliance with browser restrictions on user-initiated popups. As a result, any updates to the client session must now be refreshed manually in the SDK by calling refreshClientSession.
v2.50.5
2025-03-12

This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

Deprecations

  • Removed support for iDeal-V1 and the associated bank selector UI from the SDK. With iDeal-V2, users are now redirected to their own bank selector interface, making this functionality redundant. All existing integrations have been automatically migrated to iDeal-V2, requiring no further action from merchants.
v2.50.4
2025-03-11

This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Addressed an error (undefined is not an object) occurring with Apple Pay transactions.
v2.50.3
2025-03-03

This version contains a bug in the Klarna session update flow, which may cause validation failures when the Klarna session is triggered and potentially prevent the session from updating correctly. Please use at least version 2.51.0

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Resolved an issue with the Klarna vaulting payment flow. Previously, the Klarna vaulting process was not operational due to missing properties. This fix ensures proper communication between the SDK, Primer and Klarna, enabling successful vaulting across all Klarna-supported payments.
v2.50.2
2025-02-17

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Fixed missing TypeScript types for StripeACH options on showUniversalCheckout options. This resolves issues where TypeScript users encountered type errors when configuring StripeACH payments.
v2.50.1
2025-02-11

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Fix double surcharge and top-level amount calculation for Google Pay
v2.50.0
2025-02-05

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

✨ Improvements

  • With this release, we introduce a new property, apiVersion:

    • This property allows you to modify which API the SDK will use internally. By default, the previous API state is selected, ensuring backward compatibility. The new APIs are used by opt-in.

    • To use our new API 2.4 functionalities, set the apiVersion to “2.4”.

    • This update enables you to migrate to API 2.4 gradually without disrupting your existing integrations.

For more information, see our:

v2.49.2
2025-01-30

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

Fixed an issue where onPaymentMethodAction wasn’t being triggered when closing a payment popup. In some specific instances, when a popup delegated payment method was closed before it fully completed its loading sequence, the SDK would fail to dispatch the relevant callbacks. This prevented merchants from constructing reliable logic for handling payment method actions.

v2.49.1
2025-01-27

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Cardholder Name now supports non-Latin characters correctly.
v2.49.0
2025-01-16

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

✨ Improvements

  • Removed two legacy SDK flows:

  • Single Payment Flow: A simplified one-payment view that hasn’t been used in production for over a year. Its removal simplifies the codebase, improves maintainability, and strengthens the overall logic.

  • Express Checkout: A legacy, unstable flow introduced in 2022, never officially released but present in TypeScript declarations and some code files. As we are not pursuing this approach further, all related code has been removed, simplifying the PayPal integration and client session logic.

  • Amount checks on Apple Pay and Google Pay—We removed a client-side check for these payment methods, as it was no longer needed. Passing value 0 enables some specific vaulting flows.

📢

Experimental

as of 2.48.0 version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our Api Reference and Migration Guides

v2.48.0
2025-01-10

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

✨ Improvements

  • This release introduced several updates to the dependencies used by the web SDK, primarily related to TypeScript type generation, linting, and build pipelines.

  • Notable customer-facing dependency updates include:

    • card-validator and credit-card-type, which are responsible for validating and recognizing cards client-side. Keeping these up to date ensures your clients won’t encounter issues with the card form.

    • @stripe/stripe-js, used to render the Stripe ACH payment form and its components.

  • We have also improved the overall code quality and ensured more reliable execution.

📢

Experimental

With this version, it is possible to opt-in to test Api v2.4(Beta). For more information, see our Api Reference and Migration Guides

v2.47.0
2024-12-10

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🚀 New feature

Stripe ACH Vaulting is now available ✨

  • We have added support for Vaulting for ACH via Stripe. ACH lets you accept payments from customers with a US bank account.

  • Read about the prerequisites here

v2.46.8
2024-11-11

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

We’ve released a fix to prevent the Google Pay OR_BIBED_15 error from happening on the Firefox browser.

v2.46.7
2024-11-05

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

  • Fixed the bug introduced in 2.46.0, which broke the localized error messages and displayed the error code in square brackets instead.
v2.46.6
2024-10-31

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

🔧 Fixes

This release addresses a Google Pay display item label bug introduced in 2.46.1. We’ve implemented a fix to ensure that a default label is set if neither the fee type nor line item description is provided, preventing missing labels that cause Google Pay errors.

For merchants using Google Pay, it is advisable to set both the line items description and fee type properties. For more details, please refer to the documentation:

v2.46.5
2024-10-23

This version contains a bug in ApplePay integration, which may cause session failures when a billing address is required. Please use at least version 2.51.0

This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6

🔧 Fixes

  • Bug fixes and improvements
v2.46.4
2024-10-21

This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6

🔧 Fixes

Fixed a regression where Safari autofill was not populating fields.

v2.46.3
2024-10-18

This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6

✨ Improvements

We’ve updated Klarna’s branding to reflect the latest guidelines.

You can now tailor the “Pay with” label on Klarna’s payment button using the buttonOptions property, enabling a more localized and relevant checkout experience based on your customers’ region and Klarna’s available payment methods. This feature is available for both direct Klarna integrations and through Adyen.

🔧 Fixes

  • Klarna locale now defaults to en_US if the provided locale is not supported.

2.46.2

Skipped due to a pipeline error

v2.46.1
2024-10-04

This version has been deprecated due to the implementation of Google Pay. Please upgrade to 2.46.6

🔧 Fixes

We’ve ensured compatibility of the SDK with older versions of Safari. Our logs indicated crashes related to the unsupported BroadcastChannel API in Safari versions earlier than 15.4, and this patch addresses those issues.

v2.46.0
2024-10-02

✨ Improvements

We’ve rebuilt our internal error and log reporting system to enhance debugging and issue resolution for your customers. This update improves stability and performance by removing external dependencies and ensuring that all unexpected errors are captured and reported.

Why Upgrade?

  • We’re able to address issues affecting your clients proactively.

  • Faster resolution of support escalation tickets, thanks to more detailed session analysis.

  • Continued improvements to the stability and performance of our SDK.

v2.45.10
2024-09-26

🔧 Fixes

  • Fix for Paypal - remove the condition check in SDK that would break PayPal for merchants that are passing top level amount property in the create client session request
v2.45.9
2024-09-24

🔧 Fixes

  • Fix the translation of “Cardholder name” in Bulgarian
v2.45.8
2024-09-09

✨ Improvements

  • Bug fixes and improvements
v2.45.7
2024-08-30

🔧 Fixes

  • An issue that prevented the SDK from being re-initialized when clientSessionCachingEnabled is set to true has been fixed.
v2.45.6
2024-08-27

✨ Improvements

  • CDN assets improvements
v2.45.5
2024-08-27

🔧 Fixes

  • Fixed typescript definitions generation
v2.45.4
2024-08-22

✨ Improvements

Finnish, Korean, Catalan, Serbian, Slovenian, Ukrainian, Hebrew, and Indonesian languages are now supported.

v2.45.3
2024-08-20

✨ Improvements

Bug fixes and improvements

v2.45.2
2024-08-14

🚀 New feature

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 acknowledgment of success or failure.

  • This release includes one-off payments and cancellation and refund actions. We aim to add support for recurring payments in the future.

  • With just a few clicks through Primer, you can easily integrate ACH via Stripe into your payment stack. Visit the integrations section of the dashboard to learn more, or consult the direct integration guide.

v2.45.1
2024-08-12

🔧 Fixes

  • Fixed a bug on Firefox where the user needed to double-tab to focus on input fields.

  • Added missing id properties to the Payment Method buttons.

  • Fixed an issue that prevented importing the Primer package on the server

v2.45.0
2024-08-08

✨ Improvements

We simplified the Headless Checkout public interface. The options can now be set directly in the second parameter of the createHeadless method. Please update your implementation by moving the options from the previous headless.configure method, which is now deprecated. Check the updated documentation for more details.

Note: This is a necessary update if you want to set the clientSessionCachingEnabled flag to true.

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, both Headless and Drop-in. 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.44.1
2024-08-06

✨ Improvements

  • Bug fixes and improvements.
v2.44.0
2024-07-31

✨ Improvements

  • A default font size for APM button text was added.
v2.43.1
2024-07-23

✨ Improvements

  • Performance and monitoring enhancements.
v2.43.0
2024-07-23

✨ Improvements

  • Enhanced reliability of configuration requests in poor connectivity conditions.

  • Improved initialization script loading.

  • Performance and monitoring enhancements.

v2.42.7
2024-07-23

✨ Improvements

  • Performance and monitoring enhancements.
v2.42.6
2024-07-17

🔧 Fixes

  • Fixed Headless PayPal to work correctly when paymentFlow is set to PREFER_VAULT.
v2.42.5
2024-07-16

🔧 Fixes

  • Fixed an issue that prevented inputting card numbers with more than 16 digits.
v2.42.4
2024-07-11

🔧 Fixes

  • Fixed an issue where client session updates did not set the amount correctly on Headless Google Pay.
v2.42.3
2024-06-27

🔧 Fixes

  • We have fixed an issue in AssetsManager.getPaymentMethod. Previously, the paymentMethodName parameter would return the recommended button text for a payment method, which could be null for many payment methods. We have deprecated this parameter and added two new ones:

buttonText: This is the recommended button text, e.g., “Pay with Google Pay.” However, it may be null for certain Payment Methods.

displayName: This is the payment method name. E.g., “Google Pay”. This should be available for all payment methods.

From now on, please use these new parameters based on your use case. For more information, see our docs.

v2.42.0
2024-05-23

💳 New APM

iDEAL via Adyen

Adds the FormWithRedirectPaymentMethodManager that provides access to the configuration and methods necessary to:

  • load a list of all supported banks

  • submit user’s selection

For more information, see our payment method guide, and sdk reference docs for the FormWithRedirectPaymentMethodManager.

v2.41.0
2024-04-12

🚀 New Feature

  • Drop-In: Card Security Code (CSC/CVV) recapture

    • Vaulted cards can now optionally capture the customer’s CVV, which sometimes can increase approval rate

    • To enable this feature, create a client-session with the option captureVaultedCardCvv

    • CVV cannot be vaulted because of PCI DSS

🔧 Fixes

  • Suppress noisy logs for sessionStorage.setItem and navigator.sendBeacon when the browser does not support them, or they are disallowed by the user, or when they fail for any other reason

  • Prevents iframes from going opaque when the browser is set with a different color-scheme

v2.40.4
2024-04-05

🔧 Fixes

  • Upgraded Paypal order creation to the latest server-driven PayPal SDK

  • We were using an old way of creating a PayPal order (via actions.order.create from PayPal’s JS SDK) that PayPal is deprecating in June 2024. This version upgrades a PayPal payment method order creation using Orders v2 APIs and PayPal JavaScript SDK

  • We introduced a change in the metadata field that is passed when creating a client session. Previously orderId in the client session would be passed to PayPal as the custom\_id. Now you have to pass paypal_custom_id  in the metadata.

v2.40.3
2024-04-03

🔧 Fixes

  • Headless now correctly triggers onPaymentMethodAction events

  • Now shows the loading spinner when a payment is being processed and the card payment method is not available

v2.40.2
2024-03-27

🔧 Fixes

  • 3DS popup buttons not being clickable

  • Headless hosted inputs default height

v2.40.1
2024-03-25

🔧 Fixes

  • Checkout options stylesheets

  • Rename icon className to avoid CSS conflicts

  • Change the default CVV input size to 4 digits

  • Use redirect instead of popup when in an in-app browser

  • Hide the loading spinner when there are no payment methods available

  • Prevent PayPal from being stuck in infinite loading

v2.40.0
2024-03-13

🔧 Fixes

  • Resolved an issue that caused low authorization rate with Apple Pay for certain processors such as Cybersource when the user’s billing address was missing either the first name or last name on their Apple Pay wallet. If Apple Pay is configured to capture the billing address, users will now be prompted with an error message within Apple Pay’s sheet indicating that they need to fill out the missing first name or last name in their Apple Pay wallet in order to proceed with the payment.

  • Various internal improvements to enhance overall system stability and performance.

v2.39.1
2024-03-07

🔧 Fixes

  • Fixed a regression bug introduced in v2.37.0 that showed an error “This merchant is having trouble accepting your payment right now. Try using a different payment method. [OR_BIBED_06] OR_BIBED_06” when the user selected Google Pay, preventing them from paying.

  • You should now be able to propose Google Pay seamlessly as before.

v2.39.0
2024-03-04

🚀 New Feature

  • Support for Klarna Headless

    • Our Klarna integration is now available on Headless Checkout on Web. Flows supported:

      • Pay now

      • Pay later: Pay in 30 days

      • Pay over time: Pay in 3-4 installments. First payment right away then the rest in installments (no interest)

      • Fair financing: Installment plans of 6, 12, 24, and 36 months with flexible payments (with interest)

    • The docs are available here and the Klarna Payment Manager reference is here.

  • Support for Klarna EMD

    • 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

v2.38.1
2024-02-21

🔧 Fixes

  • Fixed an issue with Klarna that caused the Klarna view to expand and then collapse when switching between payment categories.

  • Fixed an inconsistency in the input’s metadata for Headless Vault Manager CVV recapture. Developers can now rely on the “input.metadata.valid” property to be their source of truth when checking if the validations have passed.

v2.38.0
2024-02-15

🚀 New Feature

  • Added support for iDEAL via Adyen on Headless
2.37.2
2024-02-08

🔧 Fixes

  • Provide translated error message for CVV required error on Headless Checkout Vault Manager in cvvInput.metadata.error

  • Note that cvvRequired errorCode is still exposed in cvvInput.metadata.errorCode property

v2.37.1
2024-01-31

🔧 Fixes

  • Build artefact (webpack) that prevented npm package to run correctly in the browser
v2.37.0
2024-01-29

🚀 New Feature

  • Support for co-badged cards on Headless Checkout (documentation will come soon)
v2.36.0
2024-01-22

🚀 New Feature

  • Added Drop-in payment method: iDEAL via Stripe

🔧 Fixes

  • Drop-in Checkout’s submitButton.amountVisible setting now correctly displays amount for card payments in the “Pay” button
v2.35.1
2023-11-17

🔧 Fixes

  • Validation for card information when using browsers’ built-in autofill is now more reliable, especially on Safari
v2.35.0
2023-11-16

✨ Improvements

  • Optimized bundling for the core package and all payment methods

    • This should result in the SDK loading up to 30% faster

🔧 Fixes

  • Fixed an issue with Klarna items using “description” rather than “name”
v2.34.0
2023-10-24

🚀 New Feature

  • Add support for initializing Paypal with a “capture” intent
v2.33.4
2023-10-24

🔧 Fixes

  • Card autofill when using browsers’ built-in autofill, especially Safari
v2.33.3
2023-10-19

✨ Improvements

  • Improve usage analytics

🔧 Fixes

  • Fix Klarna’s shipping fees and calculation for tax rates

  • Fix server side rendering

v2.33.2
2023-10-06

🔧 Fixes

  • Fix the Drop-In and Headless Checkout not honouring the allowedCardNetworks configuration option.
v2.33.1
2023-09-22

✨ Improvements

  • Improve performance of analytics on the SDK, now calls will be made when the user device is idle and won’t slow down the payment flow

🔧 Fixes

  • Prevent unwanted retries of calls to Primer API
v2.33.0
2023-09-15

✨ Improvements

  • Add addEventListener alias for the addListener method of CVVInput

🔧 Fixes

  • Fix CVVInput events not being triggered
v2.32.7
2023-08-28

🔧 Fixes

  • Update Klarna button to better adhere with their guidelines

  • Fix an issue with Drop-in that could happen when both Multibanco and Blik were active in the same session (which is extremely unlikely)

v2.32.5
2023-08-07

🔧 Fixes

  • Activate 3DS when cards are not configured in checkout builder. This ensures that 3DS can be triggered even if only Google Pay or Apple Pay are presented.
v2.32.4
2023-08-02

🔧 Fixes

  • Fix 3DS not appearing properly in Headless Checkout

  • Fix an issue that prevented users to pay with a vaulted PayPal account if a card is also present in the vault

v2.32.3
2023-07-14

🔧 Fixes

  • Fix an issue that caused onResumeSuccess to be called with an undefined resume token when forceRedirect is set to true

  • Improve the logic for setting the size of the 3DS window

  • Fix an issue raised in 2.32.0: the CVV input now forwards a cvvRequired error if the user has not yet interacted with it

v2.32.0
2023-07-10

🚀 New Feature

Headless Vault Manager

Add PrimerHeadlessCheckout.createVaultManager() which returns an instance of HeadlessVaultManager. It provides the following features:

🐛 Known issues

  • The CVV input does not forward a cvvRequired error if the user has not interacted with it.

  • This has been fixed in 2.32.2

v2.31.1
2023-06-26

✨ Improvements

  • Allow PayPal button to take the full width available

🔧 Fixes

  • Fix a regression introduced in 2.28.1 that prevented onCheckoutFail from returning the payment object when available
v2.31.0
2023-06-05

🚀 New Feature

Validate cardholder name

Add validation for cardholder name so that only Unicode Latin alphabet no.1 characters are allowed, which should improve 3DS pass rates.

✨ Improvements

  • Change the “CVV” label to “Security code” in Japanese.

🔧 Fixes

  • Fix an issue that caused a crash when closing Adyen Klarna’s redirect popup window. The issue was introduced in 2.30.0.

  • Fix onPaymentMethodAction on Web not being triggered with Klarna.

v2.30.0
2023-05-16

🚀 New Feature

When popup windows are not supported - either because they were blocked by the browser, or one of its extensions/plugins, or any other reason - payment methods that would open them will instead redirect the current page.

Read the guide on how to handle redirects in order to ensure maximum compatibility.

  • This is a fallback mechanism, when popup windows are supported they will continue to open as expected.

  • forceRedirect is still supported.

v2.29.0
2023-05-11

✨ Improvements

  • Update english translations

🔧 Fixes

  • Fix a bug where the submit button was disabled when moving to another screen and coming back to the checkout home, while any vaulted payment method was present.

  • Enable the Apple pay button to work within a form tag

v2.28.1
2023-04-13

🔧 Fixes

  • Fix an issue that caused onCheckoutFail to not be called when the payment ends up with a PENDING status and no required action. This could happen in the case of Atome when the user clicks “Back to merchant”

  • Fix a bug that caused the flag form.inputLabelsVisible to also hide surcharge labels

  • Improve surcharging support for PayPal when paypal.paymentFlow is set to PREFER_VAULT

v2.28.0
2023-03-21

✨ Improvements

  • Improve internal visibility

🔧 Fixes

  • Fix a race condition on Drop-in Checkout that caused card input fields to not appear

  • Fix an issue that broke server-side rendering (crypto not defined or navigation not defined)

  • Fix an issue causing screens to disappear after calling refreshClientSession

  • Improve API error handling

v2.27.2
2023-03-14

🔧 Fixes

  • Fix a race condition on Headless that caused card input fields to not appear

  • Fix an issue that prevented surcharging to be displayed for amex and diners club

  • Fix the typescript definitions of the main SDK functions

v2.27.1
2023-03-01

🔧 Fixes

  • Fix an issue that prevented the UI of card surcharge to be updated after refreshClientSession() is called

  • Add warning messages when Adyen via Klarna does not receive any payment method to display

🐛 Known issues

  • If a surcharge for a card network is set, then removed after calling refreshClientSession(): the UI can fail to display the card fields

  • The checkout behaves strangely when surcharge is setup then removed or the other way around

v2.27.0
2023-02-17

✨ Improvements

Google Pay now capture billing address information! 🥳

Universal Checkout | Payment Methods

When initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Google Pay.

Typescript
    Primer.showUniversalCheckout(clientToken, {
    googlePay: {
    captureBillingAddress: true // defaults to false - not required
    }
    })

We recommend capturing the billing address via Google Pay if you’re processing Google Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it.

🔧 Fixes

  • Improve error handling when initializing the SDK

  • Fix a regression from 2.25.1 issue that raised a malformed client token bug when the user selects a redirect-based payment method

v2.26.1
2023-02-07

✨ Improvements

The SDK now speaks Chinese, Thai and Malay 🌐

Universal Checkout | Locales

Your checkout can now display in any of the following new languages:

  • Mainland Chinese (simplified characters) zh-CN

  • Thai th

  • Malay ms

It also has partial support for:

  • Chinese from Hong-Kong zh-HK

  • Chinese from Taiwan zh-TW

Chinese card details

✨ Improvements

Universal Checkout | Payment methods

This new version now forwards to Klarna all updates of the client session’s order.

This enables you to display a checkout with Klarna right next to a cart view or a voucher field that can modify the amount.

To implement this, make sure to call checkout.refreshClientSession()

Javascript
const checkout = await Primer.showUniversalCheckout(clientToken, options);
// After you patched the client session
await checkout.refreshClientSession();

🔧 Fixes

  • Headless Checkout’s onAvailablePaymentMethodsLoad is now working properly

  • Improved the support for specific versions of Webpack (window is undefined error)

  • Improved the error handling of the client token

v2.25.1
2023-01-25

✨ Improvements

Load time improved by ~20% 🏃‍♂️

Universal Checkout | Performance

We are on a journey to create the most performant checkout available out there 🚀

Of course, this means reducing the time to load the SDK and present payment methods to your user 💪

This new version brings a few internal changes to how the SDK is loaded that decreases the load time by about 20%!

Known issues

Headless Checkout’s onAvailablePaymentMethodsLoad is not working properly on this release. This has been addressed on v2.26.1.

The validation of arguments passed to the main Primer functions is not working. This will be addressed in a new release. This has been addressed on v2.26.1

v2.24.0
2023-01-16

✨ Improvements

Add Processor 3DS to Headless Checkout

Headless Checkout | Processor 3DS

When a processor does not enable Primer to use their agnostic 3DS, Primer automatically falls back to using their proprietary 3DS when possible.

This was already possible with the Drop-in Checkout - it is now supported by Headless Checkout! 🎉

When Processor 3DS is requested, Headless Checkout automatically displays an in-context modal view with the 3DS challenge!

v2.23.0
2023-01-06

✨ Improvements

✨ Improvements to Google Pay!

Universal Checkout | Payment method

Google Pay SDK has recently received a face lift that enables merchants to further customize the Google Pay button!

Pass buttonSizeMode to the Google Pay options to define if the button should take the full size of the container, or if it should be static.

  • Supported values are fill and static

  • ⚠️ This mechanism replaces the buttonType values short and long.

Pass buttonType to set what should be displayed on the Google Pay button.

  • buy (default)

  • book

  • checkout

  • donate

  • order

  • pay

  • plain

  • subscribe

Google Pay Buttons

JavaScript

Primer.showUniversalCheckout(clientToken, {
/\* Other options \*/
googlePay: {
buttonSizeMode: 'fill',
buttonType: 'subscribe'
}
});

🔧 Fixes

  • Fixed an issue with the sub-units of the currencies CRC, COP and HUF
v2.22.0
2022-12-13

✨ Improvements

iDeal via Worldpay! 🥳

Universal Checkout | Payment Methods

This version introduces another iDeal integration method: this time with Worldpay 🎉

Select your bank

v2.21.0
2022-12-05

✨ Improvements

Better support for manager types

Universal Checkout | Integration

This version introduces a breaking change for Headless Checkout beta

In the previous version, the callback onAvailablePaymentMethodTypes only returned a list of payment method strings. This made it difficult for developers to know how to implement each payment method.

The new callback introduces the concept of managerType : each payment method has a managerType that describes which payment method manager to instantiate.

This enables you to implement a whole payment method category in one go!

TypeScript

// Before
headless.configure({
// Other options
onAvailablePaymentMethodsLoad(paymentMethods) {
// paymentMethods is a list of strings representing the unique id of the payment method
}
})
// Now
headless.configure({
// Other options
onAvailablePaymentMethodsLoad(paymentMethods) {
// paymentMethods is a list of objects containing
// - `type`: the unique id of the payment method
// - `managerType`: the type of payment method manager. Can be `CARD`, `NATIVE`, or `REDIRECT`
}
})

Get access to the icons and names of payment methods on headless

Universal Checkout | Integration

For most payment methods, you have full control over how the payment method should be presented. To assist you, Primer exposes the AssetsManager  that enables you to retrieve the logo and main colors attached to each payment method.

TypeScript


const assetsManager = headless.getAssetsManager()
const { iconUrl, paymentMethodName, backgroundColor } = await assetsManager.getPaymentMethodAsset('ADYEN\_IDEAL') // ADYEN\_IDEAL comes from `paymentMethod.type`

Redirect payment methods are on Headless Checkout 🚀

Universal Checkout | Integration

Some payment methods require the user to be redirected to another web page to capture its payment details. Headless Checkout on Web now supports these types of payment methods👩‍💻

Head over to the documentation to implement these payment methods!

When the user selects the payment method, call the start function. This function automatically:

  • opens a popup to present a loading indicator, then the payment method web page

  • shows an overlay on top of your page that prompts the user to focus on the popup

v2.20.0
2022-12-05

🔨 Fixed

  • Fixed a bug causing Apple Pay to not properly handle currencies without minor units
v2.19.1
2022-11-11

🔨 Fixed

  • Address bug which caused an internal API validation error when receiving a billing address back from Apple Pay without the state field.
v2.19.0
2022-11-11

✨ Improvements

Added onPaymentCreationStart callback

Universal Checkout

  • You will now be able to rely on the onPaymentCreationStart callback to get notified before the checkout attempts to perform the following actions:

  • Tokenize the selected payment method

Create a payment

TypeScript

const checkout = await Primer.showUniversalCheckout(clientToken, {
container: '#container',
onPaymentCreationStart() {
// will be called before tokenization and payment creation
// will be followed by calls of either onCheckoutComplete
// or onCheckoutFail
},
onCheckoutComplete({ payment }) {
console.log('onCheckoutComplete', payment);
},
onCheckoutFail(error, { payment }, handler) {
console.error('onCheckoutFail', error, payment);
handler?.showErrorMessage(');
},
});

🔨 Fixed

  • Addressed bug which caused iframe events to not be fired with headless checkout implementation.
v2.18.0
2022-11-04

✨ Improvements

Apple Pay, Google Pay and PayPal are landing on Headless Checkout 🚀

Universal Checkout | Integration

Headless Checkout on Web now supports Apple Pay, Google Pay and PayPal 👩‍💻

With this new release, you can now ask Primer to display a button anywhere on the screen - and the SDK takes it from there!

Payment methods

Head over to the documentation to implement these payment methods!

🔨 Fixed

Fix an issue that prevented headless to work using our npm package

2.17.1
2022-11-04

🔨 Fixed

  • Address bug which caused the cardholder name to not be tokenized along with the other card information.

  • Addressed bug which caused the onPaymentMethodAction callback to not be called.

v2.17.0
2022-10-25

✨ Improvements

Klarna via Adyen! 🥳

Universal Checkout | Payment Methods

You will now be able to avail Klarna via Adyen for your customers. Klarna allows multiple payment options depending on the country in which the order is created.

Klarna

If Klarna via Adyen only provides a single payment type, no list will be displayed, but the Klarna button will display the available payment type.

🔨 Fixed

  • Fix bug where the card number input could not detect the AMEX card network type.

  • Addressed edge case where a payment is created with an empty card form, resulting in an error. In this case, onCheckoutFail will now be called.

v2.16.1
2022-10-21

🔨 Fixed

  • Fix an issue with a 404 happening when loading the SDK in server-driven environments
v2.16.0
2022-10-20

✨ Improvements

[BETA] Introducing Headless Checkout for complete customization! 🚀

Universal Checkout | Integration

Universal Checkout on Web currently features an amazing drop-in UI that you can integrate with just a couple of lines of code 👩‍💻

A few months ago, we introduced Headless Universal Checkout for mobile platforms, providing more flexibility and control over the checkout experience. Headless checkout has received positive adoption, so it’s time to bring this integration type to our Web SDK! 🎉

From this version onward, in addition to the drop-in integration, Web SDK enables you to start a headless checkout integration 🚀

💳 The first supported payment method is debit / credit card. Additional payment methods - including Google Pay, Apple Pay and PayPal - are coming throughout November ✌️

Why beta? Headless Universal Checkout is based on the battle-tested Web SDK, so it’s ready for production! We want to provide the simplest and smoothest developer experience, so the API may change in the near future!

What’s truly amazing is that headless checkout brings all the core Primer concepts that simplify your life as a developer 💪

So the creation of client sessions, the handling of payments in a PCI-compliant way, and the configuration of checkout via the Dashboard without a line a code work exactly the same way as with the drop-in integration 🎉

With Headless Universal Checkout: you just have to focus on the UI while we take care of the rest 👌

TypeScript
const headless = await Primer.createHeadless(clientToken);
await headless.configure({
onAvailablePaymentMethodsLoad(paymentMethodTypes) {
// Handle payment methods
},
onCheckoutComplete({ payment }) {
// Show success screen
},
onCheckoutFail(error, { payment }, handler) {
// Show checkout fail
return handler.showErrorMessage();
}
});

Check our guide on headless checkout to get started!

🧠

We’re looking for feedback to improve Headless Universal Checkout! Any thoughts to improve this feature? Join our Discord server, interact with our engineers and receive amazing swag!

v2.15.0
2022-10-19

✨ Improvements

Bancontact Debit via Adyen 🏦

Universal Checkout | Payment Methods

Your customers can now checkout with Bancontact Debit via Adyen using their bank card.

When your customer selects ‘Bancontact Pay with card’, they are then taken to a card form to enter their card details, where the CVV is not required.

Bancontact

v2.14.0
2022-10-17

✨ Improvements

Gift Card via PayNL KaartDirect! 🎁

Universal Checkout | Payment Methods

You will now be able to offer a tailored gift card payment method button to your customers via PayNL KaartDirect.

v2.13.2
2022-10-14

🔨 Fixed

  • Fix submit button being disabled when no APMs are loaded
v2.13.1
2022-10-07

✨ Improvements

Disable checkout autofocus! 👀

Universal Checkout | Customization

When initializing the checkout, you can now pass an additional setting within the style object which disables the checkout from autofocusing the first available payment method or card input field.

EPS via Adyen 🏦

Universal Checkout | Payment Methods

Your customers can now checkout with EPS via Adyen. This payment method exposes a list of banks which your customer can select to complete a payment with.

🔨 Fixed

Add back support for onErrorMessageShow and onErrorMessageHide callbacks which notifies you of when to display your custom error message when using the manual payment flow.

Take a look at our checkout customization guide for more information on these callbacks.

v2.12.0
2022-09-30

The start of Server Driven Payment Methods! 👏

To speed up the implementation of payment methods, we have begun building out a frontend framework so we don’t need to build the frontend of every new payment method we integrate with! Instead, we can leverage the framework and render the frontend using a preset configuration. This also means that merchants will no longer need to keep upgrading SDK versions to get access to new APMs.

We have started this big project by rolling out this framework for Redirect APMs. So, going forward from this version onwards, all Redirect APMs will be server-driven and don’t require an SDK upgrade to get access to any new ones we integrate with! 🥳

🔧 Fixes

  • Update Clearpay naming to be Afterpay in the overlay dialog and loading page

  • Enable our instance of PayPal to work if another instance of PayPal is running within the same window. The PayPal button now renders even if the merchant application is running a separate instance.

v2.11.0
2022-09-23

✨ Improvements

Apple Pay now capture billing address information! 🥳

Universal Checkout | Payment Methods

When initializing the checkout, you can now pass an additional setting to enforce billing address capture when your customers checkout with Apple Pay.

TypeScript

Primer.showUniversalCheckout(clientToken, {
applePay: {
captureBillingAddress?: true // defaults to false - not required
}
})

We recommend capturing the billing address via ApplePay if you’re processing Apple Pay payment via Adyen. Alternatively, you can pass the billing address in the client session if you already posses it. Read more about Apple Pay in our documentation.

setClientToken → refreshClientToken 😎

We’ve improved the experience when patching a client session

When you patch a client session by calling the PATCH /client session endpoint, you now no longer have to notify the checkout by calling setClientoken(clientToken) , there’s now a simpler alternative:

TypeScript

const checkout = await Primer.showUniversalCheckout(clientToken, {
// provide your settings
})
// This will result in the checkout
// being updated after patching a client session
checkout.refreshClientToken();

🔨 Fixed

  • The checkout now no longer fails to apply surcharging to American Express cards
v2.10.1
2022-09-20

✨ Improvements

🚨

Recommend update! This release addresses a bug which causes the SDK to crash in Safari. If you are using the SDK version 2.5.0 or up - we highly recommend you update your integration to this version or higher.

Better Klarna support! 🤯

Universal Checkout | Payment Methods

We’ve introduced a bunch of changes to ensure that Klarna is now much more stable across many more scenarios:

  • We’ve expanded the locale, country code and currency support for Klarna. You’ll now be able to serve your customers better with Klarna across multiple territories.

  • Klarna now works when passing tax in the client session. Feel free to add your tax amounts to each line items and Klarna will be able to interpret it as such.

  • Klarna now also supports passing a discount amount. Passing a discount amount in the client session will be interpreted correctly by Klarna.

We recommend updating your SDK version to 2.10.1 if you’re availing Primer to your customers.

🔨 Fixed

  • Fixed bug which caused SDK to crash in Safari browsers. This bug has been persisting since v2.5.0 of the Web SDK
v2.9.0
2022-09-12

✨ Improvements

Klarna now accepts the state property passed in the customer.billingAddress and customer.shippingAddress fields.

We recommend updating your SDK version to 2.9.0 if you’re servicing customers with Klarna in the United States, Australia or Canada to avoid any validation errors from Klarna

v2.8.1
2022-09-05

🔨 Fixed

  • Adyen now receives the required information for performing 3DS

If you need to perform 3DS via Adyen, it’s required that you update your integration to version 2.8.1

v2.8.0
2022-09-02

✨ Improvements

More payment methods incoming!

Bancontact - Payconiq via Adyen! 🤯

Universal Checkout | Payment Methods

When checkout out using Bancontact - Payconiq your customer is redirected to the app either directly on their mobile device, or by scanning a QR code on Desktop.

Take a look at our Adyen Connection and the payment methods it supports on the Dashboard.

Omise from the far east 🌅

Universal Checkout | Payment Methods

We’ve added support for PromptPay and Truemoney via Omise. These payment methods can be used to serve your customers in Thailand. PromptPay

Your customers will be able to pay using PromptPay by following a redirect after scanning the provided QR code using their mobile phones.

Truemoney

A popular e-wallet in Thailand, your customers can now select it as an option in the checkout and be redirected to complete their payment.

Take a look at our Omise Connection and the payment methods it supports on the Dashboard.

v2.7.0
2022-08-26

✨ Improvements

The release train has arrived! 🚂

Multibanco via Adyen has arrived! 🎉

Universal Checkout | Payment Methods

You can avail Multibanco via Adyen to your customers! Multibanco is a Portuguese Payment Method which allows customers to complete payments outside of the checkout’s context.

Take a look at our PacyPay Connection and the payment methods it supports on the Dashboard.

PacyPay payment methods incoming! 🎉

Universal Checkout | Payment Methods

We’ve added support for both Alipay+ and WeChat pay via Onerway


AliPay+ & WeChat Pay

Take a look at our PacyPay Connection and the payment methods it supports on the Dashboard.

We’ve added support for Afterpay! 🎉

Universal Checkout | Payment Methods

Afterpay (Clearpay) is a Buy Now Pay Later payment method in the UK, France, Spain and Italy which offers customers the option to pay in 4 interest free instalments! 😎

Take a look at our Afterpay Connection and the payment methods it supports on the Dashboard.

Increased control over payment method actions 🔍

Universal Checkout | Payment Method Callback

There are times when you would want to know (in real time), which payment method was selected by the customer. This added transparency allows you to perform actions, like updating your UI when a payment method is selected/unselected.

To receive updates on which payment method was selected by a customer, you can now make use of the onPaymentMethodAction callback.

JavaScript

const options = {
/\* Other checkout options ... \*/
onPaymentMethodAction(action, { paymentMethodType }) {
// Notifies you when a specific payment method has been selected or unselected
// action will either be 'PAYMENT\_METHOD\_SELECTED' or 'PAYMENT\_METHOD\_UNSELECTED'
},
};

As an example, selecting a payment method could result in displaying product recommendations that are commonly associated with customers who use that payment method. Additional context on when a customer unselects a payment method is also provided, which again gives you an opportunity to customize the customer experience.

More visibility. More control. More happy customers.

v2.6.0
2022-08-22

✨ Improvements

A small release, but we all know about dynamite and small packages

MB all the WAY 💸

Universal Checkout | Payment Methods

We’ve added support for MBWAY via Adyen 🎉 MBWAY is a leading payments app in Portugal. Our integration will allow your customers to pay using their phone numbers and complete their payments from their MBWAY apps.

MBWAY via Adyen is only available in Portugal. Take a look at our Adyen Connection and the payment methods it supports on the Dashboard.

v2.5.0
2022-08-12

✨ Improvements

New payment methods and a couple of UI improvements!

Paytrail and Payshop via Adyen is now supported 💰

You can now use Paytrail and Payshop via Adyen.

Paytrail & Payshop

Take a look at our Adyen Connection and the payment methods it supports on the Dashboard

Improved error handling 🔴

Universal Checkout | Payment Methods

If no payment methods are returned, you will now be notified in onCheckoutFail

Before, an error would be logged in the console if no payment methods were loaded, but now you can adapt your UI in the case that no payment methods could be retrieved for the given checkout session.

Take a look at the onCheckoutFail callback in the web SDKs readme for more information on how you can best handle checkout failure.

Bug fixes 🐛

  • Autofocus will now be applied to the first field in the card form and won’t automatically jump to the cardholder name input.
v2.4.0
2022-08-04

✨ Improvements

This release contains a host of exciting new features!

Amount on submit button 💰

You can now display the amount charged to the customer on the submit button 😎

Submit Button

To avail the amount on the submit button, you can pass submitButton.amountVisible: true as a checkout option:

TypeScript
const checkout = await Primer.showUniversalCheckout(clientToken, {
container: '#container',
submitButton: {
amountVisible: true,
}
}

Trigger card form submission on enter press ↩️

Universal Checkout

You no longer need a mouse to make card payments 🙃

Submit on Enter

iDEAL via PayNL now uses a dedicated bank list 🏦

Universal Checkout | Payment Methods

Select a bank

In order to create a more native experience when using iDEAL via PayNL - customers are now able to select the bank of their choosing via the checkout’s UI.

Before, iDEAL via PayNL would redirect customers away to a page where they could select a bank of their choosing.

In the future, we will be able to support this feature for all processors supporting iDEAL which returns a bank list.

Klarna now supports passing a product type 🤝

Universal Checkout | Payment Methods

Klarna is now able to receive information regarding the product type of a specific line item.

When creating a client session, a productType can now be specified for each lineItem:

JSON

{
// other client session options
"order": {
"countryCode": "SE",
"lineItems": [
{
"amount": 500,
"description": "Voucher",
"quantity": 1,
"itemId": "ABC123",
"productType": "DIGITAL" // digital product
},
{
"amount": 1500,
"description": "Blue Shoes",
"quantity": 2,
"itemId": "XYZ123",
"productType": "PHYSICAL" // physical product
}
]
},
}

The /client-session API reference will be updated shortly to include productType.

v2.3.1
2022-08-01

🔨 Fixed

We’ve been on a bit of a rampage… 🐛 🔨

  • The submit button is no longer enabled when the PayPal dialog is closed quickly, leaving no payment method in a selected state

  • Expanded locale and country code support for Klarna. The Klarna button should now render for the Irish 🇮🇪 🍀

  • All inputs within the checkout now display custom focus and hover styles correctly

  • Addressed issue where some payment methods failed when using currencies without minor units

v2.3.0
2022-07-22

✨ Improvements

This release adds support for several new payment methods and languages, meaning your checkout is accessible to even more people around the world 🌍

Added support for four new payment methods 🎉

Universal Checkout | Payment Methods

Thanks to our work with Rapyd, your checkout can now support the following payment methods:

  • GrabPay

  • Poli

  • Gcash

  • PromptPay

  • Fast

New locales 💬

Universal Checkout | Locales

Your checkout can now display in any of the following new languages:

  • Czech cs

  • Estonian et

  • Croatian hr

  • Japanese ja

  • Lithuanian lt

  • Portuguese - Brazil pt-BR

  • Vietnamese vi

You can choose the locale for your checkout experience by passing the locale option during initialization. Take a look at the web SDKs README for more details.

🔨 Fixed

  • Fix position of saved payment method dropdown on mobile

  • Klarna now allows updating the amount while the SDK is rendered

v2.2.2
2022-07-06

🔨 Fixed

  • Fixed a misalignment issue occurring in the vault when a Right-to-Left language is used

  • Improved support for currencies: non-decimal currencies such as the Japanese Yen and Vietnamese Dong are now supported 🎉

v2.2.1
2022-06-17

✨ Improvements

This release is all about better localization 🗣️age

Right to left language support ↪️ ↩️

Right to left languages will now read the way they should 😎

Submit

Arabic reading right-to-left

ALT

No additional setup is required to enable right-to-left ✨

New locales 💬

Universal Checkout | Locales

The SDK now supports an additional Spanish dialect - Argentinian:

Argentinian Spanish es-AR

The locale can easily be set by passing the locale checkout option when initialising the checkout. Take a look at the web SDKs README for more details.

🔨 Fixed

  • Fixed a TypeScript bug that cause showUniversalCheckout to return an instance of VaultManager. showUniversalCheckout now returns type UniversalCheckout.
v2.1.1
2022-06-03

✨ Improvements

Added new locales!

New locales 💬

Universal Checkout | Locales

The SDK now supports the following languages:

  • Bulgarian bg

  • Hungarian hu

  • Romanian ro

  • Russian ru

  • Slovak sk

v2.1.0
2022-06-01

✨ Improvements

Added support for processing payments using processor’s 3DS flow for Stripe and Rapyd.

[BETA] Pay in installments with 2c2p ! 🎉

Universal Checkout | Payment Methods

Universal Checkout now enables customers to pay in installments with their cards or bank accounts using 2c2p! This processor will display a “Pay in installments” button that redirects the user to 2c2p’s hosted payment page.

This processor is currently in beta while we finalise the implementation of additional actions

👉 Take a look at our 2C2P connection in your dashboard

Updated buttons for Coinbase and Opennode! 💅

Universal Checkout | Payment Methods

We’ve applied a few tweaks to the buttons of the payment methods Coinbase and Opennode!

Coinbase

This button now features a nice wallet icon!

Improved support for PayPal! 🎉

Universal Checkout | Payment Methods

Universal Checkout now sends additional information to PayPal:

  • If lineItems is provided in the client session, the item breakdown will be passed to the PayPal

  • If orderId is provided in the client session, PayPal’s custom\_id will be passed to PayPal

🔨 Fixed

  • Fixed a bug that prevented formSpacings from being applied to the friendly card name

  • Fixed an error raised in the console in the Vault Manager when the user clicks on a saved payment method

v2.0.0
2022-05-10

✨ 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.

🚀 Get started in one line of code!

Universal Checkout | SDK

Now you can harness the power of Primer even faster! We’ve followed our mantra of; “The best DX is no DX”, and slimmed down the Web SDK integration to just a single line of code 🤯

Before 🥱

TypeScript

const Primer = await loadPrimer(); // If the package is loaded from npm
const primer = new Primer({ credentials: { clientToken }});
const checkout = await primer.checkout(options);

Now 🚀

TypeScript

// To initialize Universal Checkout
const universalCheckout = await Primer.showUniversalCheckout(clientToken, options);
// To initialize Vault Manager
const vaultManager = await Primer.showVaultManager(clientToken, options);

By calling Primer.showUniversalCheckout , you’re configuring, initializing and availing the checkout to your customers in just one step.

The boilerplate might have been reduced, but all the great functionality of the checkout has been maintained 💪

Take a look at our new quick start guide for web to see just how easy it is to have a full implementation of Universal Checkout up and running in no time

✨ 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 onTokenizeSuccess and onResumeSuccess callbacks:

TypeScript

primer.checkout({
onTokenizeSuccess(paymentMethodTokenData) {
// Implement some verbose logic 🤢
},
onResumeSuccess(resumeTokenData) {
// Do it all again 😵
}
})

​ 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 💆

💳 Dummy Payment Methods

Universal Checkout | Payment Methods

We want you to start creating payments with Universal Checkout as quickly as possible, so we’ve added some dummy payment methods - no credentials required 😎

The following payment methods have been added:

  • PayPal via Primer

  • iDeal via Primer

  • Klarna via Primer

  • Cards via Primer

These payment methods are purely for demonstrative purposes and aren’t tied to any payment method specific environment.

You can now create payments in different states (authorized, declined, failed) and see them in the dashboard’s Payments page.

No need to create sandbox accounts with different processors/payment methods, the dashboard and all its great features can now be used without any setup.

Primer’s Dummy Payment Methods will come preconfigured with all new sandbox accounts.

🔨 Deprecation

The Web 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 Web SDK version 2 migration guide for a full list of the deprecations made.