Klarna

This section covers the various flows offered by Klarna.

Klarna Country Availability

👍

Note

The availability of payment methods per country depends on the merchant vertical.

CountryCurrency CodePay Now (instruments vary by market)Pay Later (in 30 days)Pay in Parts (Pay in 3/4, in 0, 30 and 60 days)Financing (6 - 36 months)
SwedenSEK
NorwayNOK
DenmarkDKK
FinlandEUR
GermanyEUR
AustriaEUR
NetherlandsEUR
United KingdomGBP(Opt-in process)
BelgiumEUR
SwitzerlandCHF
ItalyEUR
SpainEUR
FranceEUR
PortugalEUR
PolandPLN

Payment Method Properties

Available country codesSee table
Processing (Presentation) currenciesSee table
Settlement currenciesSee table
Consumer currenciesSee table
Channel member tagklarna
Scheme name in the settlement fileKlarna
Minimum transaction amountFair Financing (country and time period dependent)

AT, DE: 6m=25 EUR, 12m=120 EUR, 24m=1,000 EUR, 36m=1,500 EUR

FI: 6m=25 EUR, 12m=500 EUR, 24m=1,000 EUR, 36m=1,500 EUR

NO: 6m=250 NOK, 12m=5,000 NOK, 24m=10,000 NOK, 36m=15,000 NOK

SE: 6m=250 SEK, 12m=5,000 SEK, 24m=10,000 SEK, 36m=15,000 SEK

Pay in 3

35 EUR, 25 GBP or 350 DKK

Pay Later

AT, DE: 0.1 EUR

all other countries: 1 EUR or equivalent

Pay Now

0 EUR, 0 SEK or 0 CHF
Maximum transaction amountFair Financing

Max limit set by Klarna

Pay in 3

1000 EUR, 1000 GBP or 50,000 DKK

Pay Later

BE: 1,500 EUR (new users), 2,500 EUR (returning users)

AT, FI, DE, NL: 5000 EUR

50,000 DKK, 75,000 NOK, 7,000 PLN, 100,000 SEK, 1,000 CHF, 600 GBP

Pay Now

15,000 EUR, 150,000 SEK or 15,000 CHF
Session timeout48 hours
RefundFull, partial and multiple partial refunds are all available.
Refund Validity365 days
ChargebackYes
Integration TypeAsynchronous
SandboxScheme-hosted

Transaction Flow

  1. The consumer selects to pay with Klarna in the merchant checkout.
  2. The merchant creates a payment request to your system.
  3. Your system forwards the payment request to PPRO.
  4. PPRO creates an order session at Klarna to create the Klarna HPP.
  5. After Klarna responds, PPRO forwards you the response.
  6. The merchant redirects the consumer to a Klarna HPP page where they continue with the payment.
  7. The consumer selects the Klarna payment method they prefer based on availability (country, merchant).
  8. After confirming the payment with one of Klarna’s payment methods (Pay now, Pay later, Financing), the consumer is redirected to the merchant’s success page.

Klarna Integration

Specific input parameters for the TRANSACTION call

Field NameM/O/CTypeDescription
specin.taxamountMnumericThe total tax amount of the order in the currency's minor units. This information is essential to provide detailed purchase information to the consumer (e.g., on the invoice).
specin.paymentmethodcategoryOasciiThe payment method category:

- DIRECT_DEBIT

- DIRECT_BANK_TRANSFER

- PAY_NOW

- PAY_LATER

- PAY_OVER_TIMESee Klarna documentation about Payment Method Categories.If no value is set, this parameter defaults to the configuration set when PPRO boards the merchant with Klarna.
transientin.billingaddressOutf-8The billing address. It is passed as a URL-encoded serialized JSON string (see Klarna documentation about the billing address).

Make sure you follow Klarna's postal code validation rules.
transientin.emdOutf-8Stands for "Extra Merchant Data”, a pass-through field containing additional information about the merchant and the transaction. It is passed as an URL-encoded JSON string. Corresponds to the attachment.body of the Create Payment Session call.
transientin.hpptitleOutf-8The title of the hosted payment page, displayed in the browser’s tab. If not set, defaults to the title set in the merchant configuration provided during the boarding process.
transientin.logourlOasciiURL of the merchant’s logo to be displayed on Klarna’s hosted payment page. If not set, defaults to the logo set in the merchant configuration.
transientin.orderitemsMutf-8The items being purchased. Passed as URL-encoded serialized JSON string (see Klarna documentation about Order Lines)
transientin.customerOutf-8Consumer information to be forwarded to Klarna as a URL-encoded serialized JSON string (see Klarna documentation about Customer data).

