Sites Web12 min de lecture

Stripe SCA + 3D Secure : vendre en Europe depuis l'Afrique sans pertes en 2026

Mohamed Bah·Fondateur, Kolonell
10 mai 2026
Partager :
Stripe SCA + 3D Secure : vendre en Europe depuis l'Afrique sans pertes en 2026

Stripe SCA + 3D Secure : vendre en Europe depuis l'Afrique sans pertes en 2026

Sites Web

Une PME africaine qui vend des produits ou services à des clients UE/UK/US passe par Stripe — c'est l'évidence. Mais depuis l'entrée en vigueur de la PSD2 + SCA (Strong Customer Authentication) en Europe, 3DS2 est obligatoire sur la majorité des paiements EU. Mal configuré, c'est 12-18 % de paniers en échec côté SCA.

TL;DR

- SCA obligatoire pour paiements > 30 EUR depuis client UE en 2026.

- 3DS2 nécessaire = passer par PaymentIntents + stripe-js + Confirm Card Payment.

- PME africaines : incorporer en France/IE/CI via Atlas ou structure légale.

- Taux d'échec SCA bien configuré : 2-4 % vs 12-18 % mal configuré.

Pourquoi SCA pour vous Africain qui vendez en Europe

PSD2 (Payment Services Directive 2) impose à toute transaction électronique vers un client UE :

  • Authentification "forte" : 2 facteurs parmi connaissance / possession / inhérence
  • 3DS2 (3D Secure 2) est l'implémentation standard
  • Exemptions existent : low-value (<30 EUR), low-risk (algo banque), TRA (Transaction Risk Analysis)

Le commerçant non-UE qui vend à un client UE → SCA appliquée par la banque émettrice du client.

Étape 1 — incorporer dans un pays Stripe

Stripe ne supporte PAS l'incorporation Sénégal directement (pas dans le programme Stripe Atlas). Solutions :

OptionPaysCoût setupAnnuelNotes
Stripe AtlasDelaware US$500$100/an + impôtsLe plus rapide
LLC FranceFrance1500 €300-800 €/anUE, langue FR
Société CICôte d'Ivoire~600K FCFA~200K/anStripe via Paystack CI
LTD UKRoyaume-Uni200 £100-400 £/anHors UE depuis Brexit
LLC EstonieEstonie300 €200 €/an + impôtsE-residency option

Le choix dépend de votre marché cible et de votre fiscalité globale. Discuter avec un fiscaliste avant.

Étape 2 — implémentation PaymentIntents

`ts

// app/api/checkout/route.ts

import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET!, { apiVersion: '2024-12-18.acacia' });

export async function POST(req: Request) {

const { items } = await req.json();

const total = items.reduce((sum: number, i: any) => sum + i.unitPrice * i.qty, 0);

const intent = await stripe.paymentIntents.create({

amount: total, // en cents EUR

currency: 'eur',

payment_method_types: ['card'],

automatic_payment_methods: { enabled: true },

metadata: {

order_id: 'ord_abc123',

country: 'sn', // origine commerçant

},

});

return Response.json({ clientSecret: intent.client_secret });

}

`

Étape 3 — frontend Confirm Card Payment

`tsx

// app/checkout/page.tsx

'use client';

import { Elements, useStripe, useElements, PaymentElement } from '@stripe/react-stripe-js';

import { loadStripe } from '@stripe/stripe-js';

const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLIC!);

function CheckoutForm({ clientSecret }: { clientSecret: string }) {

const stripe = useStripe();

const elements = useElements();

async function handleSubmit(e: React.FormEvent) {

e.preventDefault();

if (!stripe || !elements) return;

const { error } = await stripe.confirmPayment({

elements,

confirmParams: {

return_url: 'https://kolonell.com/checkout/success',

},

});

if (error) console.error('[Stripe] payment failed:', error);

}

return (

);

}

export default function CheckoutPage({ clientSecret }: { clientSecret: string }) {

return (

);

}

`

Étape 4 — webhook Stripe (essentiel)

