Introduction
SodaPremium manages a circulation of CO₂ cylinders between its warehouse, drivers and a growing network of exchange points. Every delivery and return changes the packaging balance held by a specific partner.
We designed SEOZ: a focused system for office staff and drivers that organises the complete circulation, shows current balances and preserves the history of every operation.
The client
SodaPremium develops a CO₂ cylinder exchange service for home sparkling-water systems. Customers can exchange a cylinder at a partner location or order an exchange online.
The company website currently lists 37 exchange points across Kraków and other locations in Lesser Poland. One cylinder can produce up to 60 litres of sparkling water.
- Industry
- CO₂ cylinder exchange and distribution
- Market
- Kraków and Lesser Poland
- Service model
- Partner exchange network and online exchange
Challenge
As the partner network grew, so did the number of deliveries, collections and corrections that had to be reconciled. Data about issued and returned packaging was spread across more than a dozen Excel tables, each covering a different part of the process.
The office, warehouse and drivers worked at different moments of the same circulation. Establishing a partner’s current balance required manual comparison, while discrepancies often surfaced only during a later reconciliation.
What was not working
The real task was to create one source of truth that organised the process without adding work for any of the teams.
Information returned later than the packaging
A cylinder could already be back in the warehouse while its return was still waiting to be copied from a document or a driver’s message.
Every team saw a different fragment
The office knew the documents, the warehouse knew the physical stock and the driver knew the route outcome. There was no shared view connecting them.
The balance depended on manual comparison
Finding a missing package meant checking several files and reconstructing the operation history step by step.
Solution
SEOZ combines counterparty and invoice data with operational information entered by the office and the driver. The balance is calculated from movement history, rather than edited by hand.
Fakturownia
The system reads the counterparty and invoice without retyping data.
Office
A team member records issued packaging and prepares the delivery.
Driver
The actual returned quantities are reconciled on a phone.
SEOZ
The balance is updated and the complete operation history is preserved.
Office view
The office starts with exceptions: partners that need attention are visible first. A team member can find an exchange point and open its current balance. Every delivery, pickup and correction remains in the counterparty history together with its document.

Driver view
Drivers do not receive a reduced copy of the office panel. After activating the phone with a QR code, they have a separate, focused flow: choose a delivery, enter returned quantities and save. If the connection disappears, the operation waits in a queue and synchronises when the network returns.
Phone activation with a QR code
The office creates the driver account and displays a one-time QR code. Scanning it assigns the phone to the account without manually entering sign-in details.




Integration
SEOZ reads data from Fakturownia but does not change the invoice or KSeF data. Packaging information is recorded separately and can be joined with the invoice in one document for printing.
The integration is read-only. The original invoice remains unchanged.
Edge cases
History instead of overwriting
The balance is derived from successive movements. A previous operation does not disappear when data changes.
Corrections are new movements
An error can be corrected without deleting the original record, including the author and time of the correction.
Safe synchronisation
Repeating a request from a phone does not create a duplicate, including after offline work.
What SEOZ actually does
The complete scope of the working application, verified in the office panel, driver view and against the real system API.
Office panel
- Balance dashboard, packaging totals and ageing-based alerts
- Live counterparty search and filters for all, circulating, irregular and settled accounts
- Counterparty page with balances by type, oldest return and complete movement history
- Opening balances and corrections recorded as separate history entries
- Deliveries created from Fakturownia counterparty and invoice data with packaging steppers
- Separate pickups without an invoice, including quantities suggested to the driver
- A list of deliveries and pickups awaiting reconciliation
- A PDF document available for every movement and immediately after delivery creation
- Packaging catalogue with kind, size, deposit, activity and optional freebie rules
- Office accounts, drivers, QR phone activation and device revocation
- A built-in help centre for daily work and recovery scenarios
Driver view
- Phone activation with a one-time QR code generated in the office panel
- Age-sorted tasks with a distinction between deliveries and standalone pickups
- Connection status and visibility of operations waiting in the offline queue
- Per-type context showing what was issued and what remains with the customer
- Returned-quantity steppers instead of a complex form
- All returned and none shortcuts for common situations
- Correction of the quantity actually delivered during reconciliation
- An additional pickup for a packaging type that was not part of the delivery
- Offline saving with automatic synchronisation after the connection returns
Behind the scenes
- Read-only Fakturownia integration for counterparties, invoices and original PDFs
- A combined document containing the invoice and issued/returned packaging information
- A two-phase workflow where an awaiting delivery does not affect the balance before reconciliation
- Balances derived from movement history rather than manually edited values
- Append-only history with author, timestamp and correction reason
- Idempotent operations resilient to repeated requests from a phone
- Automatic and manual counterparty refresh from the ERP
- Admin, office and driver roles with revocable device tokens
- An installable PWA with an offline reconciliation queue
Delivery process
We first organised the way the team worked, then translated it into interfaces and integrations.
Understanding the workflow
We mapped where issue, return and correction data was created, and who needed it at each point in the process.
Balance and history model
Instead of one manually edited number, we designed a balance derived from individual movements. Every correction remains in the history.
Office panel
We organised the workflow around the counterparty, delivery and situations requiring attention, using data read from Fakturownia.
Driver view
The mobile interface was reduced to QR activation, a task list and return reconciliation, including work without a connection.
Integration and rollout
We connected SEOZ to Fakturownia in read-only mode, added a combined PDF and safeguards against duplicate operations.
Outcome
The system organises the existing process without adding cylinder serialisation or rebuilding Fakturownia. The team works from one record, from delivery creation to return reconciliation.
Before
- The balance became visible only during a later reconciliation
- Counterparty and document data was split between tools
- Issues, returns and corrections were difficult to trace
- Office and driver information was separate
Now
- The current partner balance is available in one place
- Counterparty and invoice data is read from Fakturownia
- Every movement and correction remains in the history
- Both roles work in one connected process
A similar custom system makes sense when an important asset circulates between a company and its partners, while off-the-shelf tools only show fragments of the process.









