> ## Documentation Index
> Fetch the complete documentation index at: https://yuno-3979e326-fix-create-subscription-card-usage.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Web SDK Changelog

> Latest updates and version history for the Yuno Web SDK

export const ChangelogBadge = ({type}) => {
  const types = {
    added: {
      color: 'success',
      label: 'ADDED'
    },
    changed: {
      color: 'warning',
      label: 'CHANGED'
    },
    deprecated: {
      color: 'alert',
      label: 'DEPRECATED'
    },
    removed: {
      color: 'error',
      label: 'REMOVED'
    },
    fixed: {
      color: 'info',
      label: 'FIXED'
    },
    security: {
      color: 'security',
      label: 'SECURITY'
    },
    breaking: {
      color: 'breaking',
      label: 'BREAKING'
    }
  };
  const config = types[type.toLowerCase()] || ({
    color: 'secondary',
    label: type.toUpperCase()
  });
  return <span className={`status-badge status-${config.color}`}>
      {config.label}
    </span>;
};

## v1.9.1

*June 3, 2026*

**Checkout**

* <ChangelogBadge type="fixed" /> **When only one regular payment method is available, it is now automatically pre-selected and its radio button appears checked on render — regardless of whether the backend marks it as preferred.**

* <ChangelogBadge type="fixed" /> **In whitelabel mode (when `apiUrl` or `assetUrl` is set at `initialize()`), the data privacy / terms-and-conditions text is hidden, matching the "Secure by Yuno" badge behavior.**

**Core SDK**

* <ChangelogBadge type="fixed" /> **QR codes for QR-based payment methods (like Nequi) now render with extra whitespace around the pattern, improving scan reliability on phones that auto-crop the camera view.**

* <ChangelogBadge type="fixed" /> **Yuno-hosted static assets (such as brand logos) now can be served via the proxy. Only Yuno hosts are rewritten, leaving external asset URLs untouched.**

## v1.9.0

*May 26, 2026*

**White Label**

* <ChangelogBadge type="breaking" /> **Whitelabel Class Names and IDs Prefix Change**\
  `Yuno` class names and IDs prefix changed to `sdk-payments`. For example, `yuno-checkout` becomes `sdk-payments-checkout`.

* <ChangelogBadge type="added" /> **Whitelabel-Neutral Public API**\
  Public-facing CSS class names, DOM ids, and event/callback names have been renamed to neutral, whitelabel-friendly identifiers. Existing `window.Yuno`, the `yuno-sdk-ready` event, and `yuno*` callback aliases continue to work, so existing merchant integrations need no changes. `window.Yuno` deprecated in favor of `window.SdkPayments`.

* <ChangelogBadge type="added" /> **Custom API and Asset URLs**\
  Added `options.apiUrl` and `options.assetUrl` initialization overrides so the SDK can point at partner-hosted backends, 3DS endpoints, secure-field iframes, and card-form assets instead of the default Yuno URLs. The override is also forwarded to the monitoring layer, mediator, and card-form iframes.

* <ChangelogBadge type="added" /> **Hide Secure Payment Badge on Custom Hosting**\
  When `apiUrl` or `assetUrl` overrides are set, the `Secure Payment with Yuno` badge is automatically hidden in both the standard checkout and the Click to Pay flow.

**Core SDK**

* <ChangelogBadge type="fixed" /> **More Resilient Asset Resolution**\
  Guard the webpack public path when running under Vite, skip duplicate `/v<x.y>` suffixes when the asset URL already includes one, and use the configured `apiUrl` directly as the API client base URL to avoid region-prefix corruption.

## v1.8.1

*May 22, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **Mongolian Language Support**\
  Adds Mongolian (mn) as a supported locale for the web SDK checkout experience.

* <ChangelogBadge type="added" /> **Auto-Select Single Payment Method**\
  When the checkout renders with exactly one regular (non-express) payment method available, that method is now auto-selected so the customer goes straight to the form. Express buttons (Apple Pay, Google Pay, PayPal) are no longer treated as a backend-preferred method that short-circuits this flow.

* <ChangelogBadge type="fixed" /> **Detailed Errors from generateOTT()**\
  When `apiClientPayment().generateToken` (`generateOTT`) fails, the rejected error now contains the backend response body (with error codes and detail) instead of just the generic axios error. Merchants catching this call receive actionable error information.

**Click to Pay**

* <ChangelogBadge type="changed" /> **Deferred Installments in Click to Pay Golden Flow**\
  Installment plans in the Click to Pay Golden Flow are now shown on a dedicated screen after the customer picks between Click to Pay and the standard card rail, instead of being fetched automatically while the PAN is typed. The card form stays mounted underneath so secure-field state is preserved between screens.

## v1.8.0

*May 14, 2026*

**Apple Pay**

* <ChangelogBadge type="added" /> **Apple Pay Address Collection**\
  Apple Pay payment sheet can now collect billing and shipping addresses when configured via `required_fields`. Default behavior is unchanged when not configured.

* <ChangelogBadge type="added" /> **Apple Pay BIN Available Pre-Payment**\
  DPAN BIN is now available in the OTT before payment, enabling BIN-based promotions and discounts. Existing card BIN flow is unaffected.

