Повернутися до блогу
AutomationE-commerceRegulations

Deposit System in E-commerce: How to Technically Solve the Deposit Problem in Your Cart.

The deposit system has been functioning in Europe for years, and in Poland it takes effect on October 1, 2025. For e-commerce, it's not just a new duty but a real technical challenge. We analyze how Shoper, Shopify, or WooCommerce can handle it.

6 minАвтор: Codessa

Підсумувати цю статтю з ШІ

Натисніть на обране ШІ, щоб отримати підсумок цієї статті

Deposit System in E-commerce: What Challenges Lie Ahead?

The deposit system has been functioning in Europe for years, and in Poland it takes effect on October 1, 2025. Both physical and online stores must deal with it, but each faces different challenges: how to integrate the deposit into the online purchasing process?

It's not just a matter of adding 50 groszy to the price. It's an accounting and logistical challenge that can be solved with the right script. In this article, we analyze what the deposit system means in practice for an online seller and how it can be solved on platforms like Shoper, Shopify, or WooCommerce.

The Deposit System in a Nutshell: What You Need to Know

Following the lead of Germany, Norway, and Lithuania (where return rates reach 90-98%), Poland is introducing a system to reduce waste. From a business owner's perspective, the key facts are:

  • Who is affected? Anyone placing beverages in deposit-bearing packaging on the market (producers, importers), as well as the retail units that sell them.
  • Obligation to collect deposit: Every store (online and physical) selling products in deposit packaging *must* collect the deposit.
  • Return without receipt: The consumer can return the packaging at *any* collection point (mainly large stores > 200m²) and reclaim the deposit.
  • The VAT issue: This is crucial! The deposit is not included in the VAT base. It must be a separate item on the receipt or invoice, not subject to tax.
Packaging TypeCapacityDeposit Amount
Plastic bottles (PET)up to 3 L0.50 PLN
Metal cansup to 1 L0.50 PLN
Reusable glass bottlesup to 1.5 L1.00 PLN

What Problems and Challenges Does This Present?

In a physical store, implementing the deposit system requires updating the cash register system, training staff, purchasing and servicing the machine. In e-commerce, we face different challenges.

  1. Problem 1: The Accounting (VAT) Issue. You can't just raise the product price by 0.50 PLN. As mentioned, the deposit is VAT-exempt. It must appear on the invoice as a separate, non-taxed item. How do you force systems like Shoper or Shopify, which default to treating everything in the cart as a good or shipping cost, to do this?
  2. Problem 2: Cart Logic. What if a customer buys a 4-pack of a drink? The system must automatically add 4 x 0.50 PLN. What if they change the quantity in the cart from 4 to 2? The deposit must be dynamically recalculated. And if they remove the product? The deposit must disappear with it. Automatic management of this requires an appropriate script.
  3. Problem 3: E-commerce Return Logic. What happens when a customer uses their 14-day right of withdrawal and sends the order back to you? You must refund them the cost of the product AND the deposit. But more importantly: your e-commerce warehouse is not a packaging collection point. The customer should not send empty bottles back to you. They must return them to a physical collection point. Communicating this process is key.

Concept Solution: Cart Automation via a 'Deposit Product'

Instead of trying to 'break' the platform's tax logic, we should use its own mechanisms. The cleanest, most pragmatic solution is to create a virtual 'Deposit Product' and automatically manage it in the cart.

This doesn't require complex API integration with an external operator. All it takes is a clever script on the platform side. Here is the three-step concept:

Step 1: Create 'Deposit Products' in Your Store

In your Shoper / Shopify / WooCommerce panel, create new products (you need 3 deposits for plastic bottles, cans, and glass bottles):

  • Product Name: "Packaging Deposit (PET)"
  • SKU: `DEPOSIT-050`
  • Price: 0.50 PLN
  • VAT Rate: Set as 'Exempt' or 0% (depending on platform setup). This is critical.
  • Inventory: Do not track stock (virtual product).
  • Visibility: Hide product from the store catalog (cannot be searched or bought separately).
  • ---
  • Product Name: "Packaging Deposit (Can)"
  • SKU: `DEPOSIT-050`
  • Price: 0.50 PLN
  • VAT Rate: 'Exempt' or 0%.
  • Properties: As above.
  • ---
  • Product Name: "Packaging Deposit (Glass)"
  • SKU: `DEPOSIT-100`
  • Price: 1.00 PLN
  • VAT Rate: 'Exempt' or 0%.
  • Properties: As above.

Step 2: Tag Your Real Products

Your system needs to know which product requires a deposit. The easiest way is to use attributes (Shoper, WooCommerce) or appropriate fields in Shopify.

You edit every product covered by the system and add a tag, e.g., `deposit:0.50` or `deposit:1.00`. This tag is the signal for your script to take action.

Step 3: Implement the Script (The Automation Logic)

This is the heart of the solution. You need a script (e.g., JavaScript running in the cart template or a custom function hooked into the platform's server-side hooks) that runs in real-time. Depending on the platform, you may need to connect to its Front API. Its business logic would look like this:

  1. Trigger 1 (Add to Cart): Customer adds 'Drink XYZ' (4 units).
  2. Action: The script immediately checks the tags of 'Drink XYZ'. It finds `deposit:0.50`. It then automatically, in the background, adds the 'Deposit Product' (SKU `DEPOSIT-050`) to the cart in a quantity of 4 units.
  3. Trigger 2 (Change Quantity): Customer changes the quantity of 'Drink XYZ' in the cart from 4 to 6.
  4. Action: The script detects the change and immediately updates the quantity of the `DEPOSIT-050` product to 6 units.
  5. Trigger 3 (Remove Product): Customer removes 'Drink XYZ' from the cart.
  6. Action: The script also automatically removes the 6 units of `DEPOSIT-050` associated with that product.
  7. Trigger 4 (Multiple Products): Customer has 2x 'Drink XYZ' (tag `deposit:0.50`) and 3x 'Glass Water' (tag `deposit:1.00`) in the cart.
  8. Action: The script ensures TWO separate deposit products are in the cart: 2x `DEPOSIT-050` and 3x `DEPOSIT-100`. The total deposit (2.50 PLN) is calculated correctly and, most importantly, is correctly VAT-exempt.

Conclusion: Turn a Problem into an Advantage

The solution above is elegant because it is 'platform-agnostic'—the same logic applies to any modern e-commerce platform. It doesn't require expensive, external systems, only the precise implementation of a custom script.

For e-commerce managers and CTOs, the deposit system shouldn't be seen as a 'punishment' but as just another process to be automated. Customers expect this process to be seamless. Companies that implement this smoothly will not only avoid fines and sales blockages but also gain trust in the customer's eyes as an entity that fluently handles new regulations.

Implementing this on time is not just about legal compliance. It's a signal to the market that your business is technologically ready for the challenges of modern commerce.

Потрібна допомога з автоматизацією?

Зв'яжіться з нами! Ми допомагаємо компаніям з автоматизацією бізнес-процесів та створенням спеціалізованих рішень.

Система депозитів в e-commerce: Як технічно вирішити проблему депозиту в кошику. | Codessa Blog