Purchasing and stock

Returnable packaging

dolixconsignes · version 1.0.1

You see how many returnable kegs, crates or pallets each customer holds, what those deposits are worth, and which ones have not come back in time.

Price
€59 excl. VAT
Dolibarr
19.0 minimum
Version
1.0.1
Licence
GPL v3+
Languages
French, English, German

€59 excl. VAT.

Ordering, payment, invoicing and download are handled by the DoliStore.

Buy on the DoliStore — €59 excl. VAT
The overview, Products menu → Emballages consignés (Returnable packaging): for each customer and each packaging, the quantity at the customer, the deposit value, the oldest unreturned delivery and the overdue packaging.
The overview, Products menuEmballages consignés (Returnable packaging): for each customer and each packaging, the quantity at the customer, the deposit value, the oldest unreturned delivery and the overdue packaging. Screenshot of the French-language interface.
01

What the module does

  • Two fields on the product card: “Returnable packaging”, a checkbox, and “Return delay (days)”. An empty delay uses the module's default delay.
  • The register is filled from customer invoices: on validation, each invoiced line of returnable packaging counts the packaging at the customer. A negative line, in quantity or in price, on a later invoice, or a credit note line, counts it as returned.
  • The register follows the invoice: movements are removed if it is set back to draft or deleted, and recreated when it is validated again. An invoice replaced by a replacement invoice is no longer counted. Down payment invoices are ignored.
  • A “Returnable packaging” tab on the third-party card: for each packaging, the quantity at the customer, the deposit value, the oldest unreturned delivery, the delay and the overdue quantity; then the history of movements, with a link to each invoice.
  • An overview in the Products menu: all customers holding packaging, a filter by packaging, the “Overdue packaging only” checkbox and a total line.
  • First out, first returned: returns settle the oldest deliveries first. Packaging is overdue when it has been at the customer for longer than its return delay.
  • Manual entry on the tab: “Opening balance” for packaging already at the customer before the module, “Correction” for a stock-count difference. A product not marked “Returnable packaging” is refused.
  • The “Consider overdue as sold” button, after confirmation, takes the overdue packaging out of the customer's balance and records it in the “Considered as sold” report: date, customer, packaging, quantity, value, note, over the chosen period. No invoice is created.
  • “Rebuild the register from invoices”, on the setup page, rereads the validated invoices and credit notes containing returnable packaging, for instance after ticking a product. Opening balances, corrections and packaging considered as sold are kept.
  • A negative balance, more packaging returned than invoiced, is flagged in the tab with a warning: check the opening balance or the invoices.
02

Who it is for

A brewery, a drinks wholesaler or a supplier delivering on pallets charges a deposit and refunds it when the packaging comes back. Dolibarr invoices and refunds, but does not tell how much packaging each customer still holds, nor since when.

A brewery, a drinks wholesaler or a supplier delivering on pallets charges a deposit with its products, and refunds it when the packaging comes back.

Dolibarr invoices and refunds without any trouble, but does not tell how much packaging each customer still holds, nor since when.

Who it is for: Breweries, drinks wholesalers, suppliers delivering on pallets, and any business that charges a deposit on kegs, crates, bottles or pallets and refunds it on return.

03

What the module does not do

This section appears on all 21 module pages, without exception.

  • No tracking of the physical stock of empty packaging: the Dolibarr stock remains the one from your stock movements.
  • No tracking of returnable packaging received from your suppliers: only customer invoices and credit notes are read.
  • No automatic accounting entry for packaging considered as sold: the report is meant for the accountant, and no invoice is created.
  • The module sets no VAT rate and does not choose the tax treatment of the deposit: the rate of the packaging product applies.
  • Only lines carrying a product marked “Returnable packaging” are counted. A free line, with no product, is not.
  • No separate return entry: a return goes through a negative line on an invoice or a credit note. Manual entry is reserved for the opening balance and corrections.
  • One return delay per packaging, with no delay specific to a customer.
  • The third-party tab shows the 200 most recent movements.
04

How it works

The module keeps a register of returnable packaging per customer, from your customer invoices and credit notes. There is no double entry: you invoice and refund the deposit as usual.

On products

Two fields are added to the product card:

  • “Returnable packaging”, a checkbox, for kegs, crates, bottles, pallets… whose deposit is invoiced and refunded on return;
  • “Return delay (days)”, the usual delay in your trade. If empty, the module’s default delay applies.

The register follows your invoices

  • Validated invoice: the invoiced returnable packaging is counted at the customer.
  • Negative line — in quantity or in price — on the next invoice, or credit note: it is counted as returned.
  • Invoice set back to draft or deleted: its movements are removed, then recreated when it is validated again.
  • Invoice replaced by a replacement invoice: it is no longer counted, only the replacement invoice is.
  • Down payment invoices are ignored.

First out, first returned

Returns settle the oldest deliveries first. Packaging is overdue when it has been at the customer for longer than its return delay. With a delay of 0, nothing is flagged as overdue.

On the customer card

The “Returnable packaging” tab of the third-party card shows, for each packaging: the quantity at the customer, the deposit value, the oldest unreturned delivery, the delay and the overdue quantity. Below, the history of movements, with a link to each invoice. A negative balance — more packaging returned than invoiced — is flagged with a warning.

The overview

In the ProductsReturnable packaging menu: all customers holding packaging, a filter by packaging, the “Overdue packaging only” checkbox and a total line.

Manual entry

On the customer’s tab:

  • Opening balance: packaging already at the customer before the module was installed. The date entered counts for overdue packaging.
  • Correction: a stock-count difference, positive or negative.

A product not marked “Returnable packaging” is refused. Everyday sales and returns go through invoices and credit notes.

Unreturned packaging

The “Consider overdue as sold” button, after confirmation, takes the overdue packaging out of the customer’s balance and records it in the “Considered as sold” report: date, customer, packaging, quantity, value, note, over the chosen period. This report is meant for the accountant.

No invoice is created: the customer has already paid the deposit. It is an accounting entry to be made.

VAT

The module sets no rate: it uses the one you choose on the packaging product.

Under French tax guidance (BOFiP BOI-TVA-SECT-90-30 §§ 30-40, CGI art. 267 III), the deposit may be excluded from the VAT base if VAT is not invoiced and the packaging is returned within the usual delay of the trade; after that delay, unreturned packaging is considered sold at the deposit price. Check with your accountant.

The overview, on Dolibarr 24.0.1: six customer and packaging lines. Le Comptoir des Halles holds 5 FUT-INOX-30L kegs (150.00 in deposits), 1 of them overdue; Cave du Vieux Port, 18 crates, 8 of them overdue. Total: 37 items of packaging, 406.00, of which 12 overdue for 106.00.

The “Emballages consignés” tab of Le Comptoir des Halles: 5 kegs (90-day delay) and 1 pallet (60-day delay), each with 1 overdue item and the “Consider overdue as sold” button. Below, manual entry, then the movements: 6 kegs and 1 pallet invoiced on 05/05/2026 on FA2605-0022, 4 kegs invoiced and 5 refunded on 02/09/2026 on FA2609-0023.

The “Emballages consignés” (Returnable packaging) tab of a customer: balance per packaging with its delay and overdue quantity, the “Considérer les retards comme vendus” (Consider overdue as sold) button, manual entry, and the history of movements with the source invoice.
The “Emballages consignés” (Returnable packaging) tab of a customer: balance per packaging with its delay and overdue quantity, the “Considérer les retards comme vendus” (Consider overdue as sold) button, manual entry, and the history of movements with the source invoice. Screenshot of the French-language interface.
05

Settings

The module’s setup page is reserved for administrators.

Setting Default Effect
Default return delay 0: no overdue flag Used for packaging with no delay of its own.

The same page recalls the three set-up steps, carries the “Rebuild the register from invoices” button and the VAT reminder. The rebuild rereads all validated invoices and credit notes containing returnable packaging and recreates their movements. Opening balances, corrections and packaging considered as sold are kept.

06

