Shopify is great for selling. It handles payments, shipping, inventory, taxes. When Shopify Markets launched, it even simplified cross-border VAT collection into something manageable. But when it comes to EPR — tracking how much packaging you put on the EU market and reporting it to national Producer Responsibility Organizations — Shopify doesn't do anything. That's on you.
This gap catches a lot of Shopify merchants off guard. You set up your store, configure Shopify Markets for EU sales, start shipping to Germany and France and Spain, and everything feels handled. Then you get an email from Amazon (if you also sell there) asking for your LUCID registration number, or a letter from ECOEMBES asking about your packaging declarations, and you realize there's an entire compliance layer that Shopify never mentioned.
This guide covers the complete workflow from Shopify orders to compliant EPR declarations — what Shopify handles, what it doesn't, and how to bridge the gap.
What Shopify does and doesn't do for EPR
It helps to be precise about where Shopify's responsibility ends and yours begins.
Shopify handles:
- Order management — every sale is recorded with product, quantity, date, and shipping address
- Tax calculation — including EU VAT via Shopify Markets, with automatic rate application by country
- Shipping labels — via Shopify Shipping or third-party integrations
- Customer data — name, address, country (which you need for EPR country allocation)
- Product catalog — SKUs, variants, inventory levels
Shopify does NOT handle:
- EPR registration — you must register with each country's PRO yourself (LUCID in Germany, CITEO in France, ECOEMBES in Spain, etc.)
- Packaging weight tracking — Shopify has no concept of packaging materials or weights per product
- Material classification — cardboard, plastic (PET/HDPE/LDPE/PP), glass, metal — none of this exists in Shopify's data model
- PRO declarations — generating the formatted reports each PRO requires
- Fee payments — paying the EPR fees invoiced by each PRO
Shopify Markets helps with VAT. But VAT and EPR are completely separate obligations. VAT is a tax on the transaction. EPR is a fee on the packaging you place on the market. Different legal basis, different registration, different reporting, different deadlines.
The data gap
For EPR, you need to connect two datasets that Shopify keeps entirely separate — because Shopify was never designed to connect them.
Dataset 1: Sales data. Which products were sold, how many, to which country, on what date. Shopify has all of this, stored in every order record.
Dataset 2: Packaging data. What materials and weights make up each product's packaging. Shopify has no concept of this. There is no field in the Shopify product editor for "packaging material" or "packaging weight." It simply does not exist.
The EPR calculation is:
Sales quantity × packaging weight per material × per country = your declaration
Without bridging this gap, you cannot generate a compliant declaration. You have half the equation (sales) but not the other half (packaging). Shopify will never give you the packaging half because that's not what Shopify does. You need to bring it from somewhere else.
Option 1: Manual export and spreadsheets
The scrappy approach. It works for small operations, and it's how most brands start.
Step 1: Export orders from Shopify Admin.
Go to Orders > Export. Choose a date range (the declaration period, usually a calendar year or quarter). Export as CSV. You'll get a file with one row per order line item, including product name, SKU, quantity, shipping country, and order date.
Step 2: Filter by shipping country.
In your spreadsheet, filter or pivot by shipping country. Each EU country where you shipped products needs its own declaration. Create a separate tab or section for each country.
Step 3: Map each product to its packaging BOM.
This is where it gets tedious. For each product in your export, look up the packaging BOM you built (you did build one, right?) and enter the packaging weight per material next to each order line.
Step 4: Multiply quantities by weights.
For each order line: quantity sold × component weight = total weight for that component. Do this for every material in every product's BOM.
Step 5: Aggregate by country and material.
Sum up all the cardboard, all the plastic (by subtype), all the glass, all the metal — per country. These totals are your declaration numbers. Convert from grams to kilograms (most PROs want kg).
Step 6: Format according to each PRO's requirements.
ECOEMBES wants a specific Excel template. CITEO has its own online portal with particular field labels. Grner Punkt / DSD in Germany has yet another format. Reformat your data for each one.
This process works if you sell 50 products to 1 country. It becomes fragile at 100 products and 2 countries. It falls apart entirely at 200+ products across 3 or more countries. The manual mapping step alone — looking up the BOM for each of 200 products and entering weights into a spreadsheet — takes days, and every cell is a potential error.
Option 2: Connect Shopify to compliance software
The automated approach. Tools like Pack Declare connect directly to your Shopify store via Shopify's API. They solve the data gap by maintaining the packaging data that Shopify lacks and automatically joining it with your sales data.
How the Shopify connector works:
- You authorize the connection via OAuth (standard Shopify app authorization, two clicks)
- The system syncs your Shopify product catalog — every product, variant, and SKU
- It pulls orders daily by default, recording product, quantity, date, and shipping country
- You define packaging BOMs in the compliance tool and assign them to your synced products
- The system multiplies sales × BOMs automatically and generates declaration packs per country
Setup takes about 30 minutes. The ongoing effort is maintaining your BOMs when packaging changes and reviewing the generated declarations before submission.
The complete Shopify-to-declaration workflow
Regardless of whether you use spreadsheets or software, here is the end-to-end workflow every Shopify merchant needs to follow:
Step 1: Connect your Shopify store
Either export orders manually or set up an API connection to pull them automatically. The data you need from each order: product/variant SKU, quantity, order date, shipping country (ISO code).
Step 2: Sync your product catalog
Your compliance system (whether a spreadsheet or software) needs a complete list of your products. Every SKU that has ever been sold to an EU address needs to exist in your compliance data with a BOM attached.
Step 3: Create and assign packaging BOMs
For each product or product family, define the packaging components with material types and weights. See our BOM building guide for the details. Assign each BOM to the matching products.
Step 4: Set up your country compliance profiles
For each EU country where you sell, record your PRO registration details: your ECOEMBES producer ID for Spain, your CITEO contract number for France, your LUCID registration number for Germany, and so on. These identifiers go into your declaration submissions.
Step 5: Run the computation
Multiply every order line's quantity by its product's BOM weights, then aggregate by country and material. This produces your raw declaration data: "In Q4 2026, you placed 847 kg of cardboard and 112 kg of LDPE plastic on the French market."
Step 6: Review the totals report
Before submitting anything, review the numbers. Do they make sense? If your cardboard total jumped 300% from last quarter but your order volume only grew 20%, something is wrong — probably a BOM error or a duplicate import. Catch it now, not after submission.
Step 7: Download declaration packs
Generate the formatted files each PRO expects. ECOEMBES wants a specific CSV. CITEO has its own import format. Some PROs accept XLSX. The declaration pack should match the PRO's template exactly, with the right column headers, material codes, and units.
Step 8: Submit to each PRO
Log into each PRO's portal and upload or enter your declaration. Pay the invoiced fees. Save the submission confirmation. You're compliant for that period.
Shopify-specific considerations
A few things are unique to Shopify merchants and deserve attention.
Multiple Shopify stores
If you operate separate Shopify stores for different markets (a common pattern for brands using Shopify Markets), you need to aggregate sales across all stores before computing your declarations. A French declaration should include orders from your French store AND any orders from your global store that shipped to France. Missing one store means underdeclaring.
Shopify POS (point-of-sale)
If you also sell in physical retail via Shopify POS, those in-store sales typically involve different packaging than your e-commerce orders. No shipping box, no void fill — just the product in a retail bag. You may need separate BOMs for POS sales vs. online sales, and your system needs to distinguish between the two channels.
Shopify variants
A single Shopify product can have multiple variants (size, color, scent). Different variants might use different packaging. A 50ml bottle ships in a different box than a 200ml bottle. Make sure your BOMs are assigned at the variant level, not just the product level, when packaging differs between variants.
Returns and refunds
Shopify marks orders as refunded, but the packaging was already placed on the market. However, most PROs allow you to deduct refunded orders from your declaration if the product was returned before the consumer opened the packaging. In practice, most e-commerce returns involve opened packaging, so the deduction is often minimal. Check each PRO's policy on returns — some allow it, some don't.
Shopify Markets and multi-warehouse fulfillment
If you use Shopify Markets with inventory in multiple warehouses across the EU, the country of the warehouse matters for some PRO obligations. A product shipped from a German warehouse to a German customer is straightforward. A product shipped from a German warehouse to a French customer might have split obligations. The packaging placed on the French market is what matters for the French declaration, regardless of where it shipped from.
Draft and abandoned orders
Only fulfilled orders should count toward your declaration. Draft orders, abandoned checkouts, and unfulfilled orders represent products that were never shipped — no packaging was placed on any market. When exporting from Shopify, filter for fulfilled orders only. If using an API connector, verify it only syncs completed/fulfilled orders.
What about Shopify apps for EPR?
As of early 2026, the Shopify App Store has very few apps specifically designed for PPWR or packaging EPR compliance. Most apps labeled "compliance" in the Shopify ecosystem focus on:
- GDPR cookie consent and data privacy
- Product safety and CE marking
- Digital Product Passport (DPP) requirements
- Accessibility compliance
Packaging EPR is a niche that Shopify's app ecosystem hasn't caught up with yet. The few apps that touch on it tend to offer PRO registration assistance (connecting you with a consultant) rather than the data pipeline you actually need: syncing orders, managing BOMs, computing declarations.
This gap is why dedicated compliance platforms exist outside the Shopify App Store. They connect to Shopify via the same Admin API that any Shopify app uses, but they're built specifically for the EPR workflow rather than being a bolt-on feature.
Timeline: what to do and when
If you're a Shopify merchant selling to the EU and you haven't started EPR compliance yet, here is a realistic timeline:
| When | What | Time needed |
|---|---|---|
| Now | Identify which EU countries you ship to. Pull last 12 months of order data from Shopify and group by shipping country. | 1 hour |
| Week 1 | Register with PROs in your top 3 countries by volume. Germany (LUCID + dual system), France (CITEO), and Spain (ECOEMBES) are the most common starting points. | 3–5 hours |
| Week 2–3 | Build packaging BOMs for your top 20 products. Weigh components, classify materials, document everything. | 1–2 days |
| Week 3–4 | Set up your compliance data pipeline. Either build your spreadsheet system or connect compliance software to your Shopify store. | 2–4 hours |
| Ongoing | Run declarations each period (quarterly or annually depending on the country). Review, download, submit, pay. | 2–3 hours per period |
Total initial setup: roughly 3–5 days of work spread over a month. After that, ongoing compliance takes a few hours per declaration period. Not trivial, but not overwhelming either.
Common mistakes Shopify merchants make
- Assuming Shopify Markets covers EPR. It doesn't. Shopify Markets handles VAT, duties, and localized checkout. EPR is a separate obligation with separate registrations.
- Waiting for Shopify to build EPR features. Shopify has shown no indication that packaging EPR is on their roadmap. Do not wait. The August 2026 deadline does not care about Shopify's product roadmap.
- Declaring based on order count instead of packaging weight. Some merchants report "we shipped 10,000 orders" without calculating actual material weights. PROs need kilograms per material, not order counts.
- Ignoring small-volume countries. You shipped 47 orders to Portugal last year. The temptation is to ignore it. But legally, you still need to be registered and declaring in Portugal. Start with high-volume countries, but plan to cover all of them.
- Not distinguishing Shopify channels. Orders from your online store, your POS, and your Shopify wholesale channel may have different packaging. Treat them separately.
What comes next
Getting your Shopify store EPR-compliant is not a one-time project. It's an ongoing operational process — like VAT returns or bookkeeping. The initial setup is the hardest part. After that, it becomes routine: orders flow in, BOMs are already assigned, and each declaration period you review the computed totals and submit.
For a deeper understanding of the regulation itself, start with our guide to the PPWR. To understand the packaging data side, read the BOM building guide. If you also sell on WooCommerce, we cover that workflow in the WooCommerce EPR guide. For Amazon sellers, see our Amazon EPR guide. If you sell across multiple EU countries, read the multi-country EPR strategy guide.
The regulation takes full effect in August 2026. If you're reading this before that date, you still have time to set up properly. If you're reading it after, you need to move fast. Either way, the workflow is the same. Start with your data, build your BOMs, and generate your declarations. Your Shopify store has the sales data. You just need to complete the other half of the equation.