POST /v1/payment_intents with payment_method_types=["klarna"], amount, currency (must be supported by Klarna for the customer's country, e.g. usd, eur, gbp, sek), and confirm=false initially
Create the PaymentMethod separately via POST /v1/payment_methods with type=klarna and billing_details.address.country set to the customer's country (required for Klarna)
Confirm the PaymentIntent via POST /v1/payment_intents/<id>/confirm with payment_method=<pm_id> and return_url pointing to your post-payment page
The confirmation returns a next_action.type=redirect_to_url; redirect the customer to next_action.redirect_to_url.url to complete Klarna's buy-now-pay-later selection and authentication flow
After the customer returns to return_url, retrieve the PaymentIntent and check status; status=succeeded means payment is captured; for Klarna, capture is typically automatic
Known gotchas
Klarna requires billing_details.address.country to match the currency and Klarna market; a US customer must use a USD Klarna session with country=US
Klarna is a redirect-based payment method; server-side confirmation without a return_url will fail; always provide a valid HTTPS return_url
Klarna refunds may take several business days to process and appear in the customer's Klarna account; communicate this timeline to customers before initiating refunds
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp