Create a PaymentIntent with payment_method_types: ['swish'] and currency 'sek' — Swish only supports SEK.
On mobile, confirm the PaymentIntent to redirect the customer into the Swish app where they authorize with Swedish BankID, then return to your return_url; on desktop, present the QR code from next_action for the customer to scan with their phone.
Build a fresh PaymentIntent and confirmation for every purchase — Swish is single-use with no stored-credential or recurring support, even for repeat customers.
Handle payment_intent.succeeded / payment_intent.payment_failed webhooks for the asynchronous authorization result rather than relying solely on the client-side redirect callback.
If refunding, note Stripe supports full and multiple partial refunds up to 365 days after the original Swish payment completes.
Known gotchas
Stripe, not your business, is the merchant of record for Swish — your business name only appears in the Swish app's message field, while Stripe's name is the statement descriptor and payment recipient the customer sees.
Swish has no dispute/chargeback mechanism and Checkout doesn't support it in subscription or setup mode — don't route recurring billing through Swish.
A specific list of business categories (e.g. alcoholic beverage wholesalers, pawn shops, precious-metals/jewelry dealers, legal services, digital wallet top-ups) are prohibited from using Swish on Stripe regardless of general account eligibility.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?