Sending the date_of_birth field prevents Klarna from prompting it in their hosted payment page.
transientin.purchasetypeOasciiThe type of purchase being made. Defines, for example, the label of the button on Klarna’s hosted payment page:

- BUY

- RENT

- BOOK

- SUBSCRIBE

- DOWNLOAD

- ORDER

- CONTINUEIt can also be set in the merchant configuration. If not specified, defaults to CONTINUE.
transientin.shippingaddressOutf-8The shipping address. Passed as URL-encoded serialized JSON string. Defaults to transientin.billingaddress

Make sure you follow Klarna's postal code validation rules.
transientin.backgroundimagesOutf-8The images to be used as a background on Klarna’s payment page (the image best matching the resolution will be used). This is a pass-through field. Check Klarna’s documentation for more information about the correct format. This value can also be set in the merchant configuration.

For standard input parameters, see Input parameters for the TRANSACTION call.

Specific output parameters for the TRANSACTION call

Field NameTypeDescription
SPECOUT.SCHEMEORDERIDasciiThe order ID that Klarna returns after the order placing an order in their system.
SPECOUT.PROVIDERERRORCODEasciiThe error code displayed in case of a failed TRANSACTION call.
SPECOUT.PROVIDERERRORMESSAGEasciiA human-readable error message displayed in case of a failed TRANSACTION call.
SPECOUT.BILLINGCATEGORYasciiThe category PPRO uses for billing. PPRO generates this category to group the payment methods according to their fees and match them with the pricing/product categories Klarna uses in the partner tools. Not Klarna-provided.

Possible values:

- PAY_LATER

- PAY_NOW

- PAY_IN_PARTS

- FINANCING
SPECOUT.AUTHORIZEDPAYMENTMETHODasciiThe final payment method used for the transaction. This value can be different from the payment method category sent as a specin.

Possible values:

- invoice

- fixed_amount

- fixed_sum_credit

- alternative_payment_method'

- direct_debit

- direct_bank_transfer'

- Pay_later_by_card'

- card

- Pay_by_card

- slice_it_by_card

For standard output parameters, see Output parameters for the TRANSACTION call.

TRANSACTION call input

tag=klarna
txtype=TRANSACTION
countrycode=DE
currency=EUR
amount=40000
merchanttxid=RfxeZyceEj2v
preferredlanguage=en
login=johndoe
password=wXBrpVporFVjGO4R
contractid=JOHNDOE
channel=testchannel
merchantredirecturl=https%3A%2F%2Fmyurl.com%2Fwork%2Fppro2%2Flanding.php
notificationurl=https%3A%2F%2Fmyurl.com%2Fwork%2Fppro2%2Fnotification.php
specin.dynamicdescriptor=DynDescriptor
accountholdername=John+Doe
specin.paymentmethodcategory=PAY_LATER
specin.taxamount=3636
transientin.orderitems=%5B%7B%22name%22%3A%22BatteryPowerPack%22%2C%22quantity%22%3A1%2C%22tax_rate%22%3A1000%2C%22total_amount%22%3A10000%2C%22total_discount_amount%22%3A550%2C%22total_tax_amount%22%3A909%2C%22unit_price%22%3A10550%7D%2C%7B%22name%22%3A%22BatteryPowerPack%22%2C%22quantity%22%3A1%2C%22tax_rate%22%3A1000%2C%22total_amount%22%3A10000%2C%22total_discount_amount%22%3A550%2C%22total_tax_amount%22%3A909%2C%22unit_price%22%3A10550%7D%2C%7B%22name%22%3A%22BatteryPowerPack%22%2C%22quantity%22%3A1%2C%22tax_rate%22%3A1000%2C%22total_amount%22%3A10000%2C%22total_discount_amount%22%3A550%2C%22total_tax_amount%22%3A909%2C%22unit_price%22%3A10550%7D%2C%7B%22name%22%3A%22BatteryPowerPack%22%2C%22quantity%22%3A1%2C%22tax_rate%22%3A1000%2C%22total_amount%22%3A10000%2C%22total_discount_amount%22%3A550%2C%22total_tax_amount%22%3A909%2C%22unit_price%22%3A10550%7D%5D
transientin.billingaddress=%7B%22city%22%3A%22Munich%22%2C%22country%22%3A%22DE%22%2C%22email%22%3A%22test.customer%40mpay.int%22%2C%22phone%22%3A%2207792555555%22%2C%22region%22%3A%22Scotland%22%2C%22family_name%22%3A%22Doe%22%2C%22given_name%22%3A%22John%2BDoe%22%2C%22organization_name%22%3A%22MPGS%22%2C%22postal_code%22%3A%22EH12%2B3AB%22%2C%22street_address%22%3A%22Ocean%2BPoint%22%2C%22street_address2%22%3A%22Ocean%2BDrive%22%7D
transientin.shippingaddress=
transientin.emd=
transientin.hpptitle=
transientin.purchasetype=
transientin.logourl=
returnmode=urlencodeext

