Help customers complete in-store payments securely by handling Klarna’s step-up authentication using the Purchase Journey. This guide breaks down how to integrate and respond when a step-up flow is triggered by Klarna’s Payment Authorize API.
When Klarna requires additional verification from the customer (e.g., login, authentication, or payment method selection), it returns a Payment Request in the response to the Payment Authorize API call.
The Acquiring Partner backend must detect this and return the necessary data points to Partners so they can start the Klarna’s Purchase Journey with the customers.
As shown in the below diagram, the high level flow is the following:
payment_request_id
qr_code
image_url
target_url
Acquiring Partners must include a step_up_config
object when calling Klarna’s Payment Authorize API, and specify the following parameters:
Parameter name | Description |
---|---|
Reference to the payment session or equivalent resource on the Acquiring Partner's side. Helps match Klarna payment requests with internal records. | |
Configuration properties for supporting step-up scenario. It contains:
| |
| Information about where the purchase was made. One of
A store can be classified as one of three types: physical store, website, or mobile app. To ensure that a purchase is recognized as an in-store transaction, please provide the store_id or store_reference corresponding to a store with the type set to PHYSICAL_STORE . Alternatively, if such a store does not yet onboarded, please create a new store entry with the type designated as PHYSICAL_STORE .Example: |
| Information about the most granular location data about the purchase. Can be of three possible types: website, mobile app and terminal. To ensure that a purchase is recognized as an in-store transaction, please provide the type TERMINAL with terminal_reference Example: |
Sample request
curl https://api-global.test.klarna.com/v2/accounts/{partner_account_id}/payment/authorize \
-H 'Authorization: Basic <API key>' \
-H 'Content-Type: application/json' \
-H 'Klarna-Interoperability-Token: eyJhbGciOiJIU...' \
-d '{
"currency": "USD",
"supplementary_purchase_data": { .. },
"interoperability_data": "<serialized-json>",
"request_payment_transaction": {
"amount": 11800,
Whenever the step-up scenario is triggered, the Payment Authorize API response will contain
payment_request_id
: The unique Klarna identifier for the payment requestqr_code
: Object containing image_url
with QR code image and target_url
if partner wants to customize QR code sizeSample response
{
"payment_transaction_response": {
"result": "STEP_UP_REQUIRED"
},
"payment_request": {
...
"state_context": {
"customer_interaction": {
"method": "QR_CODE",
"qr_code": {
Acquiring Partners should extract and expose these parameters in their API response to the Partner system. This enables the Partner to:
{
"status": "pending",
"klarna": {
"payment_request_id": "krn:payment:eu1:request:552603c0-fe8b-4ab1-aacb-41d55fafbdb4",
"payment_request_url": "https://pay.test.klarna.com/eu/requests/6bbf6775-[...]/start"
}
}
In some implementations, the Acquiring Partner may return a general-purpose redirect_url
under their domain for all payment methods. Partners then use this URL to trigger a client-side redirect to Klarna’s payment_request_url
.
{
"status": "pending",
"redirect_url": "https://acquiringpartner.com/payment/xxxxx"
}
When QR code is presented to customer on a a digital consumer-facing screen, customer scans a QR and starts purchase Journey.
The Klarna Purchase Journey enables the customer to:
Phone collection in the Klarna Purchase Journey
After the customer completes Klarna’s Purchase Journey, whether via web browser or mobile app, Klarna displays a message to customer saying "Your payment was authorized by Klarna. You will get a confirmation from the store." Klarna will send a webhook to partner confirming customer authorized the purchase and issue a payment_token
to the Acquiring Partner, which is required to finalize the payment. This part will be covered in the following section - Monitor the payment request state.
step_up_config
with QR_code
method when calling the Payment Authorize APIstore_id
of previously onboarded physical storestore_reference
of previously onboarded physical storestore
details of physical store. Note: in this case store will be onboarded to Klarna.STEP_UP_REQUIRED
response by extracting the payment_request_id
and qr_code
.