Authorize payments with Klarna seamlessly by integrating the Payment Authorize API. This guide outlines how to receive and forward required data, call the API, and handle all possible response flows.
Link copied!
Once the customer selects Klarna at checkout and click on the Pay button:
klarna_network_session_token and klarna_network_data.supplementary_purchase_datastep_up_configrequest_payment_transactionSTEP_UP_REQUIRED – customer needs to go through Klarna's purchase journey, either return the klarna payment_request_id or payment_request_url to the Partner.APPROVED – transaction is completed, proceed to confirmation and store payment_transaction_id.DECLINED – payment was denied, inform the Partner that the payment could not be completed, the Partner should invite the customer to select another payment method.Link copied!
Link copied!
Before calling Klarna’s Payment Authorization API, the Acquiring Partner must ensure their backend accept and forward Klarna specific parameters. These include Klarna Network parameters that preserve session context as well as supplementary purchase data which improves Klarna’s ability to assess risk, optimize approval rates, and deliver a more personalized checkout experience.
When Partners optimize their integration with Klarna, they are likely to have Klarna Network data points to share with the Acquiring Partner. These data points enable interoperability between the Boost Features and Payment Presentation or Payment Authorization.
| Parameter | Purpose |
|---|---|
| Encodes Klarna-specific session context (e.g., preselected payment option, pre-qualification results). |
| Submit supplementary purchase data directly to Klarna |
These ensure consistent customer and transaction context throughout the payment flow and must be forwarded unaltered to Klarna.
| Enable interoperability for Payment Presentation | Enable interoperability for Payment Authorization |
Implementation requirements
The Partner-facing field should be named klarna_network_session_token/klarna_network_data, ensuring that it’s easy for any Partner to identify and use.
The Acquiring Partner can validate the input based on the provided guidelines but must not modify it. The input must always be forwarded as received, without any interference.
Below an example of how Acquiring Partners can accept the Klarna Network parameters in their Payment request API endpoint.
Sample request
Supplementary Purchase Data refers to additional transaction details shared with Klarna that provide greater context about a purchase. These data points—such as line items, subscription details, or industry-specific attributes—help improve underwriting accuracy, fraud assessment, and the customer’s post-purchase experience. They may be required in certain industries and support multiple use cases, including better acceptance rates, enhanced fraud prevention, improved customer experiences within the Klarna app, and more effective risk monitoring.
Copied
/v2/accounts/{partner_account_id}/payment/authorize| Parameter | Required | Description |
|---|---|---|
Copied supplementary_purchase_data | No | Provide additional details about the transaction to help reduce fraud risk and enhance transparency. Include only the specific fields you wish to update within |
Copied -purchase_reference | No | Used for storing the customer-facing order number. It will be displayed to customers on the Klarna app and other communications. It will also be included in settlement reports for the purpose of reconciliation. If you are a direct merchant... Show more |
Copied -customer | No | This object provides information about the customer based on their previous interactions with the merchant. These data points may be used by Klarna to simplify sign-up and during fraud assessment, as well as for underwriting purposes to pro... Show more |
Copied --given_name | No | Provide the given name (first name) of the person associated with the transaction. Klarna uses this value for customer communication, fraud assessment, and delivery validation. Ensure the name is accurate and matches the individual's legal... Show more |
Copied --family_name | No | Provide the family name (last name) of the person associated with the transaction. Klarna uses this value for customer communication, fraud assessment, and delivery validation. Ensure the name is complete and correctly reflects the recipien... Show more |
Copied --email | No | E-mail address.
Regex ^(?=.{1,64}@.{1,255}$)(?:[a-zA-Z0-9!#$%&'+/=?^_ |
Copied --email_last_verified_at | No | Date of the most recent email verification done in ISO 8601 with timezone e.g. 2024-01-01T12:00:00Z |
Copied --phone | No | Provide the phone number in local format. Ensure the number includes at least one digit and only contains valid characters: +, digits, spaces, parentheses, periods, or hyphens. The system validates format based on the customer's country. Tr... Show more |
Copied --phone_last_verified_at | No | Date of the most recent phone verification done in ISO 8601 with timezone e.g. 2024-01-01T12:00:00Z |
Copied --address | No | Domicile address of the customer (billing address). Klarna will only use this as an indicator for fraud and to simplify sign-up. The address will not be used for underwriting and will not be persisted on created Payment Transactions. Klarna... Show more |
Copied ---street_address | No | Provide the first line of the street address, including the primary information, such as street name and number. Treat the value as an opaque string, do not validate or infer its structure. |
Copied ---street_address2 | No | Provide the second line of the street address if additional address details are needed. Klarna uses this field to capture supplementary information such as apartment, suite, or unit numbers. Treat the value as an opaque string, do not valid... Show more |
Copied ---postal_code | No | Provide the postal code formatted according to the rules of the specified country. Treat the postal code as an opaque string, do not parse or validate its format beyond country-specific requirements. |
Copied ---city | No | Provide the city or town name for the address indicated. Treat the city name as an opaque string, do not validate or infer its structure. |
Copied ---region | No | State/county/province/region formatted according to country. Mandatory for US and AU market. Validations according to ISO 3166-2 format, e.g. US-OH, US-NJ, AU-ACT, etc. |
Data requirements
Depending on the business type, certain supplementary_purchase_data fields are required under the Klarna Network Rules. However, purchase_reference, line_items, customer and shipping whenever available must always be submitted, as they enable transaction-level traceability, power Klarna’s fraud prevention and underwriting models, dispute handling, and ensure a consistent customer experience across Klarna’s ecosystem.
The Payment Authorize API is used to authorize payments on Klarna Network — whether they are one-time purchases, tokenized payments, token charges, or a final authorization following a step-up flow. All requests must include the applicable supplementary_purchase_data as defined by Klarna Network Rules.
A one-time payment represents the most common scenario, where the customer completes a single purchase with Klarna. The call may return an immediate authorization (APPROVED) or require additional customer interaction (STEP_UP_REQUIRED).
In the request to the Payment Authorize API
Copied
/v2/accounts/{partner_account_id}/payment/authorize| Parameter | Required | Description |
|---|---|---|
Copied partner_account_id | Yes | Unique account identifier assigned by Klarna to the onboarded merchant |
Copied
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-Network-Session-Token: eyJhbGciOiJIU...' \
-d '{
"currency": "USD",
"supplementary_purchase_data": { .. },
"klarna_network_data": "<serialized-json>",
"request_payment_transaction": {
"amount": 11800,
"payment_option_id": "***",
"payment_transaction_reference": "acquiring-partner-transaction-reference-1234"Link copied!
The response schema is as follows:
When performing a one-time payment or token charge through the Payment Authorize API, Klarna returns a response that reflects the result of the payment authorization. Because this flow only includes a request_payment_transaction in the request, the response will always contain a corresponding payment_transaction_response object. The result field inside this object indicates the outcome of the authorization and determines the next step to perform.
The result has the following possible values:
| Result | Description | Next step |
|---|---|---|
| This result is returned only if step_up_config was provided in the request and additional customer interaction is needed to complete the payment. | Read the payment_request_id and payment_request_url from the payment_request object, and launch the Klarna Purchase Journey for the customer to finalize authorization. |
| The payment authorization succeeded. A payment_transaction has been created and returned in the response. | Store the payment_transaction_id for post-purchase operations (such as capture or refund), and return a success indicator to the client. |
| The authorization failed (for example, due to fraud, credit, or risk policy). No transaction is created. | Return a failure indicator to the client. |
STEP_UP_REQUIREDWhen Klarna cannot immediately create a Payment Transaction and a step_up_config was provided in the request, Klarna returns STEP_UP_REQUIRED with a payment_request. The partner must redirect the customer to Klarna’s purchase journey URL to complete authentication and payment option selection.<br>
<br>
When the payment cannot be completed instantly, Klarna returns the payment_request details including the payment_request_id and payment_request_url which should be used to launch the Klarna Purchase Journey.<br>
Sample payload
Copied
{
"payment_transaction_response": {
"result": "STEP_UP_REQUIRED"
},
"payment_request": {
"payment_request_id": "krn:payment:eu1:request:552603c0-fe8b-4ab1-aacb-41d55fafbdb4",
"payment_request_reference": "acquiring-partner-request-reference-1234",
"amount": 11800,
"currency": "USD",
"state": "SUBMITTED",
"expires_at": "2025-01-02T13:00:00Z",
"created_at": "2025-01-01T12:00:00Z",APPROVEDWhen the payment authorization is approved, Klarna returns an APPROVED result and a newly created payment_transaction.<br>
The Acquiring Partner must store the payment_transaction_id for post-purchase operations (capture, refund, etc.) through the Payment Transactions API.<br>
<br>
An APPROVED result means the payment has been authorized successfully without requiring further customer interaction.<br>
Sample payload
Copied
{
"payment_transaction_response": {
"result": "APPROVED",
"payment_transaction": {
"payment_transaction_id": "krn:payment:eu1:transaction:6debe89e-98c0-[...]",
"payment_transaction_reference": "transaction-reference-1234",
"amount": 11800,
"currency": "USD",
"payment_funding": {
"type": "INVOICE",
"details": { }
},DECLINEDIf Klarna cannot approve the payment, the API returns a DECLINED result without a payment_transaction. Partners should treat this as a final rejection unless instructed by Klarna to retry.
Sample payload
Copied
{
"payment_transaction_response": {
"result": "DECLINED",
"result_reason": "PAYMENT_DECLINED"
}
}