Improved
Checkout SDK Updates — iOS v1.6.1, React Native v1.2.1
August 24th, 2026
iOS — v1.6.1 (2026-08-12)
Added
- Payment method details on
PaymentResult: after a successful card, bank-account, or offsite tokenize — and after a successful CVV recache — merchants can read the APIpayment_methodviaresult.paymentResponse?.transaction?.paymentMethod(Swift), includinglastFourDigits,firstSixDigits, card/ACH/offsite fields, and typedbinMetadata. Objective-C exposes the same nested camelCase shape viapaymentResponseDictionaryonPaymentResult.
Security
- Click to Pay host-page injection hardening:
srcDpaIdandlocaleare validated before host load and safely encoded when substituted into the Click to Pay WebView host page; Mastercardlib.jsquery parameters are percent-encoded. - Click to Pay WebView hardening: release builds no longer mark Click to Pay WebViews as inspectable; native bridge handlers accept main-frame messages only; inbound bridge payloads reject additional cardholder-data key aliases; sandbox Mastercard hosts are allowed only when
isSandboxis true. - Mandate nesting resource guard: mandates that nest beyond the client resource depth are rejected at request construction instead of risking a host-app crash during tokenization.
React Native — v1.2.1 (2026-08-17)
Added
- Mandate at tokenization: optional
mandateonSpreedlyCore.createCreditCard()andSpreedlyCore.createBankAccount(), forwarded verbatim to Spreedly atpayment_method.mandate. Opaque to the SDK — Spreedly owns the schema and validates server-side, versioned bysource_version, so mandate changes never require an SDK upgrade. Wire semantics follow ECMA-262JSON.stringify:NaN/Infinityencode asnull, and the field is omitted only when absent or empty. A mandate value with no JSON representation fails the call with an error naming the key — the SDK never silently drops or alters a mandate. Exports aMandatetype for typing your own values. Never put cardholder data in a mandate. - Full payment method response passthrough: completed results from
createCreditCard,createBankAccount, payment/ACH bottom sheets, and recache now include the native SpreedlypaymentMethodResponse(transaction + payment_method fields), plusshouldRetain,state, andpaymentMethodUpdatedAtwhen present.mapPaymentResult()is unchanged for UI outcomes; read the full payload from the raw promise/event result.
Changed
- AC-65: added mandate passthrough to headless tokenization.
Native SDK pins for RN 1.2.1: checkout-android 1.3.0, checkout-ios-package 1.6.1.

