Alternative payment methods
APMs split into two operational categories from a code standpoint:
Within wallet APMs there’s a further split: native (you tokenize directly via TagadaPay’s vault) vs through-processor (Stripe Payment Request, Airwallex Wallet, etc.). This page explains all three paths.
Supported methods
Beyond cards, TagadaPay supports the following methods. Availability per store depends on the connected processor and the merchant’s enabled config — always confirm withpaymentSetup.get(storeId).
Cards & bank debits
Alternative payment methods
Managed = methods we run on your behalf when TagadaPay is your acquirer —
no processor credentials of your own required.
Mental model: method × provider
Every APM in the system has two coordinates:
The same method can ship through different providers, with different code paths. Example: a merchant might offer Apple Pay through native tokenization in one country, and through Stripe Payment Request in another.
You discover this via
paymentSetup.get(storeId):
provider field to decide which browser SDK (if any) to load.
Wallet APMs — native path
This is the simplest, most efficient path. The customer’s wallet talks directly to TagadaPay’s vault. No third-party processor SDK loads in the browser.Apple Pay (native)
paymentMethod: 'apple_pay':
Google Pay (native)
Wallet APMs — through-processor (Stripe Express)
WhenpaymentSetup exposes apple_pay:stripe or google_pay:stripe, the wallet runs through Stripe’s Payment Request API. You load Stripe.js, Stripe handles the wallet UI and tokenization, and you pass the resulting Stripe PaymentMethod to TagadaPay for the charge.
When does each path apply?
A merchant’s
paymentSetup may include several of these at once. Render the buttons accordingly:
Redirect APMs
For Klarna, Afterpay, iDEAL, Bancontact, TWINT, BLIK, Affirm, EPS, PayPal: the browser does nothing beyond clicking. All processor differences are absorbed server-side.Initiate from your server
Hand the redirect URL to the browser
returnUrl. The final payment status comes through a webhook (payment.succeeded / payment.failed).
Same method, different processors
The exact same client code initiates Klarna whether the merchant’spaymentSetup routes through Stripe, Airwallex, or our native APM processor:
paymentSetup), not code-driven. Your code just passes through the processorId.
Discovering what each merchant has enabled
UsepaymentSetup.get(storeId) to fetch the full method × provider config for a merchant. See Payment setup config for the full shape.
Recurring with APMs
Pass
recurring: true when calling payments.process for any APM that supports it — we’ll set the right processor flags so the issuer/wallet records the consent.
