
Deposit Return Fee for WooCommerce — bottle and can deposit (kaucja, SGR, Pfand) as a separate line
The deposit on bottles and cans as a separate line in the cart, order and invoice, not inside the product price. Ready-made sets for Poland (kaucja), Romania (SGR), Germany and Austria (Pfand) with VAT per container type.
- Compatibility
- WordPress 6.2+ · WooCommerce 8.2+ (tested on WordPress 7.1 and WooCommerce 11.2) · PHP 7.4+ (run on PHP 8.3 and 7.4) · HPOS and posts · MariaDB, MySQL 8.0 · block and classic checkout, block theme and Storefront
- Licence
- one site, annual
- Trial
- 7 days, no card, one per site
- Updated
- October 2026
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
WordPress 6.2+ · WooCommerce 8.2+ · PHP 7.4+; tested on WordPress 7.1 and WooCommerce 11.2, PHP 8.3 and 7.4.
Order storage: HPOS and the classic posts storage — the “Deposit” box and refunds work in both.
Database: MariaDB and MySQL 8.0 (tested).
Checkout and themes: classic and block cart/checkout; Storefront and the block theme Twenty Twenty-Five (Product Collection, Order confirmation).
Currency: deposit amounts are in the shop currency; multi-currency plugins do not convert the deposit amount.
Interface languages: English, polski, română, Deutsch. Line names, notes and return texts in the sets are in the scheme country’s language.
Together with our Grundpreis plugin: the Pfand is not part of the unit price (tested).
Version history
Container types with sets for Poland (kaucja), Romania (SGR), Germany and Austria (Pfand); containers on products and variations; the deposit as separate lines in the classic and block cart…
Frequently bought with Deposit Return Fee for WooCommerce
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — Nova Poshta for WooCommerce

Mono Acquiring — monobank card payments for WooCommerce

