Klarna
Beta
Last updated: December 18, 2024
Information
Klarna is also available through Flow. Flow enables you to accept payments on your website using Checkout.com's global network of payment methods with a single integration.
Klarna is a popular online payment method that provides flexible payment options for your customers, enabling them to pay now, pay later, or pay over a period of time.
You can integrate with Klarna to accept any of the following payment solutions:
- Klarna Payment - enables your customers to select their preferred Klarna payment option at checkout:
- Pay now - customers pay the whole amount at the moment of purchase
- Pay later - customers pay 30 days after the goods have been delivered
- Pay over time - customers pay in three or four installments over a period of time
- Financing - customers pay monthly in interest-bearing or interest-free payments, depending on their country
- Klarna Debit Risk - enables merchants in Klarna's restricted categories to operate with direct bank transfers
Klarna performs risk checks on the customer before approving a payment. If the checks are successful, Klarna settles you in advance and takes on the full fraud risk for the payment.
The availability of these payment options varies depending on the customer's country. See the payments options by country for more information.
Information
To enable Klarna payments on your account, contact your Account Manager or [email protected].
Model | Gateway/collecting |
---|---|
Payment flow | Direct |
Auto capture | |
Manual capture | Full and Partial capture |
Refund | Full and Partial refund |
Void | |
Disputes | All disputes are handled via Klarna's Merchant Portal |
Chargeback | All chargeback are handled directly via Klarna |
Information
Klarna is also available through Flow. Flow enables you to accept payments on your website using Checkout.com's global network of payment methods with a single integration.
The Klarna payment flow is as follows:
- Request a payment context.
- Configure Klarna's JavaScript SDK.
- Authorize the session.
- Optionally, you can verify if Klarna approved the payment context.
- Request a payment.
- If you used a manual capture flow, you must also capture the payment.
To display the Klarna widget on the checkout page, you must request a Checkout.com payment context. The payment context will return a session_id
and client_token
, which you'll need to provide in later requests.
Information
The Payment Contexts API supports idempotency. You can safely retry API requests without the risk of duplicate requests.
post
https://api.checkout.com/payment-contexts
1{2"currency": "EUR",3"amount": 1000,4"source": {5"type": "klarna",6"account_holder": {7"billing_address": {8"country": "DE"9}10}11},12"items": [13{14"name": "Battery Power Pack",15"quantity": 1,16"unit_price": 1000,17"total_amount": 1000,18"reference": "BA67A"19}20],21"processing": {22"locale": "en-GB"23},24"processing_channel_id": "{{apm_processing_channel_id}}"25}
You must provide the items[]
array when you request a Klarna payment context.
If you use Klarna Debit Risk, the value of items[].reference
is the reference shown to your customer in the Klarna application when confirming the payment.
For the full API specification, see the API reference.
If you receive a 201 Created
response code, your request was successful.
A successful request will contain the following fields in the response's partner_metadata
object:
session_id
client_token
1{2"id": "pct_jwvjl5tin54ubn7x2stvmunske",3"partner_metadata": {4"session_id": "kcs_55xomnyd3ftujckeoyuvtkx2ue",5"client_token": "eyJhbGciOiJub25lIn0.ewogICJzZXNzaW9uX2lkIiA6ICI1MGEzYTNiOS02NGE5LTYwNjMtODNmNC1hMzRlM2Q4MjRiNGIiLAogICJiYXNlX3VybCIgOiAiaHR0cHM6Ly9rbGFybmEtcGF5bWVudHMtZXUucGxheWdyb3VuZC5rbGFybmEuY29tIiwKICAiZGVzaWduIiA6ICJrbGFybmEiLAogICJsYW5ndWFnZSIgOiAiZW4iLAogICJwdXJjaGFzZV9jb3VudHJ5IiA6ICJHQiIsCiAgImFuYWx5dGljc19wcm9wZXJ0eV9pZCIgOiAiVUEtMzYwNTMxMzctMTEiLAogICJ0cmFjZV9mbG93IiA6IGZhbHNlLAogICJlbnZpcm9ubWVudCIgOiAicGxheWdyb3VuZCIsCiAgIm1lcmNoYW50X25hbWUiIDogIlBsYXlncm91bmQgRGVtbyBNZXJjaGFudCIsCiAgInNlc3Npb25fdHlwZSIgOiAiUEFZTUVOVFMiLAogICJjbGllbnRfZXZlbnRfYmFzZV91cmwiIDogImh0dHBzOi8vZXZ0LnBsYXlncm91bmQua2xhcm5hLmNvbSIKfQ."6},7"_links": {8"self": {9"href": "https://api.checkout.com/payment-contexts/pct_jwvjl5tin54ubn7x2stvmunske"10}11}12}
The Klarna JavaScript SDK enables you to display the Klarna widget in your site:
- Add the Klarna script to your web application.
1<script src="https://x.klarnacdn.net/kp/lib/v1/api.js" async></script>
- Initialize the Klarna SDK with the
client_token
received in thepayment_context
response.
1window.klarnaAsyncCallback = function () {2Klarna.Payments.init({3client_token:"eyJhbGciOiJub...",4});5};
Note
client_token
relies on the Klarna session created with the payment context request. The payment context request expires after 48 hours, so purchases might fail after 48 hours have elapsed.
- Place a container on your page to render Klarna as a payment option.
1<div id="klarna-payments-container"></div>
- Load the Klarna widget in the placeholder.
1Klarna.Payments.load(2{3container: '#klarna-payments-container'4},5{},6function (res) {7console.debug(res);8}9)
Information
For a better user experience, call load()
when you load your checkout page. This ensures that the container for Klarna payments loads immediately in a hidden container, and is ready to display when needed.
For more information, see Klarna Docs:
When the customer selects to pay with Klarna, open the Klarna pop-up and authorize the session. To provide a seamless checkout experience, ensure you send the billing and shipping parameters:
1Klarna.Payments.authorize(2{},3{4billing_address: {5given_name: "Alice",6family_name: "Test",7email: "[email protected]",8street_address: "Södra Blasieholmshamnen 2",9postal_code: "11 148",10city: "Stockholm",11phone: "+46701740615",12country: "SE",13},14shipping_address: {15given_name: "Alice",16family_name: "Test",17email: "[email protected]",18street_address: "Södra Blasieholmshamnen 2",19postal_code: "11 148",20city: "Stockholm",21phone: "+46701740615",22country: "SE",23},24customer: {25date_of_birth: "1941-03-21",26},27},28function (res) {29console.log("Authorize outcome:", res);30}31)
There are two potential cases that you need to handle based on the response:
- Success response
show_form: true
- Klarna performed a pre-assessment and authorized this purchase. You will receive apayment_context_approved
webhook. Once the payment context is approved, the approval is valid for 60 minutes. - Error response
show_form: false
- Klarna performed a pre-assessment and didn't authorize this purchase. You can't offer Klarna as a payment option and should hide it for the customer at checkout. The customer must select another payment method.
Once the customer confirms payment in the Klarna pop-up, you will receive a payment_context_approved
webhook.
Optionally, you can verify if Klarna approved the payment context by calling the GET payment context endpoint to verify its status
:
get
https://api.checkout.com/payment-contexts/{id}
1{2"status": "Approved",3"payment_request": {4"source": {5"type": "klarna",6"account_holder": {7"first_name": "Bose",8"last_name": "Gold",9"date_of_birth": "1990-10-12",10"email": "[email protected]",11"billing_address": {12"address_line1": "654 Main St.",13"country": "US",14"state": "OH"15},16"phone": {17"country_code": "",18"number": ""19},20"identification": {21"number": ""22},23"company_name": "Checkout.com"24}25},26"amount": 1000,27"currency": "EUR",28"shipping": {29"company_name": "Checkout.com",30"first_name": "Test",31"last_name": "Account",32"address": {33"address_line1": "Von-Reiche-Straße 9",34"address_line2": "6th floor",35"zip": "63930",36"city": "Furth",37"country": "DE"38},39"phone": {40"country_code": "+353",41"number": "6789010"42}43},44"items": [45{46"name": "Battery Power Pack",47"quantity": 1,48"unit_price": 1000,49"tax_rate": 0,50"total_amount": 1000,51"tax_amount": 0,52"reference": "BA67A",53"url": "https://product.url.com",54"image_url": "https://image.url.com"55}56],57"processing": {58"locale": "en-IE",59"tax_amount": 0,60"custom_payment_method_ids": [61"6m_149APR",62"6m_0APR",63"12m_149APR",64"12m_0APR",65"24m_149APR",66"24m_0APR"67]68}69},70"partner_metadata": {71"session_id": "kcs_55xomnyd3ftujckeoyuvtkx2ue",72"client_token": "eyJhbGciOiJub25lIn0.ewogICJzZXNzaW9uX2lkIiA6ICI1MGEzYTNiOS02NGE5LTYwNjMtODNmNC1hMzRlM2Q4MjRiNGIiLAogICJiYXNlX3VybCIgOiAiaHR0cHM6Ly9rbGFybmEtcGF5bWVudHMtZXUucGxheWdyb3VuZC5rbGFybmEuY29tIiwKICAiZGVzaWduIiA6ICJrbGFybmEiLAogICJsYW5ndWFnZSIgOiAiZW4iLAogICJwdXJjaGFzZV9jb3VudHJ5IiA6ICJHQiIsCiAgImFuYWx5dGljc19wcm9wZXJ0eV9pZCIgOiAiVUEtMzYwNTMxMzctMTEiLAogICJ0cmFjZV9mbG93IiA6IGZhbHNlLAogICJlbnZpcm9ubWVudCIgOiAicGxheWdyb3VuZCIsCiAgIm1lcmNoYW50X25hbWUiIDogIlBsYXlncm91bmQgRGVtbyBNZXJjaGFudCIsCiAgInNlc3Npb25fdHlwZSIgOiAiUEFZTUVOVFMiLAogICJjbGllbnRfZXZlbnRfYmFzZV91cmwiIDogImh0dHBzOi8vZXZ0LnBsYXlncm91bmQua2xhcm5hLmNvbSIKfQ."73}74}
If status
is returned as Approved
, Klarna has authorized this purchase and you can request the payment.
post
https://api.checkout.com/payments
1{2"payment_context_id": "pct_xxx",3"processing_channel_id": "pc_xxx"4}
Your request was successful if you receive a 202 Success
response code with a status
field set to Pending
.
1{2"id": "pay_mnnf6wnp7fdupa2jechtgg5cr4",3"status": "Pending",4"payment_type": "Installment",5"payment_plan": {6"financing": true7},8"processing": {9"partner_order_id": "dc3b8712-123a-45ef-bc3d-b356a158b31b",10"partner_fraud_status": "ACCEPTED"11},12"_links": {13"self": {14"href": "https://api.sandbox.checkout.com/payments/pay_mnnf6wnp7fdupa2jechtgg5cr4"15}16}17}
The payment_type
field in the response can return any of the following values, depending on the selected payment option:
"payment_type": "Regular"
for Pay Now payments"payment_type": "PayLater"
for Pay Later payments"payment_type": "Installment"
for Pay over time and Financing payments- When
payment_type
is set toInstallment
, you will also receive apayment_plan.financing
field. If this field is:true
- the transaction is a Financing paymentfalse
- the transaction is a Pay over time payment
- When
The manual capture flow enables you to authorize a payment and then capture the payment later.
Authorizing a payment places a hold on the customer’s funds and gives you some time before finalizing the transaction. For example, if you need to verify that the item is in stock.
Note
Manual capture should be triggered when you ship the items. Checkout.com's solution can perform full captures, or multiple partial captures for a payment.
Checkout.com can perform one full or multiple partial captures.
If the capture amount is equal to the authorized amount, we will consider the capture full and final.
If the capture amount is less than the authorized amount and your capture request:
- includes
"capture_type": "Non-Final"
- we don’t release the remaining authorized amount - doesn't include
"capture_type"
, or includes"capture_type": "Final"
- we release the remaining authorized amount
- includes
For more information on capturing payments, see Capture a Payment.
If you want to use full capture, pass the payment_id
in the request.
post
https://api.checkout.com//payments/{id}/captures
Response example
If you receive a 202 Success response, your request was successful.
1{2"action_id": "act_y3oqhf46pyzuxjbcn2giaqnb44",3"_links": {4"payment": {5"href": "https://api.sandbox.checkout.com/payments/pay_y3oqhf46pyzuxjbcn2giaqnb44"6}7}8}
If you want to perform multiple partial captures, pass "capture_type": "NonFinal"
in the capture request.
You can also use "capture_type" : Final
.
post
https://api.checkout.com/payments/{id}/captures
Request example
1{2"amount": 1000,3"capture_type": "NonFinal"4}
Response example
If you receive a 202 Success response containing an Action ID
, your request was successful.
1{2"action_id": "act_y3oqhf46pyzuxjbcn2giaqnb44",3"_links": {4"payment": {5"href": "https://api.sandbox.checkout.com/payments/pay_y3oqhf46pyzuxjbcn2giaqnb44"6}7}8}
Use the payment_id
from the payment response to retrieve details about the payment.
get
https://api.checkout.com/payments/{id}
1{2"id": "pay_mnnf6wnp7fdupa2jechtgg5cr4",3"requested_on": "2024-08-13T15:14:28.1308176Z",4"source": {5"type": "klarna",6"account_holder": {7"first_name": "Eve",8"last_name": "Test",9"billing_address": {10"address_line1": "Bodestr. 1-3",11"city": "Berlin",12"zip": "10178",13"country": "DE",14"state": ""15},16"email": "[email protected]",17"date_of_birth": "1992-01-01",18"phone": {19"number": "+4915257607960"20},21"identification": {}22}23},24"payment_type": "Installment",25"payment_plan": {26"financing": true27},28"items": [29{30"name": "OTR-AC Elite 90 Capsules",31"quantity": 1,32"unit_price": 4998,33"total_amount": 4998,34"tax_amount": 0,35"discount_amount": 036},37{38"name": "Discount",39"quantity": 1,40"unit_price": 1000,41"total_amount": 1000,42"discount_amount": 043}44],45"amount": 3998,46"currency": "EUR",47"status": "Captured",48"approved": true,49"balances": {50"total_authorized": 3998,51"total_voided": 0,52"available_to_void": 0,53"total_captured": 3998,54"available_to_capture": 0,55"total_refunded": 0,56"available_to_refund": 399857},58"shipping": {59"first_name": "Samuel",60"last_name": "Rudd",61"email": "[email protected]",62"address": {63"address_line1": "Rotherstraße 19",64"city": "Berlin",65"state": "",66"zip": "10245",67"country": "DE"68},69"phone": {70"number": "+4930774615846"71}72},73"processing": {74"partner_session_id": "43c4421b-605a-47c2-88bb-d5dd9025222b",75"partner_order_id": "dc3b8712-123a-45ef-bc3d-b356a158b31b",76"fraud_status": "ACCEPTED",77"locale": "en-GB",78"tax_amount": 0,79"shipping_amount": 080},81"_links": {82"self": {83"href": "https://api.sandbox.checkout.com/payments/pay_mnnf6wnp7fdupa2jechtgg5cr4"84},85"actions": {86"href": "https://api.sandbox.checkout.com/payments/pay_mnnf6wnp7fdupa2jechtgg5cr4/actions"87},88"refund": {89"href": "https://api.sandbox.checkout.com/payments/pay_mnnf6wnp7fdupa2jechtgg5cr4/refunds"90}91}92}
Klarna supports both partial and full refunds.
You can process a full refund using the Dashboard or by using the Refund API.
Information
For a better customer experience, submit the item information of the item being refunded in the partial refund request. This is only possible when using the Refund API.
post
https://api.checkout.com/payments/{id}/refunds
1{2"amount": 1003}
1{2"actionId": "act_cxpffngdvouvabegyy3asiuou",3"_links": {4"payment": {5"href": "https://api.checkout.com/payments/pay_ok7yhvutuylevnatk3x3dxviq4"6}7}8}
Once a payment is created using the auto-capture payment flow, it cannot be voided by the merchant. If you wish to reverse a payment in progress, please wait for the payment_captured
webhook, and then process a refund. The webhooks you may receive are outlined in more detail below.
A payment can be fully voided after it is authorized but not yet captured.
For more information, see the Void a payment page.
During your onboarding process when integrating with Klarna, Checkout.com registers your email to access Klarna's Merchant Portal.
You can use Klarna's portal to manage on-site messaging and disputes.
On-site messaging is a solution that enables you to add tailored messaging to your business website or mobile app. Use messaging to let your customers know about the available payment options as they browse your online store. To learn more about the benefits, see the On-site messaging article in Klarna's documentation.
You can set up On-site messaging for your store or app using Klarna's portal:
- Log in to Klarna's Merchant Portal and go to On-Site messaging.
- Confirm your website.
- Read and approve the Terms and Conditions.
- Add the script to communicate with Klarna. This script is generic and is located at the top of the page.
- Add the script for the messaging placement. This script enables Klarna to render the message for the customer.
- You must provide the purchase amount information so that Klarna can display dynamic pricing and payment type information based on the basket size.
- If you have items with varying prices, you might need to add another line of code to update the messaging placement on demand.
- Copy the code snippet generated under Installation and add it to your site or app.
For Klarna, disputes are any case where customers challenge their liability to pay you. When a customer contacts Klarna to open a dispute, they are asked to contact you to resolve the issue before Klarna can act as an intermediary.
Klarna categorizes disputes into different dispute reasons:
- Returns – A customer returns all or part of their order.
For more information, see Klarna's return instructions documentation. - Goods not received – A customer did not receive all or parts of their order.
- Faulty goods – A customer received a broken item, or parts are missing or deviate significantly from the description.
For information about what qualifies as significant deviation, See Klarna's merchant protection program documentation. - Incorrect invoice – A customer claims to have received an invoice that is incorrect. For example, missing discounts or incorrect items on the invoice.
- Unauthorized purchases – A customer claims they did not make the purchase.
Klarna does not consider high-risk orders to be disputes. Disputes are raised by customers, whereas high-risk orders are flagged by Klarna's internal alarm systems designed to protect you from potential fraudulent activities.
After a customer raises a dispute, you have 21 days to resolve the issue directly with them. If no solution is found after this period, Klarna starts an investigation.
The investigation outcome defines the next steps:
- You lose the dispute: Klarna performs a chargeback and charges you a dispute fee.
- You win the dispute: You are not charged a dispute fee.
If you resolve the dispute with your customer during Klarna's investigation, you are still charged a dispute fee.
Information
If the amount of escalated disputes compared to captures is 1.5% or higher for three consecutive months, Klarna may impose an additional excessive dispute fee .
For more information, see Klarna's dispute processing flow documentation.
You can manage and resolve disputes directly in Klarna's portal.
To manage your open disputes, log in to Klarna's portal and go to the Disputes app.
The Disputes app in Klarna's portal has six sections:
Open Disputes
This section displays all disputes that require your input to resolve. All open disputes are organized by deadline, where the dispute with the nearest deadline appears at the top of the list.
The Open Disputes page has two tabs:
- Response required – This tab show disputes that are waiting for your response. Select Respond to open the Dispute details page, where you submit your response to defend the dispute.
- Under review – This tab shows the disputes to which you've already responded. These cases are ready to be picked up by Klarna's Dispute Resolution Team.
Unauthorized purchases
This page shows disputes in the unauthorized purchases category, which the customer has raised or flagged as potential fraud.
Therefore, these disputes are more sensitive and have a shorter deadline (7 days / 168 hours) than other disputes, such as returns (14 days / 336 Hours).
High-risk order
You can use this section to find cases that Klarna's monitoring systems identified as high risk, but not a dispute.
Note
High-risk orders are time sensitive, and we recommend that you actively monitor this page and cancel these orders before shipping products.
All disputes
You can use this section to review all disputes raised with Klarna, such as:
- Disputes raised with Klarna but not yet classified as cases that need Klarna's Dispute Resolution Team to be resolved
- Disputes where Klarna's Dispute Resolution Team intervened and requested further information from you to resolve the case
- Disputes where you provided input that are now under review
- Disputes that have been resolved
Email & Dispute Settings
This page consists of two sections:
- Email & Notification
- Chargeback Threshold
Administrators can add or modify contact emails in this section and select the preferred language for dispute notifications. The local language refers to the language used in the market where the order was placed.
Statistics
In this section, you can review your customers' dispute behavior and your own performance, and visualize the costs incurred.
For more information, see Klarna's Disputes app in Merchant Portal documentation.
Learn how to manage webhooks using our API, or the Dashboard.
When integrating Klarna, you can configure the following webhooks:
Webhook | Description |
---|---|
| Sent when a payment request has been successfully initiated. |
| Sent when payment is approved by the partner. |
| Sent when payment is approved by the customer. |
| Sent when a payment request has been rejected. |
| Sent when the payment has been successfully captured. |
| Sent when a capture request has been rejected. |
| Sent when the capture request has been successfully sent to the partner. |
| Sent when a payment reaches its expiry date. |
| Sent when the payment has been (fully or partially) refunded. |
| Sent when a refund has been unsuccessful. |
| Sent when payment is voided after authorization. Sent when payment is voided after partial capture, releasing the remaining amount. Sent when payment is expired. |
| Sent when void request is unsuccessful. |
To test your Klarna integration:
- Contact your Account Manager or [email protected] to activate Klarna payments in your Checkout.com test environment.
- Create a Klarna transaction by following the Klarna Payment flow and using:
- either an auto-capture or manual capture payment flow
- any of the sample data provided by Klarna:
- To test Klarna Payment transactions, use Klarna's sample customer data.
- To test Klarna Debit Risk, use Klarna's test environment data.
Information
Manual-capture payment flows are only available for Pay later, Pay over time, Pay now, and Financing.
- Using the Klarna JS SDK, embed the JWT token to render the UI components, and carry out the payment via the pop-up window.
- Complete the payment.
If successful, you will then be redirected to your predefined success URL.
Contact your Account Manager or [email protected] to move your integration to a live environment.
Customer Country | Payment options |
---|---|
Australia |
|
Austria |
|
Belgium |
|
Canada |
|
Czech Republic |
|
Denmark |
|
Finland |
|
France |
|
Germany |
|
Greece |
|
Ireland |
|
Italy |
|
Mexico |
|
Netherlands |
|
New Zealand |
|
Norway |
|
Poland |
|
Portugal |
|
Romania |
|
Spain |
|
Sweden |
|
Switzerland |
|
United Kingdom |
|
United States |
|
Optional features include:
Promo codes
Discounts
Delivery tracking
Klarna offers support for a preconfigured processing.custom\_payment\_method\_ids[]
array to be passed into the payment context request. In product terms, this field is referred to as Promo Codes
. The values passed enable the merchant to offer their customers more appealing financing options.
The values are included as a part of the session and order creation. Example values include "6m_0APR", "12m_0APR", "24m_0APR". To better understand the values, they can be split at the "_" to reveal what discount is being offered to the merchants.
The first segment is the installment months and the trailing is the annual percentage rate of charge as a percentage. For example, when "6m_0APR" is passed, the promotion being offered is for 6-month installments at an interest rate of 0%.
To configure the promo codes, there needs to be an agreement between you and Klarna as to the values for each payment option. Klarna will configure these within backend systems such that once you submit these within the API request the appropriate options are displayed in the purchase flow.
You can provide tax information for each item using the following fields:
items[].tax_rate
items[].tax_amount
You can provide either one of these fields and then Checkout.com calculates the other:
tax_amount
= (tax_rate
*total_amount
) / (100 +tax_rate
)tax_rate
= (100 *tax amount
) / (total_amount
-tax amount
)
You can apply a discount to an individual item or to all items in the transaction:
- For an individual item, provide the discount amount in the item's
items[].discount_amount
field. - For all items, provide:
- A new item object with type
discount
("items[].type:"discount"
) - The discount amount in
"items[].total_amount"
- A new item object with type
You can apply both discounts to the same transaction.
The following example shows two individual items with individual discounts applied, and an additional discount to the entire transaction:
1 x jumper 50 EUR discounted 15%, tax 25%
items[0].quantity
: 1items[0].unit_price
: 5000items[0].discount_amount
: 15% of 5000 = 750items[0].total_amount
: (5000 * 1) - 750 = 4250- (
unit_price
x quantity) -discount_amount
- (
items[0].tax_rate
: 2500items[0].tax_amount
: (25 * 4250) / (100 + 25) = 850- (tax rate *
total_amount
) / (100 + tax rate)
- (tax rate *
3 x white t-shirt 15 EUR discounted 10%, tax 25%
item.[1].quantity
: 3item.[1].unit_price
: 1500items[1].discount_amount
: 15% of 1500 = 450items[1].total_amount
: (1500 * 3) - 450 = 4050- (
unit_price
x quantity) -discount_amount
- (
items[1].tax_rate
: 2500items[1].tax_amount
: (25 * 4050) / (100 + 25) = 810- (tax rate *
total_amount
) / (100 + tax rate)
- (tax rate *
10% discount on an 83 EUR order
- 1 x order = 8300
items[2].type
: discountitems[2].total_amount
: (4250 + 4050) * 0.1 = 830- (
items[0].total_amount
+items[1].total_amount
) x discount rate
- (
1{2"currency": "EUR",3"source": {4"type": "klarna",5"account_holder": {6"billing_address": {7"country": "DE"8}9}10},11"amount": 7470,12"items": [13{14"type": "Physical",15"name": "jumper",16"quantity": 1,17"reference": "98-765-XYZ",18"total_amount": 4250,19"discount_amount": 750,20"tax_amount": 850,21"tax_rate": 2500,22"unit_price": 500023},24{25"type": "Physical",26"name": "white t-shirt ",27"quantity": 3,28"reference": "12-345-ABC",29"total_amount": 4050,30"discount_amount": 450,31"tax_amount": 810,32"tax_rate": 2500,33"unit_price": 150034},35{36"type": "discount",37"name": "10% discount",38"quantity": 1,39"reference": "PROMO10",40"total_amount": 830,41"unit_price": 83042}43],44"processing_channel_id": "pc_rikhvutraenu7eno62f5u2buge",45"processing": {46"locale": "en-DE",47"shipping_amount": "0",48"tax_amount": "1660"49}50}
Note
This feature is available only with the manual capture flow.
When your customers want to see the delivery status of the goods they paid for with Klarna, they can use the Klarna app to track the delivery.
The Klarna app offers a smooth and intuitive way for your customers to track the entire shipping lifecycle and get notifications throughout the different stages. For example, when the goods are in transit or ready to pick up.
Some benefits of enabling delivery tracking are:
- offering a smooth post-purchase experience to your customers
- increasing customer satisfaction and loyalty
- increasing the successful delivery rate
- reducing customer service workload
The following information needs to be included in the capture request:
API field | Description |
---|---|
| Shipping information for this capture. Maximum 500 items. |
| Name of the shipping company (as specific as possible). Maximum 100 characters. Example: 'DHL US' and not only 'DHL'. |
| Shipping method. Allowed values matches - "PickUpStore", "Home", "BoxReg", "BoxUnreg", "PickUpPoint", "Own", "Postal", "DHLPackstation", "Digital", "Undefined", "PickUpWarehouse", "ClickCollect". |
| Tracking number for the shipment. Maximum 100 characters. |
| URI where the customer can track their shipment. Maximum 1024 characters. |
| Name of the shipping company for the return shipment (as specific as possible). Maximum 100 characters. Example: "DHL US" and not only "DHL". |
| Tracking number for the return shipment. Maximum 100 characters. |
| URL where the customer can track the return shipment. Maximum 1024 characters. |