Business

Cross-Border Verification: Selling Across Europe with eIDAS

A practical guide to expanding your e-commerce business across EU markets using eIDAS-based identity verification, covering regulatory frameworks, country-specific requirements, and implementation strategies.

eIDAS Pro Team
February 8, 2026
11 min read

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

CountryE-Commerce Market (€B)Annual GrowthCross-Border Share
Germany€99.18.5%22%
United Kingdom*€134.87.2%18%
France€66.911.8%28%
Netherlands€30.69.2%55%
Italy€48.018.4%25%
Spain€37.519.2%32%
Poland€16.224.1%35%
Sweden€16.86.5%40%
Belgium€12.412.3%68%
Austria€10.28.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

AspectSingle-Country27-Country TraditionaleIDAS Single Integration
API integrations127+1
Contracts127+1
Technical formats127+1
Testing environments127+1
Support relationships127+1
Compliance reviews127+1

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:

"An electronic identification means issued in one Member State and recognized under this Regulation shall be accepted in all other Member States to access public services online and, where the relying party chooses to accept electronic identification, also to access private services."

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.

// eIDAS approach: Single integration, all countries
class EidasVerificationService {
  private eidasPro: EidasProClient;

  async verify(
    customerId: string,
    country: string,
    requirements: VerificationRequirements
  ): Promise<VerificationResult> {
    // Single API call works for all EU countries
    const session = await this.eidasPro.createSession({
      requestedAttributes: ['age_over_18'],
      // Optional: prefer specific country's eID
      preferredScheme: country,
      // Works regardless of which EU eID wallet user has
      acceptAllEuSchemes: true
    });

    // User chooses their eID wallet (any EU country)
    // Verification happens through eIDAS infrastructure
    // Result returned in standard format

    return session.waitForCompletion();
  }
}

Assurance Levels

eIDAS defines three assurance levels:

LevelDescriptionUse Cases
LowLimited confidence in claimed identityAccount creation, low-risk transactions
SubstantialSubstantial confidence, identity proofing performedFinancial services, moderate-value transactions
HighHigh confidence, identity proofing with strong evidenceRegulated industries, high-value transactions

Most EU national eID schemes operate at "Substantial" or "High" assurance levels, providing strong identity guarantees for regulated use cases.

Country-by-Country eID Wallet Availability

The following table shows current eID wallet availability across EU member states:

CountryPrimary eID SchemeAssurance LevelMobile AppAdoption Rate
AustriaID AustriaHighYes65%
BelgiumitsmeHighYes70%
Croatiae-GrađaniSubstantialYes35%
CyprusCY LoginSubstantialYes25%
Czech RepubliceObčankaSubstantialYes30%
DenmarkMitIDHighYes90%
EstoniaSmart-ID / e-ResidencyHighYes95%
FinlandFinnish Trust NetworkHighYes85%
FranceFranceConnectSubstantialYes40%
GermanyeID / nPAHighPartial45%
GreeceGov.grSubstantialYes30%
HungaryeSzemélyigazolványSubstantialPartial25%
IrelandMyGovIDSubstantialYes55%
ItalySPID / CIESubstantial/HighYes60%
LatviaeIDSubstantialYes40%
LithuaniaSmart-IDHighYes70%
LuxembourgLuxTrustHighYes75%
Maltae-IDSubstantialYes45%
NetherlandsDigiDSubstantialYes85%
PolandProfil ZaufanySubstantialYes55%
PortugalChave Móvel DigitalSubstantialYes50%
RomaniaeIDSubstantialPartial20%
SlovakiaeIDSubstantialYes35%
SloveniasmsPASSSubstantialYes45%
SpainCl@veSubstantialYes40%
SwedenBankIDHighYes95%

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
    const session = await this.eidasPro.createSession({
      language,
      preferredSchemes,
      requestedAttributes: ['age_over_18'],

      // 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:

CountryCultural ConsiderationUX Adaptation
GermanyPrivacy sensitivityEmphasize data minimization
FranceTrust in governmentHighlight government backing
NetherlandsDirectness preferenceConcise, action-oriented copy
ItalyVisual preferenceMore imagery, less text
NordicDigital-first expectationStreamlined, minimal friction
Eastern EuropeTrust verificationShow 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

CountryStandard VATDigital Services VATThreshold
Germany19%19%€10,000*
France20%20%€10,000*
Netherlands21%21%€10,000*
Italy22%22%€10,000*
Spain21%21%€10,000*
Sweden25%25%€10,000*
Poland23%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
    const verificationConfig: VerificationConfig = {
      requestedAttributes: this.mapRegulationsToAttributes(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 OriginStrategyExpected Conversion
EU/EEAFull eIDAS93%
UKeIDAS-compatible85%
SwitzerlandeIDAS-compatible85%
US/CanadaDocument verification55%
OtherConsider market restrictionVaries

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:

  1. Integrate eIDAS Pro
  2. Localize for DE, FR, NL, BE
  3. Set up VAT compliance (EU OSS)
  4. 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 (90%+), high purchasing power Actions:

  1. Add Nordic language support
  2. Integrate Nordic payment methods
  3. 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:

  1. Add ES, IT, PT language support
  2. Integrate local payment methods
  3. 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:

  1. Add PL, CZ, HU, RO support
  2. Adjust pricing for local purchasing power
  3. 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 fundamentally changes this calculation. With a single integration, merchants can verify customers across all 27 EU member states. The cryptographic trust model means verification results are legally equivalent regardless of which country's eID was used. The boolean attribute model (age_over_18: true/false) 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 provides single-integration access to all 27 EU member states. Our team can help you plan your expansion strategy and ensure compliance in each target market. Schedule an expansion consultation →

Related Articles

Share this article

Help others learn about eIDAS verification