Skip to main content
Nuvei is a global payment provider that provides comprehensive payment processing solutions across multiple payment methods and regions. Klarna is a buy now, pay later (BNPL) payment method that lets buyers pay over time through a redirect approval flow.

Setup

Please follow the common Nuvei instructions to get set up with Nuvei. After setting up your Nuvei account, ask Nuvei to complete the following Klarna-specific account configuration:
  1. Enable Klarna as a payment method on your merchant account.
  2. Enable sale mode for all Klarna transactions on your merchant account. Nuvei defaults Klarna to auth-settle mode, and Gr4vy supports only sale mode.

Capabilities

Supported countries

Supported currencies

Integration

For Klarna, the default integration for Nuvei is through a redirect to a hosted payments page. Start by creating a new transaction with the following required fields.
var transaction = await client.Transactions.CreateAsync(
  transactionCreate: new TransactionCreate()
  {
    Amount = 1299,
    Currency = "GBP",
    Country = "GB",
    PaymentMethod =
      TransactionCreatePaymentMethod.CreateRedirectPaymentMethodCreate(
        new RedirectPaymentMethodCreate()
        {
          Method = "klarna",
          Country = "GB",
          Currency = "GBP",
          RedirectUrl = "https://example.com/callback",
        }
      ),
  }
);
amount := int64(1299)
currency := "GBP"
country := "GB"
method := components.RedirectPaymentMethodCreateMethodKlarna
redirectUrl := "https://example.com/callback"

redirectPaymentMethodCreate := components.RedirectPaymentMethodCreate{
  Method: method,
  Country: country,
  Currency: currency,
  RedirectURL: redirectUrl,
}
paymentMethod := components.CreateTransactionCreatePaymentMethodRedirectPaymentMethodCreate(redirectPaymentMethodCreate)

transactionCreate := components.TransactionCreate{
  Amount:        amount,
  Currency:      currency,
  Country:       &country,
  PaymentMethod: &paymentMethod,
}

transaction, err := client.Transactions.Create(ctx, transactionCreate, nil, nil, nil)
CreateTransactionResponse transactionResponse = gr4vyClient.transactions().create()
  .transactionCreate(TransactionCreate.builder()
    .amount(1299L)
    .currency("GBP")
    .country("GB")
    .paymentMethod(TransactionCreatePaymentMethod.of(RedirectPaymentMethodCreate.builder()
      .method(RedirectPaymentMethodCreateMethod.KLARNA)
      .country("GB")
      .currency("GBP")
      .redirectUrl("https://example.com/callback")
      .build()))
    .build())
  .call();

Transaction transaction = transactionResponse.transaction().orElse(null);
$transactionCreate = new TransactionCreate(
  amount: 1299,
  currency: 'GBP',
  country: 'GB',
  paymentMethod: new RedirectPaymentMethodCreate(
    method: 'klarna',
    country: 'GB',
    currency: 'GBP',
    redirectUrl: 'https://example.com/callback'
  )
);
$response = self::$sdk->transactions->create($transactionCreate);
$transaction = $response->transaction;
transaction: models.Transaction = client.transactions.create(
  amount=1299,
  currency="GBP",
  country="GB",
  payment_method={
    "method": "klarna",
    "country": "GB",
    "currency": "GBP",
    "redirect_url": "https://example.com/callback",
  }
)
const transaction = await gr4vy.transactions.create({
  amount: 1299,
  currency: "GBP",
  country: "GB",
  paymentMethod: {
    method: "klarna",
    country: "GB",
    currency: "GBP",
    redirectUrl: "https://example.com/callback",
  },
});
After the transaction is created, the API response includes payment_method.approval_url and the buyer_approval_pending status.
{
  "type": "transaction",
  "id": "ea1efdd0-20f9-44d9-9b0b-0a3d71e9b625",
  "payment_method": {
    "type": "payment-method",
    "approval_url": "https://cdn.sandbox.spider.gr4vy.app/connectors/nuvei/apm.html?token=..."
  },
  "method": "klarna"
}
Redirect the buyer to the approval_url so they can complete authentication and approve the payment. After approval the buyer is redirected to the redirect_url you provided when creating the transaction. Do not rely solely on the redirect - either poll the transaction or (recommended) rely on webhooks to detect the final status (for example capture_succeeded or failure states).

Required fields

Nuvei requires the following fields to be collected during checkout for Klarna transactions:
  • First name and last name
  • Billing country
  • Email address