Home · Solutions · Finance & accounting
Solution · Finance & accountingEvery pick, occupied position and extra task priced from the record that created it
Warehouse work billed from what the warehouse actually did
Chargeable warehouse events are read daily, priced against each customer's tariff and turned into a billing file whose every line resolves to the event behind it.
Executive summary
Storage, handling and value-added work are billed from a spreadsheet somebody rebuilds every month.
Mientha builds the billing engine as a daily read rather than a month-end reconstruction.
The billing run stops being a construction and becomes a review, because the file was built while the month was happening.
the finance system for invoicing and posting; the SharePoint statement archive; Power BI
Business problem
3PL billing
A contract logistics provider sells work rather than goods, so revenue is the sum of what the warehouse did: positions occupied on a given day, pallets received and put away, lines picked, orders despatched, cases labelled and co-packed. Almost all of it is already recorded, because a warehouse management system cannot control stock without recording movements. The record exists to run the warehouse, not to bill the customer.
Between that record and an invoice sits a price list kept somewhere else. Contracts typically price their own services and units, with free periods, committed minimums and volume tiers that resolve only once a whole period is known, and an indexation applied by whoever remembers. None of it is written where a program could read it, so a person joins an export, a workbook and a folder of annexes by hand, every customer, every month.
Two losses follow, and neither appears in any report. The first is work done and never written down: extra tasks live on a shift sheet or in an email, and what does not reach the run is not underpriced, it is unbilled. The second is work billed and not defensible. When a customer asks why a line is what it is, the answer means rebuilding a month-old extract, and when that takes three days a credit note closes the question. The same line is conceded again next quarter, and nobody counts it.
How it works today
What follows is common in contract logistics, whatever the warehouse system.
- SystemThe WMS records receipts, put-aways, picks, despatches and daily occupancy, because stock control requires it
- PersonA shift supervisor notes the day's value-added work on a sheet and emails a summary once the week is over
- WaitingNothing is priced until the period closes; the run begins on the first or second working day of the next month
- PersonA clerk exports each site's month into a workbook with a tab per customer, reads the tariff out of the contract, and applies minimums, free days, tiers and indexation by hand
- Risk of errorWork that reached nobody's email is never billed, and no list exists of what was missed
- Risk of errorA queried line means rebuilding the extract weeks later, and where evidence is slow to assemble a credit note closes it quietly
Why the current process costs more than it appears
Time that disappears before anyone measures it.
- Work nobody wrote down is not underpriced, it is unbilled, and value-added tasks are where it concentrates: a relabelling job squeezed between two shifts leaves no trace once the pallet moves on.
- Disputes cost more than the line in question. Answering one query means rebuilding a month-old export, and by then conceding is the cheapest way to protect the relationship.
- Because the run is monthly, an operational fact becomes a financing decision nobody took: work done on the second is invoiced after the thirty-first, and the payment term starts only there.
- Tariff knowledge sits with two people. Which customer has a free storage period, whose minimum applies from which month, which SKU group is priced per unit rather than per line: none of it is written where a robot could read it.
Cost of inaction
Two of the three rows are revenue, not cost, which is why desk time is the least interesting line here. The second assumes 4,000 value-added tasks a month are recorded at a station and one more is done for every twelve that are: 333 tasks at an average €7.20 is €2,400 a month. The third assumes one line per customer is credited rather than defended each month, at €410, or €9,020 across 22 customers. Both are assumptions with their arithmetic on show.
What grows quietly is the distance between the contract and the run. Each indexation applied by hand is another chance to miss a service line, each new customer adds exceptions that live in an email, and at renewal the provider argues from one annual total while the customer arrives with a breakdown of its own.
A plausible organisation with realistic proportions. The figures are there to be recalculated on your data; they are not a client result.
A Central European contract logistics provider: three warehouses, roughly 61,000 pallet positions, 22 contract customers, about 340 staff, a WMS at each site, a finance system, Microsoft 365 E3 with Power BI Pro.
About 96,000 chargeable events a month across the 22 customers: receipts and put-aways, picked and packed lines, despatches and pallet movements, plus roughly 4,000 value-added tasks recorded at a station. Storage is charged on positions occupied, counted daily.
Two people assemble the run in the first week of the following month from a WMS export per site, a folder of tariffs and the supervisors' emails. Minimums, free periods, tiers and indexation go in by hand.
Roughly 3.5 minutes per customer-day of extraction, pricing and checking across 660 customer-days a month, plus what no model prices: tasks that reached nobody's sheet, and lines credited for want of evidence.
Robots read chargeable events and daily occupancy from each WMS overnight, price them against the customer's tariff held as a versioned table, and build a billing file whose every line carries the events behind it. Gaps surface in Teams during the month.
In the modelled case the run becomes a review instead of a construction, recorded value-added work reaches an invoice in the month it was done, and a queried line is answered from the statement. Every figure here belongs to the model, not to a client.
Proposed solution
Mientha builds the billing engine as a daily read rather than a month-end reconstruction. Each customer's terms become a versioned table: service, unit, price, validity dates, minimums, free periods and tiers, owned by the commercial team and changed with a date rather than in a conversation. Overnight, robots pull the day's chargeable events and occupied positions from each site and price each against the tariff version valid on its date, keeping the reference of the event behind every line.
Reading daily turns leakage into a question instead of a discovery. The engine compares what the warehouse did with what the contract expects: a pallet leaving a co-packing zone with no task against it, a labelling volume that drops to zero in a week when it never does, an event whose service exists in no price table. Each becomes an item for the shift supervisor in Microsoft Teams next morning, while the pallet is still in the building.
At period end the run is reviewed, not built. The billing owner releases the file in Teams and it creates invoices in the finance system through the channel each customer requires. The statement resolves every line to dated events with quantities and references, so a query becomes a data question: an Action Center task carrying the events, the tariff version and the period. The input is a database record rather than prose, so the flow stays deterministic.
UiPath Orchestrator queues, time triggers, assets and audit; unattended UiPath Robots; UiPath Integration Service connectors for Microsoft OneDrive & SharePoint and Microsoft Teams; UiPath Action Center actionable notifications in Microsoft Teams; Microsoft Teams Approvals app; Power BI
The tariff model as versioned tables; the daily event read and pricing engine per site; the gap rules per customer; the billing file and statement; the query and credit-note flow in Teams; the Power BI view of billed and disputed value
Chargeable events, occupancy snapshots and value-added records out of each WMS by API or scheduled export; invoice creation and posting in your finance system
How the automated process works
- AutomationOvernight, robots read each site's chargeable events and occupied positions for the day and queue them per customer in Orchestrator
- AutomationEvery event is priced against the tariff version valid on its own date, and the priced line keeps the event reference
- SystemMinimums, free periods and tiers are computed on the running period, so a tier reached on the eleventh applies from the eleventh
- PersonThe gap list reaches the supervisor in Microsoft Teams next morning: movements with no task, services with no price, activity that stopped when it should not
- PersonAt period end the billing owner reviews the run in Teams, where Power BI already shows billed value, open gaps and queried lines, and releases it
- AutomationThe released file creates the invoices in the finance system, and the statement with its event references is filed alongside them
Human-in-the-loop model
Automation handles
- Reading chargeable events and daily occupancy from every site and pricing each against the tariff version valid on its date
- Computing minimums, free periods and volume tiers across the running period, and assembling the billing file and the statement
- Chasing gaps: movements with no recorded task, services with no price, activity that stops when the contract says it should not
People decide
- Whether a value-added task found by the gap list is billable to this customer under this contract
- What happens to a queried line: defended from the evidence, credited, or taken into the renewal conversation
- Tariffs, indexation and thresholds, and the release of the period's run, approved in the Microsoft Teams Approvals app
Before and after
Systems and integrations
Every entry can be checked in vendor documentation. The evidence class is stated next to each one.
Inputs
- chargeable events and occupancy snapshots from each site's WMS
- value-added tasks recorded at the station
- tariffs, minimums, free periods and indexation as versioned tables
- contract data per customer
Automation layer
- UiPath Orchestrator
- UiPath Robots
- UiPath Integration Service
- UiPath Action Center
Target systems
- the finance system for invoicing and posting
- the SharePoint statement archive
- Power BI
Human touchpoints: the daily gap list in a Microsoft Teams channel; Action Center tasks for gaps and queried lines; Microsoft Teams Approvals for the release
Technologies used
read events per site on a time trigger, queue and price them, retry, log every run
Atariff tables and the statement archive in your tenant; the daily gap list in Teams
Agap items and queried lines completed as tasks without leaving Teams
Arelease of the period's run and credit notes above the threshold
Abilled value by customer and service, open gaps, lines under query, revenue per occupied position
Aevents, occupancy and value-added records in; invoices out
CIllustrative economic model
The arithmetic is open, so it can be argued with.
The smallest number in this case study is the one the calculator produces, and that is deliberate: it prices only the extraction, pricing and checking of activity data. 22 customers across 30 days give 660 customer-days a month, at 3.5 minutes each and a fully loaded €24 an hour. Nothing was timed at a client, and the two larger pots are in the next section.
Run the numbers on your data
An illustrative estimate from your own inputs. It models released capacity; it is not a promise of savings.
Business benefits
- The billing run stops being a construction and becomes a review, because the file was built while the month was happening
- Value-added work reaches an invoice in the month it was done, because a missing task is questioned the next morning
- A queried line is answered from the statement in minutes, so the conversation is about the tariff, not about whether the work happened
- Invoices leave days earlier, which moves the whole payment term forward without asking a customer for anything
The management view
- Leakage stops being invisible: work done and not billed becomes a counted exception with a name and a date against it
- Each customer's terms live in a versioned table rather than in the habits of the clerk who has always billed that account, so another site is absorbed without another billing hire
- Renewals are argued from service-level revenue data rather than from one annual total
Board-level KPIs
Security and governance
Where the data sits and who can see it.
- Robots read each WMS under their own accounts, with rights to event and occupancy data only, and write to the finance system through the interfaces it exposes; secrets stay in the platform's credential store
- An invoice has to be defensible, so every priced line keeps the event that caused it and the tariff version that priced it, and no line is created for a service that exists in no table
- Event data, tariff tables and statements stay inside your Microsoft 365 tenant, the automations run from the EU region of UiPath Automation Cloud, and duties stay apart: the engine prices, the supervisor confirms an unrecorded task, the billing owner releases the period, and a tariff change needs a second person
Why now
Mandatory KSeF has applied in Poland since 1 February 2026, so a domestic sales invoice exists when the system accepts it, not when the office finishes its workbook
The payment term between private undertakings in Poland as a rule may not exceed 60 days and starts at the invoice, so every day between period end and a released billing file is added in front of it, alongside the modelled €924 a month of desk time
Nothing here needs a document model or a language model: scheduled reads, versioned price tables, tasks completed in Microsoft Teams and a Power BI view on your own tenant are configuration, not a development project
Relevant executive roles
Revenue becomes the sum of recorded events rather than an assembled estimate, and credit notes stop being the cheapest way to close a question
The work the sites actually do is what gets billed, and a supervisor is asked about a missing task next morning instead of six weeks later
Another customer or site is absorbed by adding tariff tables rather than billing staff, and renewals start from data the company owns
Common questions and objections
That is the argument for a tariff table, not against it. Services, units, prices, validity dates, minimums, free periods and tiers are parameters, and a clause fitting none of them is usually worth rewriting at the next renewal.
Most will, through an API or a scheduled export, and the engine accepts either; where a site genuinely cannot, we start with the sites that can.
Then the gap rule changes first. The engine cannot invent a task, but it can notice a pallet leaving a co-packing zone with nothing recorded against it and ask the supervisor next morning.
When this is not the right solution
- A handful of customers on one storage rate and one handling rate, where a workbook is genuinely faster than a pricing engine
- The WMS does not record the events being billed, so there is nothing to price; getting value-added work onto a station or a scanner comes first
- Prices are agreed verbally per job and never written back anywhere, so there is no tariff for a table to hold
A question for the next management meeting
Is there a recorded warehouse event behind every euro this company invoiced last month, and an invoice line behind every hour its sites worked?
Implementation approach
Delivery runs in stages, so it can be stopped at any point.
We deliver
- Three closed months of your events repriced against your tariffs and set beside the invoices you issued
- The tariff model: services, units, prices, validity dates, minimums, free periods and tiers, as tables your commercial team owns
- The daily event read and pricing engine per site, with the event reference carried onto every priced line
- The gap rules and the Teams routine that closes them in two days, the billing file and its statement, the query flow, the Power BI view, and a pilot on two customers before rollout site by site
We need from you
- Three months of WMS event and occupancy data per site, with the invoices for those months
- The signed tariffs including the annexes, where minimums, free periods and indexation usually live
- An interface to each WMS by API or scheduled export, and a test client on the finance system
- A billing owner and a commercial owner who can settle what a clause means when two readings are possible
Stages
Discovery
Event coverage per site, tariff variety, what was billed against what happened
Design
Tariff model, pricing rules, gap rules, tolerances, query policy, security model
Build
Event reads, pricing engine, billing file and statement, Teams touchpoints, Power BI
Validation
Three closed periods repriced and compared line by line with what was invoiced
Go-live
Two customers first under supervision, then site by site, with one period run in parallel
Departmental. Effort follows the number of exceptions in your contracts, whether each WMS can hand over events and occupancy on a schedule, and how consistently value-added work is recorded.
The warehouse recorded the work. The invoice was built from a spreadsheet.
Send us three closed months of WMS events for two customers and the invoices issued for the same periods. We reprice them against your tariffs and return the differences line by line, with the services where nothing was billed at all.
Reprice three months of your eventsThe neighbouring process usually has the same problem
Orders wait for the month-end billing run, and the accessorials written on a driver's note are never billed.
View solution Supply chainInventory that agrees: WMS and ERP reconciled every nightStop discovering at the cycle count, or when an order cannot ship, that the WMS and the ERP disagree.
View solution Legal & complianceClaim files complete before the deadline, not after itThe customer deducts the damage; the note, the photographs and the temperature record are in four places.
View solutionIndustries we deliver this in most oftenTransport & logisticsRetail & e‑commerce