Klarna
Klarna offers flexible payment options, giving customers more freedom to choose when and how to pay for a purchase. Klarna provides payment solutions to over 118 million consumers through more than 960,000 retailers in 26 countries.
Klarna guide
Klarna is a payment method that allows customers to pay for purchases using both immediate and deferred payments. Depending on market availability, Klarna offers the following payment options:
- Pay in full: a one-time payment at the time of a purchase for the full transaction amount. This option supports debit cards, credit cards, and bank transfers, similar to standard checkout transactions.
- Pay in 30 days: customers can pay thirty days after checkout.
- Pay in 3 or 4: customers pay three or four installments in fourteen to thirty days.
- Financing: customers pay in monthly installments for up to 36 months with or without interest.
The supplier receives full payment from Reach at the time of purchase, while Klarna collects payment from the customer over time.
Klarna payment flow
If Klarna is available in the customer's region, the Klarna payment method will be displayed for customer selection when checkout is rendered.
After selecting Klarna as their payment method, the shopper is redirected to a Klarna-hosted page for confirmation. The shopper is redirected to the supplier's site to complete their purchase. Customers can manage their payments through Klarna's app.
Klarna Properties
Once the order is created the supplier has 7 days to capture it.
Capture of an amount less the then original authorization is supported, however only a single partial payment is supported at this time.
Both partial and full refunds are supported.
Klarna and the Checkout API
Use the /checkout endpoint to create an order in Reach's system and attempt payment authorization. To create a Klarna transaction, set the PaymentMethod field to KLARNA and provide all required information. The tabs below show an example of a /checkout request using Klarna as the payment method.
For more details, see the Checkout API page.
POST https://checkout.rch.io/v2.21
{
"MerchantId": "ee54106f-30b8-45df-b62f-b649fc80eafd",
"ReferenceId": "1621468436723",
"ConsumerCurrency": "USD",
"PaymentMethod": "KLARNA",
"Capture": false,
"Items": [
{
"Description": "Item",
"ConsumerPrice": 100,
"Quantity": 1,
"Sku": "4383471583721",
"ImageUrl": "test.jpg"
}
],
"Consumer": {
"Name": "First Last",
"Email": "[email protected]",
"Phone": "3337678899",
"Address": "223 Elm Tree",
"City": "Place",
"Region": "Hamburg",
"PostalCode": "20",
"Country": "US"
},
"DeviceFingerprint": "c41487d2-6654-4d6a-8e55-2f3d92b285f8",
"StashId": null,
"Return": "https://checkout.rch.red/return.php"
}{
"OrderId": "c29173aa-dffb-400e-8a03-0a6636e77719",
"UnderReview": false,
"Expiry": "2027-05-21T23:54:02Z",
"Authorized": false,
"Completed": false,
"Captured": false,
"Action": {
"Redirect": "https://sandbox.withreach.com/auth/9a2c1f80-01b5-4cb4-90ae-c8adcb85cb0a"
}
}Fraud screenings and states
For the US and UK, Klarna may perform additional fraud screenings on your order requests. If a payment is flagged for review, the transaction state is held as CommitAccepted until Reach receives final authorization from Klarna.
When you attempt to capture an order in this state, the capture response will return with "Completed"= false. You should then wait for the notification informing you that the order has transitioned to Processed or ProcessingFailed.
See States and notifications and POST /capture for further details.
Custom branding options for checkout
To enhance your customers' Klarna-hosted payment experience, you can provide a feature image or logo that matches your branding. To customize your Klarna checkout, contact the Reach support team with your Klarna custom branding request.
Your feature image may appear slightly darker at the Klarna checkout

