Supported payment methods
The client session offers the same methods to every platform. This table says how the iOS SDK handles each one compared with the web SDK.
Legend: โ supported ยท ๐ supported when the method is configured in redirection mode in your Purse dashboard ยท โ not available ยท โ not applicable to iOS.
How a method is resolvedโ
PluginRegistry picks the plugin for an offered method in this order, the same as the web and Android SDKs: the vault vendor, then the template, then a redirection integration mode, then the exact partner and method pair, then the method alone.
| Session field | Web | iOS |
|---|---|---|
vault.vendor = purse | Hosted fields card | โ Card, Secure Fields iOS |
vault.vendor = pci_proxy | โ | โ |
template = redirection or integration_mode = redirection | โ | โ Redirection methods |
template = sdpx, lyra, alma, applepay, googlepay | โ | โ |
Exact (partner, method) | 17 dedicated plugins | (klarna, installments), (paypal, wallet) |
| Method alone | none | applepay, any partner |
Apple Pay is the method fallback: one wire value, resolved whatever the partner, and configured per PSP variant from /init rather than by a (partner, method) pair. Google Pay is the Android SDK's fallback in the same slot, and is not planned for iOS.
Card, redirection and the gift card issuers are built in. Apple Pay, PayPal and Klarna each ship as their own SPM product, and Swift has no ServiceLoader: linking the product is not enough, your app installs its module explicitly with PluginRegistry.shared.install(โฆ). A method whose module is not installed reports METHOD_NOT_IMPLEMENTED (see Error handling).
Primary methodsโ
Cardsโ
| Method | Web | iOS | Notes |
|---|---|---|---|
| Card vaulted by Purse, any acquiring partner | โ | โ | Secure Fields iOS, UIKit form driven by CardCoordinator, redirect-based 3-D Secure through ASWebAuthenticationSession, saved cards with CVV re-entry |
| Card vaulted by PCI Proxy | โ | โ | A saved PCI Proxy card needing a CVV has no form on iOS |
| PSP-hosted card form: ACI, Adyen, Checkout.com, Dalenys, HiPay, Ingenico, Payline, Stripe, Worldpay | โ | ๐ | A browser form has no native counterpart. By design: native SDKs only pay cards through the Purse vault |
sdpx template: Sips, Sogenactif, Mercanet | โ | ๐ | |
lyra template: Lyra, PayZen, Sogecommerce, Systempay, Scellius | โ | ๐ | |
External 3DS extras (vaultExtras): Payline, CentralPay, Axepta, Worldpay, the Lyra family | โ | โ | No native equivalent on either native platform |
Any creditcard with integration_mode = redirection | โ | โ | Generic redirection |
Walletsโ
| Method | Web | iOS | Notes |
|---|---|---|---|
Apple Pay, adyen / ingenico / default variants | โ | โ | PurseCheckoutApplePay, PKPaymentAuthorizationController. Needs an ApplePayConfiguration with your merchant id and the Apple Pay entitlement; no merchant-validation round trip, configuration comes from /init |
| Google Pay | โ | โ | Android only |
| PayPal, pay now | โ | โ | PurseCheckoutPayPal, PayPalWebCheckoutClient browser switch |
| PayPal, saved account | โ | โ | Captures on submit, no approval step and no button of its own |
| PayPal, vaulting a new account | โ | โ | |
PayPal Pay Later (bnpl) | โ | ๐ | No dedicated plugin |
| PayPal Fraudnet fingerprinting on redirection | โ | โ |
Buy now, pay later and instalmentsโ
| Method | Web | iOS | Notes |
|---|---|---|---|
Klarna installments | โ | โ | Native KlarnaPaymentView, authorize() after /validate. Needs an appReturnURL passed to paymentElement(for:) |
| Alma | โ | ๐ | |
| Riverty invoice and instalments | โ | ๐ | |
| Younited | โ | ๐ | |
| Scalapay | โ | ๐ | |
Instalment simulation (simulable methods) | โ | โ | simulateLoan(_:product:) / simulateLoans(_:product:), counts and amounts only, no per-instalment dates |
Otherโ
| Method | Web | iOS | Notes |
|---|---|---|---|
| HiPay MB Way | โ | ๐ | |
| Any method in redirection mode: Fintecture, Bizum, Oney, Sequra, iDEAL, Bancontact, โฆ | โ | โ | RedirectionPlugin, outcome confirmed from the session |
| Saved card management: rename, delete, favorite, delete all | โ | โ | Needs a wallet session |
| Save a new card at submit | โ | โ | save_token_mode on the method, register(_:registered:name:) |
| Payment-method and card-scheme badges | โ | โ | iconURL(for:) and schemeAssets(for:) return CDN URLs; loading and rendering them is yours |
Secondary methodsโ
| Issuer | Web | iOS |
|---|---|---|
| Illicado gift card | โ | โ |
| Buybox gift card | โ | โ |
| Ogloba gift card | โ | โ |
| MyBeezBox gift card | โ | โ |
| Easy2Play gift card and voucher | โ | โ |
| Maxxing loyalty card | โ | โ |
| ANCV Connect | โ | โ no config shipped; SecondaryConfig has the shouldPoll and classifyInitError hooks an app would need to add one |
| Saved gift cards | โ | โ background balance resolution |
| Keep a gift card for the next session | โ | โ |
| An issuer registered by the app | โ | โ
SecondaryConfigs.register |
| Splitter autofill middlewares (voucher โ loyalty โ primary) | โ | โ |
The iOS SDK covers every method a merchant can run through the Purse vault, a redirection, or one of three native partner SDKs: Apple Pay in place of Google Pay, PayPal and Klarna. Everything else the web SDK supports is a PSP-hosted form living in a browser, offered on iOS by switching the method to redirection mode in your dashboard. The three deliberate gaps iOS shares with Android are pci_proxy cards, ancv-connect, and the PayPal BNPL and vaulting pair.