Help customers complete 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
payment_request_url
To support the step-up scenario, Acquiring Partners must define return URLs when calling the Payment Authorize API.
return_url
: Klarna will always redirect the customer to this URL on a successful authorization. This could either be a URL from the Acquiring Partner who will handle the redirection logic or a URL collected from the Partner.website redirection
app_return_url
: The customer may be redirected to a third party app (bank app) or the Klarna app during the Klarna Purchase Journey on mobile environments. This url enables Klarna to return the customer back to the Partner’s mobile app.App handover diagram
When Acquiring Partners are already asking for a suitable return_url
or app_return_url
from the Partner, it is advised to not ask for a second one as this would increase the minimal integration requirements for Klarna to work.
Acquiring Partners must include a step_up_config
object when calling Klarna’s Payment Authorize API, and specify the following parameters:
Parameter name | Description |
---|---|
payment_request_reference | Reference to the payment session or equivalent resource on the Acquiring Partner's side. Helps match Klarna payment requests with internal records. |
customer_interaction_config | Configuration properties for supporting step-up scenario. It contains:
|
Sample request
{
"currency": "USD",
"supplementary_purchase_data": { .. },
"interoperability_data": "<serialized-json>",
"request_payment_transaction": {
"amount": 11800,
"payment_transaction_reference": "acquiring-partner-transaction-reference-1234"
},
"step_up_config": {
"payment_request_reference": "acquiring-partner-request-reference-1234",
Whenever the step-up scenario is triggered, the Payment Authorize API response will contain
payment_request_id
: The unique Klarna identifier for the payment requestpayment_request_url
: A URL to launch the Klarna Purchase JourneySample response
{
"payment_transaction_response": {
"result": "STEP_UP_REQUIRED"
},
"payment_request": {
...
"state_context": {
"customer_interaction": {
"method": "HANDOVER",
"payment_request_id": "krn:payment:eu1:request:552603c0-fe8b-4ab1-aacb-41d55fafbdb4",
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"
}
Partners may have two options to start the Klarna Purchase Journey based on the parameters returned by Acquiring Partners:
payment_request_url
payment_request_id
.The Klarna Purchase Journey enables the customer to:
Phone collection in the Klarna Purchase Journey
If the Klarna Purchase Journey requires a handover to another app (e.g., Klarna app, bank app), Klarna will use the provided app_return_url
to return the customer to the Partner’s mobile app.
After the customer completes Klarna’s Purchase Journey, whether via web browser or mobile app, Klarna performs two critical actions:
return_url
: Klarna redirects the customer to the return_url provided in the customer_interaction_config
object. This URL should guide the customer back into your or the Partner’s frontend experience.payment_token
: Klarna issues 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.Best practices for return_url
Klarna recommends that Acquiring Partners use an internal return_url
(rather than the Partner's frontend URL) when calling the Payment Authorize API. This enables the Acquiring Partner to:
payment_token
- use of Klarna webhook system is requiredstep_up_config
with valid return_url
and app_return_url
method: "HANDOVER"
in the customer_interaction_config
STEP_UP_REQUIRED
response by extracting the payment_request_id
and payment_request_url
.redirect_url
from your platform.return_url
from your platform to finalize the transaction with Klarna before redirecting to Partner UIs.