# Klarna

Klarna is a global payment solution that offers Buy Now, Pay Later options.

Note
Make yourself familiar with our [API principles](/access/products/reference/api-principles) to ensure a resilient integration.

details
summary
Product overview
#### Capabilities

Klarna allows your customer to:

* defer payment by 30 days
* spread the cost over a period of up to 36 months (with financing)
* pay the full amount immediately with "Pay Now" for card, local domestic or local bank transfer payments
* spread the cost over three (four in some markets) equal interest-free installments


Klarna manages the relationship and collection of future installment payments directly with your customer. You receive full funding upfront and are protected from the risk of unpaid installments.

Note
For recurring integrations, please see [Klarna (recurring)](/access/products/apms/klarna-recurring).

#### Brand and marketing guidelines

Follow the link for the latest guidelines from [Klarna](https://docs.klarna.com/marketing/solutions/grab-and-go/).

#### Feature summary

| Payment type | Countries | Recurring | Reversals | Partial reversals | Disputes | Auth only | Auth and settlement (sale) |
|  --- | --- | --- | --- | --- | --- | --- | --- |
| Pay Now, Pay in Parts, Pay Later, Financing | CH, CZ, DK, AT, BE, FI, FR, DE, GR, IE, IT, NL, PT, SK, ES, GB, NO, PL, AU, CA, HU, MX, NZ, RO, SE, US | ❌ |  Refund - yes Cancel - yes | Partial refund - yesPartial cancel - no | Handled directly via Klarna. We deduct the funds if the dispute is lost. | ✅ | ✅ |


Klarna sets transaction limits, which are regularly updated and dependent upon the merchant, payment option, and your customer's purchase history.

As a general guideline, limits typically range from 0,00 EUR to 10.000,00 EUR.

Note
Refunds are completed through Klarna, arriving in your customer's account within 365 days. You can submit multiple partial refunds for one payment.

#### Acceptance currencies

| Currency | Currency codes |
|  --- | --- |
| Czech Koruna | CZK |
| Danish Krone | DKK |
| Euro | EUR |
| Norwegian Krone | NOK |
| Polish Złoty | PLN |
| Pound Sterling | GBP |
| Swedish Krona | SEK |
| Swiss Franc | CHF |


### Customer journey and integration options

#### Full page redirect - APMs API only

The simplest integration option.

Your customer is redirected from your site to Klarna’s hosted payment page to complete their payment.

You create a Klarna order using our APMs API, which returns a URL for the Klarna payment page that you redirect your customer to. After the transaction is completed, your customer is automatically redirected back to your site. You receive the payment confirmation asynchronously from us.

On completion of the payment journey, your customer receives a payment receipt from Klarna.


Klarna redirect flow
1. Your customer chooses Klarna as their payment method.
2. They log into Klarna (or create an account).
3. Your customer chooses how they would like to pay (options differ per market).
4. They set their funding source.
5. Your customer confirms the payment.
6. Klarna confirms that the payment is successful and returns your customer to your checkout confirmation page.


#### Klarna Web SDK presentation

Requires additional development effort but provides an optimized customer experience, as the entire payment process takes place within your site using Klarna’s Web SDK.

With this fully integrated checkout flow, you can dynamically display Klarna’s branding, payment descriptors, and personalized messaging on your checkout pages.

You can present the Klarna payment page in a pop-up box over your website, allowing your customer to complete payment without a full-page redirect (although this is still possible if you wish). 

Klarna provides two options for integration: 

* **Option 1: Klarna Web SDK + our APMs API** 
You embed Klarna’s Web SDK directly into your checkout page. You create the request with our APMs API and the response is used to initialize the Klarna SDK, which then displays the payment interface on your site. You receive the payment confirmation asynchronously from us.
* **Option 2: Klarna Web SDK + Klarna API/webhooks + our APMs API**
You embed Klarna’s Web SDK in your checkout page and integrate with Klarna’s API and webhooks. You create and manage the Klarna session directly with Klarna through server-side calls. As a final step, you provide the “Klarna Network Session Token” as the `providerToken` to the APMs API to complete the payment.


Klarna Web SDK presentation
1. Your customer reviews all available payment methods on your checkout page. Klarna is presented with dynamic text.
2. They select Klarna and are presented with an illustration of a possible split. The Pay button is dynamically updated to “Pay with Klarna”.
3. Your customer logs into Klarna (or creates an account). They choose how they would like to pay (options differ per market).
4. Your customer sets their funding source.
5. They confirm the payment.
6. Klarna confirms that the payment is successful and returns your customer to your checkout confirmation page.


## Get started

Use our [API reference](/access/products/apms/openapi) and set your headers.

## Request

`POST` `https://try.access.worldpay.com/apmPayments`

### Example request

Guest
### Parameters

Recommendation
We suggest you provide the `cancelURL`,`failureURL`, `pendingURL` and  `successURL` attribute to redirect your customer to, once you have received the payment result.

## Response

### Example response

Guest response

```json
{
  "paymentInstrument": {
    "method": "klarna_network",
    "type": "direct"
  },
  "paymentId": "eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.BnnxxcMle38OazhwbF8J+4rtJi8CAq:Y3zUOn1dw6VWfvx:PHL5L0S+5ara5vz6ouV5yBmVUQCiSwQjs+1x5qJIJxAKWMWc2Mlb1doricEYlzsZIRIGCflvnYu1Ns8g1S0+66n6wCELiB9OHfX7cdCRSkT0a4UjAkBr16y36rhHD8i3MfeowBaRA60gR5WdTem66NOYspir3PJsMwGsI7JUSNUzNfcyYf:9A8ONjOcqG6UxedN+MVzWk3lOYs4HS580KRMMNREpmBeBMSEX5ykio0WGxZ:7eYQxnPFsTnA:7:SEfTDcAZofBDiAWAe+s8H9:TD3hQpRcoIM3I9mxkgdPhXDL2OFpFf7pNzE4GPA9QEPQrIYQg:q3eZ7ziTPGD:iOAJXRIEuMq+GdkYs3SWlTzbiGM76:BcqQDY0BAUI9GaFhKLR:b0g9SIKK71Rk9YpTLeiVSfZMnt+9116oW2VHgWW6AoAt202XuJ0AU7aToTM6HDqlAkiOs66Po3TBIlIqmMW0DQb44taw0DeEnQ==",
  "lastEvent": "pending",
  "_links": {
    "self": {
      "href": "https://try.access.worldpay.com/apmPayments/eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.BnnxxcMle38OazhwbF8J+4rtJi8CAq:Y3zUOn1dw6VWfvx:PHL5L0S+5ara5vz6ouV5yBmVUQCiSwQjs+1x5qJIJxAKWMWc2Mlb1doricEYlzsZIRIGCflvnYu1Ns8g1S0+66n6wCELiB9OHfX7cdCRSkT0a4UjAkBr16y36rhHD8i3MfeowBaRA60gR5WdTem66NOYspir3PJsMwGsI7JUSNUzNfcyYf:9A8ONjOcqG6UxedN+MVzWk3lOYs4HS580KRMMNREpmBeBMSEX5ykio0WGxZ:7eYQxnPFsTnA:7:SEfTDcAZofBDiAWAe+s8H9:TD3hQpRcoIM3I9mxkgdPhXDL2OFpFf7pNzE4GPA9QEPQrIYQg:q3eZ7ziTPGD:iOAJXRIEuMq+GdkYs3SWlTzbiGM76:BcqQDY0BAUI9GaFhKLR:b0g9SIKK71Rk9YpTLeiVSfZMnt+9116oW2VHgWW6AoAt202XuJ0AU7aToTM6HDqlAkiOs66Po3TBIlIqmMW0DQb44taw0DeEnQ=="
    }
  },
  "_actions": {},
  "redirect": "https://secure-test.worldpay.com/jsp/test/shopper/APMSTSimulator.jsp?customerRef=3501456267&paymentMethod=KLARNA_NETWORK",
  "commandId": "cmdF3buj-w58hiyu4I-QZqZi0"
}
```

Error response

```json
{
  "errorName": "bodyDoesNotMatchSchema",
  "message": "The json body provided does not match the expected schema",
  "validationErrors": [
    {
      "errorName": "fieldHasInvalidValue",
      "message": "Field is mandatory",
      "jsonPath": "$.instruction.value.amount"
    }
  ]
}
```

### Schema

#### Errors

Check out our API reference for [more responses or error codes](/access/products/apms/openapi/other/payment#other/payment/response&c=400).

## Simulation

To simulate payment outcomes and trigger webhooks in our Try environment you can send a request prompting our simulator.

You receive a `redirect` link to our simulator where you can choose different payment outcomes:

| Simulator outcome option | Payment status | Description |
|  --- | --- | --- |
| Authorised | `authorized` | Payment authorized successfully. |
| Refused | `refused` | Unsuccessful payment - failure response from the provider. |
| Error | `error` | Error in processing the payment or the session timed out. |
| Shopper Cancelled | `cancelled` | Your customer cancelled the transaction. |


You can also send requests to settlement or reversal endpoints to test the following statuses:

- `sentForSettlement`
- `sentForRefund`


**Next steps**

[Manage your Klarna payment](/access/products/apms/manage/)