UK payments & ecommerce

Selling from the UK to the EU: Ecommerce Implementation Requirements

Build one explicit route from checkout to destination VAT, customs evidence, product compliance and delivery—then freeze that decision onto the order.

Guide cover: Selling from the UK to the EU: Ecommerce Implementation Requirements
By Ritesh Agarwal14 min read

Direct answer

A UK retailer selling physical goods to EU consumers needs more than euro prices and international shipping. For each order, determine where the goods dispatch from, whether the buyer is a consumer or business, whether the consignment is eligible for IOSS, who will be the importer, how destination VAT and any duty are handled, what product information must appear online, and which customs facts reach the carrier. Great Britain, Northern Ireland and stock already held in the EU are different routes. Build them as explicit rules, preserve the chosen route on the order and reconcile export, import, VAT, delivery and return evidence afterward.

GB → EU · low valueIOSS may simplify VATEligible B2C consignments up to €150; tax and customs still remain separate records.
GB → EU · otherStandard import routeName the importer and decide the customer-charge promise before checkout.
NI → EUSeparate VAT routeAssess Union OSS and do not reuse a Great Britain customs workflow.

Executive summary

  1. Dispatch location and customer type decide the route before the payment method does.
  2. IOSS collects VAT for one eligible low-value route; it does not prove origin or product compliance.
  3. Duty preference depends on origin evidence, not the warehouse or return address.
  4. The checkout promise must survive into customs, carrier, finance and returns records.

Choose the legal and operational route before configuring the store

This guide focuses on a UK consumer-goods retailer dispatching physical products to EU customers. It is technical and operational guidance, not tax, legal or product-compliance advice. Product category, destination country, delivery terms, marketplace involvement and stock location can change the answer; have a qualified adviser approve the route before release.

For goods leaving Great Britain, a sale to an EU customer is an export. HMRC permits zero rating only when its conditions are met and the seller obtains and retains evidence; the current notice also separates goods in Northern Ireland sent to the EU from Great Britain exports. A GB exporter normally needs a GB EORI number. HMRC: VAT Notice 703 · GOV.UK: get an EORI number

For eligible B2C consignments not exceeding €150, IOSS can collect destination VAT at checkout and report it through one import-scheme registration. The European Commission states that a taxable person not established in the EU needs an EU-established intermediary to use the import scheme. This is a VAT simplification, not a replacement for customs data, carrier transmission, product rules or records. European Commission: register for OSS and IOSS · European Commission: low-value customs formalities

Northern Ireland is not a field variation on the same rule. HMRC provides the Union OSS route for eligible distance sales of goods from Northern Ireland to EU consumers, including its €10,000 threshold explanation. If stock can dispatch from GB and NI, persist the warehouse territory against every order and route from that fact. HMRC: VAT One Stop Shop for Northern Ireland

A real WooCommerce decision: one “EU plugin” was four systems

In February 2024, Appycodes worked through EU-selling options for an established UK medical supplier running WooCommerce. The delivery record shows the business comparing an IOSS-focused extension with a heavier EU VAT plugin that also promoted VAT-number validation. In the same discussion, the team considered euro presentment through a country-pricing extension and then a custom integration to load a euro price tier from the client's inventory system.

The difficult decision was not which plugin had the longest feature list. The broader VAT plugin offered validation, but Appycodes judged it heavy for the store. The lighter IOSS route did not answer how the catalogue's approved euro prices would arrive from the ERP. Meanwhile, Stripe's ability to take euros did not establish the product price, VAT route or customs handoff. Four concerns—tax collection, B2B VAT evidence, currency presentment and source-of-truth pricing—had been compressed into one “sell to Europe” request.

Evidence boundary. Connected project correspondence verifies the plugin comparison, the performance trade-off, euro payment capability and the need for a custom ERP price-tier integration. It does not verify that the client launched IOSS, prove a tax position or provide conversion results. We therefore keep the client anonymous and use the record only to show the system boundary.

