---
title: "Billie via Klarna"
description: "Accept Billie payments through a connection with Klarna."
url: "https://docs.adyen.com/payment-methods/klarna/billie"
source_url: "https://docs.adyen.com/payment-methods/klarna/billie.md"
canonical: "https://docs.adyen.com/payment-methods/klarna/billie"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# Billie via Klarna

Accept Billie payments through a connection with Klarna.

[View source](/payment-methods/klarna/billie.md)

![payment-methods-icon](/images/c/a/4/3/6/ca436600345a6d568a73c72b3597f0e83e884018-billie.png)  **Read more**

Read more about Billie on [their website](https://www.billie.io).

Billie is a Berlin-based Buy Now Pay Later (BNPL) provider that specializes in providing open invoice and deferred payment options to Business-to-Business (B2B) customers. With Billie, merchants can accept invoice payments that are immediately settled in full.

Adyen offers Billie through a Klarna integration.

| Payment type      | Payment flow            | Countries     | Currencies         | [Recurring](/online-payments/tokenization) | [Refunds](/online-payments/refund)                           | [Partial refunds](/online-payments/refund/#refund-a-payment) | [Multiple partial refunds](/online-payments/refund)          | [Separate captures](/online-payments/capture)                | [Partial captures](/online-payments/capture/#partial-capture) | [Multiple partial captures](/online-payments/capture/#multiple-partial-captures) | [Chargebacks](/risk-management/chargeback-guidelines)        |
| ----------------- | ----------------------- | ------------- | ------------------ | ------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| Buy Now Pay Later | Redirect, Inline widget | International | EUR, GBP, NOK, SEK | ![x](/user/data/smileys/emoji/x.png)       | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)  | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)  | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)  | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)  | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)   | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)                      | ![checkmark](/user/data/smileys/emoji/white_check_mark.png)  |

## Requirements

| Requirement          | Description                                                                                                                                                                            |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration type** | Make sure that you have built your [Klarna integration](/payment-methods/klarna) for the intended platform (Web, iOS, Android, React) and integration (API-only, Drop-in, Components). |
| **Setup steps**      | Before you begin, [add Billie in your test Customer Area](/payment-methods/add-payment-methods).                                                                                       |

## Required fields

Billie is an extension to a Klarna integration. Wherever you must specify `paymentMethod.type`, use **klarna\_b2b** to process a Billie payment.

Billie requires that your payment request includes the [shopperName](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-shopperName) object and the [company](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-company) object, which contains details about the company you are invoicing:

| Parameter                    | Required                                                                                    | Description                                                                                                                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `company.name`               | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The company name.                                                                                                                                                                      |
| `company.homepage`           |                                                                                             | The company website's home page.                                                                                                                                                       |
| `company.registrationNumber` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The company's registration number. Required for all countries except DE and AT.                                                                                                        |
| `company.registryLocation`   |                                                                                             | The country code where the company is located. Format: the two-letter [ISO-3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. Exception: **QZ** (Kosovo). |
| `company.taxId`              |                                                                                             | The company's tax ID.                                                                                                                                                                  |
| `company.type`               |                                                                                             | The company's type. For example, **GmbH** or **AB**.                                                                                                                                   |

## Payment request and response

The following is a sample [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request for Billie. Note the required `paymentMethod` and `company` objects:

**Sample Billie request**

#### curl

```bash
curl https://checkout-test.adyen.com/v72/payments \
-H 'x-api-key: ADYEN_API_KEY' \
-H 'content-type: application/json' \
-d '{
    "merchantAccount":"ADYEN_MERCHANT_ACCOUNT",
    "reference":"YOUR_ORDER_REFERENCE",
    "paymentMethod":{
       "type":"klarna_b2b",
    },
    "amount":{
       "currency":"EUR",
       "value": 50000
    },
    "shopperLocale":"de_DE",
    "countryCode":"DE",
    "telephoneNumber": "+49 840 839 298",
    "shopperEmail":"youremail@email.com",
    "shopperName":{
        "firstName":"Testperson-de",
        "lastName":"Approved"
    },
    "shopperReference":"YOUR_UNIQUE_SHOPPER_ID",
    "billingAddress":{
        "city":"Berlin",
        "country":"DE",
        "houseNumberOrName":"4",
        "postalCode":"10969",
        "street":"Charlottenstrasse"
    },
    "returnUrl":"https://your-company.example.com/?shopperOrder=12xy..",
    "company":{
        "homepage":"https://www.billie.io/",
        "name":"Billie GmbH",
        "registrationNumber":"HRB182428",
        "registryLocation":"DE",
        "taxId":"DE310295470",
        "type":"GmbH"
    },
    "lineItems":[
        {
           "quantity":"1",
           "taxPercentage":"2100",
           "description":"Hammer",
           "id":"Item #1",
           "amountIncludingTax":"20000",
           "productUrl": "URL_TO_PURCHASED_ITEM",
           "imageUrl": "URL_TO_PICTURE_OF_PURCHASED_ITEM"
       },
       {
           "quantity":"2",
           "taxPercentage":"2100",
           "description":"Nails",
           "id":"Item #2",
           "amountIncludingTax":"15000",
           "productUrl": "URL_TO_PURCHASED_ITEM",
           "imageUrl": "URL_TO_PICTURE_OF_PURCHASED_ITEM"
       }
   ]
}'
```

#### Java

```java
// Adyen Java API Library v25.0.0
import com.adyen.Client;
import com.adyen.enums.Environment;
import com.adyen.model.checkout.*;
import java.time.OffsetDateTime;
import java.util.*;
import com.adyen.model.RequestOptions;
import com.adyen.service.checkout.*;

Client client = new Client("ADYEN_API_KEY", Environment.TEST);

// Request objects
Amount amount = new Amount()
	.currency("EUR")
	.value(50000L);

LineItem lineItem1 = new LineItem()
	.quantity(1L)
	.taxPercentage(2100L)
	.imageUrl("URL_TO_PICTURE_OF_PURCHASED_ITEM")
	.description("Hammer")
	.id("Item #1")
	.amountIncludingTax(20000L)
	.productUrl("URL_TO_PURCHASED_ITEM");

LineItem lineItem2 = new LineItem()
	.quantity(2L)
	.taxPercentage(2100L)
	.imageUrl("URL_TO_PICTURE_OF_PURCHASED_ITEM")
	.description("Nails")
	.id("Item #2")
	.amountIncludingTax(15000L)
	.productUrl("URL_TO_PURCHASED_ITEM");

Name name = new Name()
	.firstName("Testperson-de")
	.lastName("Approved");

KlarnaDetails klarnaDetails = new KlarnaDetails()
	.subtype("sdk")
	.type(KlarnaDetails.TypeEnum.KLARNA_B2B);

Company company = new Company()
	.registrationNumber("HRB182428")
	.registryLocation("DE")
	.taxId("DE310295470")
	.name("Billie GmbH")
	.type("GmbH")
	.homepage("https://www.billie.io/");

BillingAddress billingAddress = new BillingAddress()
	.country("DE")
	.city("Berlin")
	.houseNumberOrName("4")
	.street("Charlottenstrasse")
	.postalCode("10969");

PaymentRequest paymentRequest = new PaymentRequest()
	.amount(amount)
	.telephoneNumber("+49 840 839 298")
	.shopperEmail("youremail@email.com")
	.reference("YOUR_ORDER_REFERENCE")
	.lineItems(Arrays.asList(lineItem1, lineItem2))
	.shopperName(name)
	.merchantAccount("ADYEN_MERCHANT_ACCOUNT")
	.countryCode("DE")
	.paymentMethod(new CheckoutPaymentMethod(klarnaDetails))
	.company(company)
	.shopperLocale("de_DE")
	.billingAddress(billingAddress)
	.returnUrl("https://your-company.example.com/?shopperOrder=12xy..")
	.shopperReference("YOUR_UNIQUE_SHOPPER_ID");

// Make the request
PaymentsApi service = new PaymentsApi(client);
PaymentResponse response = service.payments(paymentRequest, new RequestOptions().idempotencyKey("UUID"));
```

#### PHP

```php
// Adyen PHP API Library v17.4.0
use Adyen\Client;
use Adyen\Environment;
use Adyen\Model\Checkout\Amount;
use Adyen\Model\Checkout\LineItem;
use Adyen\Model\Checkout\Name;
use Adyen\Model\Checkout\CheckoutPaymentMethod;
use Adyen\Model\Checkout\Company;
use Adyen\Model\Checkout\BillingAddress;
use Adyen\Model\Checkout\PaymentRequest;
use Adyen\Service\Checkout\PaymentsApi;

$client = new Client();
$client->setXApiKey("ADYEN_API_KEY");
$client->setEnvironment(Environment::TEST);


// Request objects
$amount = new Amount();
$amount
	->setCurrency("EUR")
	->setValue(50000);

$lineItem1 = new LineItem();
$lineItem1
	->setQuantity(1)
	->setTaxPercentage(2100)
	->setImageUrl("URL_TO_PICTURE_OF_PURCHASED_ITEM")
	->setDescription("Hammer")
	->setId("Item #1")
	->setAmountIncludingTax(20000)
	->setProductUrl("URL_TO_PURCHASED_ITEM");

$lineItem2 = new LineItem();
$lineItem2
	->setQuantity(2)
	->setTaxPercentage(2100)
	->setImageUrl("URL_TO_PICTURE_OF_PURCHASED_ITEM")
	->setDescription("Nails")
	->setId("Item #2")
	->setAmountIncludingTax(15000)
	->setProductUrl("URL_TO_PURCHASED_ITEM");

$name = new Name();
$name
	->setFirstName("Testperson-de")
	->setLastName("Approved");

$checkoutPaymentMethod = new CheckoutPaymentMethod();
$checkoutPaymentMethod
	->setSubtype("sdk")
	->setType("klarna_b2b");

$company = new Company();
$company
	->setRegistrationNumber("HRB182428")
	->setRegistryLocation("DE")
	->setTaxId("DE310295470")
	->setName("Billie GmbH")
	->setType("GmbH")
	->setHomepage("https://www.billie.io/");

$billingAddress = new BillingAddress();
$billingAddress
	->setCountry("DE")
	->setCity("Berlin")
	->setHouseNumberOrName("4")
	->setStreet("Charlottenstrasse")
	->setPostalCode("10969");

$paymentRequest = new PaymentRequest();
$paymentRequest
	->setAmount($amount)
	->setTelephoneNumber("+49 840 839 298")
	->setShopperEmail("youremail@email.com")
	->setReference("YOUR_ORDER_REFERENCE")
	->setLineItems(array($lineItem1, $lineItem2))
	->setShopperName($name)
	->setMerchantAccount("ADYEN_MERCHANT_ACCOUNT")
	->setCountryCode("DE")
	->setPaymentMethod($checkoutPaymentMethod)
	->setCompany($company)
	->setShopperLocale("de_DE")
	->setBillingAddress($billingAddress)
	->setReturnUrl("https://your-company.example.com/?shopperOrder=12xy..")
	->setShopperReference("YOUR_UNIQUE_SHOPPER_ID");

$requestOptions['idempotencyKey'] = 'UUID';

// Make the request
$service = new PaymentsApi($client);
$response = $service->payments($paymentRequest, $requestOptions);
```

#### C\#

```cs
// Adyen .net API Library v14.3.0
using Adyen;
using Environment = Adyen.Model.Environment;
using Adyen.Model;
using Adyen.Model.Checkout;
using Adyen.Service.Checkout;

var config = new Config()
{
    XApiKey = "ADYEN_API_KEY",
    Environment = Environment.Test
};
var client = new Client(config);

// Fill in your request objects
Amount amount = new Amount
{
	Currency = "EUR",
	Value = 50000
};

LineItem lineItem1 = new LineItem
{
	Quantity = 1,
	TaxPercentage = 2100,
	ImageUrl = "URL_TO_PICTURE_OF_PURCHASED_ITEM",
	Description = "Hammer",
	Id = "Item #1",
	AmountIncludingTax = 20000,
	ProductUrl = "URL_TO_PURCHASED_ITEM"
};

LineItem lineItem2 = new LineItem
{
	Quantity = 2,
	TaxPercentage = 2100,
	ImageUrl = "URL_TO_PICTURE_OF_PURCHASED_ITEM",
	Description = "Nails",
	Id = "Item #2",
	AmountIncludingTax = 15000,
	ProductUrl = "URL_TO_PURCHASED_ITEM"
};

Name name = new Name
{
	FirstName = "Testperson-de",
	LastName = "Approved"
};

KlarnaDetails klarnaDetails = new KlarnaDetails
{
	Subtype = "sdk",
	Type = KlarnaDetails.TypeEnum.KlarnaB2b
};

Company company = new Company
{
	RegistrationNumber = "HRB182428",
	RegistryLocation = "DE",
	TaxId = "DE310295470",
	Name = "Billie GmbH",
	Type = "GmbH",
	Homepage = "https://www.billie.io/"
};

BillingAddress billingAddress = new BillingAddress
{
	Country = "DE",
	City = "Berlin",
	HouseNumberOrName = "4",
	Street = "Charlottenstrasse",
	PostalCode = "10969"
};

PaymentRequest paymentRequest = new PaymentRequest
{
	Amount = amount,
	TelephoneNumber = "+49 840 839 298",
	ShopperEmail = "youremail@email.com",
	Reference = "YOUR_ORDER_REFERENCE",
	LineItems = new List<LineItem>{ lineItem1, lineItem2 },
	ShopperName = name,
	MerchantAccount = "ADYEN_MERCHANT_ACCOUNT",
	CountryCode = "DE",
	PaymentMethod = new CheckoutPaymentMethod(klarnaDetails),
	Company = company,
	ShopperLocale = "de_DE",
	BillingAddress = billingAddress,
	ReturnUrl = "https://your-company.example.com/?shopperOrder=12xy..",
	ShopperReference = "YOUR_UNIQUE_SHOPPER_ID"
};

// Make the request
var service = new PaymentsService(client);
var response = service.Payments(paymentRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"});
```

#### NodeJS (JavaScript)

```js
// Adyen Node API Library v16.1.0
// Require the parts of the module you want to use
const { Client, CheckoutAPI } = require('@adyen/api-library');

// Initialize the client object
const client = new Client({apiKey: "YOUR_X_API_KEY", environment: "TEST"});

// Create the request object
const paymentRequest = {
  merchantAccount: "YOUR_MERCHANT_ACCOUNT",
  reference: "YOUR_ORDER_REFERENCE",
  paymentMethod: {
    type: "klarna_b2b",
  },
  amount: {
    currency: "EUR",
    value: 50000
  },
  shopperLocale: "de_DE",
  countryCode: "DE",
  telephoneNumber: "+49 840 839 298",
  shopperEmail: "youremail@email.com",
  shopperName: {
    firstName: "Testperson-de",
    lastName: "Approved"
  },
  shopperReference: "YOUR_UNIQUE_SHOPPER_ID",
  billingAddress: {
    city: "Berlin",
    country: "DE",
    houseNumberOrName: "4",
    postalCode: "10969",
    street: "Charlottenstrasse"
  },
  returnUrl: "https://your-company.example.com/?shopperOrder=12xy..",
  company: {
    homepage: "https://www.billie.io/",
    name: "Billie GmbH",
    registrationNumber: "HRB182428",
    registryLocation: "DE",
    taxId: "DE310295470",
    type: "GmbH"
  },
  lineItems: [ {
    quantity: "1",
    taxPercentage: "2100",
    description: "Hammer",
    id: "Item #1",
    amountIncludingTax: "20000",
    productUrl: "URL_TO_PURCHASED_ITEM",
    imageUrl: "URL_TO_PICTURE_OF_PURCHASED_ITEM"
  }, {
    quantity: "2",
    taxPercentage: "2100",
    description: "Nails",
    id: "Item #2",
    amountIncludingTax: "15000",
    productUrl: "URL_TO_PURCHASED_ITEM",
    imageUrl: "URL_TO_PICTURE_OF_PURCHASED_ITEM"
  } ]
}

// Make the request
const checkoutAPI = new CheckoutAPI(client);
const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" });
```

#### Go

```go
// Adyen Go API Library v9.2.0
import (
	"context"
	"github.com/adyen/adyen-go-api-library/v9/src/common"
	"github.com/adyen/adyen-go-api-library/v9/src/adyen"
	"github.com/adyen/adyen-go-api-library/v9/src/checkout"
)

client := adyen.NewClient(&common.Config{
    ApiKey:      "ADYEN_API_KEY",
    Environment: common.TestEnv,
})

// Fill in your request objects
amount := checkout.Amount{
	Currency: "EUR",
	Value: 50000,
}

lineItem1 := checkout.LineItem{
	Quantity: common.PtrInt64(1),
	TaxPercentage: common.PtrInt64(2100),
	ImageUrl: common.PtrString("URL_TO_PICTURE_OF_PURCHASED_ITEM"),
	Description: common.PtrString("Hammer"),
	Id: common.PtrString("Item #1"),
	AmountIncludingTax: common.PtrInt64(20000),
	ProductUrl: common.PtrString("URL_TO_PURCHASED_ITEM"),
}

lineItem2 := checkout.LineItem{
	Quantity: common.PtrInt64(2),
	TaxPercentage: common.PtrInt64(2100),
	ImageUrl: common.PtrString("URL_TO_PICTURE_OF_PURCHASED_ITEM"),
	Description: common.PtrString("Nails"),
	Id: common.PtrString("Item #2"),
	AmountIncludingTax: common.PtrInt64(15000),
	ProductUrl: common.PtrString("URL_TO_PURCHASED_ITEM"),
}

name := checkout.Name{
	FirstName: "Testperson-de",
	LastName: "Approved",
}

klarnaDetails := checkout.KlarnaDetails{
	Subtype: common.PtrString("sdk"),
	Type: "klarna_b2b",
}

company := checkout.Company{
	RegistrationNumber: common.PtrString("HRB182428"),
	RegistryLocation: common.PtrString("DE"),
	TaxId: common.PtrString("DE310295470"),
	Name: common.PtrString("Billie GmbH"),
	Type: common.PtrString("GmbH"),
	Homepage: common.PtrString("https://www.billie.io/"),
}

billingAddress := checkout.BillingAddress{
	Country: "DE",
	City: "Berlin",
	HouseNumberOrName: "4",
	Street: "Charlottenstrasse",
	PostalCode: "10969",
}

paymentRequest := checkout.PaymentRequest{
	Amount: amount,
	TelephoneNumber: common.PtrString("+49 840 839 298"),
	ShopperEmail: common.PtrString("youremail@email.com"),
	Reference: "YOUR_ORDER_REFERENCE",
	LineItems: []checkout.LineItem{
			lineItem1, lineItem2,
	},
	ShopperName: &name,
	MerchantAccount: "ADYEN_MERCHANT_ACCOUNT",
	CountryCode: common.PtrString("DE"),
	PaymentMethod: checkout.KlarnaDetailsAsCheckoutPaymentMethod(&klarnaDetails),
	Company: &company,
	ShopperLocale: common.PtrString("de_DE"),
	BillingAddress: &billingAddress,
	ReturnUrl: "https://your-company.example.com/?shopperOrder=12xy..",
	ShopperReference: common.PtrString("YOUR_UNIQUE_SHOPPER_ID"),
}

// Make the request
service := client.Checkout()
req := service.PaymentsApi.PaymentsInput().IdempotencyKey("UUID").PaymentRequest(paymentRequest)
res, httpRes, err := service.PaymentsApi.Payments(context.Background(), req)
```

#### Python

```py
# Adyen Python API Library v12.0.0
import Adyen

adyen = Adyen.Adyen()
adyen.client.xapikey = "ADYEN_API_KEY"
adyen.client.platform = "test" # The environment to use library in.

json_request = {
  "merchantAccount": "ADYEN_MERCHANT_ACCOUNT",
  "reference": "YOUR_ORDER_REFERENCE",
  "paymentMethod": {
    "type": "klarna_b2b",
  },
  "amount": {
    "currency": "EUR",
    "value": 50000
  },
  "shopperLocale": "de_DE",
  "countryCode": "DE",
  "telephoneNumber": "+49 840 839 298",
  "shopperEmail": "youremail@email.com",
  "shopperName": {
    "firstName": "Testperson-de",
    "lastName": "Approved"
  },
  "shopperReference": "YOUR_UNIQUE_SHOPPER_ID",
  "billingAddress": {
    "city": "Berlin",
    "country": "DE",
    "houseNumberOrName": "4",
    "postalCode": "10969",
    "street": "Charlottenstrasse"
  },
  "returnUrl": "https://your-company.example.com/?shopperOrder=12xy..",
  "company": {
    "homepage": "https://www.billie.io/",
    "name": "Billie GmbH",
    "registrationNumber": "HRB182428",
    "registryLocation": "DE",
    "taxId": "DE310295470",
    "type": "GmbH"
  },
  "lineItems": [ {
    "quantity": "1",
    "taxPercentage": "2100",
    "description": "Hammer",
    "id": "Item #1",
    "amountIncludingTax": "20000",
    "productUrl": "URL_TO_PURCHASED_ITEM",
    "imageUrl": "URL_TO_PICTURE_OF_PURCHASED_ITEM"
  }, {
    "quantity": "2",
    "taxPercentage": "2100",
    "description": "Nails",
    "id": "Item #2",
    "amountIncludingTax": "15000",
    "productUrl": "URL_TO_PURCHASED_ITEM",
    "imageUrl": "URL_TO_PICTURE_OF_PURCHASED_ITEM"
  } ]
}

result = adyen.checkout.payments_api.payments(request=json_request, idempotency_key="UUID")
```

#### Ruby

```rb
# Adyen Ruby API Library v9.1.0
require "adyen-ruby-api-library"

adyen = Adyen::Client.new
adyen.api_key = 'ADYEN_API_KEY'
adyen.env = :test # Set to "live" for live environment

request_body = {
  :merchantAccount => 'YOUR_MERCHANT_ACCOUNT',
  :reference => 'YOUR_ORDER_REFERENCE',
  :paymentMethod => {
    :type => 'klarna_b2b',
  },
  :amount => {
    :currency => 'EUR',
    :value => 50000
  },
  :shopperLocale => 'de_DE',
  :countryCode => 'DE',
  :telephoneNumber => '+49 840 839 298',
  :shopperEmail => 'youremail@email.com',
  :shopperName => {
    :firstName => 'Testperson-de',
    :lastName => 'Approved'
  },
  :shopperReference => 'YOUR_UNIQUE_SHOPPER_ID',
  :billingAddress => {
    :city => 'Berlin',
    :country => 'DE',
    :houseNumberOrName => '4',
    :postalCode => '10969',
    :street => 'Charlottenstrasse'
  },
  :returnUrl => 'https://your-company.example.com/?shopperOrder=12xy..',
  :company => {
    :homepage => 'https://www.billie.io/',
    :name => 'Billie GmbH',
    :registrationNumber => 'HRB182428',
    :registryLocation => 'DE',
    :taxId => 'DE310295470',
    :type => 'GmbH'
  },
  :lineItems => [ {
    :quantity => '1',
    :taxPercentage => '2100',
    :description => 'Hammer',
    :id => 'Item #1',
    :amountIncludingTax => '20000',
    :productUrl => 'URL_TO_PURCHASED_ITEM',
    :imageUrl => 'URL_TO_PICTURE_OF_PURCHASED_ITEM'
  }, {
    :quantity => '2',
    :taxPercentage => '2100',
    :description => 'Nails',
    :id => 'Item #2',
    :amountIncludingTax => '15000',
    :productUrl => 'URL_TO_PURCHASED_ITEM',
    :imageUrl => 'URL_TO_PICTURE_OF_PURCHASED_ITEM'
  } ]
}

result = adyen.checkout.payments_api.payments(request_body, headers: { 'Idempotency-Key' => 'UUID' })
```

#### NodeJS (TypeScript)

```ts
// Adyen Node API Library v16.2.0
// Require the parts of the module you want to use
import { Client, CheckoutAPI, Types } from "@adyen/api-library";

// Initialize the client object
const client = new Client({apiKey: "ADYEN_API_KEY", environment: "TEST"});

// Create the request objects
const amount: Types.checkout.Amount = {
	currency: "EUR",
	value: 50000
};

const lineItem1: Types.checkout.LineItem = {
	quantity: 1,
	taxPercentage: 2100,
	imageUrl: "URL_TO_PICTURE_OF_PURCHASED_ITEM",
	description: "Hammer",
	id: "Item #1",
	amountIncludingTax: 20000,
	productUrl: "URL_TO_PURCHASED_ITEM"
};

const lineItem2: Types.checkout.LineItem = {
	quantity: 2,
	taxPercentage: 2100,
	imageUrl: "URL_TO_PICTURE_OF_PURCHASED_ITEM",
	description: "Nails",
	id: "Item #2",
	amountIncludingTax: 15000,
	productUrl: "URL_TO_PURCHASED_ITEM"
};

const name: Types.checkout.Name = {
	firstName: "Testperson-de",
	lastName: "Approved"
};

const klarnaDetails: Types.checkout.KlarnaDetails = {
	subtype: "sdk",
	type: Types.checkout.KlarnaDetails.TypeEnum.KlarnaB2b
};

const company: Types.checkout.Company = {
	registrationNumber: "HRB182428",
	registryLocation: "DE",
	taxId: "DE310295470",
	name: "Billie GmbH",
	type: "GmbH",
	homepage: "https://www.billie.io/"
};

const billingAddress: Types.checkout.BillingAddress = {
	country: "DE",
	city: "Berlin",
	houseNumberOrName: "4",
	street: "Charlottenstrasse",
	postalCode: "10969"
};

const paymentRequest: Types.checkout.PaymentRequest = {
	amount: amount,
	telephoneNumber: "+49 840 839 298",
	shopperEmail: "youremail@email.com",
	reference: "YOUR_ORDER_REFERENCE",
	lineItems: [lineItem1, lineItem2],
	shopperName: name,
	merchantAccount: "ADYEN_MERCHANT_ACCOUNT",
	countryCode: "DE",
	paymentMethod: klarnaDetails,
	company: company,
	shopperLocale: "de_DE",
	billingAddress: billingAddress,
	returnUrl: "https://your-company.example.com/?shopperOrder=12xy..",
	shopperReference: "YOUR_UNIQUE_SHOPPER_ID"
};

// Make the request
const checkoutAPI = new CheckoutAPI(client);
const response = checkoutAPI.PaymentsApi.payments(paymentRequest, { idempotencyKey: "UUID" });
```

If you use the [inline widget](#widget), additionally include `paymentMethod.subtype`: **sdk**.

The response to your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments) request depends on which payment flow you are using:

* [Redirect](#redirect)
* [Inline widget](#widget)

### Redirect to Billie

If you use the default redirect flow, the shopper is redirected to Klarna to complete the payment. The response contains an `action` object with the information you need to redirect the shopper:

**Sample Billie response (redirect)**

```bash
{
    "additionalData": {
        "pspref": "TXDMTP4PCTGLNK82",
        "klarnapayments.session_id": "85b820c2-9048...",
        "klarnapayments.client_token": "eyJhbGciOiJSUz..."
    },
    "pspReference": "TXDMTP4PCTGLNK82",
    "resultCode": "RedirectShopper",
    "action": {
        "paymentMethodType": "klarna_b2b",
        "url": "https://checkoutshopper-test.adyen.com...",
        "method": "GET",
        "type": "redirect"
    }
}
```

### Inline widget

To use the inline widget, your `/payments` request must include `paymentMethod.subtype`: **sdk**.

The shopper completes the payment in your checkout. The `/payments` response contains:

* `resultCode`: **Pending**
* `paymentData`: A value that you need to submit to the [/payments/details](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/details) endpoint later.
* `redirect`: Object containing a client token.

**Sample Billie response (widget)**

```bash
{
   "resultCode":"Pending",
   "details":[
      {
         "key":"token",
         "type":"text"
      }
   ],
   "paymentData":"abcxyz...",
   "redirect":{
      "data":{
         "klarnapayments.client_token":"eyJhbGciOiJu ..."
      }
   }
}
```

## Test and go live

Test Billie in your Customer Area with the Billie sandbox.

## How do you want to integrate?

[![This is the web icon.](/user/pages/reuse/image-library/01.icons/web/web.svg?decoding=auto\&fetchpriority=auto)](/payment-methods/klarna/web)

###### [Web](/payment-methods/klarna/web)

[Use our pre-built UI solutions to add Billie to your website.](/payment-methods/klarna/web)

[![This is the iOS icon.](/user/pages/reuse/image-library/01.icons/ios/ios.svg?decoding=auto\&fetchpriority=auto)](/payment-methods/klarna/ios)

###### [iOS](/payment-methods/klarna/ios)

[Use our pre-built UI solutions to add Billie to your iOS app.](/payment-methods/klarna/ios)

[![This is the Android icon.](/user/pages/reuse/image-library/01.icons/android/android.svg?decoding=auto\&fetchpriority=auto)](/payment-methods/klarna/android)

###### [Android](/payment-methods/klarna/android)

[Use our pre-built UI solutions to add Billie to your Android app.](/payment-methods/klarna/android)

[![This is the API only icon.](/user/pages/reuse/image-library/01.icons/api-only/checkout-api-only.svg?decoding=auto\&fetchpriority=auto)](/payment-methods/klarna/api-only)

###### [API-only](/payment-methods/klarna/api-only)

[Use our pre-built UI solutions to add Billie to your API-only integration.](/payment-methods/klarna/api-only)