Security and safeguards

  • Two dedicated permissions, not granted by default: “See returnable packaging” opens the menu, the overview, the report and the tab; “Enter movements and settle unreturned packaging” shows manual entry and the settlement button.
  • Writing refused without the second permission, even with a forged request: no movement is created.
  • The tab applies Dolibarr’s access check on the third party displayed.
  • Sales representatives limited to their customers: without Dolibarr’s permission to see all third parties, a user only sees in the overview and in the report the customers they are the assigned sales representative of, as in Dolibarr’s lists.
  • Confirmation before packaging is considered as sold.
  • Setup reserved for administrators, with an anti-CSRF token on saving.
  • Rebuild in a single transaction: if it fails along the way, nothing is changed.
07

What you get

What the module writes to your installation
Database tables createdOne table: llx_dolixconsignes_mvt. It keeps one row per packaging movement: customer, packaging product, signed quantity (+ at the customer, − returned or considered as sold), deposit value, type (invoice, credit note, opening balance, correction, considered as sold), date, source invoice and line, note, user, entity. Two fields are added to products (dolixcons_consigne and dolixcons_delai), and the default return delay is stored as a Dolibarr constant: DOLIXCONS_DEFAULT_DELAY.
PermissionsTwo permissions, not granted by default: “See returnable packaging” opens the menu, the overview, the “Considered as sold” report and the third-party tab; “Enter movements and settle unreturned packaging” shows manual entry and the “Consider overdue as sold” button. The tab also applies Dolibarr's access check on the third party. The overview and the report only show the customers the user can see in Dolibarr: a sales representative without the permission to see all third parties only sees their own customers. The setup page is reserved for administrators.
Uninstalling
  • Disable the module in SetupModules/Applications. The menu and the tab disappear.
  • The register (llx_dolixconsignes_mvt table) and the “Returnable packaging” and “Return delay” product fields are kept.
  • The module has neither created nor modified any invoice: there is nothing to undo in your invoicing.

The dolixconsignes folder, in readable PHP, under the GPL v3 or later licence: the module descriptor, the invoice trigger, the register class, the third-party tab, the overview, the setup page, the table schema, the icons.

  • Languages: French (fr_FR), English (en_US) and German (de_DE).
  • A README.md describing how it works, VAT and limits.
  • A ChangeLog.md.
  • One table is added: llx_dolixconsignes_mvt. One row per movement: customer, packaging product, signed quantity (+ at the customer, − returned or considered as sold), deposit value, type, date, source invoice and line, note, user, entity.
  • Two fields are added to products: dolixcons_consigne and dolixcons_delai.
  • One setting is stored as a Dolibarr constant: DOLIXCONS_DEFAULT_DELAY.
  • What is written: a movement when an invoice or credit note containing returnable packaging is validated, at each manual entry and at each settlement. An invoice’s movements are deleted when it is set back to draft, deleted or replaced.
  • Nothing is written in your invoices, nor in the stock. No outgoing connection.
  • On deactivation, the menu and the tab disappear; the register table and the two product fields are kept.
08

Compatibility

The module descriptor only declares a minimum version. No upper bound is written in the code: the versions below are those on which the module has actually been run.

Compatibility of the Returnable packaging module
Dolibarr versionsDolibarr 19.0 minimum. Installed and run on 19.0.4, 20.0.4, 21.0.4, 22.0.5, 23.0.4, 24.0.1 and 24.0.2.
Minimum PHP7.4
Dolibarr modules to enableThird Parties, Products, Invoices
LicenceGPL v3 or later, full source code
LanguagesFrench, English, German
MenuProducts menu“Returnable packaging”: “Packaging at customers” overview and “Considered as sold” report. “Returnable packaging” tab on the third-party card.
09

Installation

  1. Get the module from the DoliStore and download the zip file.
  2. In Dolibarr: HomeSetupModules/Applications“Deploy/install external app/module” tab, then upload the zip. Otherwise, unzip the dolixconsignes folder into htdocs/custom/.
  3. Enable “Returnable packaging” in the list of modules. It requires the Third Parties, Products and Invoices modules. The register table and the two product fields are created at that point.
  4. Grant the users concerned the “See returnable packaging” permission and, for entry and settlement, “Enter movements and settle unreturned packaging”.
  5. Tick “Returnable packaging” on keg, crate, bottle or pallet products and enter their return delay. Then enter opening balances on the customers' cards, or rebuild the register from existing invoices on the setup page.

