Home · Solutions · Finance & accounting

Solution · Finance & accounting

Every 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.

DepartmentalMicrosoft TeamsHuman in the loopDeterministic automation
96,000chargeable events a month decide what this illustrative 3PL may invoice, and nobody reads them until the run starts in the following week.

Executive summary

Challenge

Storage, handling and value-added work are billed from a spreadsheet somebody rebuilds every month.

What changes

Mientha builds the billing engine as a daily read rather than a month-end reconstruction.

Business value

The billing run stops being a construction and becomes a review, because the file was built while the month was happening.

Systems involved

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.

  1. SystemThe WMS records receipts, put-aways, picks, despatches and daily occupancy, because stock control requires it
  2. PersonA shift supervisor notes the day's value-added work on a sheet and emails a summary once the week is over
  3. WaitingNothing is priced until the period closes; the run begins on the first or second working day of the next month
  4. 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
  5. Risk of errorWork that reached nobody's email is never billed, and no list exists of what was missed
  6. Risk of errorA queried line means rebuilding the extract weeks later, and where evidence is slow to assemble a credit note closes it quietly
SystemPersonWaitingRisk of error

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

One year of building the run this way≈ €11,088
Value-added work done in the aisle and never written down≈ €28,800
Lines credited because nothing behind them could be shown≈ €108,000

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.

Illustrative scenario

A plausible organisation with realistic proportions. The figures are there to be recalculated on your data; they are not a client result.

Organisation

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.

Volume

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.

Current process

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.

Bottleneck

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.

Solution

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.

Potential outcome

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.

Native capabilities used

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

What we build

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

Custom integration

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

  1. AutomationOvernight, robots read each site's chargeable events and occupied positions for the day and queue them per customer in Orchestrator
  2. AutomationEvery event is priced against the tariff version valid on its own date, and the priced line keeps the event reference
  3. SystemMinimums, free periods and tiers are computed on the running period, so a tier reached on the eleventh applies from the eleventh
  4. 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
  5. 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
  6. AutomationThe released file creates the invoices in the finance system, and the statement with its event references is filed alongside them
AutomationSystemPerson

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

BeforeAfter
Days from period end to a released invoice6 to 9 working daysthe first working day
Value-added work reaching a billing linewhat somebody remembered to sendevery task recorded at a station
Evidence behind a queried linerebuilt from an export weeks laterattached when the line was priced
Indexation and tariff changesapplied by hand at renewalapplied from the table's validity date
Share of the run touched by a personall of itthe gap list and the query queue only

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

chargeable eventsUiPath OrchestratorUiPath Robotsthe finance system for invoicingthe daily gap list in a Microsoft Teams channel

Technologies used

UiPath Robots + Orchestrator

read events per site on a time trigger, queue and price them, retry, log every run

A
UiPath Integration Service (Microsoft OneDrive & SharePoint, Microsoft Teams connectors)

tariff tables and the statement archive in your tenant; the daily gap list in Teams

A
UiPath Action Center in Microsoft Teams

gap items and queried lines completed as tasks without leaving Teams

A
Microsoft Teams (Approvals app)

release of the period's run and credit notes above the threshold

A
Power BI

billed value by customer and service, open gaps, lines under query, revenue per occupied position

A
WMS and finance-system interfaces (custom integration)

events, occupancy and value-added records in; invoices out

C
Averified product capability (vendor documentation)Cillustrative model — the figures on this page

Illustrative economic model

The arithmetic is open, so it can be argued with.

Illustrative model
660 customer-days a month × 3.5 minutes of extraction and checking= 38 h 30 min / month
38 h 30 min × €24 fully loaded hourly cost= €924 / month
× 12 months≈ €11,088 / year
Annual billing-desk capacity released (illustrative)≈ €11,088

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

hours released per month
of annual capacity released

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

days from period end to released invoicevalue-added tasks billed against tasks recordedcredit notes as a share of billed valuegaps closed within 48 hoursrevenue per occupied pallet position

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

01

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

02

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

03

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

CFO

Revenue becomes the sum of recorded events rather than an assembled estimate, and credit notes stop being the cheapest way to close a question

Warehouse Operations Director

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

Owner or Managing Director

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

Every one of our contracts is different.

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.

Our WMS will not hand over the events.

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.

Value-added work happens where there is no scanner.

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.