* <ChangelogBadge type="changed" /> **Improved Apple Pay Availability Detection**\
  Apple Pay button now appears more accurately on supported devices, reducing cases where the button shows for users who cannot complete an Apple Pay payment.

**Google Pay**

* <ChangelogBadge type="added" /> **Google Pay Address Collection**\
  Google Pay payment sheet can now collect billing address, shipping address, and cardholder name when configured via `required_fields`. Address detail level adjusts automatically based on what is requested.

* <ChangelogBadge type="added" /> **Google Pay Contact Field Collection**\
  Google Pay payment sheet can now collect customer email and phone number when configured via `contactFields`. Works in both standard and seamless external-button integrations.

**Card Payments**

* <ChangelogBadge type="changed" /> **Separate Billing and Shipping Sections**\
  Card form now renders billing and shipping as distinct sections with their own headers and an optional `Address line 2` field. When both addresses are required, a `Billing address is the same as shipping` checkbox appears, enabled by default.

* <ChangelogBadge type="added" /> **Compact Card Form Layout**\
  New slimmer card form layout with tighter spacing, grouped card details, and inline field-level error messages. Available across all SDK form variants. Behind a feature flag for A/B testing.

* <ChangelogBadge type="added" /> **Card Form Auto-Advance**\
  Card form auto-advances focus once fields reach their expected length (PAN by detected scheme, expiry, CVV), reducing the number of taps to complete the form. Manual selection always takes precedence. Behind a feature flag, default off, for A/B testing.

* <ChangelogBadge type="changed" /> **Real-Time Card Field Validation**\
  Card form fields now validate on blur once the user has interacted with them, instead of only on Pay click. Errors clear immediately when the user corrects an invalid field.

**Core SDK**

* <ChangelogBadge type="added" /> **Dynamic Enrollment Actions**\
  Enrollment flow now supports server-driven dynamic UI components: image, OTP, PIN, and info screens, rendered based on the fields returned by the server.

* <ChangelogBadge type="changed" /> **Smarter Currency Display**\
  Currency now shows a symbol only for the 21 currencies with globally unique symbols (€, £, etc.). All others display the 3-letter ISO code (for example `COP 9.200.000`, `MXN 1.500,00`). USD is the only currency that owns the `$` symbol.

* <ChangelogBadge type="added" /> **Hide Yuno Secure Payment Badge**\
  The `Secure Payment with Yuno` badge can now be hidden via Checkout Builder. When disabled, the badge is fully removed from the DOM in both the standard checkout and the Click to Pay flow.

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **EBANX Device Session Reliability**\
  Improved reliability of device ID propagation in payment requests, fixing Payment Link flows where it was occasionally dropped before reaching EBANX.

## v1.7.4

*May 26, 2026*

**Core SDK**

* <ChangelogBadge type="fixed" /> **Reliable Document Number Validation**\
  When the backend specifies a `validationFunction` for a document type that the SDK doesn't recognize, the field now falls back to regex validation instead of marking every value invalid. Prevents broken document inputs when a new validation function rolls out backend-first.

## v1.7.3

*May 11, 2026*

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Improved EBANX Device Session Handling**\
  Improved EBANX device session recovery in supported fraud flows.

## v1.7.2

*May 11, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **POST Redirect Support**\
  Added support for payment providers that require `POST` redirects.

* <ChangelogBadge type="changed" /> **Expanded Required Field Support**\
  Added support for additional required payment data such as `shipping_address` in supported flows.

**Secure Fields**

* <ChangelogBadge type="added" /> **Improved Session Handling**\
  Improved Secure Fields behavior in session-based payment flows.

**Card Payments**

* <ChangelogBadge type="changed" /> **Improved Card Retry Flows**\
  Enhanced retry behavior for card payments in supported checkout flows.

## v1.7.1

*May 11, 2026*

**Core SDK**

* <ChangelogBadge type="fixed" /> **More Reliable Payment Status Updates**\
  Improved payment status handling when real-time connection tracking is interrupted.

**Payment Actions**

* <ChangelogBadge type="fixed" /> **Improved QR, Barcode, and Image Rendering**\
  Improved rendering for payment steps that rely on images, QR codes, or barcodes.

* <ChangelogBadge type="changed" /> **Improved OTP and PIN Flows**\
  Refined OTP and PIN-based payment steps for a smoother authentication experience.

**Google Pay**

* <ChangelogBadge type="fixed" /> **Improved Button Rendering**\
  Improved Google Pay button rendering for a more consistent checkout experience.

## v1.7.0

*May 11, 2026*

**Click to Pay**

* <ChangelogBadge type="added" /> **Card Type Filtering Support**\
  Added support for card type restrictions in Click to Pay flows.

* <ChangelogBadge type="added" /> **Transaction Amount Support for Passkey Flows**\
  Click to Pay initialization now includes transaction amount metadata for supported passkey flows.

## v1.6.22

*May 27, 2026*

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Cybersource Fraud Session ID from Provider**\
  The Cybersource fraud device-fingerprinting session now uses the provider-supplied `session_id` when present, falling back to `checkoutSession` if the provider doesn't supply one. Aligns the fingerprint session ID with what the fraud provider expects, improving fingerprint match rates.

## v1.6.21

*May 26, 2026*

**Core SDK**