The details — permissions on the custom folder, shared hosting, upgrades, uninstalling — are on the page Installation and upgrades.

10

Frequently asked questions

Which Dolibarr versions does this module work on?

The descriptor requires Dolibarr 19.0 minimum and PHP 7.4 minimum. Version 1.0.1 has been installed from its zip and its integration test (34 checks) passes on 19.0.4, 20.0.4, 21.0.4, 22.0.5, 23.0.4, 24.0.1 and 24.0.2; the interface has been used in a browser on version 24. If you are on another version and have any doubt, write before buying.

Does the module change my invoices?

No. It reads customer invoices and credit notes when they are validated and records the packaging in its own table. It creates no invoice, modifies no line and makes no stock movement.

How do I record returned packaging?

As usual in Dolibarr: with a negative line, in quantity or in price, using the packaging product, on the customer's next invoice, or with a credit note. On validation, the packaging is counted as returned. The module's manual entry is for the opening balance and stock-count corrections, not for everyday returns.

My customers already hold packaging. How do I take it over?

If the deposits were invoiced in Dolibarr with a packaging product, tick “Returnable packaging” on that product, then run “Rebuild the register from invoices” on the setup page. Otherwise, enter an “Opening balance” on each customer's tab, with the delivery date if you know it: that date is what counts for overdue packaging.

What happens to packaging that never comes back?

Once its delay has passed, it shows as “Overdue” in the customer's tab and in the overview. The “Consider overdue as sold” button, after confirmation, takes it out of the customer's balance and records it in the “Considered as sold” report, meant for your accountant. No invoice is created: the customer has already paid the deposit. The accounting entry still has to be made.

How is VAT handled?

The module sets no rate: it uses the one you choose on the packaging product. Under French tax guidance (BOFiP BOI-TVA-SECT-90-30 §§ 30-40, CGI art. 267 III), the deposit may be excluded from the VAT base if VAT is not invoiced and the packaging is returned within the usual delay of the trade; after that delay, unreturned packaging is considered sold at the deposit price. Check with your accountant.

What if I uninstall?

The menu and the tab disappear. The movement register and the two product fields remain in your database. Your invoices were not modified by the module: there is nothing to restore.

Who handles support, and how do updates work?

Support is provided by the person who wrote the module, at support@dolix.fr. Ordering, payment, the invoice and the download are handled by the DoliStore, where new versions are published.

11

Version history

Taken from the module’s ChangeLog.md file: a single source.

1.0.125 October 2026

Dolibarr permissions respected: the overview and the “Considered as sold” report now only show the customers the user can see in Dolibarr (sales representative without the permission to see all third parties: their own customers; external user: their company). The customer tab already applied this check. Tested on 19.0.4 to 24.0.2.

1.0.012 October 2026

First version: “Returnable packaging” and “Return delay” fields on products. Register per customer fed by validated invoices and credit notes (deliveries, returns through a negative line or a credit note); follows invoices set back to draft, deleted or replaced; down payments ignored. Tab on the customer card and overview: balances, deposit value, age (first out, first returned), overdue packaging. Manual entry (opening balance, correction), register rebuild from invoices. Settlement of unreturned packaging (“considered as sold”) and report for the accountant. Interface in French, English and German.

12

Support for this module

Write to support@dolix.fr. The person who wrote the module is the one who replies.

Reply within two working days. This is not an on-call service.

To include in your message

  • The exact Dolibarr version.
  • The module concerned and its version — here dolixconsignes 1.0.1.
  • What you did, and what you expected.
  • The error message copied exactly, or a screenshot.
  • How Dolibarr is installed, if you know.

This module is on sale on the DoliStore.

Ordering, payment, invoicing and download are handled by the DoliStore.

Buy on the DoliStore — €59 excl. VAT
Also

The other modules