Telegram notifications and Viber/SMS for customers for WooCommerce
Full module description
Deposit Return Fee for WooCommerce charges the deposit on bottles, cans and crates as a separate line in the cart, at checkout, in the order, e-mails and invoices — not inside the product price. Ready-made container sets cover the Polish system kaucyjny, the Romanian SGR and the German and Austrian Pfand. The presets use 0.50 zł per PET bottle and can and 1.00 zł per reusable glass bottle (Poland), 0.50 lei (Romania), 0.25 € per Einweg container (Germany, Austria). The deposit stays out of the shelf price, coupons do not reduce it, and it has its own VAT setting.
Put the deposit “into the price” or sell it as a separate product and everything breaks at once: the Grundpreis comes out wrong, a -50 % coupon cuts the deposit, the deposit lands in the VAT base together with the product, and the invoice has no separate line. The plugin solves it with WooCommerce’s own mechanism — a fee line: the classic and block cart, the order, e-mails, My account and invoice plugins all see it.
The core version is free. Container types with ready-made sets for Poland, Romania, Germany and Austria, containers on products and variations, deposit lines in the cart, checkout, order and e-mails, VAT per container type, price notes and the “how to get the deposit back” text work without a licence and without a time limit. Pro adds category rules, bulk edit, CSV import by SKU and GTIN, deposit refunds from the order, deposit lines for orders created in the admin and a report.
There is a separate module for OpenCart — Deposit Return Fee for OpenCart.
What the customer sees
- Next to the price — a note in the scheme’s language: “2,99 zł + kaucja 0,50 zł”, “1,99 € zzgl. 0,25 € Pfand”, “+ garanție SGR 0,50 lei”. On the product page, in the catalogue, in product blocks and in the Product Collection template of block themes; a variation shows its own amount.
- In the cart and at checkout — separate lines “Kaucja — butelka PET do 3 l × 5”, “Pfand Einweg × 4”: one line per container type or a single line for the whole deposit. Under each product — how many containers it brings: “Kaucja — butelka PET do 3 l: 2 × 0,50 zł”.
- Changing the quantity or removing a product recalculates the deposit at once — in the classic and in the block cart.
- Coupons (percentage and fixed) discount only the products; free shipping “from 100 zł” is counted without the deposit.
- “How to get the deposit back” — a short text under the cart, at checkout, on the thank-you page (classic and the Order confirmation block) and in the customer e-mail. Each country has a ready text you can change.
- After payment the deposit lines are in the order, the e-mails, My account and the PDF invoice (checked with PDF Invoices & Packing Slips).
What the admin gets
- WooCommerce → Deposit return → Container types — the table of container types: line name, price note, amount, VAT (outside VAT / like the product / a specific tax class). Buttons for the ready-made sets: Poland, Romania, Germany, Austria; types you have already changed are not overwritten.
- Product → Product data → General → Deposit — up to 3 rows “type × quantity”; a variation can use “same as product”, its own containers or “no deposit”.
- Settings — on/off, delivery countries, with or without VAT, a line per type or a single line, where to show the notes and the return text.
- Currency warning: Polish types in a shop running in EUR (0.50 zł would be charged as 0.50 €) — the plugin tells you.
- Pro: Category rules — “Napoje → PET × 1” for a whole category and its subcategories; a product with its own setting or “No deposit” is left alone.
- Pro: bulk edit in the products list — set containers, “no deposit” or reset to the category rule.
- Pro: CSV — export of all products and variations with SKU, GTIN and containers; import by SKU, then by GTIN (the WooCommerce field or an EAN plugin’s meta such as
_ean), “,” or “;” separator (Excel), a dry run without changes. - Pro: the “Deposit” box in the order — how many containers were charged and returned; “Returned now” + “Refund the deposit” makes a regular WooCommerce refund on the deposit lines only, with VAT and an order note; for gateways that support refunds there is a “refund via the gateway” checkbox.
- Pro: Report — deposit charged, refunded and the balance by month and container type, with CSV export.
Countries and VAT: what the presets contain
- Poland: 0.50 zł — PET bottle up to 3 l and metal can up to 1 l, 1.00 zł — reusable glass bottle up to 1.5 l (regulation of the Minister of Climate and Environment of 8.07.2024, Dz.U. 2024 poz. 1046). The preset charges the deposit line without VAT, even in a shop with 23 % VAT; reference — art. 29a ust. 11a of the VAT act and the Ministry of Finance explanations of 29.08.2025.
- Romania: 0.50 lei per bottle or can from 0.1 to 3 l (SGR). The preset charges the line without TVA; ask your accountant how the garanția SGR is treated in your case.
- Germany: the Einweg preset is 0.25 € including VAT (VerpackG § 31 states 0.25 € “einschließlich Umsatzsteuer”), at the rate of the drink. The plugin splits Einweg by rate: a cart with cola (19 %) and a milk drink (7 %) gets “Pfand Einweg (Standard rate) × 4” and “Pfand Einweg (Reduced rate) × 2”. The amount stays 0.25 € for a customer from another country; a VAT-exempt customer pays it without VAT. Under PAngV § 7 the Pfand is shown next to the price and is not part of the Grundpreis — checked together with our Grundpreis plugin: 1.99 € for 1.5 l gives 1.33 € / 1 l, without the Pfand.
- Austria: the preset charges the Einwegpfand of 0.25 € without VAT and the Mehrwegpfand at the rate of the drink.
- Mehrweg amounts (0.08 / 0.15 / 1.50 € in DE, 0.20 € in AT) are not set by law — the usual ones are filled in; check them against your supplier’s invoice.
Rates and VAT here are presets, not tax advice. They are starting values from sources as of October 2026. The shop checks them itself — together with its accountant and the deposit system operator — and changes the amount, VAT and countries of each container type when needed.
How it works — step by step
- Install the plugin: for a shop in Poland, Romania, Germany or Austria the container set and the return text are added automatically (other countries — with a set button or your own types).
- Check the amounts and VAT on the “Container types” tab and the “how to get the deposit back” text in “Settings”.
- Pick containers on products: 1.5 l water — 1 × PET, a 6-pack of cans — 6 × can, a crate of beer — 20 × glass bottle + 1 × crate. In Pro — a rule for a whole category, bulk edit or your supplier’s CSV.
- The customer sees the deposit next to the price, as separate lines in the cart and at checkout, and then in the order, e-mail and invoice.
- Pro: when containers are brought back to your shop — enter the number in the order and press “Refund the deposit”; the report shows how much deposit was charged and refunded per month.
Under the hood
- Deposit lines are WooCommerce fees with the id
ccdrf-<type>-<VAT>: both carts and checkouts (Store API), the order, e-mails and invoice plugins see them natively, while coupons and the free shipping threshold ignore them. Lines with different VAT are never merged. - Amounts including VAT: line net = gross − VAT at the customer’s rates, so 0.25 € stays 0.25 € in another country, and a VAT-exempt customer pays the net.
- Order data: a deposit line carries
_ccdrf_deposit, the types, the number of containers and the gross; a product line stores its containers. Invoice plugins can useccdrf_is_deposit_item( $item ). - Developer hooks:
ccdrf_product_components,ccdrf_default_rows,ccdrf_groups. - Deposit refund (Pro) — a regular WooCommerce refund on the deposit lines: the order total, Analytics and invoice plugins see it; the last units take the remaining cents, and you cannot refund more than is left.
- Deleting the plugin removes its settings and cron jobs; deposit lines in existing orders stay.
Installation
- Plugins → Add New → Upload Plugin: pick the zip and activate it (WooCommerce must be active).
- WooCommerce → Deposit return: check the container set on the “Container types” tab and the options on “Settings”.
- On products — Product data → General → Deposit: pick the containers and quantity.
- For Pro: the “Pro licence” tab — paste the key from the e-mail or press “Try Pro for 7 days”.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Is the deposit part of the product price or the tax base?
Not of the price: it is a separate order line. VAT follows the container type: the Poland, Romania and Austrian Einweg presets have no VAT, the German Pfand and Austrian Mehrweg are taxed at the rate of the drink, and the plugin calculates that itself. The presets are starting values the shop checks with its accountant.
Will a -50 % coupon reduce the deposit?
No. Coupons apply only to products, the deposit stays in full. It does not count towards the free shipping threshold either.
How does the customer get the deposit back?
By returning the empty container to a collection point. The plugin shows this text in the cart, at checkout, on the thank-you page and in the e-mail. If containers are brought back to your shop, Pro has a "Refund the deposit" button in the order.
What about variable products and crates?
Up to 3 container rows on a product and on each variation: "20 × bottle + 1 × crate". A variation can take the parent's containers or have its own.
Is this tax advice?
No. The sets are starting values from sources as of October 2026 (listed in the plugin readme). The shop chooses the container type, amount and VAT together with its accountant; all amounts can be changed.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—