* <ChangelogBadge type="fixed" /> **Reliable Document Number Validation**\
  When the backend specifies a `validationFunction` for a document type that the SDK doesn't recognize, the field now falls back to regex validation instead of marking every value invalid. Prevents broken document inputs when a new validation function rolls out backend-first.

## v1.6.20

*May 13, 2026*

**Card Payments**

* <ChangelogBadge type="added" /> **Card Form Top Error Banner**\
  On payment retry, a banner appears at the top of the card form describing why the previous attempt failed. The banner scrolls into view and is highlighted if the customer tries to submit again without correcting the issue. Invalid-card-data errors and unknown response codes are now surfaced through this banner instead of per-field errors.

## v1.6.19

*May 8, 2026*

**Click to Pay**

* <ChangelogBadge type="fixed" /> **Card form button alignment on desktop**\
  Restored correct LTR alignment for the action button and the "Secure Payment by Yuno" badge in the Click to Pay card form (regression on v1.6.x; v1.5 and v1.7 were unaffected). RTL layout is preserved.

## v1.6.18

*May 7, 2026*

**Card Payments**

* <ChangelogBadge type="fixed" /> **Card Number Length Validation**\
  Card tokenization now waits for the BIN/IIN lookup to complete before submitting, so card numbers are validated against the correct scheme-specific minimum length. Previously, a short Luhn-valid PAN submitted before the BIN lookup settled could be sent to the provider and rejected; users now see an inline length error instead.

## v1.6.17

*May 6, 2026*

**Apple Pay**

* <ChangelogBadge type="changed" /> **More Accurate Cancellation Reasons**\
  Apple Pay cancellations are now reported with a precise reason, distinguishing user dismissal (`CANCELLED_BY_USER`) from merchant-validation or provider failures (`CANCELLED_BY_PROVIDER`). Improves the accuracy of drop-off analytics and provider health signals; no integration changes required.

## v1.6.16

*April 16, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **Cancel 3DS Challenge on Browser Back**\
  Pressing the browser back button during a 3DS challenge now cancels the challenge cleanly. Merchants receive the cancellation via `yunoPaymentResult` with status `PENDING` / `CANCELLED_BY_USER`; no `yunoError` is emitted and the modal unmounts without leaving stale state.

**Click to Pay**

* <ChangelogBadge type="changed" /> **Action Button Order on Mobile**\
  On mobile and tablet viewports, the Click to Pay action buttons in the card form have been reordered so the primary action sits below the secondary, improving the UX hierarchy. Desktop layout is unchanged.

## v1.6.8

*April 15, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **unMountSdk() Helper**\
  Introduced a new top-level `unMountSdk()` method for explicit SDK cleanup. Call it when removing the SDK from the page to avoid memory leaks.

<Accordion title="Unmount the SDK">
  ```js theme={null}
  yuno.unmountSdk();
  ```
</Accordion>

* <ChangelogBadge type="changed" /> **Rollback Cancel Flow**\
  Unified cancel flow events. The SDK now explicitly reports `CANCELED_BY_USER` in the `yunoPaymentResult` callback for all cancellation scenarios.

* <ChangelogBadge type="changed" /> **Legacy Event Rollback**\
  Legacy cancel-related events have been consolidated into the standard result flow. No new API changes required.

* <ChangelogBadge type="fixed" /> **Forter Token Listener**\
  Added a listener for the `ftr:tokenReady` event to ensure reliable capture of the Forter session token. Previously the token could be missed on slow page loads.

**Apple Pay**

* <ChangelogBadge type="added" /> **Metadata Support**\
  The cancel flow now includes a `metadata` parameter with a `paymentCreated` boolean, letting merchants determine whether a payment object was created before cancellation.

* <ChangelogBadge type="added" /> **Contact Info Passthrough**\
  The SDK now automatically collects and forwards the customer's email, phone, and name from `shippingContact`. No configuration required.

**PayPal**

* <ChangelogBadge type="added" /> **No OTT Flow**\
  Added support for a `REDIRECT` workflow that skips OTT creation, enabling PayPal payments without a prior server-side session.

<Accordion title="PayPal redirect flow (no OTT)">
  ```js theme={null}
  yuno.startSeamlessCheckout({
    paypal: {
      workflow: 'REDIRECT',
      orderId: 'YOUR_PAYPAL_ORDER_ID',
    }
  });
  ```
</Accordion>

* <ChangelogBadge type="added" /> **PayPal Button Modal**\
  New `PaypalButtonModal` component that renders the PayPal button inside a modal overlay, useful for merchants using a custom checkout UI.

## v1.6.7

*March 31, 2026*

**Card Payments**

* <ChangelogBadge type="added" /> **Card Password Field for Korean Cards**\
  New secure field for the first 2 digits of the cardholder PIN required by Korean issuers. Available across standard card, step-by-step, and Click to Pay (new + enrolled) flows. Enable by passing `cardPinElementSelector` in `startCheckout` config; the field renders when enabled for the merchant.

**Click to Pay**

* <ChangelogBadge type="fixed" /> **Passkey Activation with Multiple Card Providers**\
  When multiple card providers are configured, the SDK now searches all of them for valid 3DS parameters instead of only the first. Passkey now activates correctly when the 3DS-capable provider is not listed first.