Default and customized checkout comparison
Klarna on-site messaging
On-site messaging (OSM) is a platform that displays Klarna payment promotions in your online store to better inform your customers of the payment options available to them.
Integrate on-site messaging
The process generally follows Klarna's Web SDK guide, with minor changes to allow integration within the Reach ecosystem.
Add the OMS JavaScript library
Klarna’s OMS integration uses a JavaScript library. To enable OMS, add the Klarna JavaScript library to all pages where you wish to display Klarna messaging.
<html>
<head>
<title>My store</title>
</head>
<body>
<script
async
data-environment="playground | production"
src="https://js.klarna.com/web-sdk/v1/klarna.js"
data-client-id="your_klarna_live_client_">
</script>
</body>
</html>| Attributes |
|---|
| aysnc: ensure the script loads in the background without freezing the rest of the webpage. |
data-client-id: the OSM identifier for your configuration provided by Reach. Playground and production environments will usually have a different data-client-id. |
| data-environment: determines what environment is used, either playground (sandbox) or production. The default value is production. |
| src: Klarna OSM script URL provided by Reach. |
Set the attributes to the values returned by /getPaymentMethods
/getPaymentMethodsThe /getPaymentMethods endpoint retrieves available payment methods for the specified currency and country.
{
"Id": "KLARNA",
"Name": "Klarna",
"Class": "Online",
"Language": "en",
"Local": true,
"Parameters": {
"ClientId": "11111111-2222-3333-4444-555555555555",
"OnSiteJavaScriptUrl": "https://js.klarna.com/web-sdk/v1/klarna.js"
}
}You will need to set the src and data-client-id attributes to the ClientId and OnSiteJavaScriptUrl values returned by a call to Reach's /getPaymentMethods endpoint.
Klarna suggests including the script tag in the first element of the page’s body. However, it is possible to include the script dynamically after retrieving the URL and client ID from the /getPaymentMethods call.
Klarna provides different JavaScript libraries and client IDs for different regions. If you offer Klarna in multiple markets ensure you use the correct JS library for your customer. Include the correct country code, currency, or locale in the call to /getPaymentMethods to retrieve the URL and client ID.
Use the response values and dynamically set them on your page.
Mapping PaymentMethod]{"code.Parameters.ClientId -> data-client-id PaymentMethod {"codes.Parameters.OnSiteJavaScriptUrl -> src
To refresh the OMS, you must use a command that pushes the refresh-placements event to KlarnaOnsiteService, ensuring the messaging placements update dynamically without requiring a hard page reload.
let script = document.createElement('script');
// the url provided by getPaymentMethods
script.src = <source>;
// the client ID provided by getPaymentMethods
script.setAttribute('data-client-id’, <client ID>);
script.async = true;
// ID so we can replace the script for region changes
script.id = 'klarna';
document.body.appendChild(script);
// refresh the messages after attaching the script
window.KlarnaOnsiteService = window.KlarnaOnsiteService || []
window.KlarnaOnsiteService.push({ eventName: 'refresh-placements' })Placement tags for on-site messages
Once the JavaScript library is configured, on-site messaging is displayed using HTML tags called placements. Placements act as containers for the JavaScript library's contents.
Add placements to your store's source code using HTML snippets and passing the required attributes. Set the data-locale attribute to the shoppers' region.
<klarna-placement
data-key="credit-promotion-badge"
data-locale="en-US"
data-purchase-amount="12000"
></klarna-placement>If invalid information is provided to the tags or Klarna is unavailable in the customer's region, the tags will not be displayed.
Klarna provides information on using placements in their integration instructions and on their Placements page.
If you are using amount-based placements, the data-purchase-amount should be provided as a whole number. For example, $29.99 should be set as 2999 with the decimal place excluded.
On-site messages requirements
Suppliers must add a Klarna FAQ link to the site footer using the FAQ OSM script.
The FAQ 's placement data-key is info-page. Suppliers should pass the appropriate locale based on the customer's region.
The following code should be added to the page where you want the content to be displayed:
<!-- Placement v2 -->
<klarna-placement
data-key="info-page"
data-locale="en-SE"
></klarna-placement>
<!-- end Placement -->This will dynamically include the appropriate Klarna FAQ and explain the payment options available to the customer in their region.
Updated 6 days ago
