Corrected 20 October 2026: an earlier version of this post showed code requesting an
age_over_18attribute from the EU Digital Identity Wallet. The wallet's PID has no such attribute: it shares the birth date, and eIDAS Pro reduces it to a yes/no before anything is stored. We also corrected wording that implied EU Digital Identity Wallet verification across all 27 member states is available through eIDAS Pro today: it is not yet live for merchants, and our live method is bank eID (iDIN, Netherlands). The national eID table no longer suggests we integrate those schemes, unsourced adoption and conversion percentages were removed, and a paraphrase of the eIDAS Regulation is no longer presented as a quotation.
The European E-Commerce Opportunity
The European Union represents one of the world's largest and most affluent e-commerce markets. With over 445 million consumers, €750 billion in annual online retail sales, and continuing double-digit growth rates, the EU offers enormous opportunity for merchants who can navigate its complexities.
Yet for many businesses, "EU expansion" remains more aspiration than reality. The promise of the Digital Single Market often crashes against the fragmented reality of 27 different legal systems, languages, payment preferences, and regulatory requirements.
Identity verification is a prime example. A German wine merchant wanting to sell to Austrian customers needs to verify age. A Dutch gaming platform accepting players from Estonia needs robust KYC. A French healthcare provider offering telemedicine across borders needs identity assurance. Each scenario, under traditional approaches, would require separate integrations, contracts, and compliance frameworks for each country.
eIDAS changes this equation fundamentally.
Market Size by Country
| Country | E-Commerce Market (€B) | Annual Growth | Cross-Border Share |
|---|---|---|---|
| Germany | €99.1 | 8.5% | 22% |
| United Kingdom* | €134.8 | 7.2% | 18% |
| France | €66.9 | 11.8% | 28% |
| Netherlands | €30.6 | 9.2% | 55% |
| Italy | €48.0 | 18.4% | 25% |
| Spain | €37.5 | 19.2% | 32% |
| Poland | €16.2 | 24.1% | 35% |
| Sweden | €16.8 | 6.5% | 40% |
| Belgium | €12.4 | 12.3% | 68% |
| Austria | €10.2 | 8.7% | 55% |
*UK has its own digital identity framework (GOV.UK One Login) with separate legal basis — not formally eIDAS-compatible
Key Insight: Smaller markets have disproportionately high cross-border purchase rates. Belgian consumers, for instance, make 68% of their online purchases from foreign merchants. These markets are accessible to merchants who can handle cross-border verification.
Growth Projections
The EU e-commerce market is projected to reach €1.2 trillion by 2028, with cross-border sales growing at nearly twice the rate of domestic sales. Regulatory harmonization through the Digital Single Market initiative continues to reduce barriers, and eIDAS 2.0 will further accelerate this trend.
Cross-Border Verification Challenges
Without eIDAS, cross-border identity verification presents formidable challenges:
Fragmented Regulatory Landscape
Each EU member state maintains distinct requirements for identity verification:
Document Types: Each country issues different identity documents with varying security features, formats, and validity rules. A traditional verification system must recognize and validate:
- National ID cards (varying formats across countries)
- Passports (standardized but different national versions)
- Driving licenses (highly variable, not always valid for identity)
- Residence permits (diverse formats)
- Refugee travel documents
Age Thresholds: While 18 is the most common age of majority, requirements vary:
- Germany: 16 for beer/wine, 18 for spirits
- Belgium: 16 for beer/wine, 18 for spirits
- Sweden: 20 for Systembolaget alcohol retail
- Malta: 17 for gambling
- Portugal: 16 for driving, 18 for alcohol
Data Protection: GDPR applies across the EU, but national implementations differ:
- Germany: Stricter interpretation, higher penalties
- France: CNIL specific requirements
- Ireland: Lead regulator for many US tech companies
- Poland: Language localization requirements
Multiple Integration Requirements
Traditional cross-border verification means integrating with multiple providers:
// Traditional approach: Multiple provider integrations
class LegacyMultiCountryVerification {
private providers: Map<string, VerificationProvider> = new Map([
['DE', new GermanVerificationProvider()], // German PostIdent
['AT', new AustrianVerificationProvider()], // Austrian Bürgerkarte
['NL', new DutchVerificationProvider()], // iDIN
['BE', new BelgianVerificationProvider()], // itsme
['DK', new DanishVerificationProvider()], // NemID/MitID
['SE', new SwedishVerificationProvider()], // BankID
['FI', new FinnishVerificationProvider()], // Finnish Trust Network
['EE', new EstonianVerificationProvider()], // Smart-ID
// ... 19 more countries
]);
async verify(
customerId: string,
country: string
): Promise<VerificationResult> {
const provider = this.providers.get(country);
if (!provider) {
throw new Error(`No verification provider for ${country}`);
}
// Each provider has different:
// - API formats
// - Authentication methods
// - Response structures
// - Error handling
// - Webhook formats
// - Pricing models
// - Contract requirements
return provider.verify(customerId);
}
}
Integration Complexity
| Aspect | Single-Country | 27-Country Traditional | eIDAS Single Integration |
|---|---|---|---|
| API integrations | 1 | 27+ | 1 |
| Contracts | 1 | 27+ | 1 |
| Technical formats | 1 | 27+ | 1 |
| Testing environments | 1 | 27+ | 1 |
| Support relationships | 1 | 27+ | 1 |
| Compliance reviews | 1 | 27+ | 1 |
The right-hand column describes the EU Digital Identity Wallet model once wallets and relying-party certificates are available. It is not yet how cross-border verification works today (see "Where this stands today" below).
Cost Multiplication
Traditional cross-border verification multiplies costs:
- Per-country setup fees: €5,000-25,000 × 27 countries
- Per-country minimum volumes: Often required by contracts
- Per-country compliance reviews: Legal review of each provider
- Per-country maintenance: API updates, certificate renewals
- Staff training: Different workflows for different countries
eIDAS: One Integration, 27 Countries
The eIDAS Regulation (EU 910/2014) established a framework for cross-border recognition of electronic identification. Under eIDAS:
Notified electronic identification means from one Member State must be recognised by online public services in the other Member States (Article 6). Private-sector relying parties may choose to accept them, but are not obliged to.
How Mutual Recognition Works
The eIDAS mutual recognition framework operates through:
1. National Notification: Each member state notifies the European Commission of electronic identification schemes that meet eIDAS requirements.
2. Peer Review: Notified schemes undergo peer review by other member states to ensure compliance with assurance level requirements.
3. Technical Interoperability: The eIDAS nodes in each country translate between national identity systems and a common protocol, enabling cross-border authentication.
4. Legal Equivalence: A verification performed through a notified eID scheme carries the same legal weight regardless of which country's citizens uses it.
Where this stands today: the single-integration model below is what the EU Digital Identity Wallet is designed to deliver. It is not live for merchants yet. Relying parties need a wallet-relying-party access certificate (WRPAC), and no such certificate can be obtained anywhere yet. eIDAS Pro's live verification method today is bank eID — iDIN in the Netherlands, via the IDURA broker. Our EU Digital Identity Wallet route exists in code but is not switched on in production.
// EUDI Wallet model: one integration for wallets from every Member State
class EidasVerificationService {
private eidasPro: EidasProClient;
async verify(
customerId: string,
country: string,
requirements: VerificationRequirements
): Promise<VerificationResult> {
// Designed so one call covers wallets from every EU country once
// EUDI verification is live (today: bank eID via iDIN in the Netherlands)
const session = await this.eidasPro.createSession({
// 18+ check: from a PID the wallet shares the birth date once;
// eIDAS Pro derives the yes/no and never stores the date
verificationType: 'age',
// Optional: link order data to the result
metadata: { customerId }
});
// User presents a credential from their EUDI Wallet
// The verifier checks it against the EU trusted lists
// Result returned in standard format
return session.waitForCompletion();
}
}
Assurance Levels
eIDAS defines three assurance levels:
| Level | Description | Use Cases |
|---|---|---|
| Low | Limited confidence in claimed identity | Account creation, low-risk transactions |
| Substantial | Substantial confidence, identity proofing performed | Financial services, moderate-value transactions |
| High | High confidence, identity proofing with strong evidence | Regulated industries, high-value transactions |
Most EU national eID schemes operate at "Substantial" or "High" assurance levels, providing strong identity guarantees for regulated use cases.
National eID Schemes Across the EU
The national eID schemes below exist today and show how varied the landscape is. They are listed for orientation only: eIDAS Pro does not integrate them, and its one live method today is bank eID via iDIN in the Netherlands. Assurance levels are indicative — check the European Commission's overview of notified eID schemes for the authoritative status.
| Country | Primary eID Scheme | Assurance Level | Mobile App |
|---|---|---|---|
| Austria | ID Austria | High | Yes |
| Belgium | itsme | High | Yes |
| Croatia | e-Građani | Substantial | Yes |
| Cyprus | CY Login | Substantial | Yes |
| Czech Republic | eObčanka | Substantial | Yes |
| Denmark | MitID | High | Yes |
| Estonia | Smart-ID / e-Residency | High | Yes |
| Finland | Finnish Trust Network | High | Yes |
| France | FranceConnect | Substantial | Yes |
| Germany | eID / nPA | High | Partial |
| Greece | Gov.gr | Substantial | Yes |
| Hungary | eSzemélyigazolvány | Substantial | Partial |
| Ireland | MyGovID | Substantial | Yes |
| Italy | SPID / CIE | Substantial/High | Yes |
| Latvia | eID | Substantial | Yes |
| Lithuania | Smart-ID | High | Yes |
| Luxembourg | LuxTrust | High | Yes |
| Malta | e-ID | Substantial | Yes |
| Netherlands | DigiD | Substantial | Yes |
| Poland | Profil Zaufany | Substantial | Yes |
| Portugal | Chave Móvel Digital | Substantial | Yes |
| Romania | eID | Substantial | Partial |
| Slovakia | eID | Substantial | Yes |
| Slovenia | smsPASS | Substantial | Yes |
| Spain | Cl@ve | Substantial | Yes |
| Sweden | BankID | High | Yes |
Rollout Timeline (eIDAS 2.0)
The eIDAS 2.0 regulation (Regulation (EU) 2024/1183) mandates that all 27 EU member states must make at least one EU Digital Identity Wallet available to their citizens by December 2026. This deadline is set at 24 months from the entry into force of the implementing acts, which were published on 4 December 2024 and entered into force approximately 24 December 2024.
Large Scale Pilots continue to test real-world scenarios, with 6 total pilots (4 concluded, 2 new ones started in Autumn 2025) involving over 550 companies and authorities across 26 member states plus Norway, Iceland, and Ukraine.
Multi-Language Verification Flows
Successful cross-border commerce requires localization beyond translation:
Language Detection and Routing
interface LocalizationContext {
browserLanguage: string;
ipCountry: string;
accountLanguage?: string;
preferredCurrency: string;
}
class LocalizedVerificationService {
async createLocalizedSession(
context: LocalizationContext
): Promise<LocalizedVerificationSession> {
// Determine optimal language
const language = this.selectLanguage(context);
// Select country-appropriate eID schemes
const preferredSchemes = this.selectSchemes(context);
// Create session with localized content
// (illustrative wrapper: language, scheme hints and copy live in your UI layer)
const session = await this.eidasPro.createSession({
language,
preferredSchemes,
verificationType: 'age', // yes/no only, derived from the birth date
// Localized messaging
customMessages: {
title: this.t('verification.title', language),
instructions: this.t('verification.instructions', language),
successMessage: this.t('verification.success', language),
errorMessages: this.getLocalizedErrors(language)
}
});
return session;
}
private selectLanguage(context: LocalizationContext): string {
// Priority: account preference > browser > IP location > default
return context.accountLanguage
|| this.mapBrowserLanguage(context.browserLanguage)
|| this.countryToLanguage(context.ipCountry)
|| 'en';
}
private selectSchemes(context: LocalizationContext): string[] {
// Suggest schemes likely available to user
const schemes: string[] = [];
// Primary: user's likely country
if (context.ipCountry) {
schemes.push(this.countryToScheme(context.ipCountry));
}
// Secondary: neighboring countries (mobile users traveling)
const neighbors = this.getNeighboringCountries(context.ipCountry);
schemes.push(...neighbors.map(c => this.countryToScheme(c)));
// Fallback: all EU schemes
return [...new Set(schemes)];
}
}
Cultural Considerations
Beyond language, verification UX should consider cultural factors:
| Country | Cultural Consideration | UX Adaptation |
|---|---|---|
| Germany | Privacy sensitivity | Emphasize data minimization |
| France | Trust in government | Highlight government backing |
| Netherlands | Directness preference | Concise, action-oriented copy |
| Italy | Visual preference | More imagery, less text |
| Nordic | Digital-first expectation | Streamlined, minimal friction |
| Eastern Europe | Trust verification | Show security certifications |
Right-to-Left Support
For EU residents with RTL language preferences:
const rtlLanguages = ['ar', 'he', 'fa', 'ur'];
function applyRtlSupport(language: string): LayoutConfig {
if (rtlLanguages.includes(language)) {
return {
direction: 'rtl',
textAlign: 'right',
iconPosition: 'left',
qrCodePosition: 'left'
};
}
return {
direction: 'ltr',
textAlign: 'left',
iconPosition: 'right',
qrCodePosition: 'right'
};
}
Legal Considerations by Market
Each market has specific legal requirements beyond identity verification:
VAT and Tax Compliance
| Country | Standard VAT | Digital Services VAT | Threshold |
|---|---|---|---|
| Germany | 19% | 19% | €10,000* |
| France | 20% | 20% | €10,000* |
| Netherlands | 21% | 21% | €10,000* |
| Italy | 22% | 22% | €10,000* |
| Spain | 21% | 21% | €10,000* |
| Sweden | 25% | 25% | €10,000* |
| Poland | 23% | 23% | €10,000* |
*EU OSS (One Stop Shop) threshold for cross-border B2C sales
Data Residency Requirements
Some member states have specific data localization preferences:
interface DataResidencyConfig {
country: string;
requirements: {
personalData: 'EU' | 'EEA' | 'country' | 'none';
financialData: 'EU' | 'EEA' | 'country' | 'none';
healthData: 'EU' | 'EEA' | 'country' | 'none';
};
}
const dataResidencyConfigs: DataResidencyConfig[] = [
{
country: 'DE',
requirements: {
personalData: 'EU',
financialData: 'EU',
healthData: 'country' // German health data stays in Germany
}
},
{
country: 'FR',
requirements: {
personalData: 'EU',
financialData: 'EU',
healthData: 'EU'
}
},
// Most countries: EU-wide storage acceptable
{
country: 'DEFAULT',
requirements: {
personalData: 'EU',
financialData: 'EU',
healthData: 'EU'
}
}
];
Consumer Protection
EU consumer rights include:
- Right of withdrawal: 14-day return period for most goods
- Price transparency: All-inclusive pricing required
- Language requirements: Key terms in consumer's language
- Dispute resolution: ODR platform access required
Technical Implementation for Multi-Country
Geo-Detection and Routing
class GeoAwareVerificationRouter {
private geoService: GeoLocationService;
private eidasService: EidasProClient;
async routeVerification(
request: VerificationRequest,
clientIp: string
): Promise<VerificationSession> {
// Determine user's likely location
const geoData = await this.geoService.lookup(clientIp);
// Determine applicable regulations
const regulations = this.getApplicableRegulations(
geoData.country,
request.merchantCountry,
request.productCategory
);
// Configure verification based on regulations (illustrative config)
const verificationConfig: VerificationConfig = {
// 'age' | 'country' | 'both'; the age check is a fixed 18+ threshold
verificationType: this.mapRegulationsToVerificationType(regulations),
minAssuranceLevel: regulations.requiredAssurance,
preferredSchemes: this.getPrioritySchemes(geoData.country),
language: this.detectLanguage(request, geoData),
// Compliance metadata for audit
complianceContext: {
customerCountry: geoData.country,
merchantCountry: request.merchantCountry,
applicableRegulations: regulations.ids,
verificationPurpose: request.purpose
}
};
return this.eidasService.createSession(verificationConfig);
}
private getApplicableRegulations(
customerCountry: string,
merchantCountry: string,
productCategory: string
): RegulationSet {
// Age-restricted products: customer's country rules
if (['alcohol', 'tobacco', 'gambling'].includes(productCategory)) {
return this.getCountryAgeRegulations(customerCountry);
}
// Financial services: merchant's country rules
if (['financial', 'insurance'].includes(productCategory)) {
return this.getCountryFinancialRegulations(merchantCountry);
}
// Default: applicable rules from both
return this.combineRegulations(customerCountry, merchantCountry);
}
}
Handling Multiple eID Schemes
Users may have multiple eID wallets. Allow choice while optimizing for success:
interface SchemeSelectionUI {
primaryScheme: {
id: string;
name: string;
icon: string;
recommended: boolean;
};
alternativeSchemes: Array<{
id: string;
name: string;
icon: string;
}>;
showAllSchemes: boolean;
}
function buildSchemeSelectionUI(
userCountry: string,
availableSchemes: string[]
): SchemeSelectionUI {
// Primary: user's country scheme (most likely to have)
const primaryScheme = getCountryScheme(userCountry);
// Alternatives: other schemes user might have
// (e.g., expats, dual citizens, business travelers)
const alternatives = availableSchemes
.filter(s => s !== primaryScheme.id)
.slice(0, 4); // Show top 4 alternatives
return {
primaryScheme: {
...primaryScheme,
recommended: true
},
alternativeSchemes: alternatives.map(getSchemeInfo),
showAllSchemes: availableSchemes.length > 5
};
}
Handling Non-EU Customers
Not all customers will have EU eID wallets. Implement graceful fallbacks:
Hybrid Approach
class HybridVerificationService {
async determineVerificationMethod(
customer: CustomerContext
): Promise<VerificationMethod> {
// Check EU eID availability
const euEidAvailable = this.isEuEidLikely(customer);
if (euEidAvailable) {
return {
type: 'EIDAS',
provider: 'eidas-pro',
confidence: 'high',
conversionExpectation: 0.93
};
}
// Check for eIDAS-compatible schemes (EEA, UK, Switzerland)
const eidasCompatible = this.isEidasCompatible(customer.country);
if (eidasCompatible) {
return {
type: 'EIDAS_COMPATIBLE',
provider: 'eidas-pro',
confidence: 'medium',
conversionExpectation: 0.85
};
}
// Fallback for non-EU/EEA customers
return {
type: 'DOCUMENT',
provider: 'fallback-kyc',
confidence: 'low',
conversionExpectation: 0.55,
note: 'Consider restricting age-verified products to EU customers'
};
}
private isEuEidLikely(customer: CustomerContext): boolean {
// EU/EEA countries
const euCountries = ['AT', 'BE', 'BG', 'HR', 'CY', 'CZ', 'DK', 'EE',
'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT',
'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE',
// EEA
'NO', 'IS', 'LI'];
return euCountries.includes(customer.country) ||
euCountries.includes(customer.billingCountry);
}
}
Market-Specific Strategies
| Customer Origin | Strategy |
|---|---|
| EU/EEA | eID or EUDI Wallet where available, fallback where not |
| UK | Document verification or a UK digital identity service |
| Switzerland | Document verification |
| US/Canada | Document verification |
| Other | Consider market restriction |
Expansion Roadmap Template
Planning your European expansion:
Phase 1: Core Markets (Months 1-3)
Target: Germany, France, Netherlands, Belgium Why: Large markets, high eID adoption, proximity Actions:
- Integrate eIDAS Pro
- Localize for DE, FR, NL, BE
- Set up VAT compliance (EU OSS)
- Launch marketing campaigns
Success Metrics:
- 500+ cross-border verified transactions/month
- Less than 5% verification abandonment
- Less than 1% fraud rate
Phase 2: Nordic Expansion (Months 4-6)
Target: Sweden, Denmark, Finland, Norway Why: Very high eID adoption, high purchasing power Actions:
- Add Nordic language support
- Integrate Nordic payment methods
- Adjust for Nordic consumer preferences
Success Metrics:
- 300+ Nordic transactions/month
- Nordic conversion rate matches domestic
Phase 3: Southern Europe (Months 7-9)
Target: Spain, Italy, Portugal Why: Growing e-commerce, improving eID adoption Actions:
- Add ES, IT, PT language support
- Integrate local payment methods
- Adapt marketing for cultural differences
Phase 4: Eastern Europe (Months 10-12)
Target: Poland, Czech Republic, Hungary, Romania Why: Fastest-growing e-commerce markets, emerging middle class Actions:
- Add PL, CZ, HU, RO support
- Adjust pricing for local purchasing power
- Local payment method integration
Ongoing: Monitor and Optimize
interface ExpansionMetrics {
country: string;
monthlyTransactions: number;
verificationConversion: number;
averageOrderValue: number;
customerAcquisitionCost: number;
customerLifetimeValue: number;
netPromoterScore: number;
}
function evaluateMarketPerformance(
metrics: ExpansionMetrics
): MarketEvaluation {
const roi = (metrics.customerLifetimeValue - metrics.customerAcquisitionCost)
/ metrics.customerAcquisitionCost;
return {
country: metrics.country,
status: roi > 2 ? 'thriving' : roi > 1 ? 'growing' : 'review',
recommendations: generateRecommendations(metrics)
};
}
Conclusion
Cross-border e-commerce in Europe represents an enormous opportunity, but one that has historically been gated by verification complexity. Each additional country meant additional integrations, contracts, compliance reviews, and operational overhead—costs that made expansion uneconomical for all but the largest merchants.
eIDAS 2.0 is set to change this calculation. The EU Digital Identity Wallet is designed so that a single integration can verify customers from all 27 member states, once wallets are issued and relying-party certificates can be obtained — neither is in place for merchants yet. The cryptographic trust model means verification results are legally equivalent regardless of which country's eID was used. The yes/no result model (the wallet shares only the birth date, and eIDAS Pro reduces it to "18+: true/false" before storing anything) eliminates PII handling complexity.
For merchants already operating in one EU market, expansion to additional markets becomes primarily a localization and marketing exercise rather than a technical integration project. For merchants outside Europe looking to enter the EU market, eIDAS provides a single point of entry to the world's largest single market.
As eIDAS 2.0 rolls out with the EU Digital Identity Wallet, adoption rates will increase further, making cross-border verification even more seamless. Merchants who establish their eIDAS infrastructure now will be positioned to capture this growing opportunity.
Ready to expand across Europe? eIDAS Pro offers bank-eID age verification (iDIN, Netherlands) today and is building EU Digital Identity Wallet verification, so that one integration can reach more markets as wallets go live. Our team can help you plan your expansion strategy and ensure compliance in each target market. Schedule an expansion consultation →
Related Articles
eIDAS vs Traditional KYC: A Cost and Conversion Analysis
A data-driven comparison of eIDAS-based verification against traditional KYC methods, analyzing total cost of ownership, conversion rate impact, and long-term ROI projections for e-commerce businesses.
10 min read
eIDAS 2.0 and the EU Digital Identity Wallet: What Merchants Need to Know
A comprehensive guide to the upcoming eIDAS 2.0 regulation and EU Digital Identity Wallet, covering timelines, new capabilities, and how merchants can prepare for the next generation of digital identity.
10 min read
Share this article
Help others learn about eIDAS verification