Learn how to authorize payments on-the-spot using tokens within the payment:customer_present scope. Our overview includes steps for creating Klarna payment sessions and handling various authorization outcomes efficiently.
With a previously created payment:customer_present scope token, customers can use Klarna for an on-demand payment:
customer_token or the token equivalent issued by the Acquiring Partner, interoperability_token and interoperability_data.customer_tokenstep_up_configrequest_payment_transactionAPPROVED – Depending on risk assessment and the initially selected payment method, charges might go through immediately as a one-click experience. Transaction is completed, proceed to confirmation and store payment_transaction_id.STEP_UP_REQUIRED – In certain cases, customers are required to go through a step-up flow. Acquiring Partners have to either return the klarna payment_request_id or payment_request_url to the Partner.DECLINED – If the payment is denied, Acquiring Partners have to inform the Partner that the payment could not be completed, the Partner should invite the customer to select another payment method.Before calling the Payment Authorization API
klarna_network_session_tokenklarna_network_dataBelow is an example of how Acquiring Partners can accept the Klarna Network parameters in their Partner-facing APIs.
Requirements
klarna_network_session_token/klarna_network_data, ensuring that it’s easy for any Partner to identify and use.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.
The supplementary purchase data requirements for a customer-present token charge are the same as those for one-time payments.
Supply data points based on the following structure:<br />
/v2/accounts/{partner_account_id}/payment/authorize| Parameter | Required | Description |
|---|---|---|
partner_account_id | Yes | Unique account identifier assigned by Klarna to the onboarded merchant |
The Payment Authorize API
Charge an existing reusable customer_token without customer interaction (on-demand/recurring).
In the request to the Payment Authorize API
/v2/accounts/{partner_account_id}/payment/authorize| Parameter | Required | Description |
|---|---|---|
partner_account_id | Yes | Unique account identifier assigned by Klarna to the onboarded merchant |
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-Customer-Token: krn:customer_token:eu1:...' \
-H 'Klarna-Network-Session-Token: eyJhbGciOiJIU...' \
-d '{
"currency": "USD",
"supplementary_purchase_data": { .. },
"klarna_network_data": "<serialized-json>",
"request_payment_transaction": {
"amount": 2599,
"payment_option_id": "***",When performing customer-present authorization through the Payment Authorize APIrequest_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 steps | |
|---|---|---|---|
| The authorization succeeded and a payment_transaction was created. | Payment is authorized and ready for post-purchase operations. | |
| The authorization failed (for example, due to fraud, credit, or risk policy) and no transaction was created.` | Authorization ends with a failure. | |
| This result is returned only if step_up_config was provided in the request and additional customer interaction is needed to complete authorization. A payment_request is created, representing the step-up process. | Customer completes Klarna Purchase Journey before authorization can continue. | - |
Here's the high level diagram of the payment authorization results and resources it produces:
Payment authorization results
The response schema is as follows:
STEP_UP_REQUIREDHandle this result when Klarna requires additional customer interaction to complete authorization.
payment_request_id and payment_request_url from the response.payment_request_url to the Partner without modification.Sample payload
{
"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",APPROVEDHandle this result when Klarna authorizes the payment without requiring customer interaction.
payment_transaction from the response.payment_transaction_id.Sample payload
{
"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": { }
},DECLINEDHandle this result when Klarna rejects the authorization.
Sample payload
{
"payment_transaction_response": {
"result": "DECLINED",
"result_reason": "PAYMENT_DECLINED"
}
}