The practical lesson is durable: a checkout extension should not be allowed to invent the catalogue price, infer product origin or become the only record of why VAT was charged. For B2B routes, an EU VAT number can be checked through VIES, but that result is one tax-status input rather than a complete decision about the customer or transaction. European Commission: VAT identification and VIES

The Appycodes Border Readiness Gate

Score the proposed route from 0 to 3 across five gates: 0 means unknown or contradicted, 1 means discussed, 2 means configured and 3 means demonstrated with a completed test plus owned evidence. This is an Appycodes implementation model, not a compliance certification. A zero in VAT, customs or product blocks release regardless of total.

Five gates × 0–3Maximum 15
MMarket
Country, buyer type, currency, language and returns promise
VVAT
Approved route, rate source, registration, evidence and refund handling
CCustoms
Importer, commodity code, value, origin and carrier mapping
PProduct
Safety, labelling, responsible person and restricted-goods checks
OOperations
Dispatch, rejection, return, reshipment and reconciliation owners
13–15 · controlled releaseEvery blocking gate is demonstrated. Launch one country and one fulfilment route with daily exception review.
9–12 · pilot onlyClose the weakest gate with a real end-to-end shipment before opening general traffic.
0–8 · holdDo not accept orders merely because the storefront can display euros and quote postage.

A retailer might score Market 3, VAT 2, Customs 1, Product 0 and Operations 2: 8/15, hold. The zero is decisive. An attractive checkout cannot compensate for missing responsible-person details or an unapproved product listing. Under the EU General Product Safety Regulation, distance-sale offers in scope must visibly provide product identification, manufacturer details, the EU responsible person where required, and applicable warnings or safety information. Category-specific legislation may add more. EUR-Lex: General Product Safety Regulation, Article 19

A route table for the first implementation decision

Order patternStarting routeStore must knowDo not assume
GB stock, EU consumer, eligible consignment ≤ €150IOSS candidate or a deliberately different import-charge routeDestination, VAT rate, IOSS eligibility, intermediary and carrier transmissionIOSS handles duty, product compliance or every carrier fee
GB stock, EU consumer, over €150 or excluded goodsStandard export/import designImporter, delivery-charge promise, commodity code, origin, value and broker/carrier serviceThe customer will accept an unexpected collection request
NI stock, EU consumerUnion OSS review for distance salesActual NI dispatch, threshold position, destination rate and OSS evidenceA GB export declaration workflow belongs here
Stock already in an EU warehouseEU domestic or intra-EU route reviewStock location, local registrations, destination and warehouse movement recordsThe UK seller's IOSS route covers EU-held stock
EU business customerSeparate B2B routeCustomer tax evidence, contract, invoice, dispatch location and destination treatmentA syntactically valid VAT number decides the whole sale

Do not market “zero duty from the UK” as a universal rule. The UK–EU agreement provides preference only when products meet the relevant rules of origin and the claim is supported. A product bought from a third country, stored in Britain and forwarded unchanged does not become UK-originating because the parcel has a UK return address. Start from the correct commodity code, then determine the product-specific origin rule and evidence. HMRC: UK–EU product-specific rules of origin

One order needs five evidence boundaries

The storefront should collect facts; a versioned rule service should classify the route; the order should store the result. Downstream systems then add their own evidence. This prevents a later VAT-rate, catalogue or plugin change from silently rewriting the explanation for an old order.

DECIDE BEFORE PAYMENT · PRESERVE AFTER PAYMENTCheckout factsdispatch locationbuyer · country · basketRoute decisionIOSS candidatestandard import · OSSOrder snapshotVAT route + rateorigin · terms · versionCustomer promiselanded price or charges on arrivaldelivery and returns routeDOWNSTREAM EVIDENCE · EACH SYSTEM OWNS ONE JOBTax ledgerdestination VATreturn period · refundProduct mastercommodity · originsafety + responsible personCustoms dataexporter · valuedescription · procedureCarrierservice · labeltracking · exceptionsReconciliationexport proof · importVAT · delivery · returnA PAYMENT RECEIPT IS NOT CUSTOMS CLEARANCE · A VAT NUMBER IS NOT PRODUCT COMPLIANCEFIG. 01ONE ORDER, FIVE EVIDENCE BOUNDARIES
Fig. 01 The checkout decides a route and freezes it onto the order. Tax, customs, product compliance and fulfilment each contribute their own evidence instead of one plugin pretending to own the whole sale.scroll →