**Core SDK**

* <ChangelogBadge type="added" /> **Hindi, Bengali, Malayalam, and Urdu Translations**\
  Available via `language: 'hi' | 'bn' | 'ml' | 'ur'`.

* <ChangelogBadge type="added" /> **Merchant Installments via `onGetInstallments`**\
  Merchants can supply their own installment options via the `onGetInstallments(cardBin)` callback; the SDK falls back to Yuno installments when the callback returns empty. A new `onInstallmentSelected` callback fires on both auto-selection and user picks across all card flows. Merchant-supplied installments are omitted from one-time-token creation since the merchant handles them server-side.

* <ChangelogBadge type="added" /> **`subStatus` in `yunoPaymentResult`**\
  The callback now receives `subStatus` as a second argument: `yunoPaymentResult(status, subStatus?)`, giving finer-grained outcome information (notably on cancel flows).

* <ChangelogBadge type="changed" /> **Bundle Size Reduction (-16%)**\
  SWC `env.targets` configured to eliminate ES5 polyfills on modern browsers.

**PayPal**

* <ChangelogBadge type="fixed" /> **PayPal Locale**\
  SDK language is now passed as `locale` to the PayPal `loadScript` call so the PayPal UI matches the configured checkout language.

## v1.6.6

*March 26, 2026*

**Apple Pay**

* <ChangelogBadge type="added" /> **`externalButtons` Customization**\
  New configuration on `externalButtons` for per-wallet button customization (Apple Pay, Google Pay, PayPal).

**Core SDK**

* <ChangelogBadge type="fixed" /> **WebSocket Race Condition in Redirect Flows**\
  Resolved a race that could lose status updates.

* <ChangelogBadge type="fixed" /> **WebSocket Error Handling**\
  Added error handling for WebSocket initialization to prevent unhandled failures in status polling.

## v1.6.5

*March 20, 2026*

**Apple Pay**

* <ChangelogBadge type="changed" /> **Unified Apple Pay Button**\
  Legacy Apple Pay implementation was removed; the SDK now uses a single Apple Pay button consistently across standard checkout and `mountExternalButtons` integrations, driven by the SDK payment flow.

* <ChangelogBadge type="changed" /> **Faster Apple Pay Button Render**\
  Apple Pay SDK loading, amount lookup, and config fetch now run in parallel, with a styled placeholder shown until the real button is ready.

* <ChangelogBadge type="changed" /> **Earlier Fraud Signal Collection**\
  Fraud signals are collected during Apple Pay button initialization for broader coverage on wallet flows.

**Google Pay**

* <ChangelogBadge type="changed" /> **Google Pay Button Placeholder**\
  A styled placeholder is shown while the Google Pay SDK loads, replacing the previous skeleton.

**Enrollment**

* <ChangelogBadge type="changed" /> **APM Enrollment Button Text**\
  The enrollment confirmation button for APMs now reads "Continue" across Full, Lite, Seamless, and Render Mode flows.

**Card Payments**

* <ChangelogBadge type="added" /> **Inline Payment Method Selection Error (Desktop)**\
  Clicking "Pay" without selecting a payment method now shows an inline error message below the payment method list on desktop. Mobile continues to use the existing toast.

**Payment Actions**

* <ChangelogBadge type="added" /> **Backend-Driven Warning Banner**\
  Flexible payment instructions can now render an optional warning banner returned by the backend, enabling provider-specific notices such as the Punto Pago disclaimer.

## v1.6.4

*March 19, 2026*

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Riskified Integration**\
  The Riskified script now loads with the correct shop and session identifiers, restoring reliable fraud signal collection when the shop domain is configured on the fraud provider.

## v1.6.3

*March 18, 2026*

**Core SDK**

* <ChangelogBadge type="changed" /> **Unified User-Cancel Flow**\
  Wallet, APM, Click to Pay, 3DS modal and lite checkout cancellations now emit `yunoPaymentResult` with `PENDING` status and `CANCELLED_BY_USER` substatus, replacing the previous `ERROR CANCELED_BY_USER` event. Integrations that branched on the legacy error should switch to the substatus.

* <ChangelogBadge type="changed" /> **Additional Load-Time Optimizations**\
  Google Pay and Apple Pay scripts are now preloaded, and `startCheckout`/`startSeamlessCheckout` prefetch payment methods earlier.

**Customer Fields**

* <ChangelogBadge type="fixed" /> **Document Type Options**\
  Removed a redundant country filter that could hide valid document types in some locales.

## v1.6.1

*March 12, 2026*

**Apple Pay**

* <ChangelogBadge type="added" /> **Billing Contact Collection**\
  Apple Pay can now capture the cardholder's billing name and postal address from the Apple Pay sheet when enabled via merchant configuration. The cardholder name is forwarded in the payment payload on completion.

* <ChangelogBadge type="added" /> **Free Trial Support for Recurring Payments**\
  Apple Pay now supports recurring billing with trial periods, configurable via merchant config (Apple Pay JS v14).

**Card Payments**

* <ChangelogBadge type="added" /> **Network Selector**\
  Dropdown across step-by-step payment, card unfolded, card modal, enrollment, and Click to Pay. Driven by server-side merchant configuration.

**Fraud & Risk**

