Klarna Pay Later allows customers to split up their payments into several rates. If you have set up a Klarna agreement on the Acquiring page in Billwerk+ administration, the payment option will automatically be presented in Billwerk+ Checkout.

📘

Notice

Klarna payment option is only presented if the currency is supported by Klarna.

📈 Creating a Klarna Checkout Session

📘

Notice

It is a Klarna requirement that you send in order lines for a Klarna Payment. This allows for an accurate calculation of VAT per item in the basket and will give a more detailed Klarna invoice.

A billing address is required by Klarna. Note that it is not sufficient to reference a customer object. You will have to explicitly set a billing address field on the order-object of the charge call.

Sample request

curl -X POST \
  --url https://checkout-api.reepay.com/v1/session/charge \
  -u 'priv_xxxx:' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  --data '{
    "order": {
        "customer_handle": "cust-0001",
        "handle": "klarna-test-1",
        "currency": "DKK",
        "order_lines":[
          {
            "ordertext":"Order text",
            "amount": 1000,
            "vat": 0.25,
            "quantity":1,
            "amount_incl_vat": "true"
          }],
        "settle":false,
        "billing_address":{
          "address":"Strøget 15",
          "city":"Hornbæk","country":"DK",
          "email":"[email protected]","first_name":"Gorm","last_name":"Bøgh",
          "postal_code":"3100","phone":"12345678"
        }
  }
}'

 

💵 Klarna as the only payment option

If you would like Klarna to be presented as the only option in Billwerk + Payments Checkout, you can use the payment_methods parameter in the create session call. This will automatically expand the Klarna payment option.

Sample

curl -X POST \
  --url https://checkout-api.reepay.com/v1/session/charge \
  -u 'priv_xxxx:' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  --data '{
    "payment_methods": ["klarna_pay_later"],
    "order": {
        "customer_handle": "cust-0001",
        "handle": "klarna-test-1",
        "currency": "DKK",
        "order_lines":[
          {
            "ordertext":"Order text",
            "amount": 1000,
            "vat": 0.25,
            "quantity":1,
            "amount_incl_vat": "true"
          }],
        "settle":false,
        "billing_address":{
          "address":"Strøget 15",
          "city":"Hornbæk","country":"DK",
          "email":"[email protected]","first_name":"Gorm","last_name":"Bøgh",
          "postal_code":"3100","phone":"12345678"
        }
  }
}'

🔎 Custom arguments

Custom arguments can be passed to Klarna in the optional session_data object. These data are only stored for the duration of the checkout session.

ParameterDescription
ssnOptional value containing the customer's social security number.

📈 Test of Klarna

In order to test Klarna before going live, you can create a Klarna "Playground" account. This provides you with a test API username and test API key. Billwerk + Payments support can setup a Klarna test acquiring agreement on your Billwerk + Payments test account. Klarna provides test data in order to test both the success case ("approved") and rejections of payments.

The test credentials can be found here:

https://developers.klarna.com/documentation/testing-environment/sample-data/

with a page for each country, e.g. for Denmark:

https://developers.klarna.com/documentation/testing-environment/sample-data/dk/

📑 Klarna - pending orders

Billwerk+ Payments does not support Klarna's "pending" state. This state indicates a payment at a later stage will either be accepted or rejected.

Pending Klarna orders will simply be rejected by the Billwerk+ Payments system.


What’s Next