Stripe vs PayPal vs Klarna vs Square: Payment Gateway Comparison 2026
Je checkout-button vuurt af en ergens bepaalt een payment gateway of het verzoek in 180ms wordt doorgeleid of een cryptische 400-fout werpt om 23 uur. Ik heb Stripe, PayPal, Klarna en Square in 47 production headless commerce stores sinds 2023 geïntegreerd. Sommige integraties waren in een middag klaar. Anderen kostten hele weekenden het jagen naar webhook signature mismatches en ongedocumenteerde rate limits. Deze breakdown omvat echte fees, developer experience en headless Next.js integratie — omdat één gateway je client dit jaar $8K in transactiekosten zal besparen, en een ander zal stilletjes 4,2% van elke verkoop opeten. Maar welke hangt af van drie variabelen die de meeste vergelijkingsartikelen nooit noemen.
Als je een ecommerce storefront bouwt (of opnieuw bouwt) en je moet een payment processor kiezen, dit is het artikel dat ik drie jaar geleden nodig had.
Inhoudsopgave
- Waarom Payment Gateway keuze belangrijk is voor Headless Commerce
- Prijzen en transactiekosten vergeleken
- Developer Experience en integratiecomplexiteit
- Stripe Deep Dive
- PayPal Deep Dive
- Klarna Deep Dive
- Square Deep Dive
- Headless CMS en Next.js integratiepatronen
- Welke zou je eigenlijk moeten kiezen?
- Veelgestelde vragen

Waarom Payment Gateway keuze belangrijk is voor Headless Commerce
In een traditioneel monolithisch ecommerce platform zoals Shopify of WooCommerce is je payment gateway vaak ingebouwd. Je kiest er een uit een dropdown, plakt misschien een API-sleutel in en je bent klaar. Headless commerce is anders.
Wanneer je je frontend van je backend ontkoppelt — een Next.js storefront voert communicatie met een headless CMS en een aparte commerce API — wordt de payment gateway een architecturele beslissing van eerste klasse. Het beïnvloedt je:
- Checkout UX: Kun je een volledig aangepaste checkout bouwen, of stuur je gebruikers door naar een hosted page?
- Server-side logica: Hoe werken webhooks? Hoe verwerk je betalingsbevestiging vóór fulfillment?
- PCI compliance burden: Tokeniseer je op de client, of raken creditcardnummers je server?
- Abonnement- en terugkerende facturering: Verwerkt de gateway dit inheems, of moet je een ander service erbij zetten?
- Internationale expansie: Valutaondersteuning, lokale betalingsmethoden, regelgeving.
De verkeerde keuze hier kan je maanden omwerk kosten. Ik heb het zien gebeuren. Een klant koos Square omdat zij fysieke retail hadden, ontdekte toen dat Squares online API hun abonnementsmodel niet kon verwerken. We eindigden met twee payment processors parallel. Wees niet dat team.
Prijzen en transactiekosten vergeleken
Laten we beginnen met wat iedereen wil weten: wat kost elk eigenlijk?
Deze nummers zijn actueel vanaf begin 2026. Alle vier providers hebben een geschiedenis van het aanpassen van fees, dus controleer voordat je iets ondertekent.
| Functie | Stripe | PayPal | Klarna | Square |
|---|---|---|---|---|
| Standaard online transactie | 2,9% + $0,30 | 3,49% + $0,49 | Merchant betaalt 3,29% - 5,99% (varieert) | 2,9% + $0,30 |
| Persoonlijke transactie | 2,7% + $0,05 (Terminal) | N/A (gebruik Zettle) | N/A | 2,6% + $0,10 |
| Internationale kaarten | +1,5% | +1,5% | Varieert per markt | +3,3% + $0,30 totaal |
| Valutaconversie | 1% | 3-4% | Ingebouwd in merchant fees | 1% |
| Maandelijkse fee | $0 | $0 | $0 | $0 (Gratis plan) |
| Chargeback fee | $15 | $20 | Klarna absorbeert (BNPL model) | $0 |
| Payout snelheid | 2 dagen (Instant beschikbaar) | 1-3 dagen | Netto 15-30 dagen | 1-2 dagen |
| Volumekortingen | Ja (custom pricing 80K+/ma) | Ja (contacteer verkoop) | Onderhandelbaar | Ja (custom pricing) |
De echte kostenanalyse
Ruwe percentages vertellen niet het hele verhaal. Laat me uitsplitsen wat $100.000/maand in transacties eigenlijk kost met elke provider (ervan uitgaande dat allemaal binnenlands, online, standaard kaarten):
- Stripe: ~$3.200/maand ($2.900 percentage + ~$300 in per-transactie fees aangenomen $65 AOV)
- PayPal: ~$4.243/maand ($3.490 percentage + ~$753 in per-transactie fees op $65 AOV)
- Klarna: ~$3.290 - $5.990/maand (hangt sterk af van je onderhandelde tarief en productcategorie)
- Square: ~$3.200/maand (vrijwel identiek aan Stripe voor online)
PayPal is het duurste voor standaard online transacties met een significant verschil. Ze rechtvaardigen dit met buyer trust en conversion lift, en eerlijk gezegd, voor bepaalde demografieën, houd dat standpunt water. Maar op $100K/maand betaal je ruwweg $1.000 meer dan Stripe. Dat is $12.000 per jaar.
Klarnas prijzen zijn de wildste variabele. Hun BNPL (Buy Now, Pay Later) model betekent dat Klarna de merchant direct betaalt en geld van de klant over tijd inzamelt. De merchant fee is hoger om Clarnas creditrisico te dekken. Voor fashion en lifestyle merken met hoge cart abandonment kan de conversion uplift de hogere fee meer dan compenseren. Voor B2B of lage-marge producten? Waarschijnlijk niet.
Developer Experience en integratiecomplexiteit
Dit is waar mijn meningen sterk worden. Ik heb honderden uren in deze API's en SDK's doorgebracht, en de verschillen zijn niet subtiel.
| Aspect | Stripe | PayPal | Klarna | Square |
|---|---|---|---|---|
| API design kwaliteit | ★★★★★ | ★★★☆☆ | ★★★★☆ | ★★★★☆ |
| Documentatie | ★★★★★ | ★★★☆☆ | ★★★☆☆ | ★★★★☆ |
| Next.js SDK/ondersteuning | ★★★★★ | ★★★☆☆ | ★★★★☆ | ★★★☆☆ |
| Webhook betrouwbaarheid | ★★★★★ | ★★★☆☆ | ★★★★☆ | ★★★★☆ |
| Test/sandbox modus | ★★★★★ | ★★★★☆ | ★★★☆☆ | ★★★★☆ |
| Tijd tot eerste integratie | 2-4 uur | 4-8 uur | 6-12 uur | 3-6 uur |
| Aangepaste checkout ondersteuning | Volledig | Beperkt (Advanced Checkout) | Gedeeltelijk (widget-based) | Volledig (Web Payments SDK) |