* <ChangelogBadge type="added" /> **Cielo CyberSource Fraud Provider**\
  Cielo CyberSource added as a fraud provider, routed through the existing CyberSource integration.

* <ChangelogBadge type="added" /> **EBANX Device Fingerprint Provider**\
  New device-fingerprinting provider with country-based initialization. Customer country is now propagated through the fraud pipeline.

**Core SDK**

* <ChangelogBadge type="fixed" /> **Crash with External-Buttons-Only Sessions**\
  Fixed a crash that occurred when only external buttons (e.g. Apple Pay) were configured without SDK-rendered payment methods.

* <ChangelogBadge type="fixed" /> **Enrolled Card Form Crash**\
  Prevents a runtime crash when card metadata is missing while detecting Amex on enrolled cards.

* <ChangelogBadge type="fixed" /> **Sanitize Functions from Log Payloads**\
  Functions in the merchant-provided initial state are stripped before debug log serialization, preventing serialization issues across checkout, seamless checkout, headless payment/enrollment, and status flows.

## v1.6.0

*March 20, 2026*

* <ChangelogBadge type="added" /> **Subresource Integrity Support**\
  The SDK script tag now supports the `integrity` attribute for SRI-compliant loading, preventing unauthorized code injection. The `@yuno-payments/sdk-web` npm package exposes a `loadScript` method for SRI-compliant dynamic loading.

<Accordion title="Script tag with SRI">
  ```html theme={null}
  <script
    src="https://sdk-web.y.uno/v1.6/main.js"
    integrity="sha384-..."
    crossorigin="anonymous"
  ></script>
  ```
</Accordion>

* <ChangelogBadge type="added" /> **Arabic Language and RTL Layout**\
  Added Arabic (`ar`) language support. The checkout UI automatically switches to a Right-to-Left layout when Arabic is selected — no extra configuration required.

<Accordion title="Initialize with Arabic">
  ```js theme={null}
  const yuno = await window.Yuno.initialize(publicApiKey);

  await yuno.startCheckout({
    checkoutSession,
    elementSelector: '#root',
    countryCode: 'AE',
    language: 'ar',
  });
  ```
</Accordion>

* <ChangelogBadge type="changed" /> **Faster Initialization**\
  Improved initialization performance for both Lite and Full SDKs, reducing time-to-interactive on first load.

* <ChangelogBadge type="added" /> **Detailed Error Codes**\
  Configuration errors now surface more descriptive error codes, making it easier to diagnose integration issues during development.

* <ChangelogBadge type="fixed" /> **3DS Modal Centering**\
  Fixed an issue where the 3DS challenge modal was not centered on mobile devices. The modal now correctly fills and centers within the viewport.

## v1.5.26

*May 27, 2026*

**Card Payments**

* <ChangelogBadge type="added" /> **Compact Form Variant (1.5 backport)**\
  Backports the slimmer card, customer, and billing-address form layout from 1.6.x onto the 1.5.x line. Opt-in via the `slimmerFormEnabled` feature flag — disabled by default, no behavior change for merchants who don't toggle it.

## v1.5.25

*May 26, 2026*

**Core SDK**

* <ChangelogBadge type="fixed" /> **Reliable Document Number Validation**\
  When the backend specifies a `validationFunction` for a document type that the SDK doesn't recognize, the field now falls back to regex validation instead of marking every value invalid. Prevents broken document inputs when a new validation function rolls out backend-first.

## v1.5.20

*April 7, 2026*

**Apple Pay**

* <ChangelogBadge type="fixed" /> **Cancel Flow**\
  When the customer aborts an Apple Pay session, the cancel error now carries a `metadata` object with `paymentCreated` and `ottCreated` booleans so merchants can tell how far the flow had progressed. If a payment is created after the user has cancelled, the SDK automatically abandons the checkout session to prevent payments getting stuck in `PENDING`. (Backport of the v1.6.8 fix to the 1.5.x line.)

## v1.5.19

*April 2, 2026*

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Forter token isolation**\
  Tokens are now scoped per Forter `siteId` so concurrent or sequential checkout sessions no longer read a stale token from a previous provider/session.

* <ChangelogBadge type="changed" /> **Forter beacon script**\
  Consolidated to a single URL (`https://prod.y.uno/sdk-static-bundles-ms/v1/static/js/forter/forter.js`) with an updated SRI hash for both sandbox and production. Merchants with a strict CSP `script-src` allowlist should ensure `prod.y.uno` is permitted.

## v1.5.17

*April 1, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **`sdkType` initialization option**\
  New option on `Yuno.initialize()` for identifying integrations (plugins, embedded contexts) via the `x-sdk-type` request header for downstream attribution.

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Forter Token Capture**\
  Token capture now uses a listener-based approach for reliable session capture across page lifecycles.

## v1.5.15

*March 19, 2026*

**Payment Actions**

* <ChangelogBadge type="added" /> **Backend-Driven Warning Banner**\
  Flexible payment-action screens (e.g. Punto Pago) can now render a server-driven banner (title + description) after the instruction steps. Configured server-side; no merchant code change required.

## v1.5.14

*March 19, 2026*

**Core SDK**

* <ChangelogBadge type="changed" /> **APM Enrollment Button Text**\
  The enrollment confirmation button for APMs now reads "Continue" instead of "Save".

