Token creation - Final authorization

When integrating Klarna payments, the final authorization is a critical step when the step-up scenario occurs. This guide walks you through the creation of a transaction using the payment_token provided by Klarna.

After the customer completes their purchase via Klarna, the Payment Request transitions to the COMPLETED state. At this point:

  • Klarna returns a payment_token which must be secured through Klarna Webhooks
  • You must use this payment_token to authorize the payment within 60 minutes to finalize the transaction.
  • Successful authorization will generate a payment_transaction_id required for future transaction management.

Important: If you do not authorize within 60 minutes, the transaction will be invalidated​.

The below diagram shows the customer journey and Acquiring Partner workflow, illustrating:

  • The handoff from Klarna to the Partner after purchase.
  • The sequence from receiving the payment token to finalizing the payment​.

This step is required only if the purchase was part of the payment authorization process. You can ignore this step for pure tokenization flows.

Final authorization functions the same across all integration methods. If it has already been implemented—for example, with a server-only integration for one-time payments—it can be reused without modification.

The acquiring partner must use the payment_token to perform a second call to Klarna's Payment Authorize API.

Request parameters

Path
Parameter nameDescription

partner_account_id

The unique identifier of the Partner account. This is used to scope the request.
Header
Parameter nameDescription

Authorization

Acquiring Partners use their Klarna API key to authenticate:
Basic <API key>

Klarna-Payment-Token

The payment_token received as part of the step-up scenario.
Body
Parameter nameDescription

currency

Currency in ISO 4217 format (e.g., "USD").

request_payment_transaction

Represents a request to authorize a payment transaction, this object contains the following parameters:

Sample Request

The payment_token must be passed in the Klarna-Payment-Token HTTP header​.

SHELL
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-Payment-Token: krn:payment:eu1:payment-token:...' \
-d '{
      "currency": "USD",
      "request_payment_transaction": {
        "amount": 11800,
        "payment_transaction_reference": "acquiring-partner-transaction-reference-1234"
      }

Upon successful authorization, the response body includes the payment_transaction_id, which you'll use for payment transaction management actions​.

  • The endpoint is idempotent, so repeated requests with the same token return the same result, ensuring safe retries​.

Response parameters

The response will contain a payment_transaction_response object with the following parameters:

Body
Parameter nameDescription

result

The result parameter which specifies the outcome of the authorization.
In case of a successful Authorization the result will be set to APPROVED

payment_transaction

The payment_transaction object represents a single payment transaction
This object is only returned if the payment_transaction_response.result is set to APPROVED
The payment_transaction_id  returned is necessary to manage the Payment Transaction through the Payment Transaction API.

Sample response

JSON
{
  "payment_transaction_response": {
    "result": "APPROVED",
    "payment_transaction": {
      "payment_transaction_id": "krn:payment:eu1:transaction:6debe89e-98c0-[...]",
      "payment_transaction_reference": "acquiring-partner-transaction-reference-1234",
      "amount": 11800,
      "currency": "USD",
      "payment_funding": {...},
      "payment_pricing": {...}