PayPal Wallet
paymentType: "PAYPAL_WALLET".
This page covers what's specific to the PayPal express button of <swirepay-checkout>. For the
shared integration flow, props reference, error/success payloads, theming, and testing, see
SDK setup & flow; for minting the
checkout session, see Checkout session.
Behavior
- Not supported for inventory-order checkouts — if included in an
order-scope session'spaymentType, it's silently dropped and the button won't render. - The button is rendered via the standard PayPal JS SDK
(
paypal.Buttons({ fundingSource: paypal.FUNDING.PAYPAL, ... })) and only mountsif (buttons.isEligible())— an ineligible browser/currency combination means nothing renders, silently by design: noerrorCallbackcall, only a debug-level console log. This is the same silent category as Google Pay's device-level check (contrast with Apple Pay, whose equivalent check does fireerrorCallback). - Test mode runs against PayPal's own sandbox environment — log in with a PayPal sandbox test account to exercise the full approval flow (see SDK setup & flow → Live vs. Test mode).
- PayPal order confirmation is coordinated through Swirepay's own backend rather than PayPal's own
client-side order-creation flow — none of PayPal's own intermediate order id ever reaches your
successCallback. - Always include at least one other
paymentType(typically"CARD") as a fallback.
Venmo: Venmo (
"VENMO") shares this exact same underlying SDK/flow (it's rendered as a second, separate express button,paypal.FUNDING.VENMO) — if you also want a Venmo button, simply add"VENMO"topaymentTypealongside"PAYPAL_WALLET"; everything else on this page applies identically to it, including the silent-ineligibility behavior and the success/error payload shapes.
Pitfalls
- Only requesting
PAYPAL_WALLET— if the shopper's browser/currency is ineligible, they'll see nothing to pay with. - Expecting an error when the button doesn't render — ineligibility is silent by design, not
surfaced via
errorCallback. - Using a live PayPal account while your Swirepay account is in Test mode (or vice versa) — make sure you're logged into a PayPal sandbox account when testing, and a real one only once you've switched to Live mode.
See SDK setup & flow → Common pitfalls for pitfalls that apply across all payment methods.