Find an API

Search public APIs with auth details & Postman guides

← All APIs

Klarna Payments API V1

klarna · Finance

Finance No Auth Free & Open financial

The payments API is used to create a session to offer Klarna's payment methods as part of your checkout. As soon as the purchase is completed the order should be read and handled using the [`Order Management API`](https://docs.klarna.com/api/ordermanagement). Read more on [Klarna payments](https://docs.klarna.com/klarna-payments/).

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Read an existing payment session

Use this API call to read a Klarna Payments session. You can read the Klarna Payments session at any time after it has been created, to get information about it. This will return all data that has been collected during the session. Read more on **[Read an existing payment session](https://docs.klarn

https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}"
import requests
response = requests.get(
    "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST Create a new payment session

Use this API call to create a Klarna Payments session. When a session is created you will receive the available `payment_method_categories` for the session, a `session_id` and a `client_token`. The `session_id` can be used to read or update the session using the REST API. The `client_token` shou

https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions

Hover any highlighted part to learn what it does

curl -X POST "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions"
import requests
response = requests.post(
    "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions';

const response = await fetch(url, {
  method: 'POST',
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions"
	req, _ := http.NewRequest("POST", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions";
$opts = ["http" => [
    "method" => "POST",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
POST Update an existing payment session

Use this API call to update a Klarna Payments session with new details, in case something in the order has changed and the checkout has been reloaded. Including if the consumer adds a new item to the cart or if consumer details are updated. Read more on **[Update an existing payment session](https:/

https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}

Hover any highlighted part to learn what it does

curl -X POST "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}"
import requests
response = requests.post(
    "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}';

const response = await fetch(url, {
  method: 'POST',
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}"
	req, _ := http.NewRequest("POST", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Post.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/klarna.com/payments/1.0.0/payments/v1/sessions/{session_id}";
$opts = ["http" => [
    "method" => "POST",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Klarna Payments API V1?

Klarna Payments API V1 is a Finance API. Developers commonly use finance APIs for:

  • processing payments and handling transactions
  • building subscription and billing systems
  • automating invoicing and financial reporting
  • fraud detection and risk scoring
  • connecting to banking and accounting software

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Klarna Payments API V1 is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