The tax ledger needs destination VAT and reporting periods. The product master needs commodity classification, origin evidence and the product information approved for each market. The customs payload needs descriptions, quantities, values, weights and parties. The carrier needs the fields its chosen service accepts. Reconciliation joins export proof, import result, VAT return, delivery, refund and return. These records share an order ID, but none should impersonate the others.

Implement the route as data, not theme conditionals

The classifier below is intentionally conservative. It chooses a review route; it does not calculate tax or declare an order compliant. Production code should receive approved country lists, VAT rates, exclusions and effective dates from owned configuration. The important part is that dispatch territory, customer type and consignment facts are inputs, and the selected version is stored with the order.

A conservative route classifier and immutable order snapshottypescript
type SaleFacts = {
  dispatchFrom: 'GB' | 'NI' | 'EU';
  customer: 'B2C' | 'B2B';
  destinationIsEU: boolean;
  intrinsicGoodsValueEUR: number;
  containsExciseGoods: boolean;
};

type TaxRoute =
  | 'IOSS_CANDIDATE'
  | 'STANDARD_IMPORT_REVIEW'
  | 'NI_UNION_OSS_REVIEW'
  | 'EU_STOCK_REVIEW'
  | 'B2B_REVIEW'
  | 'NOT_EU_ROUTE';

export function classifyEuSale(f: SaleFacts): TaxRoute {
  if (!f.destinationIsEU) return 'NOT_EU_ROUTE';
  if (f.customer === 'B2B') return 'B2B_REVIEW';
  if (f.dispatchFrom === 'NI') return 'NI_UNION_OSS_REVIEW';
  if (f.dispatchFrom === 'EU') return 'EU_STOCK_REVIEW';

  if (
    f.dispatchFrom === 'GB' &&
    f.intrinsicGoodsValueEUR <= 150 &&
    !f.containsExciseGoods
  ) {
    return 'IOSS_CANDIDATE';
  }

  return 'STANDARD_IMPORT_REVIEW';
}

// Persist the decision; never recompute an old order from today's rules.
await orders.create({
  ...basket,
  taxRoute: classifyEuSale(facts),
  taxRuleVersion: 'eu-sales-2026-09-21',
  dispatchFrom: facts.dispatchFrom,
  destinationCountry: basket.destinationCountry,
  goodsValueEUR: facts.intrinsicGoodsValueEUR,
  commoditySnapshot: basket.lines.map(({ sku, commodityCode, origin }) => ({
    sku, commodityCode, origin,
  })),
});

Build the implementation in this order:

  1. Create a market-launch record. Name the EU countries, consumer or business route, dispatch warehouse, currencies, languages, returns address, payment methods and delivery promise. One approved row should be able to disable checkout for that market.
  2. Complete the product master. Store the commodity code, plain-language customs description, country of origin, weight, value basis, restricted-goods flags and product-compliance artefacts per SKU. Keep evidence and approver alongside the value, not in a spreadsheet that fulfilment cannot query.
  3. Design destination pricing. Decide whether a euro figure is converted live or comes from an approved price list. Then calculate tax and delivery separately. The Appycodes project record shows why an ERP euro tier and a currency plugin are different architectures.
  4. Freeze the checkout decision. Save the route, rule version, VAT rate and amount, dispatch origin, importer promise, product snapshots, shipping service and customer-facing total. Never rebuild an invoice from today's catalogue.
  5. Map carrier fields explicitly. Treat IOSS transmission, EORI, commodity codes, origin, values, descriptions and recipient data as a tested contract per service. Reject incomplete orders into an operator queue instead of producing a plausible label with missing facts.
  6. Test a real low-risk shipment. Confirm the customer total, export event, destination clearance, absence or presence of charges, tracking, delivery and documents. A label generated in sandbox proves only that the API accepted a payload.
  7. Reconcile exceptions and returns. Record rejected imports, address fixes, undelivered parcels, refunds, returned goods, replacement shipments and tax adjustments. A return crossing the border is an operational flow, not merely a refund button.