**Fraud & Risk**

* <ChangelogBadge type="fixed" /> **Riskified Beacon Parameters**\
  Missing query parameters added to the default beacon URL, restoring fraud signal collection.

## v1.5.11

*March 9, 2026*

**Apple Pay**

* <ChangelogBadge type="added" /> **Billing Contact Collection**\
  Apple Pay can now collect the cardholder's billing name and postal address from the Apple Pay sheet when enabled via merchant configuration. The cardholder name is forwarded in the payment payload. No SDK code change required by merchants.

**Fraud & Risk**

* <ChangelogBadge type="added" /> **EBANX Device Session Collection**\
  New EBANX fraud collector with automatic script mounting, retry, and unmount handling.

* <ChangelogBadge type="added" /> **Cielo CyberSource Fraud Provider**\
  Added Cielo CyberSource as a supported fraud provider.

* <ChangelogBadge type="changed" /> **Country-Aware Fraud Collection**\
  Fraud signal collection now uses the customer's country across payment methods, lite flow, secure fields, PayPal, Google Pay, Apple Pay, and the headless API client, improving provider routing and accuracy.

## v1.5.8

*February 24, 2026*

**Apple Pay**

* <ChangelogBadge type="added" /> **Wallet Domain URL**\
  Apple Pay transactions now include the wallet domain URL.

**Card Payments**

* <ChangelogBadge type="added" /> **Financial Cost in Enrolled Cards**\
  Financial cost detail is shown for enrolled card payments.

**Click to Pay**

* <ChangelogBadge type="added" /> **Financial Cost in C2P**\
  Financial cost detail is shown for Click to Pay flows.

**Google Pay**

* <ChangelogBadge type="added" /> **Third-Party Gateway Support**\
  Google Pay can now route through third-party gateways (Adyen, Stripe, etc.) with the gateway and merchant ID supplied via a new SDK provider configuration.

## v1.5.5

*February 16, 2026*

**Google Pay**

* <ChangelogBadge type="fixed" /> **Reload on Already-Open Sheet**\
  Reloads if the Google Pay sheet is already open, preventing a stuck state.

## v1.5.4

*February 16, 2026*

**Core SDK**

* <ChangelogBadge type="added" /> **Document Types by Country**\
  New general-settings configuration for document types per country (server-side merchant config; no merchant code change).

## v1.5.0

*January 15, 2026*

* <ChangelogBadge type="added" /> **mountExternalButtons Method**\
  New `mountExternalButtons(buttons)` method lets merchants render Google Pay and Apple Pay buttons in any custom location within their UI, providing full control over button placement and styling.

<Accordion title="Mount wallet buttons in custom locations">
  ```js theme={null}
  const yuno = await window.Yuno.initialize(publicApiKey);

  await yuno.startCheckout({
    checkoutSession,
    elementSelector: '#root',
    countryCode: 'US',
    language: 'en',
  });

  await yuno.mountExternalButtons([
    {
      paymentMethodType: 'APPLE_PAY',
      elementSelector: '#apple-pay',
    },
    {
      paymentMethodType: 'GOOGLE_PAY',
      elementSelector: '#google-pay',
    },
  ]);
  ```
</Accordion>

* <ChangelogBadge type="added" /> **Button Unmounting Methods**\
  Added `unmountExternalButton(paymentMethodType)` to remove a single external wallet button and `unmountAllExternalButtons()` to remove all mounted wallet buttons at once.

<Accordion title="Unmount wallet buttons">
  ```js theme={null}
  // Remove a single button
  yuno.unmountExternalButton('APPLE_PAY');

  // Remove all buttons
  yuno.unmountAllExternalButtons();
  ```
</Accordion>

* <ChangelogBadge type="changed" /> **Wallet Buttons as Direct Buttons**\
  Google Pay and Apple Pay now appear as direct action buttons instead of radio-button list items, providing a cleaner and more prominent placement in the checkout UI.

* <ChangelogBadge type="changed" /> **PayPal Enrollment UX**\
  The PayPal payment sheet now opens immediately after the customer selects PayPal for enrollment or payment, removing an extra confirmation step for a faster checkout experience.

**Lite Web SDK**

* <ChangelogBadge type="breaking" /> **Lite SDK External Buttons Required**\
  Google Pay and Apple Pay in the Lite Web SDK now require explicit mounting via `mountExternalButtons()`. Previously they rendered automatically as radio buttons. Lite SDK integrations must add a `mountExternalButtons` call — Full SDK integrations are not affected.\
  [Migration guide →](/changelog/migration-guides/web/v1-4-to-v1-5)

## v1.4.0

*October 15, 2025*

* <ChangelogBadge type="added" /> **Card Payment Voucher Messages**\
  Added voucher messaging for card payments, giving customers clear confirmation and transaction details immediately after a successful payment.

* <ChangelogBadge type="added" /> **Language Override for Loader**\
  The Yuno loader now accepts a `language` property, allowing explicit UI language control independent of browser settings. Useful for multi-language environments.

<Accordion title="Set language on initialize">
  ```js theme={null}
  Yuno.initialize({
    language: 'es',
  });
  ```
</Accordion>

* <ChangelogBadge type="changed" /> **Enhanced Click-to-Pay Rendering**\
  Improved rendering support for Click-to-Pay (C2P) elements, streamlining the checkout experience for enrolled cards.

**PayPal**

* <ChangelogBadge type="added" /> **PayPal Installments Enrollment**\
  Customers can now enroll in PayPal installment plans directly through the PayPal payment flow, providing flexible payment options at checkout.

* <ChangelogBadge type="added" /> **PayPal External Button Redirect**\
  PayPal can now be integrated via redirect flow with external buttons, giving merchants greater flexibility in building their payment UI.

## v1.3.0

*March 20, 2025*

* <ChangelogBadge type="added" /> **Smart Payment Method Grouping**\
  When a customer has an enrolled payment method, all other available methods are grouped under a collapsible "More options" dropdown. The enrolled method is prominently displayed by default.

* <ChangelogBadge type="added" /> **European and Asian Language Support**\
  Added support for German (`de`), Dutch (`nl`), Swedish (`sv`), French (`fr`), Italian (`it`), Japanese (`ja`), and Korean (`ko`). Pass the corresponding code via the `language` initialization parameter.

* <ChangelogBadge type="fixed" /> **General Bug Fixes**\
  Resolved various stability issues to improve reliability across payment flows.

* <ChangelogBadge type="changed" /> **Enhanced Styling and Branding**\
  Improved visual consistency and expanded customization options across checkout components.

## v1.2.0

*February 20, 2025*

* <ChangelogBadge type="added" /> **Optional Initialization Options**\
  Added an optional `options` parameter to `Yuno.initialize` for teams with advanced use cases such as custom session handling or tracking requirements.

* <ChangelogBadge type="changed" /> **Extended continuePayment Parameters**\
  `continuePayment` now accepts `checkoutSession`, `showPaymentStatus`, `yunoPaymentResult`, `yunoError`, `countryCode`, and `language`, allowing configuration overrides during payment continuation without restarting the checkout.

<Accordion title="continuePayment with overrides">
  ```js theme={null}
  yuno.continuePayment({
    checkoutSession: '438413b7-4921-41e4-b8f3-28a5a0141638',
    showPaymentStatus: true,
    yunoPaymentResult: (status) => {
      console.log('Payment completed with status:', status);
    },
    yunoError: (message, data) => {
      console.error('Payment error:', message, data);
    },
    countryCode: 'US',
    language: 'en',
  });
  ```
</Accordion>

* <ChangelogBadge type="added" /> **21+ Language Support**\
  Expanded language coverage to over 21 locales including Chinese Simplified (`zh-CN`), Chinese Traditional (`zh-TW`), Vietnamese (`vi`), Russian (`ru`), Turkish (`tr`), Polish (`pl`), and more. Pass the language code to the `language` parameter in `startCheckout`.

**Lite Web SDK**

* <ChangelogBadge type="added" /> **Lite SDK continuePayment Overrides**\
  The Lite SDK `continuePayment` method now accepts the same configuration overrides available in the Full SDK, enabling dynamic session, language, and callback changes during payment continuation.

<Accordion title="Lite SDK continuePayment with overrides">
  ```js theme={null}
  if (paymentResponse.sdk_action_required) {
    await yuno.continuePayment({
      countryCode: 'DE',
      language: 'de',
      showPaymentStatus: false,
      yunoPaymentResult: (status) => {
        console.log('Payment continued with result:', status);
      },
      yunoError: (message, data) => {
        console.error('Payment error:', message, data);
      },
    });
  }
  ```
</Accordion>

* <ChangelogBadge type="added" /> **Lite SDK Expanded Language Support**\
  Lite SDK v1.2 adds support for 18+ locales (up from 7 in v1.1), including European and Asian language codes such as `de`, `fr`, `it`, `ja`, `ko`, `ru`, and `zh-CN`.

## v1.1.0

*January 20, 2025*

* <ChangelogBadge type="breaking" /> **Async SDK Methods**\
  The `initialize()`, `mountCheckout()`, and `startCheckout()` methods now return Promises. Add `await` or `.then()` to each call — synchronous usage will no longer work.\
  [Migration guide →](/changelog/migration-guides/web/v1-0-to-v1-1)

<Accordion title="Async initialization (v1.1)">
  ```js theme={null}
  const yuno = await Yuno.initialize(PUBLIC_API_KEY);
  await yuno.startCheckout(config);
  ```
</Accordion>

* <ChangelogBadge type="added" /> **continuePayment Method**\
  Introduced `continuePayment()` for handling complex payment flows. Call it when the API response includes `sdk_action_required: true` — the SDK then automatically renders 3DS challenges, external wallet steps, or redirects as needed.

<Accordion title="Handle sdk_action_required with continuePayment">
  ```js theme={null}
  const yuno = await Yuno.initialize(PUBLIC_API_KEY);

  await yuno.startCheckout(config);

  if (paymentResponse.sdk_action_required) {
    const result = await yuno.continuePayment();
  }
  ```
</Accordion>

* <ChangelogBadge type="changed" /> **Simplified 3DS Integration**\
  3DS data collection and setup are now bundled into the payment creation step. Remove any standalone 3DS setup service calls — implement `continuePayment()` and `yunoPaymentResult()` callbacks instead.