Stripe Deep Dive
Waarom ontwikkelaars Stripe graag zien
Stripes API is de gouden standaard. Klaar. Elk endpoint is consistent, elk foutbericht is behulpzaam, en de documentatie leest alsof deze is geschreven door iemand die daadwerkelijk API's gebruikt. Het dashboard is schoon, de test modus is fantastisch, en Stripe CLI laat je webhooks naar je lokale dev-omgeving doorsturen.
Voor headless Next.js commerce is Stripe bijna oneerlijk goed. Hier is een typisch integratiepatroon:
// app/api/checkout/route.ts (Next.js App Router)
import Stripe from 'stripe';
import { NextResponse } from 'next/server';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
export async function POST(request: Request) {
const { items, customerEmail } = await request.json();
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: items.map((item: any) => ({
price_data: {
currency: 'usd',
product_data: { name: item.name },
unit_amount: item.price,
},
quantity: item.quantity,
})),
mode: 'payment',
customer_email: customerEmail,
success_url: `${process.env.NEXT_PUBLIC_URL}/order/success?session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${process.env.NEXT_PUBLIC_URL}/cart`,
});
return NextResponse.json({ url: session.url });
}
Dat is een werkend checkout endpoint. Minder dan 30 regels. Voor een volledig ingebedde checkout (geen redirect), Stripe Elements met hun React-componenten is even eenvoudig.
Stripes zwakke punten
Stripes account holds en reserve-beleid kunnen brutal zijn voor nieuwe bedrijven. Ik heb clients gehad met geld vastgehouden voor 2-4 weken met weinig uitleg van support. Hun fraud detection (Radar) is goed maar niet perfect — je wilt nog steeds extra checks toevoegen voor high-risk verticalen.
Ook is Stripes prijzen niet onderhandelbaar totdat je rond $80K/maand verwerkt. Daaronder betaal je de standaard tarief ongeacht wat.
Stripe Connect en Marketplace ondersteuning
Als je een marketplace bouwt, is Stripe Connect jaren vooruit op alles anders op deze lijst. Split payments, managed accounts, 1099 generation — het is allemaal daar. We hebben het op meerdere headless commerce builds gebruikt waarbij vendors hun eigen payment flows nodig hadden.
PayPal Deep Dive
Het Conversion Argument
PayPals grootste selling point is niet de technologie — het is het merk. Over 430 miljoen actieve accounts wereldwijd vanaf 2025. Voor bepaalde klantsegmenten (vooral oudere demografieën, internationale kopers en mobiele shoppers), ziet het PayPal-knop echt checkout completion verhogen. Studies tonen consistent 28-44% lift in checkout completion aan wanneer PayPal wordt aangeboden als optie.
Dat is niet niks. Dat is echt geld.
Het Developer Experience probleem
Maar oh, de developer experience. PayPals API heeft lagen van legacy rommel die integratie pijnlijk maken. Ze zijn al jaren aan het migreren van hun v1 REST API naar v2, en documentatie verwijst nog steeds naar beide. De JavaScript SDK is verbeterd met hun nieuwere Advanced Checkout-product, maar het bouwen van een volledig aangepaste checkout flow voelt nog steeds als worstelen met een systeem dat je echt wil dat je hun hosted buttons gebruikt.
// PayPals server-side order creation
// Opmerking: vereist hun SDK en auth token management
import { PayPalHttpClient, SandboxEnvironment, OrdersCreateRequest } from '@paypal/checkout-server-sdk';
const environment = new SandboxEnvironment(
process.env.PAYPAL_CLIENT_ID!,
process.env.PAYPAL_SECRET!
);
const client = new PayPalHttpClient(environment);
export async function createOrder(cart: CartItem[]) {
const request = new OrdersCreateRequest();
request.prefer('return=representation');
request.requestBody({
intent: 'CAPTURE',
purchase_units: [{
amount: {
currency_code: 'USD',
value: calculateTotal(cart).toString(),
},
}],
});
const response = await client.execute(request);
return response.result;
}
Het werkt, maar het is meer boilerplate, meer auth management, en minder intuïtief dan Stripes aanpak.
Mijn eerlijke take op PayPal
Bied PayPal als secundaire betalingsmethode aan. Maak het niet je primaire gateway. Gebruik Stripe voor de backend plumbing en plak een PayPal-knop in de checkout voor klanten die het prefereren. Dit is wat de meeste stores die we bouwen uiteindelijk doen, en het vangt het beste van beide werelden.
Klarna Deep Dive
BNPL als groeistrategie
Klarna is eigenlijk niet echt een payment gateway in de traditionele zin. Het is een financieringsproduct dat toevallig betalingen verwerkt. Wanneer een klant Klarna kiest, splitsen zij hun aankoop in termijnen (typisch 4 rente-vrije betalingen), en Klarna betaalt je het volledige bedrag direct uit.
Voor merchants die producten in de $50-$500 range verkopen — denk fashion, beauty, huishoudelijke artikelen — kan Klarna meetbaar gemiddelde orderwaarde verhogen. Clarnas eigen data beweert 45% toename in AOV en 30% hogere conversietarieven, hoewel onafhankelijke studies die nummers iets lager plaatsen.
Integratie voor Headless Commerce
Klarnas integratie is aanzienlijk verbeterd. Zowel hun Klarna Payments API als Klarna Checkout API ondersteunen headless architecturen, hoewel de implementatie meer widget-gebaseerd dan API-first is:
// Klarna session creatie (server-side)
export async function createKlarnaSession(cart: CartItem[]) {
const response = await fetch('https://api.klarna.com/payments/v1/sessions', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${Buffer.from(
`${process.env.KLARNA_USERNAME}:${process.env.KLARNA_PASSWORD}`
).toString('base64')}`,
},
body: JSON.stringify({
purchase_country: 'US',
purchase_currency: 'USD',
locale: 'en-US',
order_amount: calculateTotal(cart),
order_lines: cart.map(item => ({
name: item.name,
quantity: item.quantity,
unit_price: item.price,
total_amount: item.price * item.quantity,
})),
}),
});
return response.json(); // Retourneert client_token voor frontend widget
}
De client token wordt doorgegeven aan Clarnas JavaScript widget, die de betalingsopties in je checkout rendert. Het is niet zo flexibel als Stripe Elements, maar het werkt.
Clarnas nadelen
Payout timing is de grote. Netto 15-30 dag uitkeringen vergeleken met 1-2 dagen van Stripe of Square kan ernstige cashflow problemen creëren, vooral voor kleinere merchants. De hogere merchant fees eten ook in marges. En Clarnas developer portal, hoewel verbeterd, heeft nog steeds gaten in documentatie voor edge cases.
Er is ook groeiende regelgeving toezicht van BNPL providers wereldwijd. Het VK, EU en Australië hebben allen nieuwe regelgeving voor BNPL-producten ingevoerd of voorgesteld. Dit zal Klarna niet doden, maar het is waard om te volgen.
Square Deep Dive
Het Omnichannel Play
Squares superkracht is het unificeren van online en offline commerce. Als je klant fysieke retaillocaties naast hun headless ecommerce site heeft, maakt Squares ecosysteem inventory sync, rapportage en betalingsafstemming dramatisch eenvoudiger dan afzonderlijke systemen in elkaar zetten.
Web Payments SDK
Squares Web Payments SDK is solide. Niet zo elegant als Stripe, maar goed gedocumenteerd en actief onderhouden:
// Square payment form initialisatie (client-side)
import { payments } from '@square/web-payments-sdk-types';
async function initSquarePayment() {
const payments = window.Square.payments(
process.env.NEXT_PUBLIC_SQUARE_APP_ID!,
process.env.NEXT_PUBLIC_SQUARE_LOCATION_ID!
);
const card = await payments.card();
await card.attach('#card-container');
// Bij formulier indienen
const result = await card.tokenize();
if (result.status === 'OK') {
// Stuur result.token naar je server
await processPayment(result.token);
}
}
Waar Square tekortschiet voor Headless
Squares API is gebouwd rond hun ecosysteem. Bent je helemaal in op Square voor POS, inventory en online verkoop, het is geweldig. Gebruik je een headless CMS zoals Sanity of Contentful met een aparte commerce-laag, Squares API kan beperkend voelen. Hun productcatalogus is diep gebonden aan Squares eigen data model, wat niet altijd schoon aan headless commerce architecturen kaart.
Internationale ondersteuning is ook zwakker dan Stripe of PayPal. Square opereert slechts in 8 landen vanaf 2026 (VS, Canada, UK, Australië, Japan, Frankrijk, Ierland, Spanje). Wil je wereldwijd verkopen, dit is een harde beperking.
Headless CMS en Next.js integratiepatronen
Hier is hoe we deze typisch in onze projecten bedraden:
Patroon 1: Stripe + Headless CMS (meest gebruikelijk)
- Productgegevens wonen in de headless CMS (Sanity, Contentful, enz.)
- Next.js haalt productgegevens op buildtijd of op verzoek
- Cartstate beheerd client-side (Zustand, Redux, of Context)
- Stripe Checkout Session gemaakt via Next.js API route
- Webhooks (via
checkout.session.completed) triggeren order creatie in de CMS of een apart order management systeem
Dit is onze dagelijkse brood. Het werkt, het schaalt, en Stripe verwerkt PCI compliance helemaal aan hun kant.
Patroon 2: Multi-Gateway Checkout
Voor stores die maximale conversion willen, implementeren we Stripe als de primaire processor met PayPal en/of Klarna als secundaire opties. De checkout pagina rendert alle opties, en de backend heeft aparte API routes voor elk gateway. Webhooks van elke provider voeden in dezelfde order management flow.
Dit voegt complexiteit toe maar verbetert meetbaar conversietarieven, vooral voor internationaal verkeer.
Patroon 3: Square voor Omnichannel
Wanneer een klant fysieke stores heeft en een unified systeem wil, bouwen we de headless frontend met Next.js maar gebruiken Squares API's voor de hele commerce backend — catalogus, inventory, betalingen en fulfillment. Het is meer opiniated dan Patroon 1, maar de operationele eenvoud voor de klant is significant.
Welke zou je eigenlijk moeten kiezen?
Hier is mijn eerlijke, zonder-uitvlucht aanbeveling:
Voor de meeste headless commerce projecten: Stripe. Het is niet eens dicht wanneer je API kwaliteit, documentatie, Next.js ondersteuning en ecosysteem in rekening brengt. Voeg PayPal als secundaire methode toe als je klantenbestand ouder of internationaal zijn.
Voor fashion/lifestyle merken gericht op jongere demografieën: Stripe + Klarna. De BNPL optie verplaatst echt de naald voor impulsaankopen in de $50-$300 range.
Voor omnichannel bedrijven met fysieke winkels: Square voor het geünificeerde platform, of Stripe voor online + Square voor POS als je het beste van beide wilt.
Voor marketplace platforms: Stripe Connect. Niets anders komt in de buurt voor multi-party payment flows.
Als je een headless commerce build plant en wilt praten over welke betalingsarchitectuur voor je specifieke geval zinvol is, neem dan contact met ons op. We hebben dit genoeg gedaan om de valkuilen voor ze duur worden te herkennen.
Veelgestelde vragen
Welk payment gateway heeft de laagste fees voor online transacties in 2026? Stripe en Square zijn gelijk op 2,9% + $0,30 voor standaard binnenlandse online transacties. PayPal is het duurste op 3,49% + $0,49. Verwerk je echter meer dan $80K/maand, alle providers bieden onderhandelde tarieven aan, en Stripes custom pricing is meestal het meest concurrerend op schaal.
Kan ik Stripe met Next.js App Router en Server Components gebruiken?
Absoluut. Stripes Node.js SDK werkt perfect in Next.js API routes en Server Actions. Voor de client kant, @stripe/react-stripe-js en @stripe/stripe-js integreren met React Server Components via een client component wrapper. Stripe heeft officiële Next.js voorbeelden in hun documentatie die het App Router patroon gebruiken.
Is Klarna het waard voor kleine ecommerce stores? Het hangt af van je productcategorie en gemiddelde orderwaarde. Verkoop je artikelen in de $50-$500 range in fashion, beauty of huishoudelijke artikelen, Clarnas conversion lift kan de hogere merchant fees rechtvaardigen (3,29% - 5,99%). Voor lager-AOV producten of B2B verkoop, werkt de wiskunde meestal niet uit. Factor ook in Clarnas langere payout timeline — netto 15-30 dagen kan cashflow voor kleinere bedrijven belasten.
Hoe verwerk ik PCI compliance met een headless commerce setup? Alle vier providers bieden tokenization die ruwe creditcardgegevens uit je servers houdt. Met Stripe Elements, PayPals hosted fields, Clarnas widget of Squares Web Payments SDK, creditcardnummers worden vastgelegd in iframes beheerd door de betalingsprovider. Je server ziet alleen tokens. Dit houdt je op PCI SAQ-A niveau, wat de lichtste compliance burden is. Bouw nooit een aangepast card input formulier — het is niet waard de aansprakelijkheid.
Kan ik meerdere payment gateways op dezelfde headless store gebruiken? Ja, en je zou waarschijnlijk moeten. Het meest voorkomende patroon dat we implementeren is Stripe als de primaire processor met PayPal als secundaire optie. Elk gateway heeft zijn eigen API routes en webhook handlers, maar ze voeden in hetzelfde order management systeem. De toegevoegde development complexiteit is echt maar beheersbaar — typisch 2-3 extra dagen werk voor een senior developer.
Werkt Square goed voor internationale ecommerce? Niet echt. Square opereert slechts in 8 landen vanaf 2026, en cross-border transacties hebben hogere fees. Zijn internationale verkopen meer dan 10-15% van je omzet, Stripe is de aanzienlijk betere keuze met ondersteuning voor 135+ valuta's en gelokaliseerde betalingsmethoden. Square blinkt uit in binnenlandse omnichannel commerce maar valt achter voor wereldwijd bereik.
Wat is het beste payment gateway voor subscription-based headless commerce? Stripe Billing is de duidelijke winnaar hier. Het verwerkt subscription creatie, proration, dunning (mislukte payment retry), facturering en customer portal — allemaal via API. PayPal heeft subscription ondersteuning maar het is meer beperkt en de API is onhandig. Square voegde subscription billing recent toe maar het is nog steeds uitrijping. Klarna ondersteunt terugkerende betalingen niet inheems.
Hoeveel tijd kost het om een payment gateway in een Next.js headless commerce site te integreren? Voor een senior developer neemt een basis Stripe integratie 2-4 uur. PayPal duurt typisch 4-8 uur vanwege zijn meer complexe SDK. Klarna loopt 6-12 uur omdat van de session-gebaseerde widget flow en goedkeuringsprocedure. Square landde op 3-6 uur. Deze schattingen gaan uit van een standaard checkout flow — abonnementen, marketplace betalingen of multi-currency setups voegen aanzienlijk meer tijd toe. Wil je hulp bij scoping, ons team kan schattingen geven.