Magento Developer France: 12 questions answered.
FR-specific Magento FAQs: Cartes Bancaires (CB), RGPD + CNIL strict, Mondial Relay, Factur-X / Chorus Pro 2025+, SIRET + TVA intracom, Loi Hamon, Hyvä for luxury.
Comment intégrer Cartes Bancaires (CB) à mon Magento 2?
Cartes Bancaires (CB) is the French national card scheme, it co-badges with Visa or Mastercard on virtually every French-issued debit/credit card. Without CB acceptance, ~70% of French cards bounce at checkout because the bank routes domestic transactions through CB by default for lower fees.
To accept CB in Magento 2, you need a PSP that supports the CB scheme natively:
- Stripe FR, CB enabled by default for FR-region accounts. Easiest route, official Magento module.
- PayPlug, French PSP, CB-first. Free Magento module.
- Adyen, CB supported via the unified card form.
- Worldline / Ingenico (Atos / Sips), legacy bank-direct route, used by big French retailers.
- Mollie / Lemonway, CB supported.
We configure the PSP, enable CB in the card-network selector, and verify with French test cards (4970 10... BIN ranges issued by BNP / SG / CA).
What’s Factur-X / Chorus Pro and when do I need it?
Factur-X is the Franco-German hybrid e-invoice format (PDF/A-3 with embedded XML). Chorus Pro is the French government’s mandatory e-invoicing platform for B2G (business-to-government) transactions, already required since 2017 if you sell to public bodies.
The B2B e-invoicing rollout is phased (deadlines have shifted, current 2024-2026 schedule):
- From 1 Sept 2026, all French companies must receive electronic invoices.
- From 1 Sept 2026, large companies (> €50M turnover) must issue e-invoices.
- From 1 Sept 2027, SMEs and micro-entreprises must issue e-invoices.
Magento integration: order/invoice generation must produce a Factur-X PDF (PDF/A-3 + Factur-X XML) and route through a PDP (Plateforme de Dématérialisation Partenaire), certified intermediaries that talk to Chorus Pro / PPF (Portail Public de Facturation). We integrate with PDPs like Pennylane, Esker, or Sage e-invoicing, Magento → PDP → PPF → recipient’s ERP.
Should I use Adobe Commerce Cloud Frankfurt or OVHcloud / Scaleway?
Depends on your volume + budget + data-residency posture:
- Adobe Commerce Cloud (Frankfurt region), best if you’re already on Adobe Commerce. Auto-scaling, Fastly CDN, 24/7 Adobe support, < 30ms latency to Paris / Lyon. Costs €25k+ /yr, locks you to Adobe. Frankfurt isn’t France, some CNIL-conscious clients prefer FR-based hosting for the optics, even though Frankfurt is GDPR-compliant.
- OVHcloud, French cloud giant (Roubaix / Strasbourg / Gravelines DCs). Strong on price, French support, sovereign-cloud option for public-sector. Less auto-scaling than Adobe Commerce Cloud; more DevOps work.
- Scaleway, younger French cloud (Iliad / Free), good for modern stacks, S3-compatible storage, Kubernetes. Great for Hyvä-headless or PWA setups.
- AWS Paris (eu-west-3), if you want US-grade tooling but FR data residency.
- Hyvä Cloud / Cloudways Paris, managed Magento, €200-800 /mo, good middle ground for €500k, €5M stores.
We benchmark + migrate, the right answer depends on whether you need FR data residency or just FR low-latency.
Should I migrate to Hyvä for my French luxury store?
Almost certainly yes if you’re on Luma. French luxury / fashion shoppers convert dramatically better on fast mobile experiences, and Paris-based luxury brands compete on UX polish:
- Lighthouse 95+ on Hyvä vs typically 40-60 on Luma luxury themes, Google ranks fast pages higher for category/PDP queries (huge for luxury SEO where competition is fierce).
- Hyvä Checkout loads in < 1s, 50% lower bounce vs Magento Luma checkout, especially mobile (which is now > 70% of FR luxury traffic).
- Cartes Bancaires + Alma BNPL widgets render natively without the React/jQuery double-render Luma has.
- Mondial Relay pickup-point selector renders instantly, no spinner-on-spinner on the map widget.
- Image-heavy luxury PDPs use modern
<picture>+ AVIF / WebP, image weights drop 60-80%.
Typical migration timeline: 4-6 weeks. Conversion lift in the first 90 days post-launch is usually 8-25% from speed alone.
What’s Loi Hamon and how does it affect Magento checkout?
Loi Hamon (2014, Loi n°2014-344 « relative à la consommation ») is the French consumer-protection law that strengthened EU directive rules around distance-selling. Key Magento checkout impacts:
- 14-day cooling-off period, B2C customers can return goods within 14 days, no reason needed. Standard EU rule but Loi Hamon extended it to digital goods + services.
- Pre-contractual information, customers must see, before paying, the total price (incl. TVA + shipping), seller identity (RCS / SIRET), delivery date, return policy. Magento’s checkout review step covers this if configured properly.
- Explicit confirm-button text, the final order button must say « Commande avec obligation de paiement » (or equivalent), not just « Confirmer ». We override the Magento checkout button label in the FR view.
- Extended insurance / warranty disclosure, if you offer paid extras, Loi Hamon requires unticked-by-default checkboxes (similar to CNIL on cookies).
- Subscription cancellation, for subscription stores, customers can cancel via the same channel they signed up.
We audit + adjust checkout copy / flow for Loi Hamon compliance on every FR build.
How does Mondial Relay pickup-point integration work in Magento?
Mondial Relay is the dominant pickup-point carrier in France, ~13,000 points-relais across FR + BE + LU + ES, often preferred over home delivery by French shoppers (cheaper for them, safer than leaving parcels at the door). Standard French e-commerce expectation: Mondial Relay must be in the carrier list.
Magento integration steps:
- Install a Mondial Relay Magento 2 module (community modules from Wyomind, Mageplaza, or direct from Mondial Relay’s SDK).
- Configure your Mondial Relay merchant code + private key in admin.
- Add the pickup-point selector widget to checkout, renders a map + list of nearest points based on the customer’s postcode.
- Save the chosen point-relais ID against the
sales_order_addressas a custom shipping address. - Generate Mondial Relay labels from the Magento order grid; tracking webhooks update
sales_shipment.
For Hyvä we ship a custom Alpine.js / Tailwind selector since the legacy modules are jQuery / RequireJS-only.
Can I run a single Magento for FR + BE + LU?
Yes, Magento’s multi-store architecture handles FR + BE + LU cleanly because all three share French-language content, EUR currency, and similar (but not identical) tax rules:
- Single Magento backend, 3 stores, one for FR, one for BE (FR-language), one for LU. Shared catalogue, separate URLs (yourbrand.fr / yourbrand.be / yourbrand.lu) or one domain with country selector.
- Per-store TVA, FR 20%, BE 21%, LU 17%. Each with its own reduced rates. Magento
tax_zonerules perstore. - Per-store payment methods, FR adds CB + PayPlug + Alma, BE adds Bancontact, LU keeps it lean. Configured per
store. - Per-store shipping, Mondial Relay for FR + BE, bpost for BE-only, POST Luxembourg for LU.
- Per-store legal pages, Mentions légales (FR), Conditions générales (BE), Conditions générales (LU). RGPD applies to all three but enforcement is via CNIL (FR), APD/GBA (BE), CNPD (LU).
For Belgian Dutch-speakers (Flanders), you’d add a 4th store with NL-language. Architecture decided in the audit step.
How do I migrate from PrestaShop or Shopify to Magento for the French market?
Both are common starting points in France, PrestaShop is French-founded (Paris, 2007) and dominant in the FR €100k, €5M segment, while Shopify wins early-stage DTC. Migration triggers are usually B2B requirements, multi-store needs, or Cartes Bancaires limitations.
- PrestaShop → Magento, same data shape (products, customers, orders), straightforward CSV / DB-level migration. PrestaShop modules don’t port; we rebuild the FR-specific ones (CB, Mondial Relay, Colissimo) on Magento. Typical timeline 4-8 weeks.
- Shopify → Magento, export via Shopify Admin API, transform into Magento
catalog_product+customerentities. Pay attention to: variants ↔ configurables, Shopify Payments → CB-enabled PSP, app subscriptions cancelled. Typical timeline 6-12 weeks.
For both: 301-redirect every URL to preserve SEO ranking, preserve customer passwords via a one-shot hash-rewrap on first login, and preserve order history by importing as historical orders.
What’s the difference between RGPD (CNIL) strict guidance vs other EU countries?
RGPD is just France’s name for GDPR, same regulation. The difference is enforcement: the CNIL (Commission Nationale de l’Informatique et des Libertés) is one of the strictest GDPR enforcement bodies in the EU, with multi-million-euro fines against Google, Amazon, Facebook, TikTok, etc.
Concrete differences from a Magento perspective:
- Cookie consent, CNIL requires granular, per-purpose opt-in. No pre-ticked checkboxes. No “continued browsing = consent”. The “Reject all” button must be as prominent as “Accept all” (CNIL guidance, 2021+ enforced).
- Cookie wall ban, you cannot block content for users who refuse non-essential cookies (CNIL position, narrower than ICO).
- Data localisation, CNIL prefers EU-region hosting (Adobe Commerce Cloud Frankfurt, OVHcloud, Scaleway).
- Loi Informatique et Libertés, the French national law (1978, updated 2018 + 2024) layered on top of RGPD. Adds rules around health data, biometric data, and France-specific DSAR routing.
We ship Cookiebot / Axeptio / Didomi (French-native) wired into Magento’s cookie API, banner copy reviewed against CNIL guidance.
How do I validate SIRET + TVA intracommunautaire in Magento?
Two French B2B identifiers, two different validators:
- SIRET (Système d’Identification du Répertoire des Etablissements), 14-digit number identifying a specific establishment of a French company. Validated against the SIRENE database (free API from INSEE).
- TVA intracommunautaire (TVA intracom), format
FR + 2 check digits + 9-digit SIREN. Validated via the VIES VAT service (EU-wide).
For Magento B2B we:
- Add SIRET + TVA intracom fields to the
customerentity (or B2Bcompanyif you’re on Adobe Commerce). - Validate SIRET against the SIRENE API on registration, rejects invalid / closed companies, auto-fills company name + address.
- Validate TVA intracom against VIES, required for cross-border zero-rated B2B sales (intra-EU).
- Apply 0% TVA on B2B intra-EU sales with a valid VIES-validated TVA number (reverse charge); 20% on B2C and FR→FR B2B.
- Cache validations 30 days, re-validate on any address change.
What time-zone overlap can I expect from India?
Real, daily, 4-6 hours of working overlap:
- India Standard Time = UTC+5:30
- France = UTC+1 (CET, winter) or UTC+2 (CEST, summer)
- Overlap window: 12 PM, 6 PM IST = 7:30 AM, 1:30 PM CET (winter) or 8:30 AM, 2:30 PM CEST (summer).
That covers your morning standup, mid-morning review, and lunchtime hand-off. Daily 4 PM CET review on staging is the typical cadence. If you need late-day overlap (post-3 PM CET) we can flex 2-3 days/week. Slack / WhatsApp async covers the rest. We’ve worked this way with Paris, Lyon, Marseille, and Bordeaux clients for years.
Comment configurer la TVA 20% / 10% / 5.5% / 2.1% par catégorie?
France has four standard TVA rates, applied per category:
- 20%, standard rate (most goods + services).
- 10%, reduced (restaurants, transport, some renovations, “non-improving” works).
- 5.5%, reduced (most food, books, water, energy improvements, female hygiene products since 2016).
- 2.1%, super-reduced (reimbursable medicines, press publications).
Magento configuration:
- Create 4 tax classes in Stores → Tax Zones & Rates (TVA-20, TVA-10, TVA-5.5, TVA-2.1).
- Create 4 tax rules per rate, scoped to FR (or EU + auto-detect via destination).
- Assign each product’s tax class based on its category, we usually wire this via the
category_id → tax_classmapping in a custom CategoryAttribute observer (so admins don’t need to set it per product). - For B2B intra-EU, override to 0% if a valid VIES-validated TVA intracom is on the customer.
Tax-inclusive prices on storefront (mandatory in EU B2C); tax-exclusive on B2B if explicitly opted-in.
Not answered above?
Send the question as a brief; the answer comes back in writing within 24 hours, with a quote if it needs work.