Learn how to seamlessly integrate Klarna into your payment process using our SDK for a seamless, high-conversion checkout. This guide covers everything from SDK setup to custom payment form creation.
This guide explains how to provide dynamic Klarna assets to Partners using Klarna’s Presentation API, enabling them to create their own payment selector in line with Klarna’s best practices.
Below is a step-by-step overview for supporting dynamic payment method listing:
interoperability_token and interoperability_data in requests.Example of the payment selector built by a Partner when the Acquiring Partner enables this support:
![]() | ![]() |
| Initial presentation | When Klarna is selected |
This step only applies to Acquiring Partners that have APIs that allow Partners to retrieve available payment methods. It is identical to the server-side only integration for one-time payments.
klarna_network_session_token
klarna_network_data
Below is an example of how Acquiring Partners can accept the Klarna Network parameters in their Partner-facing APIs.
{
"currency": "USD",
"amount": 17800,
"payment_method_options": {
"klarna": {
"klarna_network_session_token": "eyJhbGciOiJ...",
"klarna_network_data": "{\"content_type\":\"application/vnd.klarna.interoperability-data.v2+json\",\"content\":{\"payment_request\":{...}}}"
}
}
}Requirements
klarna_network_session_token/klarna_network_data, ensuring that it’s easy for any Partner to identify and use.curl -G https://api-global.test.klarna.com/v2/accounts/{partner_account_id}/payment/presentation \
-H 'Authorization: Basic <API key>' \
-H 'Content-Type: application/json' \
-H 'Klarna-Network-Session-Token: eyJhbGciOiJIU...' \
--data-urlencode 'locale=en-US' \
--data-urlencode 'currency=USD' \
--data-urlencode 'intents[]=SUBSCRIBE'Your API response (e.g., for Get Payment Methods) should include the Klarna assets returned in the response from the Payment Presentation API, so your Partner can render the payment method correctly.
You have two options:
descriptor, payment_button) into your API response format.klarna_payment_presentation_data—with a serialized version (e.g., JSON string) of the full response obtained from Klarna’s Payment Presentation API. This avoids the need to map each field individually.{
"payment_methods": [{
"name": "VISA",
"type": "scheme"
}, {
"name": "Pay with Klarna",
"type": "klarna",
"klarna_payment_presentation_data": "{\"instruction\":\"SHOW_KLARNA\",...}"
}]
}You may structure the response to fit your API format, but ensure that the Klarna presentation data is clearly identifiable. Use a field name like:
klarna_payment_presentation_datapayment_presentation_data (when used specifically for Klarna)
This makes it easy for Partner integrations to parse and use Klarna presentation data dynamically.Related articles