`ts

// app/api/webhooks/stripe/route.ts

import Stripe from 'stripe';

import { headers } from 'next/headers';

Besoin d'un site web professionnel ?

Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.

const stripe = new Stripe(process.env.STRIPE_SECRET!);

const webhookSecret = process.env.STRIPE_WEBHOOK_SECRET!;

export async function POST(req: Request) {

const body = await req.text();

const sig = (await headers()).get('stripe-signature')!;

let event: Stripe.Event;

try {

event = stripe.webhooks.constructEvent(body, sig, webhookSecret);

} catch (err) {

return new Response('Invalid signature', { status: 401 });

}

switch (event.type) {

case 'payment_intent.succeeded':

await markOrderPaid((event.data.object as Stripe.PaymentIntent).metadata.order_id);

break;

case 'payment_intent.payment_failed':

await flagOrderFailed((event.data.object as Stripe.PaymentIntent).metadata.order_id);

break;

case 'charge.refunded':

await markOrderRefunded((event.data.object as Stripe.Charge).metadata.order_id);

break;

}

return Response.json({ received: true });

}

`

Optimisations SCA pour réduire les échecs

1. Activer Radar (anti-fraude)

Stripe Radar évalue le risque et propose une exemption SCA TRA pour les paiements low-risk. Réduit jusqu'à 50 % des challenges 3DS.

2. Off-session pour les abonnements

`ts

const intent = await stripe.paymentIntents.create({

amount: 9900,

currency: 'eur',

customer: 'cus_xxx',

payment_method: 'pm_xxx',

off_session: true,

confirm: true,

});

`

3. Données client riches

Plus vous fournissez de signaux (shipping, billing, email, phone), plus l'algo Stripe optimise.

`ts

const intent = await stripe.paymentIntents.create({

amount: 4500,

currency: 'eur',

payment_method_types: ['card'],

receipt_email: 'client@example.com',

shipping: {

name: 'Aïssatou Diop',

phone: '+33612345678',

address: { line1: '15 rue de Rivoli', city: 'Paris', postal_code: '75001', country: 'FR' },

},

});

`

4. Retry intelligent

En cas d'échec 3DS, Stripe propose des "smart retries" — réessayer après 24-48h sur certains codes d'erreur. À configurer dans dashboard.

Coûts Stripe vs autres options

OptionFees %Fees fixeTotal sur 100 EUR
Stripe (cartes EU)1.4 %0.25 EUR1.65 EUR
Stripe (cartes hors EU)2.9 %0.25 EUR3.15 EUR
PayPal2.9 %0.35 EUR3.25 EUR
Adyen (entreprise)0.6-1.0 %0.10-0.25 EUR~0.80 EUR
Mollie (UE)1.8 %0.25 EUR2.05 EUR

Pour PME : Stripe ou Mollie. Pour scale : Adyen.

Cas réel — SaaS B2B Sénégal → UE

Profil : SaaS RH, 200 clients UE, ARR 480 000 EUR.

PhaseSetupÉchec SCAFees
Mois 1 (mauvaise impl)Stripe Charges legacy16 %14 200 EUR/mois fees
Mois 4 (refonte PaymentIntents + Radar)PaymentIntents + automatic3,2 %14 100 EUR/mois fees

Gain : ~6 200 EUR/mois récupérés grâce à la baisse des échecs SCA. ROI investissement refonte ~2 semaines.

FAQ

Q : Stripe Atlas convient à un fondateur sénégalais ?

R : Oui légalement, mais attention à votre fiscalité Sénégal — vous devez déclarer la holding US chez DGI Sénégal sous certains seuils.

Q : Peut-on accepter Stripe en USD pour client africain ?

R : Oui, mais le client paie des frais de change élevés côté banque. Préférer XOF/NGN/KES local + Stripe pour clients UE/US uniquement.

Q : Délai reversement Stripe ?

R : T+2 ouvré pour cartes EU, T+7 ouvré au démarrage (réserve 30 % les 6 premiers mois). Réserve dégressive ensuite.

Conclusion

Vendre en Europe depuis l'Afrique avec Stripe est techniquement maîtrisable mais demande rigueur sur SCA + 3DS2. Bien configuré : 2-4 % d'échec, fees gérables. Mal configuré : 12-18 % d'échec et fees plus impôts mal optimisés. L'investissement initial 1-2 semaines paie en quelques mois.

Tags :#Stripe#SCA#3D Secure#Europe#Afrique#PSD2
Partager :

Mohamed Bah

Fondateur, Kolonell

Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.