Klarna

Klarna is a sweedish based e-commerce company that provides payment services for online stores. When a purchase is completed, Klarna will pay the merchant instantly, but will bill the acquirer upon receiving the goods.

Klarna allows the user to pay only with an email address and a delivery address - no password. They operate in Sweden, Norway, Denmark, Germany, Netherlands, Finland, United Kingdom, Austria and United States.

Klarna is available for Professional accounts.

How does it work for the user?

After checkout, the customer must only insert email, zip code and a billing address. For returning customers it’s a one tap payment experience: the system will recognize you and will avoid to reintroduce sensitive data. This has prooved to be effective especially with mobile payments.

How do I activate it on Gestpay?

Contact Gestpay support to add Klarna to your payment options.

Klarna requires you to accept their terms and conditions, and they will also perform some tests to verify that the User Experience is ok.

If you satisfy these requirements, you will finally be able to use Klarna with Gestpay.

Klarna permits to authorize a payment and settle it in max 14 days. This is different from the default Gestpay behaviour of 25 days.

How do I use it on Gestpay?

If you want to use the paymentType tag for this method, the value to use is S2PKLA. See the section How to redirect the customer to a payment method to learn how to use the paymentType tag.

Please refer to the API section on how to use Klarna on Gestpay.

Some clarifications on mandatory fields

To work with Klarna, there are some mandatory parameters, children of OrderDetails:

1. Billing Details specification

Based on the buyer’s country, you might need to set fields differently.

Some exception apply to DE and NL Countries:

2. Optional details

The remaining data, besides product & billing details, should be sent in full (ie: customer FirstName; customer LastName; phone, email address, social security number). However, these details can be added on Klarna’s page if not sent by Merchant.

3. Handling Failure on Klarna page

If the phone is not sent in the request and if on Klarna the customer enters incorrect details for this parameter, the customer will be redirected to the Failed page, without the possibility to re-enter the phone details. This does not apply for sandbox environment.

Credentials for test environment

Ask Gestpay customer support to enable Klarna in test environments.

You can use the following parameters value in order to test Klarna in test (testecomm.sella.it) environment. Use low amount like 10.00 EUR. Remember to set the mandatory fields:

When landing of Klarna payment page use the following parameter to fill the field or send it directly in the parameters like as described above in order to have a successful test payment:


Here are the same values in a better copy-and-paste format:

Partial reversal

This Partial reversal operation is available if merchants using Klarna Alternatives Payment with the Payment Page.

Klarna payment is only available using Encrypt and the Payment Page; it is not available with Server-to-Server calls. However, the Klarna Partial Refund operation is exposed via Server-to-Server API.

From the Merchant Back-Office it’s possible to do a Klarna total refund, but not a partial refund. Partial refunds are available via CallRefundS2S; This function allows the merchant to partially reverse an unsettled Klarna transaction.

Klarna needs the product details of the refund, and to do this Merchants must add some additional fields of order details.

For the partial Refund Klarna need mandatory fields like ProductCode and Quantity present in the Authorization.

For example, if you do a call to Pagam (Encrypt) with this OrderDetails:

<Encrypt>
  <!-- total, shop login, currency, etc removed for clarity... --> 
  ...
  <!-- in this example, the buyer is buying two products -->
  <paymentTypes>
    <paymentType>S2PKLA</paymentType>
  </paymentTypes>
  <OrderDetails>
    <ecom:ProductDetails>
      <!-- product 1 --> 
      <ecom:ProductDetail>
        <ecom:ProductCode>1</ecom:ProductCode>
        <ecom:SKU></ecom:SKU>
        <ecom:Name>aaa</ecom:Name>
        <ecom:Description></ecom:Description>
        <ecom:Quantity>1</ecom:Quantity>
        <ecom:Price>5</ecom:Price>
        <ecom:UnitPrice></ecom:UnitPrice>
        <ecom:Type>1</ecom:Type>
        <ecom:Vat>10</ecom:Vat>
        <ecom:Discount>0</ecom:Discount>
      </ecom:ProductDetail>
      <!-- product 2 --> 
      <ecom:ProductDetail>
        <ecom:ProductCode>2</ecom:ProductCode>
        <ecom:SKU></ecom:SKU>
        <ecom:Name>bbb</ecom:Name>
        <ecom:Description></ecom:Description>
        <ecom:Quantity>1</ecom:Quantity>
        <ecom:Price>5</ecom:Price>
        <ecom:UnitPrice></ecom:UnitPrice>
        <ecom:Type>1</ecom:Type>
        <ecom:Vat>10</ecom:Vat>
        <ecom:Discount>0</ecom:Discount>
      </ecom:ProductDetail>
    </ecom:ProductDetails>
  </OrderDetails>
</Encrypt>

You can refund partially the transaction with sending OrderDetails to CallRefundS2S, like this:

<eco:callRefundS2S>
  <!-- shopLogin, amount, and other data as usual... -->
  ... 
  <eco:OrderDetail>
    <ecom:ProductDetails>
    <!-- we are refunding product n.2 -->
      <ecom:ProductDetail>
        <ecom:ProductCode>2</ecom:ProductCode>
        <ecom:SKU></ecom:SKU>
        <ecom:Name>bbb</ecom:Name>
        <ecom:Description></ecom:Description>
        <ecom:Quantity>1</ecom:Quantity>
        <ecom:Price>5</ecom:Price>
        <ecom:UnitPrice></ecom:UnitPrice>
        <ecom:Type>1</ecom:Type>
        <ecom:Vat>10</ecom:Vat>
        <ecom:Discount>0</ecom:Discount>
      </ecom:ProductDetail>
    </ecom:ProductDetails>
  </eco:OrderDetail>
</eco:callRefundS2S>