POST /payments/v1/authorizations/<authorization_token>/order on the Klarna server-side API with the same order_lines, order_amount, billing_address, and shipping_address used in the session
The response contains order_id and fraud_status; check fraud_status=ACCEPTED before proceeding; fraud_status=PENDING means Klarna needs more time; fraud_status=REJECTED means decline the order
To capture funds, POST /ordermanagement/v1/orders/<order_id>/captures with captured_amount (must equal or be less than remaining authorized amount) and optionally shipping_info
Klarna ships the purchase cost to the customer's installment plan only upon capture; do not delay capture beyond your shipping confirmation
To cancel an uncaptured order, POST /ordermanagement/v1/orders/<order_id>/cancel; for captured orders issue a refund via POST /ordermanagement/v1/orders/<order_id>/captures/<capture_id>/refunds
Known gotchas
Klarna's capture window is limited; if you do not capture within Klarna's authorization expiry (typically 28 days but check your contract), the authorization lapses and you cannot capture
Partial captures are allowed; you can make multiple captures against one order up to the total authorized amount, useful for split shipments
Klarna's order_id is not the same as a Stripe charge id; manage the mapping between your internal order, the Klarna order_id, and any PSP charge id separately
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