* <ChangelogBadge type="added" /> **Boleto Bancário Support**\
  Boleto Bancário is now available for merchants operating in Brazil, expanding local payment options for customers who prefer offline payment methods.

* <ChangelogBadge type="changed" /> **Hybrid Cards Default to Credit**\
  Brazilian hybrid cards are now processed as credit by default, improving authorization rates for Brazil-based merchants.

* <ChangelogBadge type="added" /> **Airwallex Security Integration**\
  Integrated Airwallex as an additional security layer for web payments, enhancing fraud protection without requiring extra configuration.

* <ChangelogBadge type="added" /> **Forter Fraud Prevention**\
  Integrated Forter's fraud prevention technology. The SDK automatically collects device signals; no separate setup is required.

* <ChangelogBadge type="added" /> **Checkout.com 3DS Support**\
  Added support for Checkout.com as a 3DS provider. The SDK renders the authentication page automatically when the transaction provider is `checkout3ds`.

* <ChangelogBadge type="added" /> **Unlimit 3DS Support**\
  Introduced 3DS authentication support for Unlimit payments, enhancing fraud prevention for merchants using the Unlimit provider.

* <ChangelogBadge type="added" /> **Click-to-Pay Enhancements**\
  Terms & Conditions and card logos now update dynamically based on the selected card. C2P options are hidden for unsupported cards. A phone number field has been added for C2P registration. Compliance settings for `privacy` and `tnc` are forwarded with each card.

* <ChangelogBadge type="added" /> **Inline Card Input**\
  Customers can now enter card details directly beneath the Card option without navigating to a separate screen. Fields persist when switching payment methods, and the flow is fully compatible with installments and the card selector.

**Lite Web SDK**

* <ChangelogBadge type="added" /> **Lite SDK Initial Release**\
  Launched the Lite Web SDK (v1.1) — a streamlined integration offering essential payment methods, async `initialize()` support, and core callbacks (`yunoPaymentResult`, `yunoError`) with reduced setup complexity.

<Accordion title="Lite SDK basic checkout">
  ```js theme={null}
  const yuno = await Yuno.initialize(PUBLIC_API_KEY);

  yuno.startCheckout({
    checkoutSession: '438413b7-4921-41e4-b8f3-28a5a0141638',
    elementSelector: '#root',
    countryCode: 'FR',
    language: 'fr',
    showLoading: true,
    issuersFormEnable: true,
    showPaymentStatus: true,
    card: {
      isCreditCardProcessingOnly: true,
    },
    onLoading: (args) => {
      console.log(args);
    },
    yunoPaymentResult: (status) => {
      console.log('Payment result:', status);
    },
    yunoError: (message, data) => {
      console.error('Payment error:', message, data);
    },
  });
  ```
</Accordion>

## v1.0.3

*May 26, 2026*

**Core SDK**

* <ChangelogBadge type="fixed" /> **Resilient Payment Status Updates**\
  If WebSocket initialization fails (network blip, blocked port, browser restriction), the SDK now logs the error and falls back to HTTP polling for payment status instead of blocking the checkout. No integration change required.

## v1.0.0

*January 1, 2025*

**Core SDK**

* <ChangelogBadge type="added" /> **Initial SDK Release**\
  First stable release of the Yuno Web SDK. Provides four integration variants: Full Checkout SDK, Lite Checkout SDK, Seamless SDK, and Headless SDK — covering a full range of UI customization needs.

* <ChangelogBadge type="added" /> **Core Payment Methods**\
  Out-of-the-box support for credit and debit cards, digital wallets (PayPal, Apple Pay, Google Pay), bank transfers, direct debits, and regional local payment methods across multiple currencies and countries.

* <ChangelogBadge type="added" /> **Three Integration Modes**\
  SDK can be loaded via an HTML `<script>` tag, dynamic JavaScript, or as an npm module (`@yuno-payments/sdk-web`), supporting both classic and modern JavaScript framework workflows.

* <ChangelogBadge type="added" /> **Seven Language Support**\
  Initial international support includes Spanish (`es`), English (`en`), Portuguese (`pt`), Filipino (`fil`), Indonesian (`id`), Malay (`ms`), and Thai (`th`).

* <ChangelogBadge type="added" /> **Core SDK Methods**\
  Provides `Yuno.initialize()`, `startCheckout()`, `mountCheckout()`, and `startPayment()` as the foundational API surface. All methods are synchronous in v1.0.

<Accordion title="Full checkout initialization (v1.0)">
  ```js theme={null}
  const yuno = Yuno.initialize(PUBLIC_API_KEY);

  yuno.startCheckout({
    checkoutSession: '438413b7-4921-41e4-b8f3-28a5a0141638',
    elementSelector: '#root',
    country_code: 'FR',
    language: 'fr',
    showLoading: true,
    issuersFormEnable: true,
    showPaymentStatus: true,
    card: {
      isCreditCardProcessingOnly: true,
    },
    onLoading: (args) => {
      console.log(args);
    },
    yunoPaymentMethodSelected: () => {
      console.log('Payment method selected');
    },
    yunoPaymentResult: (status) => {
      console.log('Payment result:', status);
    },
    yunoError: (message, data) => {
      console.error('Payment error:', message, data);
    },
  });
  ```
</Accordion>