Common failure modes we design out

PricingEuro display becomes the price source

A live converter overwrites an approved market price or margin.

Keep price-list, currency and tax decisions as separate fields.
VATIOSS number exists only in a plugin

Checkout charges VAT but the carrier payload or monthly evidence cannot be reconciled.

Store route and reporting identifiers server-side; limit their exposure.
Customs“Made in UK” follows the ship-from address

Origin is guessed from the warehouse rather than supported by product evidence.

Approve origin per SKU and rule version.
Customer experienceTaxes included, charges on arrival

The storefront promise and carrier service disagree about who pays import amounts.

Test the commercial promise against a real clearance event.
ProductThe listing is translated but incomplete

Required responsible-person, warning or traceability information is absent from the offer.

Gate product publication by market, not only by language.
OperationsRefund closes the case too early

The parcel, import record or replacement remains unresolved after money returns.

Model refund, return and reshipment as linked but separate states.

Also distinguish marketplace responsibility from direct-store responsibility. A marketplace may be deemed supplier for some VAT purposes, but that does not automatically move every customs, consumer, product-safety or fulfilment obligation. Record who owns each gate for the exact channel and route; do not copy settings from a marketplace account into the direct website.

What Appycodes recommends after real implementations

UK DTC retailerLaunch one country and one route

Start with a small approved catalogue, one dispatch warehouse and one carrier service. Use the Border Readiness Gate and review every exception daily before expanding.

UK WooCommerce storeKeep plugins behind owned order data

Let extensions calculate or transmit where useful, but persist the route, evidence and carrier mapping outside theme logic. Performance and upgrade risk belong in the decision.

UK B2B wholesalerSeparate B2B from consumer checkout

Validate and retain customer tax evidence, contract the delivery terms and build an invoice path that does not inherit consumer IOSS assumptions.

UK marketplaceScore each seller–buyer–stock route

Merchant, importer, deemed-supplier treatment, warehouse and fulfilment owner can differ per order. Put the allocation into the ledger and support tooling.

Our rule is to make the commercial promise only after the systems can reproduce it. The UK medical-supplier project exposed the trap: IOSS, VAT-number validation, euro pricing and the ERP catalogue looked like one feature but had different owners and failure modes. Our work with the Creoate cross-border marketplace and Easyship shipping calculators reinforces the same architecture: pricing, tax, customs and fulfilment remain explicit services joined by durable order facts. Appycodes implements these boundaries through our web and commerce engineering service.

Our ruleAn EU order is ready when the checkout promise, tax route, customs payload, product evidence and delivery operation all describe the same sale.

Frequently asked questions

Does a UK ecommerce business need IOSS to sell to EU consumers?
Not for every sale. IOSS is an optional VAT simplification for eligible distance sales of imported goods in consignments not exceeding €150. A UK seller using it generally appoints an EU-established intermediary. Orders outside that route need a standard import design, with the importer, VAT, duty and customer-charge experience agreed separately.
Does the UK–EU trade agreement mean every parcel is duty-free?
No. Zero tariffs depend on the goods meeting the relevant rules of origin and on the required claim or evidence. Dispatching an item from the UK does not by itself make that item UK-originating.
Is selling from Northern Ireland to the EU the same as selling from Great Britain?
No. Goods moving from Northern Ireland to EU consumers follow a distinct VAT route, and eligible distance sales may use the Union OSS scheme. Great Britain exports to the EU follow the export and import route. Store the dispatch territory on every order rather than inferring it from the company address.
Can a WooCommerce or Shopify plugin make a store EU-compliant?
A plugin can calculate or transmit part of the flow, but it cannot establish product origin, appoint the importer, create missing product-safety evidence, guarantee carrier data quality or reconcile tax and customs records. Treat plugins as adapters inside an owned operating model.

