Skip to main content
Headless was a pure-tokenization client: the merchant collected card data in their own UI, generated a token, and made their own backend call to create the payment. In the unified API the same scenario is a headless start(). Pass the pre-collected data inside data on the paymentMethod you give to start(), override createPayment to POST to your backend (manual mode), and let the SDK orchestrate tokenization, 3DS, and status polling automatically. If you don’t want the SDK to continue the flow after creating the payment, set autoContinuePayment to false on the TransactionConfig object.

Using Payment Methods List with Headless

Headless doesn’t mean you cannot use SDK components. You can combine getPaymentMethodsViews for method selection with a headless start() for payment execution.
  • Ownership split:
    • Yuno handles: Rendering the payment method list, displaying customer saved payment methods, express wallet buttons (Apple Pay, Google Pay, PayPal), 3DS challenges, redirects, and handoffs.
    • Merchant handles: Rendering custom card collection inputs and your own Pay button.
Unfolded display cannot be used with headless card collection. When Unfolded display is enabled in Checkout Builder → Styling, selecting a method embeds and submits Yuno’s pre-built form directly inside the list row. To collect card details in your own inputs, ensure Unfolded display is disabled so the list acts strictly as a selector.

Before you start

  • Load the unified SDK bundle instead of the legacy one and initialize it as the side-by-side shows: window.Yuno.initialize(...) becomes SdkPayments.initialize(...). Your public API key and the checkout sessions your backend creates do not change (Before you begin).
  • Decide who creates the payment. The checkout session’s workflow must match that decision:
A default-workflow session with no createPayment override ends in INTERNAL_ERROR: the backend rejects the SDK’s payment creation. See createPayment.

Side-by-side

What changes

Grouped in the order you edit the code. Renamed: same role, new name. Moved: same value, new owner. Removed: nothing to call. New: no legacy counterpart. The last column is the only thing you have to do beyond the rename.

Initialization and config

Callbacks

Entry points