❗️

Note

For non B2B customers the organization_name field in the billingaddress is forbidden.

Please, use the value like below:

transientin.billingaddress=%7B%22city%22%3A%22Munich%22%2C%22country%22%3A%22DE%22%2C%22email%22%3A%22test.customer%40mpay.int%22%2C%22phone%22%3A%2207792555555%22%2C%22region%22%3A%22Scotland%22%2C%22family_name%22%3A%22Doe%22%2C%22given_name%22%3A%22John%2BDoe%22%2C%22postal_code%22%3A%22EH12%2B3AB%22%2C%22street_address%22%3A%22Ocean%2BPoint%22%2C%22street_address2%22%3A%22Ocean%2BDrive%22%7D

TRANSACTION call output

REQUESTSTATUS=SUCCEEDED
&STATUS=SUCCEEDED
&TXID=754422312
&ERRMSG=
&CHANNEL=testchannel
&TAG=klarna
&PAYMENTGUARANTEE=NONE
&REDIRECTSECRET=gDVEXOCBLYdj5miWcjuBF0odCE5JKcmU
&SPECOUT_AUTHORIZEDPAYMENTMETHOD=invoice
&SPECOUT_BILLINGCATEGORY=PAY_LATER 
&SPECOUT_SCHEMEORDERID=b5a2be9c-14fb-29b8-943b-47052e37c1dd

Additional Information

Before you go live

  • Access Klarna's Demo Store to try out Klarna payments in a country of your choice.
  • Before you accept live payments, test your integration using the test details provided by Klarna.
  • Make sure to use the following country-specific sample data.
  • Consider Klarna's T&Cs based on your commercial agreement with PPRO.
  • Follow the Klarna guidelines on how to display Klarna in the checkout.
  • Ensure order lines and VAT are transmitted correctly to Klarna and displayed accurately on the Klarna pages.
  • If a consumer gets rejected by Klarna, offer them another payment method but not the same Klarna method.
  • Make sure you use Klarna's phone number format standards. To see the expected phone number format standards for every Klarna-supported country, go to this page.
  • Stay up-to-date with the information required for every country.

Testing and integration

If you wish to give your merchants access to run a live test in the production environment, follow the recommendations below:

  • Provide real consumer data: real name, personal email, personal mobile, and home and billing address. Using test data interferes with the credit/risk checks that Klarna performs on each transaction.
  • Don't provide a company address as a billing address.
  • Choose an item with a reasonable amount that meets Klarna's minimum requirements. Klarna can reject a request if the product is too expensive, and they do not have enough transaction history for the consumer.
  • Don't perform multiple tests in a short period from the same device or IP address. Doing this will trigger velocity rule checks, which will lead to a rejected transaction due to the scheme blocking the merchant's Klarna ID.
  • Klarna test data (relevant only on PPRO test) can be found at the following Klarna website.
  • Redirecting the consumer: In case you get a PENDING response that contains a REDIRECTURL, redirect the consumer to that URL. Store the REDIRECTSECRET in the session or persistent storage to be able to verify the response later (see Redirect to MerchantRedirectURL - shared secret). This redirect can be performed by HTTP GET (302 redirect).

Klarna Merchant Portal Information

You'll get access to the Klarna Merchant Portal. You'll receive an activation email at the address that you provide during onboarding.

In the Klarna Merchant Portal, you'll have access to the following Klarna Apps:

  • Users App: You'll get one user created when creating the account, but you can add users to the Klarna Merchant Portal and manage their permissions.
  • Orders App: View and manage Klarna orders.
  • Branding App: Manage how to display your brand assets on Klarna’s customer touchpoints.
  • On-Site Messaging App: Manage how you communicate the different Klarna payment options to your customer.

Sending extra merchant data

❗️

Caution

The external merchant data is not the same as orderitems.

Merchants can, for example, enable purchasing airline tickets using Klarna. For this scenario, and others, make sure you follow Klarna's recommendations for sending extra merchant data. See this guide for details and examples of external merchant data. More API details can be found here.

🚧

Important

PPRO does not validate extra merchant data. Make sure you send the correct information.

Branding Guidelines

For information regarding branding, see the Klarna official website.