Klarna
Klarna : leader mondial Buy Now Pay Later avec 150M+ utilisateurs. Paiements différés, financing et shopping app intégrée pour e-commerce.
📚 Ressources Complémentaires
📖 Guides Pratiques
⚖️ Comparatifs
Klarna : Buy Now Pay Later Leader Mondial
Qu’est-ce que Klarna ?
Klarna révolutionne le paiement e-commerce avec 150+ millions d’utilisateurs dans 45 pays utilisant les solutions Buy Now Pay Later. Cette fintech suédoise (valorisée 46B$ puis 6,7B$) permet aux consommateurs d’acheter immédiatement et payer en 3-4 fois sans frais, boostant conversion marchands de 20%+ moyenne.
🚀 Fonctionnalités Principales
Buy Now Pay Later Options
- Pay in 4 : 4 paiements sans intérêts
- Pay in 30 days : délai paiement gratuit
- Financing : crédit 6-36 mois avec intérêts
- One-time card : carte virtuelle temporary
Merchant Integration
- Express checkout : 1-click purchasing
- On-site messaging : installments display product pages
- Post-purchase upsells : additional purchase opportunities
- Return handling : refund process automated
Klarna Shopping App
- Product discovery : wishlist et recommendations
- Price drop alerts : notifications baisse prix
- Carbon footprint : impact environnemental achats
- Reward points : program fidélité intégré
Merchant Services
- Guaranteed payments : risk assumé par Klarna
- Real-time decisions : approbation instantanée
- Fraud protection : ML risk assessment
- Marketing tools : customer acquisition campaigns
💰 Prix et Commission Structure
Frais Marchands Variables
- Pay in 4 : 3,29% + 0,30€ per transaction
- Pay in 30 : 2,49% + 0,30€ per transaction
- Financing : 3,29-5,99% selon durée
- Express checkout : 2,49% + 0,30€
Frais Additionnels
- Chargeback : 25€ per dispute
- Refund processing : gratuit
- Currency conversion : 2,5% FX spread
- Settlement : T+1 automatic transfer
Volume Discounts
- Negotiable rates : volumes >1M€/mois
- Custom pricing : enterprise clients
- Performance incentives : conversion rate bonuses
- Marketing co-funding : campaigns shared costs
⭐ Points Forts
🛒 Conversion Boost Prouvé
Impact business mesurable :
- +20-30% conversion rate average increase
- +41% average order value improvement
- -23% cart abandonment reduction
- +15% repeat purchase rate
👥 Audience Millennial/GenZ
Démographie target parfaite :
- 150M+ utilisateurs actifs 18-35 ans
- 60% users make repeat purchases
- High brand recognition jeunes consommateurs
- Social media integration natural
🛡️ Risk Transfer
Protection marchands :
- Klarna assumes fraud risk
- Guaranteed payment même si customer default
- No chargeback liability merchants
- Automatic collections process
📱 Shopping Ecosystem
Beyond payments platform :
- Shopping app 30M+ active users
- Product discovery et recommendations
- Price comparison tools
- Sustainable shopping features
⚠️ Points Faibles
💸 Frais Élevés Marchands
Cost structure significant :
- 3-6% commission vs 1,4% Stripe
- No volume discounts PME
- Currency conversion fees additional
- Marketing costs pass-through possible
👶 Audience Démographique Limitée
Target narrow :
- Primarily 18-35 years old
- Lower income demographics excluded
- B2B applications limited
- Geographic expansion still ongoing
📊 Regulatory Headwinds
BNPL regulation increasing :
- FCA UK new rules 2023
- EU consumer protection upcoming
- Credit checks requirements potential
- Marketing restrictions possible
🎯 Category Dependencies
Product fit variable :
- Optimal fashion, electronics, lifestyle
- Poor fit services, subscriptions
- Low AOV products uneconomical
- B2B purchases inappropriate
🎯 Pour Qui ?
✅ Parfait Pour
- Fashion & lifestyle e-commerces
- Electronics et high-ticket items
- Home & garden décoration
- Beauty & wellness produits
- Young demographics target 18-35
❌ Moins Adapté Pour
- B2B businesses et services
- Low AOV products <50€
- Subscription recurring billing
- Luxury ultra-premium brands
- Mature demographics 50+ primary
📊 Klarna vs BNPL Concurrence
| Critère | Klarna | Afterpay | PayPal Pay in 4 |
|---|---|---|---|
| User Base | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Merchant Fees | ⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
| Global Reach | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Shopping App | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Integration Ease | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
🛠️ Configuration & Intégration
Klarna JavaScript SDK
// Klarna Payments SDK integration
window.klarnaAsyncCallback = function() {
try {
// Initialize Klarna Payments
Klarna.Payments.init({
client_token: 'CLIENT_TOKEN_FROM_SERVER'
});
// Load payment method (Pay in 4)
Klarna.Payments.load({
container: '#klarna-payments-container',
payment_method_category: 'pay_in_4'
}, function(res) {
if (res.show_form) {
// Payment method loaded successfully
document.getElementById('klarna-pay-button').style.display = 'block';
}
});
// Handle payment authorization
document.getElementById('klarna-pay-button').addEventListener('click', function() {
// Collect customer data
const billingData = {
billing_address: {
given_name: document.getElementById('first-name').value,
family_name: document.getElementById('last-name').value,
email: document.getElementById('email').value,
street_address: document.getElementById('address').value,
postal_code: document.getElementById('zip').value,
city: document.getElementById('city').value,
country: 'FR'
}
};
// Authorize payment
Klarna.Payments.authorize({
payment_method_category: 'pay_in_4'
}, billingData, function(res) {
if (res.approved) {
// Payment approved, process on server
processKlarnaPayment(res.authorization_token);
} else if (res.show_form) {
// Additional customer data needed
console.log('Additional form data required');
} else {
// Payment declined
showPaymentError('Payment was declined');
}
});
});
} catch (e) {
console.error('Klarna Payments initialization failed:', e);
}
};
async function processKlarnaPayment(authToken) {
try {
const response = await fetch('/api/klarna/create-order', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
authorization_token: authToken,
order_data: {
purchase_currency: 'EUR',
order_amount: 9999, // 99.99 EUR in minor units
order_lines: [{
name: 'Premium Subscription',
quantity: 1,
unit_price: 9999,
total_amount: 9999
}]
}
}),
});
const result = await response.json();
if (result.success) {
window.location.href = result.redirect_url;
} else {
showPaymentError(result.error);
}
} catch (error) {
console.error('Order creation failed:', error);
showPaymentError('Payment processing failed');
}
}
function showPaymentError(message) {
document.getElementById('payment-error').textContent = message;
document.getElementById('payment-error').style.display = 'block';
}
// Load Klarna Payments script
(function() {
var script = document.createElement('script');
script.src = 'https://x.klarnacdn.net/kp/lib/v1/api.js';
script.async = true;
document.head.appendChild(script);
})();
Server-Side Implementation
// Klarna server-side integration (Node.js)
const axios = require('axios');
class KlarnaPaymentService {
constructor() {
this.baseUrl = process.env.KLARNA_ENVIRONMENT === 'production'
? 'https://api.klarna.com'
: 'https://api.playground.klarna.com';
this.credentials = Buffer.from(
`${process.env.KLARNA_USERNAME}:${process.env.KLARNA_PASSWORD}`
).toString('base64');
}
async createSession(orderData) {
try {
const response = await axios.post(
`${this.baseUrl}/payments/v1/sessions`,
{
purchase_country: 'FR',
purchase_currency: 'EUR',
locale: 'fr-FR',
order_amount: orderData.total_amount,
order_tax_amount: orderData.tax_amount || 0,
order_lines: orderData.order_lines,
merchant_urls: {
terms: `${process.env.BASE_URL}/terms`,
checkout: `${process.env.BASE_URL}/checkout`,
confirmation: `${process.env.BASE_URL}/confirmation`,
push: `${process.env.BASE_URL}/api/klarna/push`
}
},
{
headers: {
'Authorization': `Basic ${this.credentials}`,
'Content-Type': 'application/json'
}
}
);
return {
session_id: response.data.session_id,
client_token: response.data.client_token
};
} catch (error) {
console.error('Klarna session creation failed:', error.response?.data);
throw new Error('Failed to create Klarna session');
}
}
async createOrder(authToken, orderData) {
try {
const response = await axios.post(
`${this.baseUrl}/payments/v1/authorizations/${authToken}/order`,
{
purchase_currency: orderData.purchase_currency,
order_amount: orderData.order_amount,
order_lines: orderData.order_lines,
merchant_reference1: `ORDER_${Date.now()}`,
merchant_reference2: orderData.customer_id || '',
merchant_data: JSON.stringify({
customer_id: orderData.customer_id,
order_id: orderData.order_id
})
},
{
headers: {
'Authorization': `Basic ${this.credentials}`,
'Content-Type': 'application/json'
}
}
);
return {
order_id: response.data.order_id,
redirect_url: response.data.redirect_url,
fraud_status: response.data.fraud_status
};
} catch (error) {
console.error('Klarna order creation failed:', error.response?.data);
throw new Error('Failed to create Klarna order');
}
}
async captureOrder(orderId, captureData) {
try {
const response = await axios.post(
`${this.baseUrl}/ordermanagement/v1/orders/${orderId}/captures`,
{
captured_amount: captureData.amount,
description: captureData.description || 'Order fulfillment',
order_lines: captureData.order_lines,
shipping_info: captureData.shipping_info
},
{
headers: {
'Authorization': `Basic ${this.credentials}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Klarna order capture failed:', error.response?.data);
throw new Error('Failed to capture Klarna order');
}
}
async refundOrder(orderId, refundData) {
try {
const response = await axios.post(
`${this.baseUrl}/ordermanagement/v1/orders/${orderId}/refunds`,
{
refunded_amount: refundData.amount,
description: refundData.reason || 'Customer refund',
order_lines: refundData.order_lines
},
{
headers: {
'Authorization': `Basic ${this.credentials}`,
'Content-Type': 'application/json'
}
}
);
return response.data;
} catch (error) {
console.error('Klarna refund failed:', error.response?.data);
throw new Error('Failed to process Klarna refund');
}
}
async handleWebhook(eventData) {
// Handle Klarna webhooks (order status updates, etc.)
switch (eventData.event_type) {
case 'ORDER_PENDING':
await this.handleOrderPending(eventData.order_id);
break;
case 'ORDER_CAPTURED':
await this.handleOrderCaptured(eventData.order_id);
break;
case 'ORDER_CANCELLED':
await this.handleOrderCancelled(eventData.order_id);
break;
default:
console.log(`Unhandled Klarna event: ${eventData.event_type}`);
}
}
async handleOrderPending(orderId) {
console.log(`Klarna order pending: ${orderId}`);
// Update order status in database
}
async handleOrderCaptured(orderId) {
console.log(`Klarna order captured: ${orderId}`);
// Fulfill order, send confirmation email
}
async handleOrderCancelled(orderId) {
console.log(`Klarna order cancelled: ${orderId}`);
// Handle cancellation, update inventory
}
}
// Express.js routes
const klarnaService = new KlarnaPaymentService();
app.post('/api/klarna/create-session', async (req, res) => {
try {
const session = await klarnaService.createSession(req.body);
res.json(session);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.post('/api/klarna/create-order', async (req, res) => {
try {
const { authorization_token, order_data } = req.body;
const order = await klarnaService.createOrder(authorization_token, order_data);
res.json({
success: true,
redirect_url: order.redirect_url,
order_id: order.order_id
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message
});
}
});
app.post('/api/klarna/webhook', async (req, res) => {
try {
await klarnaService.handleWebhook(req.body);
res.status(200).send('OK');
} catch (error) {
res.status(500).json({ error: error.message });
}
});
🏆 Notre Verdict
Klarna leader incontesté BNPL avec impact conversion prouvé pour e-commerces ciblant jeunes consommateurs. Frais élevés mais ROI justify par increased AOV et conversion rates. Essential modern checkout.
Note Globale : 4.1/5 ⭐⭐⭐⭐
- Conversion Impact : 5/5
- User Adoption : 5/5
- Merchant Fees : 2/5
- Target Reach : 3/5
- Risk Management : 5/5
🎯 Cas d’Usage Réels
💡 Exemple : Fashion E-commerce (Gen Z)
BNPL impact mesurable :
- Conversion rate : +35% avec Klarna vs sans
- Average order value : +45% clients BNPL
- Customer acquisition : 25% nouveaux clients via app
- Repeat purchases : +20% retention rate
💡 Exemple : Electronics Retailer
High-ticket items facilitation :
- iPhone purchases : Pay in 4 removes barrier €300/month
- Gaming setup : €2000 purchase accessible €500x4
- Customer demographics : 60% under 30 BNPL users
- Marketing efficiency : Klarna app traffic +15%
💡 Exemple : Home Décor
Seasonal campaigns boost :
- Holiday shopping : BNPL messaging +40% November sales
- Spring refresh : furniture purchases Pay in 4
- Social media : Instagram checkout integration
- Customer feedback : “Klarna makes expensive items affordable”
💡 Conseil OSCLOAD : Klarna essentiel e-commerces targeting millennials/GenZ avec produits >100€. Frais 3-6% justify par +20% conversion. Test sur audiences jeunes, monitor demographics performance.