Primary sources

Published 21 Sep 2026Reviewed 21 Sep 2026Reviewer Appycodes Editorial Team

Technical and operational guidance, not legal, tax, customs, financial or product-compliance advice. Rules and carrier services change; have qualified advisers approve the route and re-check primary sources before launch.

Our clients

UK · Europe · Worldwide

Selected case studies

What we built, how it works and the results for our clients.

Creoate product interface01
B2B commerce

Eight years behind a wholesale marketplace

Next.js storefront, Python ingestion pipelines, DynamoDB data layer and AWS infrastructure.

8+ yearsdevelopment and support
Ontick product interface02
Event technology

Ticketing owned by the event team

Multi-organiser commerce, Stripe instalments and two native apps in one connected platform.

£2M+ticket sales processed
Easyship product interface03
Global logistics

Helping shippers compare their options

Rate, tax and duty calculators, server-rendered courier pages and a custom MongoDB CMS.

550+couriers in the calculator
TEFL.ie product interface04
Education & training

Connecting course sales to the classroom

WordPress and WooCommerce, a Moodle LMS, Stripe deposits and Zoho CRM, tied together with Zapier automation.

Since 2017development and support
All White Laser product interface05
Medical aesthetics

From equipment finance to clinic support

A lead-to-billing system on GoCardless Direct Debit, provider certification, and a React Native app for machine owners.

9 yrsdevelopment and support
Decofetch product interface06
Luxury commerce

A custom home for designer furniture

Server-rendered Next.js commerce over a Laravel API, bespoke operations tooling and re-architected AWS infrastructure.

0→livemarketplace development
BA Engine Room product interface07
AI operations

Connecting discovery, contracts and delivery

Discovery briefs, e-signed contracts, Stripe deposits, delivery milestones and time tracking in one operational system.

0→1custom platform development
PlusHeat product interface08
Home services

Helping customers choose their boiler cover

Custom plan configuration, postcode-qualified lead journeys, CRM synchronisation and campaign landing pages.

5 yrswebsite development and support
Léonia product interface09
Beauty commerce

Shopify shaped around a beauty brand

Custom theme, customer accounts, loyalty rewards, referrals and gift-with-purchase offers.

5 yrsShopify development and support
Shutters 365 product interface10
Home improvement

From window measurements to a priced order

A seven-step product builder with live previews, sample orders and supplier tools.

7-stepproduct configurator
Bloc Ads Manager product interface11
Advertising

From targeted ads to venue check-ins

Campaign creation, audience targeting, in-app ads and reporting linked to venue check-ins.

check-inscampaign attribution
Bloc product interface12
Social events

Four years across the app and operations

Mobile app, backend, advertising tools, a digital marketplace and website.

4+ yrssupport across five codebases
Zonely product interface13
Social mobile

Two apps, one real-time conversation marketplace

Customer and buddy apps with per-minute billing, wallets, moderation and admin tools.

2 appsfor iOS and Android
Player Profile Hub product interface14
Grassroots football

Helping grassroots players get discovered

Verified profiles, video highlights, coach discovery and safeguarding on web and mobile.

0→1custom platform development
DeepSpatial product interface15
Geospatial AI

Connecting clients, investors and emerging talent

Corporate and investor pages, the Xploor talent platform and ongoing releases on AWS Amplify.

2 yrsdevelopment and support
Yippee Malta product interface16
Travel

A booking journey the tour team owns

A multilingual website connected to the booking API, with deposits, coupons and affiliate tracking.

6languages across the booking journey
Professional Energy product interface17
Energy brokerage

Tenders, contracts and accounts brought together

Supplier tenders, contract management, brokerage accounting and client records.

100+suppliers per tender

Tell us what you are trying to build.

A thirty-minute call with the engineer who would run it.

Discuss your project