Transport company software: one record for the job, the truck and the document
A dispatcher does not buy “an IT system”. They buy one truth about the haulage job, the vehicle, the driver and the document. Transport company software instead of a spreadsheet, a WhatsApp group and three versions of the freight rate.
Your dispatch office is not buying “an IT system”. It is buying one truth about the haulage order, the vehicle, the driver and the document. When that truth lives in a spreadsheet, a WhatsApp group, the forwarder’s inbox and the driver’s notebook, the rate that was “already agreed” drifts away from the CMR, the invoice and what the truck actually delivered. Transport company software has one job: to bind those four things together before empty kilometres, a SENT penalty or a bad rate eat a margin you will not win back on the next load-board job.
This text is written for the person who signs the Community licence, not for a developer. GESOFT (Paweł Matusiak, Laravel, Vue, Android) does not sell a “TSL digitalisation platform”. We build software for hauliers when an off-the-shelf TMS (Trans.eu, FireTMS, Spedycyjne.pl and similar) cannot hold your model: your own tariffs, an offline Android app for the driver, PUESC/SENT/KSeF/finance integrations, a shipper portal on your domain. If standard SaaS is enough — stay with it. We do not burn a working TMS as a matter of principle.
We do not promise to replace the tachograph, GITD, statutory bookkeeping or e-TOLL. Accounts stay where they are lawful. The tachograph stays the device it is. Road tolls stay with the operator. Transport company software looks after jobs, the fleet, route status and documents that a spreadsheet and a phone group will not carry once you have more than a handful of trucks and more than one forwarder on the shift.
The market you work in is not a market of “endless tonnage growth”. The TLP report “Road transport in Poland 2024/2025” describes a sharp slowdown from mid-2023 and a revenue drop declared by more than half of TLP/Spotdata respondents. Road transport’s share of bankruptcy and restructuring proceedings rose from 5% in 2021 to 13% in 2024. In that setting a wrong rate, empty kilometres and hand-typed SENT filings are not “admin cost”. They are the cost that pushes a firm off the market faster than the lack of one more trailer.
Market numbers: a licence register is not “how many firms actually drive”
The most common mistake in a conversation between an owner and a vendor is “there are X hauliers in Poland, so our case is typical”. X depends on the register. TLP notes that in 2024 the number of firms with a Community licence fell for the first time (GITD). That is a signal from the register of authorisations, not a census of trucks that left the yard this week. A licence can sit on an entity that rarely runs, subcontracts work, is in restructuring or has not yet handed back certified copies. Quoting “this many firms drive” mixes the register with the real economy.
A secondary Webfleet compilation dated 7 April 2026, citing GITD’s International Transport Bureau (BTM), gives 43,924 licensed international hauliers at the end of 2025, −2.5% year on year (1,130 fewer than a year earlier). The same series: 2024 — 45,054; 2023 — 45,565; 2022 — 44,499. In 2025, 4,431 entities were removed from the BTM register and there were 3,301 new entries. This is not a table we opened at GITD. It is a secondary compilation citing BTM/GITD. Trans.info on 6 February 2026 reports the same 43,924 and −2.5%.
The gap between the 2023 peak (45,565) and end-2025 (43,924) does not mean “1,641 trucks vanished from Polish roads”. It means fewer entities held an international authorisation in the BTM register. Some firms dropped to domestic work, some merged, some surrendered the licence, some could not keep financial standing. For your TMS what counts is not the national average but how many combinations you run, how many jobs a week and how many documents must pass through dispatch before freight hits the ledger.
Statistics Poland (GUS) in the “Transport and communications” section published “Transport – activity results in 2024” on 30 September 2025. That is the proper place for tonnage, transport performance and structure if you need a citation for a tender or a bank. We do not add tonne-kilometres from memory or from an infographic. If a figure is to enter a partners’ resolution or a credit file, open the GUS publication, not a TMS vendor slide.
- BTM/GITD register: how many entities hold a Community licence — not how many trucks left on Friday.
- TLP/Spotdata report: sentiment and the share of insolvencies/restructurings, not a VIN list.
- GUS: transport activity results; cite a specific table, not “the industry will grow because the internet says so”.
- Your fleet: combinations, drivers, subcontractors, pallets, dwell — that is the only number from which GESOFT prices an MVP.
In practice one yard holds three realities the GITD register does not split. First: a combination that leaves every other day, has a regular shipper and a contracted driver — that combination “lives” in the register and in the cashbook. Second: a leased truck that sits idle because there is no backload, while the instalment still leaves the account — a cost the licence statistic does not show. Third: a subcontractor on a single run whose CMR and invoice must enter your workflow even though the truck is not yours. Software for hauliers that only knows “our vehicles” will break in the first month when 30% of kilometres run on a third-party combination under your job.
That is why we do not start with “how many licences there are in Poland”. We start with how many truths about the same run you have this evening. If the forwarder has a different rate from the spreadsheet, the driver a different loading hour from the email, and the bookkeeper a different VAT ID from the CMR, that is not a “lack of cloud” problem. It is the problem that surfaces at an inspection, in a freight dispute and under KSeF, when the invoice must reflect what happened, not what someone typed in a group chat at 22:17.
Licence, certified copies, financial standing — and what GITD will not do for you
The legal base is the Road Transport Act. A Community licence for hire-or-reward international carriage of goods is not “a stamped PDF in a drawer”. It is an authorisation against which GITD looks at financial standing, professional competence, good repute and a genuine and stable establishment. The biznes.gov.pl guide (ou1523) points to GITD and gives the 2025 euro rate for financial standing: PLN 4.2853. Software will not “calculate the licence for you”. It can watch which vehicle has a certified copy, until when, and whether a combination whose copy is not in the file is about to roll.
A certified copy for a vehicle is, in practice, a more frequent source of trouble than the licence document itself. A tractor goes to the workshop, a substitute comes in, someone retyped plates in a spreadsheet and forgot the copy stayed in the old tractor. Or a trailer runs with a different tractor while the cab file still holds last year’s pack. Software for hauliers does not replace GITD. It can show the dispatcher: this VIN has no current copy, this driver has no valid medical, this combination’s policy expires on Friday. That is an operational alert, not an administrative decision.
GITD information 4/2026 covers the statement on the number of persons employed in the undertaking for 2025 — the filing deadline is 31 March 2026. Trade sources repeat that date; the proper document is the GITD notice, not a load-board newsletter. Transport company software can assemble the list of drivers and contracts you already hold in HR. It cannot “submit the statement for you” as a substitute for the duty to GITD. Anyone promising a “GITD OK” button is selling a slide.
- Licence and certified copies: expiry, vehicle, whether the pack is in the cab and in the file.
- Financial standing: you calculate it under the biznes.gov.pl rules and the 2025 rate of PLN 4.2853 — not from an “industry average”.
- Driver: driving licence, driver card, medicals, ADR if it applies — status, not a cloud scan “just in case”.
- Employment statement: a calendar of the duty, not a module pretending to be the authority.
- Subcontractor: whether they run on your job and whether their authorisations sit in the job file, not “on WhatsApp from Marek”.
Financial standing is counted from vehicles, not from “how the season felt”. When you add a combination and nobody in finance checks whether capital and guarantees still cover the threshold, the problem appears at an inspection or at renewal, not at TMS go-live. That is why a fleet card holds not only mileage and inspection but the chain: vehicle → certified copy → insurance → lease → who is driving this week. That is not bookkeeping. It is the layer without which bookkeeping receives documents that cannot be assembled into one history of the run.
In a firm with a dozen combinations the “licences” folder often lives with one person. Holiday, sick leave, a forwarder leaving — and nobody knows which copy is in which truck. A roadside check does not ask about your load-board subscription. It asks for the document. A good software for hauliers shows authorisation status on the job before the dispatcher clicks “send to driver”. A bad one has a pretty map and dead PDFs in a “scans 2024” folder.
Certified copies, a substitute tractor and the trailer that is not in the spreadsheet
A typical Monday: tractor A is in the workshop with a pump failure. You take substitute B from a rental or from another combination. Tuesday morning’s job is already in the group chat. Someone rewrites plates in the email to the loader, someone else leaves the old ones on the CMR, and A’s certified copy still sits in A’s glovebox. After a check it turns out the truck that left did not have the pack, even though “it was only for three days”. A system in which the vehicle on the job is a required field and pulls copy status with it is not a convenience. It is a shield. It does not replace the decision whether you may drive — it shows that the file is empty.
Mobility Package and driver working time — the system is not a tachograph
The Mobility Package includes Regulation (EU) 2020/1054 (driving time, rest, tachographs) and Regulation (EU) 2020/1055 (access to the occupation, cabotage, vehicle return, posting). We do not cite articles from memory. The consolidated text is on EUR-Lex. Your duty on driving time, vehicle return and posting does not vanish when you buy a TMS. What vanishes is the illusion that “the app will handle it instead of the driver card”.
Driver working time in the tachograph is a source you must not replace with “status in the app”. The app can collect the shift plan, planned loading, dwell at the consignee, a read from a DDD file or from the time-recording system you already have. It can warn the dispatcher: this driver should not take another run because the plan collides with rest. It cannot pretend to be the official record. Anyone whose offer says “we replace the tachograph” either does not understand the rules or is betting you will not read the contract.
On the dispatch floor the pain looks different from a regulation. The forwarder sees a free truck. The driver texts “I can still do Skierniewice”. The tachograph says a third thing, but you will pull the file tomorrow. If the haulage order has no field for “planned driving / rest / card checked”, the decision is taken in chat. Then the truck sits because time ran out and the consignee bills dwell. Or you keep rolling and buy the risk. Transport company software does not settle the dilemma for you. It gives the dispatcher the same card you should have before clicking “accept load”.
- Shift plan and run plan: a collision with rest must be visible before the job is sent to the driver.
- Vehicle return and cabotage: dates and locations on the job, not “we will somehow return after the third load”.
- Posting: documents and deadlines your adviser already handles — the system holds the file, it does not interpret the EU text.
- DDD import / status from your recorder: if you have a read-out tool, we connect it. We do not write a second tachograph.
- An alert is not an administrative decision. A forwarder or the owner signs the decision.
Cabotage and cross-trade hurt when a load-board job looks like a “quick extra hop” and the file has no entry date, no operation count and no answer to whether the combination should still be in that country. A dispatcher who only counts freight does not count the risk of being held at a check. A TMS — custom or SaaS — should show on the run card: from, to, whether it is cabotage, whether you have the pack. Do not take Mobility Package interpretation from a vendor blog. Take it from EUR-Lex and from the person in your firm who owns compliance.
Working time is also money, not only checks. Mileage bonus, lump sums, allowances, overtime, dwell at the loader — it lands in payroll and in the ledger. If the only source is the driver’s scrap of paper and an SMS “I waited six hours”, you have a dispute at month-end. An app in which the driver marks dwell with a photo of the gate and a timestamp does not replace working-time records. It gives HR and accounts a trail you cannot reconstruct from memory after three weeks on the road. That trail is operational. The statutory record stays where the law puts it.
SENT, RMPD and PUESC — dates that have already passed, and a penalty like driving without a permit
GITD’s SENT pages describe the duty to notify a movement to the register. From 1 November 2024 this covers carriers from outside the EU/EFTA/Switzerland. From 1 January 2025 — carriers from the EU/EFTA/Switzerland who, on Polish territory, perform a carriage to or from a non-EU country under a permit arising from an international agreement. This is not a “module for later”. It is a calendar that already runs. Forms sit on PUESC: RMPD100, RMPD update, RMPD406. The SENT Act is the base. GITD treats a missing notification like driving without a permit.
In dispatch, SENT most often dies in one of three places. Either nobody knows the run is in scope, because “we are coming from Germany to Poland, that is just import”. Or the forwarder knows, but the notification number sits in an email and the driver has a different PDF. Or there was a notification, but the route, trailer or date changed and nobody filed an update. Software for hauliers with a field “SENT yes/no / number / status / updated” does not transact with the authority. It stops a run leaving with a hole in the file.
A PUESC integration makes sense when the volume of filings eats a shift. Typing into the form by hand is enough when those runs are a handful a month and one person actually owns them. When you rotate forwarders and have weekend loadings, hand typing ends with “we will send it on Monday”. A check does not wait until Monday. GESOFT does not promise a magic connector to every PUESC message overnight. We promise that the haulage order has a place for SENT status and that — if you have volume — we design an integration or a semi-automatic export into the form, instead of another scan in WhatsApp.
- Calendar: 1 Nov 2024 outside EU/EFTA/CH; 1 Jan 2025 EU carriers on moves to/from a third country under a permit.
- PUESC: RMPD100, update, RMPD406 — the official source, not a “SENT module” from a leaflet.
- No notification = like driving without a permit. That is not a fine for a typo in an email.
- Change of route, vehicle, date: an update in the register, not only a new message to the driver.
- Integration vs hand: a decision after the number of filings and after you know which runs are in scope at all.
“Goods” SENT (fuels, waste, excise goods in the Act’s geographic scope) and RMPD are two different registers that in shop talk collapse into one word. If you haul goods covered by the SENT Act, the job file must know this is not an ordinary CMR. If you haul cabotage or a third-country move through PL, the file must know about RMPD. A system with a single “SENT YES” checkbox and no distinction produces a false sense of compliance. We do not interpret for you which run is in scope — we show that someone had to mark it and attach a number.
A penalty like driving without a permit hurts differently from “paying for empty kilometres”. Empty kilometres eat margin. A missing notification can eat the run, the truck and the weekend. That is why a departure checklist — next to fuel, seals and CMR — must ask about SENT/RMPD if your traffic profile requires it. If it does not, we do not add a dead field to look like a “compliance system”. After a month everyone ticks “not applicable”.
Hand typing that works — until it does not
A small firm: one forwarder, three RMPD runs a month, a PUESC file, the number pasted onto the job card. That is an honest process. It breaks when that forwarder is off sick and the cover has no login, or when loading slips by a day on Sunday evening. Then you either update the notification from home or you roll on the old number. Transport company software does not magically log into PUESC for you without an agreed design. It can: remind you that the date on the job ≠ the date on the notification; hold the process login (who files, who covers); refuse to mark a run as “en route” when SENT status is empty on a profile that requires it.
e-TOLL and road charges — we do not build our own gantry; we allocate cost onto the job
e-TOLL is a charging system GESOFT does not replace and does not recreate. You have a device or the operator’s app, an account, top-ups, passage invoices. Our TMS can import a passage statement and assign it to a haulage order or to a vehicle so you see what the run really ate, not only “load-board rate minus fuel from gut feel”. That is cost allocation. That is not “our own e-TOLL”.
The usual mess: the toll invoice arrives as a bundle, and you calculate margin per job. Without allocation you have a pretty spreadsheet of “average cost per kilometre” and no knowledge of which lanes are toxic. Import from CSV or from the operator’s API — if the operator offers one — we connect. If it does not, a manual import of the bundle remains, with keys (vehicle, date, section). We do not promise to “pull every gantry live”. We promise that the toll cost will not live only in the accounts folder three weeks after the run.
The same applies to vignettes, foreign tolls and fleet cards. A fleet running PL–DE–FR collects three charging regimes and three invoices. If they do not land on the job, the forwarder sells a run that “adds up” and a month later it does not. A custom system has an edge here only when your allocation keys are unusual (split to a subcontractor, to a trailer, to a fixed lane with a surcharge). For a simple “drop the e-TOLL invoice into finance”, bookkeeping and an off-the-shelf TMS are enough.
- We do not build a substitute for e-TOLL, an OBU or an operator account.
- Import of passages and allocation onto job / vehicle — yes, to the extent data exist.
- A bundled invoice without a key = a false margin on the lane.
- Fuel cards, AdBlue, washes: the same cost mechanism, a different source file.
- Finance remains the place of booking. The TMS is the place where you see which run ate it.
Road charging is also an argument in a rate dispute with the client. If you can show that lane X eats Y in tolls under your axle profile and route, the freight conversation stops being “the load-board market”. If you cannot, you are left bidding down. Transport company software will not raise rates for you. It gives a number you are not ashamed to put on the table. Without it you are left with the owner’s intuition, which at twenty combinations no longer holds every lane at once.
The haulage order is the heart of a TMS — not a pretty tracking map
Tracking sells well. Shippers like a pin. A pin without a job card is decoration: the truck moves and nobody knows the rate, who pays dwell, how many pallets return, whether SENT applies, whether the CMR is signed and whether you may invoice. The haulage order is the record from which hang the vehicle, the driver, documents, route status, cost and revenue. If that record does not exist, you have GPS. You do not have a TMS.
In practice the job card must carry what today splinters across channels. An email from the load board or the client portal. A phone call “go to the other gate”. A driver SMS “I am standing, no docks”. A CMR photo. A seal number. A weighbridge weight different from the order. Pallet deposits. A surcharge for ADR or temperature. If any of those events lives only in chat, margin on the run is fiction until someone manually rebuilds the history. Usually the bookkeeper rebuilds it after the fact, and they were not at loading.
- Intake: shipper, lane, time window, cargo, rate, currency, who accepts.
- Plan: vehicle, driver, subcontractor, whether there is a certified copy, a time plan, SENT/RMPD.
- Execution: status (to load / en route / at unloading / delivered / breakdown / empty return).
- Documents: CMR, delivery note, photos, weight, seals, damage, parking ticket, dwell.
- Costs: fuel, e-TOLL, ferry, dwell, subcontractor, pallets; a fine is not a run cost in the same sense — but it still needs a place.
- Invoice: freight, surcharges, correction, KSeF — from the same card, not from a second spreadsheet.
Route status is not decoration for the shipper. It is a dispatcher’s tool. “En route” without a timestamp and a source (driver / GPS / phone) means nothing. “Delivered” without a document photo means nothing for the invoice. The MVP GESOFT proposes at the start is exactly this: jobs, vehicles, drivers, route status, documents. No load-board engine, no AI, no “optimise 40 trailers with one button”. First, one truth about the run. The rest — once that truth stops leaking.
A shipper portal on your domain makes sense when the client will not log into Trans.eu and you do not want the relationship to live only on the board. They see their jobs, status, documents, invoices. They do not see other people’s rates. That is a reason to build custom, not another argument “because the map is prettier”. Board SaaS wins when you live off the board. Your own portal wins when you live off 15 regular loaders who want your logo and your reference numbers, not someone else’s platform.
Rate, currency, surcharge and what is missing from the load-board email
Freight “EUR 1,200” without a dwell rule, without an FX rate, without who pays the wash and without pallets is not a rate. It is a headline. Software for hauliers has a place for a tariff: km, lane, weight, ADR, temperature, weekend, second driver. Own tariffs are the most common reason an off-the-shelf TMS starts to get in the way: you have a network contract that counts differently from “rate per km from the board”, and SaaS forces it into one field. Then you either cheat the system or you cheat yourself in the margin report.
A subcontractor is a separate purchase job inside your sale job. You buy carriage, you sell carriage, in the middle must sit your margin and your responsibility for the document. If the subcontractor runs “on a word” and the CMR comes back two weeks later, you will not invoice cleanly, and KSeF will not wait until Marek finds the scan. Subcontractor card: purchase rate, truck, driver, documents, payment term, pallet deposit. That is not a CRM. That is control of a money leak.
Driver, Android, CMR, damage and dwell — an app that works where there is no signal
A driver will not fill in a spreadsheet after returning to the yard. They will not wait until “LTE catches at the gate” either. An Android app (offline) receives the haulage order, addresses, windows, reference numbers, a document checklist. On site they photograph the CMR, seals, damage, the weighbridge. They mark loading, dwell, unloading. When signal returns, records go to dispatch. That is the same pattern we describe for a field-service app: the field does not wait for office Wi-Fi.
Damage to cargo or to the trailer without a photo from the place and a timestamp is a dispute you lose. Dwell without a mark and a photo of the gate is hours the client will not accept. Pallets without a signature are a deposit you will not recover. The app will not turn the driver into a lawyer. It turns the event into a trail you cannot reconstruct from memory after a week in the cab. The dispatcher sees status without calling “where are you” in the middle of a dock manoeuvre.
- Offline: job and checklist available without a network; sync when signal returns.
- Documents: CMR, delivery note, photos, signature, seal number — on the job card, not in the phone gallery.
- Damage: photo, description, time, whether you may continue, whether a claims handler is called.
- Dwell: start/stop, reason, photo — the basis for a surcharge, not “we will somehow agree”.
- Pallets and deposits: how many in, how many out, exchange document — a separate line, not a pencil note on the CMR.
- Navigation and GPS: they may exist; they are not a substitute for the job card.
GESOFT builds Android because that is what we do and because there is an Android phone in the cab anyway. We do not build an “ecosystem with apps on three systems because the pitch wants it”. The driver should get one task: run the job and not lose the document. If they can do that on a mobile site for simple domestic lanes — you can start with a PWA. If they run Europe, warehouses without signal and must photograph damage — native Android with an offline queue stops being a whim.
In 2026 the CMR is still paper or a scan, not “e-CMR at every loader”. The system has a place for both worlds: a photo of the paper and — when the client requires it — an e-document number. We do not promise to “roll out e-CMR in Poland by statute”. We promise that the document you actually have hangs on the job and is available to the forwarder, the bookkeeper and — in a stripped view — the shipper. Without that the KSeF invoice goes out and the run file is empty when the client disputes the weight.
Pallet deposits that eat margin more quietly than fuel
Pallets are the classic leak you do not see on the load board. 33 in, 30 out, the exchange note unreadable, the deposit sitting in a “pallets 2024” spreadsheet. After a quarter you have a dispute with the client and the subcontractor, and nobody can assemble the chain. A job card with a pallet line (type, qty in, qty out, document, deposit, who is liable) is boring. It is also one of the things a standard TMS either lacks or does “its way”, while your network counts differently. That is the exact moment custom software stops being a whim and a spreadsheet stops being “enough for now”.
The same goes for swap bodies, garment rails, glass stillages, meat bins, roll cages. If your model earns money because equipment comes back, not only because of kilometres, a “job” record without a “unit load” record is lying. SaaS wins when the unit is an exception. A custom system wins when the unit is the product.
KSeF and the freight invoice in 2026 — do not issue outside the system once it already applies to you
The timetable from ksef.podatki.gov.pl (dates) and scope of the mandate: the duty to issue from 1 February 2026 for taxpayers whose 2024 sales (gross) exceeded PLN 200 million; from 1 April 2026 for others. From 1 February 2026 the duty to receive invoices in KSeF also applies. B2C is optional. There is an Offline24 mode. Until the end of 2026 a PLN 10,000 per month threshold for invoices outside KSeF for the so-called digitally excluded. The KSeF number in payments is deferred. Act of 5 August 2025, Journal of Laws 2025 item 1203. A broader implementation note: KSeF mandatory in a company application.
A freight invoice does not come from “export PDF”. It comes from the job card: rate, surcharges, dwell correction, currency, VAT ID, the client’s reference. If those data live in WhatsApp and the invoice in another program, KSeF will only speed up the appearance of errors. Do not issue an invoice outside KSeF once it already applies to you. GESOFT is not an accountancy practice. We build a bridge: job → sales document → KSeF or into your finance system that already speaks KSeF. Bookkeeping stays.
Haulage typically means corrections, fewer advance invoices than in trade, but frequent credit notes and weight disputes. KSeF does not like “we will send another version by email”. It likes one document and a correction. So the flow should be: first close the job (documents, delivered status, surcharge acceptance), then invoice. Reversing that — invoice from memory, CMR later — ends in a correction, frayed nerves and a client who “already paid that other version”.
- Issuing: 1 Feb 2026 above PLN 200 million gross sales for 2024; 1 Apr 2026 everyone else.
- Receiving invoices: from 1 Feb 2026 — including those you get from the workshop, fuel, tyres, the subcontractor.
- B2C optional; Offline24 under Ministry of Finance rules, not under “we will send it when the cab has internet again”.
- Until end-2026: PLN 10,000/month outside KSeF for the digitally excluded — that is not a loophole for a fleet with a ledger.
- Bridge job → finance / KSeF. Not a second accounts package in dispatch.
A subcontractor will issue you an invoice that, from 1 February 2026, you must be able to receive in KSeF anyway, whether you yourself enter the issuing duty on 1 February or 1 April. That is an argument for the inbox not living in the bookkeeper’s email “when they find time”. If cost invoices (fuel, service, tyres, wash, ferry) do not land on the job, margin will still be counted from gut feel — only now in a structured flow. A TMS without a bridge to cost invoices remains a status board.
Freight in EUR and an invoice in zloty or euro, the FX rate, the rate date, whether you add the road charge as a line or in the rate — those are decisions for the accountant and the client contract. The system must be able to store them. It must not invent them. Anyone who implements KSeF “while we are at a new TMS” without the accountant at the table gets a pretty button and wrong invoices. Anyone who implements KSeF in finance and leaves the TMS in Excel gets correct invoices that match nothing. We join those two worlds. We replace neither.
e-Deliveries and correspondence with the road inspectorate and the tax administration
Biznes.gov.pl (004495) describes the e-Deliveries duty: new CEIDG/KRS entities at registration from 1 January 2025; KRS entities from before 2025 from 1 April 2025; CEIDG from before 2025 from 1 October 2026. This is a mailbox for official correspondence, not a “TMS module”. A summons from the road inspectorate, a letter from the tax administration, a decision that runs on a deadline, cannot wait until someone checks the owner’s private email after returning from a trip.
Transport company software can hold a pointer to the process: who administers the mailbox, who covers holidays, whether a letter related to a job (check, penalty, summons) was linked to the run card. It cannot pretend to be the e-Deliveries operator. The usual failure: one password, one phone, a holiday. The second: the mailbox exists, nobody reads it, deadlines run. That is not an IT problem. It is an accountability problem that surfaces at a penalty, not at a demo.
A roadside inspection and a letter that arrives later are two moments of the same history. If the job file has the tachograph (a read-out, not a substitute), SENT, CMR and the driver, you answer from facts. If the file is a WhatsApp group named “ITD September”, you answer from memory. Software will not win the check for you. It shortens the time in which you find the document the check will demand anyway.
- ADE mailbox: an administrator, a deputy, not a password in the dispatcher’s notebook.
- Official letter → entity card or job card, if it can be linked.
- Deadlines: a calendar, not “we will somehow reply after the weekend”.
- e-Deliveries is not KSeF and not PUESC. Three mailboxes, three duties, one mess when everything lands in the owner’s email.
GDPR, GPS and monitoring — you are the controller, not the map vendor
Driver data, tachograph read-outs, GPS location, document photos, driving-licence numbers — these are personal data or data that can be tied to a person. You are the controller. If the TMS is SaaS, you need a processing agreement, a list of sub-processors and an answer to where the servers sit. If you build custom on your server or in your cloud — you are still the controller, only the chain is shorter. GESOFT signs a processing agreement when we process. We do not “sort GDPR with a consent tick in the driver app”.
GPS monitoring is not lawful “because it is a fleet”. It is lawful when you have a legal basis, information for the driver, retention and a purpose (protection of property, job settlement, safety), not 24/7 peeking “are they really asleep”. An app that collects location every few seconds “just in case” produces surplus data and surplus risk. We collect what route status and settlement need. We do not build an intelligence service.
A CMR photo with the driver’s face in the background, a licence scan in a “scans” folder, a WhatsApp group of 40 people with PESEL numbers in nicknames — that is a leak that happens by itself. A custom system with roles (the driver sees their job, the forwarder their shift, the bookkeeper documents, the owner the report) is boring. It is also the only way not to explain to the DPA why a former driver still has access to the location of the whole fleet a year later.
- Controller: the haulage firm. Processor: SaaS or GESOFT, in writing.
- GPS: purpose, retention, information for the driver — not “we track because we can”.
- Roles and revocation of access on the day cooperation ends, not “we will somehow disable the account”.
- Tachograph and driver card: operationally sensitive; access on a need-to-know basis, not curiosity.
- The shipper in the portal sees their runs, not your map of every truck.
Location is also an argument in a dwell dispute and in a theft. Without a policy on when it may be used vis-à-vis a person, you are left with a tool you either switch off out of fear or use against the rules. Neither defends the firm. A policy plus a system with an access log (“who opened the driver’s track and why”) is the minimum. We are not a GDPR law firm. We do not ship a project in which GPS is on “because it looks good in the demo”.
Where Excel and a WhatsApp group kill margin
Excel is excellent until one person loves it and does not fall ill. WhatsApp is excellent until there is one driver and one forwarder. At the third forwarder and the tenth truck you have three versions of the rate, two VINs on the same run and a CMR nobody can find when the client does not pay. That is not a character flaw in the team. It is a flaw in the medium. Chat has no record. A sheet has no status and no permissions.
Margin dies in specific holes. Empty kilometres because nobody matched a return with a load sitting in another group. A rate “as always”, although fuel and e-TOLL are no longer as always. A subcontractor you paid from an email while the client did not pay you because the document was wrong. Pallets. Undocumented dwell. An invoice issued from memory, a correction after the CMR. A SENT penalty because the run “did not look like SENT”. Each hole is cheap when it happens once. At the scale in the TLP report — a slowdown, more insolvencies in the trade — you have no buffer for “it will somehow be fine”.
- Three versions of the freight: board, spreadsheet, what the driver heard.
- Empty runs invisible because the return is not a job, only “we are going back to the yard”.
- A CMR in the gallery of a phone that died in the car park.
- A subcontractor with no purchase card — negative margin appears after the transfer.
- KSeF and an invoice from a different file than the job — correction as a standing mode of work.
- Holiday of the only person who “knows that sheet”.
There is also a cost you do not see directly in P&L: dispatcher time. An hour a day looking for “which truck is free” and “did Marek take the seal”, at ten combinations, is a full-time post over a year, only sliced into pieces. A TMS does not make the forwarder redundant. It gives them an hour to sell lanes and look after regular clients, instead of chat archaeology. In a market TLP describes as one where more than half of respondents report falling revenue, that hour is not “IT efficiency”. It is whether you keep the regular loader who will not wait until tomorrow for an answer.
Excel also lies on pallets, damage and cabotage, because it has no event history, only cells. Someone overwrites a row. Someone filters and sends the wrong range to the client. Someone copies the sheet “just in case” and from then on two files live. WhatsApp lies differently: everything is there, only you cannot find it and you cannot assemble it for a check. Transport company software is a boring record with a log. That boredom is the value.
Empty runs that do not exist because they have no number
If a return to the yard or the positioning move to loading is not a job (even an internal one, with no freight), you will not count empty kilometres. You will not allocate fuel and e-TOLL. You will not see that the “great rate” lane eats 280 km empty on each side. A dispatcher who does not see empties as records optimises from memory. Memory at twenty trucks picks what is loud, not what is expensive. An MVP with route status must be able to mark an empty run. Without that a GPS map will show the truck moved. It will not show that it was a hole in the cashbook.
SaaS TMS versus custom — honestly: FireTMS, Trans.eu, Spedycyjne.pl
An off-the-shelf TMS wins when your model is standard: a job from the board or an email, a truck, a driver, freight, an invoice, tracking. Trans.eu, FireTMS, Spedycyjne.pl and related tools live off thousands of firms doing a variant of the same thing. A subscription, a template roll-out, a community, connectors it does not pay to write for one fleet. If that is enough — stay. GESOFT has no interest in burning working SaaS just to “have a project”.
Custom transport company software starts to make sense when SaaS starts lying to you or slowing you down. Your own tariffs that will not fit a “rate” field. A portal on your domain for a network that will not join a board. Offline Android with a damage and pallet checklist. PUESC/SENT/KSeF/finance integration your way, not on the vendor’s roadmap. Equipment stores. Two shippers with conflicting statuses that one workflow will not hold. Or a SaaS terms change that raises the price or switches off the API your day stands on.
There is a third path we like more than “throw everything out”: a layer on what already works. The board stays the board. FireTMS or another TMS stays where forwarding is standard. Beside it we build a client portal, a driver app, a KSeF bridge or an equipment register. Data flow through an API or through an import you are not ashamed of in an audit. That is more expensive in thinking, cheaper in risk than a big Sunday cut-over.
- SaaS wins: standard freight, a board, few exceptions, you want to be live tomorrow.
- Custom wins: tariffs, a domain, offline, integrations, unit loads, a model the template does not know.
- A layer wins: you do not burn the board or finance; you add what the template cannot do.
- Control question: after three years can you recover the job and document base without a ransom for export?
- Second question: does your day fall over if the vendor switches off the API or raises the per-vehicle fee?
A per-vehicle subscription looks cheap until you multiply by combinations, add-ons (SMS, API, extra user, white label) and the time you still spend in Excel “because that cannot be done”. Custom looks expensive until you count that you pay for code that is yours and for a process roll-out, not a perpetual levy on every VIN. There is no single answer. There is an honest comparison on your numbers. We set out the general dilemma in off-the-shelf software or custom. Here we add only this: in TSL the dilemma is sharper, because boards and SaaS TMS are mature. The bar for “build custom” sits higher than in a niche workshop.
If you already pay for FireTMS or a Trans.eu pack and the team knows it — we do not touch that in the first sprint. We ask which process sticks out: a driver without offline, a client without a portal, KSeF without a bridge, pallets, a subcontractor, SENT. We build that sticking-out piece. After six months you know whether the rest of the template still holds, or whether it is time to assemble your own job heart. That is the opposite of the “rip and replace” sale some software houses like. We do not like leaving you without a tool in season.
What GESOFT builds — and what we deliberately do not promise
GESOFT is a software house: Laravel on the server, Vue in the dispatcher panel, Android in the cab. Paweł Matusiak does not sell a boxed “TMS 360”. After a fleet brief (how many combinations, what profile: domestic / international / reefer / part loads, board or fixed lanes, which finance system, whether SENT applies to you) we come back with an offer within 24 hours via contact. If standard SaaS is the better answer, we will write that plainly.
The MVP we start from is deliberately narrow: haulage order + vehicles + drivers + route status + documents. You can run on that. You cannot pretend on that that we replaced the board, the tachograph and the books. Extensions that arrive once the heart works: offline Android, a shipper portal, e-TOLL and fuel allocation, a KSeF/finance bridge, SENT status, pallets, subcontractors, driver working time alerts (alerts, not statutory records).
- We build: a dispatcher panel, a job card, a fleet and driver register, status, documents, Android, a portal on your domain, bridges to finance/KSeF/PUESC in an agreed scope.
- We do not build: a tachograph, GITD, an e-TOLL engine, statutory bookkeeping, a substitute for a road-side check.
- We do not promise: “AI will optimise 40 trailers over a weekend”, “guaranteed Mobility Package compliance with a button”.
- Bookkeeping stays with the accountant. Compliance stays with the person who owns it in your firm.
- SaaS that works stays until we prove a given process must be custom.
Integration with finance (Optima, Symfonia, Enova, InsERT or whatever you have) means: a contractor dictionary, sales documents, sometimes cost postings onto the job. It does not mean the dispatcher books. A bridge that issues the invoice twice — in the TMS and in finance — is worse than no bridge. We agree one source of issue. In 2026 that source must speak KSeF. If finance speaks it, the TMS hands over data. If the TMS speaks it, finance receives. We do not introduce a third truth about the invoice.
We are not a load board. We do not have a network of thousands of shippers. If you live off Trans.eu, a connector or leaving the board beside you is more honest than “we will move your market into our app”. Your own portal is for your clients. The board is for the market. Mixing those two in one pitch is a common mistake we do not repeat.
Settling a subcontractor the template does not know
Own fleet plus spot work plus a regular subcontractor on one lane is three payment flows and three document flows. A SaaS template often knows “foreign vehicle” as a checkbox. It does not know your deposit, your term “pay after the client pays minus three days”, your damage split. If that is your bread, a purchase-of-carriage card is part of the MVP or the first extension, not a “nice extra in phase 4”. Otherwise the TMS shows sales and the cashbook shows something else.
A subcontractor under GDPR and under authorisations is also not “type the VAT ID”. They run on your job; the cab may hold your CMR, your seal, your client. File: licence, CMR liability cover, driver data for that run, documents. When the inspectorate stops their truck on your load, you look for that file at night. A better place than Messenger.
An owner’s checklist — before you buy anything, including from us
The list below is not a marketing score. It is a test of whether you even know what hurts. If more than a few items land on “we do not know”, the problem is not the lack of an app. The problems are process and accountability. Transport company software is a binder. It is not a prosthesis for the lack of a decision on who watches certified copies and who closes the job to invoice.
- How many combinations run in a typical week, and how many sit — and can you see that without calling?
- How many truths about the rate do you have this evening (board, spreadsheet, chat, the forwarder’s head)?
- Do the return and the empty run have a number, or do they vanish?
- Are the certified copy, medical and policy on the vehicle card, or in one person’s folder?
- Do you know which runs require SENT/RMPD, and who files in PUESC after 16:00?
- Is driver working time checked before accepting a load, or after a check?
- Does the freight invoice come from the job card, and from when does KSeF apply to you (1 February or 1 April 2026)?
- From 1 Feb 2026 can you receive cost invoices in KSeF, not only issue them?
- Does the e-Deliveries mailbox have an administrator and a deputy?
- Do GPS and the app have a GDPR basis, retention and a processing agreement if it is SaaS?
- Does the subcontractor have a purchase card, documents and pallets, or only a transfer?
- Do you already have an off-the-shelf TMS (FireTMS, Trans.eu, Spedycyjne.pl) — and which process sticks out of it?
- Can you export jobs and documents without the vendor’s blessing on a Friday after 17:00?
- Does the decision read: stay on SaaS / a layer / our own job heart — with a date, not “sometime”?
If you have a working FireTMS and the only pain is the driver app or KSeF — do not write “we want a new TMS” in the brief. Write: “we have X, Y hurts”. You will save a quarter. If you have nothing but Trans.eu and a spreadsheet, and the fleet has passed the point where chat lies, write about a jobs MVP. If you do not know which of those two descriptions is yours, write anyway — that is a normal state, only it must be named on the call, not in an implementation contract.
The cost of not deciding: empty kilometres, a SENT penalty, a bad rate
Not deciding is also a decision: you stay on a medium that lies. The cost is not “a subscription you did not pay”. It is a run that left without a notification, a lane that looks profitable because empties have no number, and an invoice KSeF will not accept in the shape you used to send by email. In the setting of the TLP report — a slowdown from mid-2023, more haulage firms in insolvency and restructuring, a falling licence count — that cost will not wait until you “implement after the New Year”.
Empty kilometres are the most honest example, because they need no authority. The truck returns. Fuel burns the same. e-TOLL counts the same. There is no freight. If you do not see that as an internal job, you are not managing a fleet. You are managing the hope that “the next load will be on the way”. Sometimes it is. The statistic of your 12 months, not of the board, will say how often it is not. Without a record there is no statistic. Without a statistic there is intuition. Intuition in a shrinking market of 43,924 licences at end-2025 (secondary BTM/GITD compilation) is expensive.
A penalty like driving without a permit for missing SENT/RMPD is the official example. We do not quote amounts from memory or from forums. We quote the mechanism: a run that “did not look like a notification” is treated as a run without an authorisation. A system that forces the question on the job card is cheaper than the first such miss. It is not a guarantee. There is no guarantee when someone ticks “not applicable” out of habit. Process and role (who owns PUESC) matter more than a checkbox.
A bad rate is the third cost: you sold at a chat rate, without dwell, without pallets, without the road charge, in a currency without an FX rate. The client will pay what was in the email. The rest you will haul for free. A TMS with a tariff and with job close before invoice will not raise market rates. It will stop you signing a stupidity that, in the heat of the board, you only see in the ledger. In 2026 the ledger will additionally put that through KSeF, so the stupidity will get an official number.
Damage without a photo is a fourth cost, often larger than one empty run. The client reports destruction. The driver “does not remember if it was already there at loading”. The insurer asks for a document from the place. The phone gallery has 400 car-park photos. Settlement drags, the truck sits or runs with a claim in the background, the client relationship cools. A loading checklist with photos of corners and seals is not “gaming the claim”. It is hygiene a spreadsheet will not enforce and a cab app will.
There is finally the cost of recruiting and of a forwarder leaving. When knowledge of regular lanes, of “how we count pallets at this client” and of the PUESC login sits in one head, that head leaving is an operational outage. A system with a client card, a tariff and a checklist does not replace a person. It means the next person does not start from zero in the worst week of the season. With a falling number of licensed hauliers, competition for a good dispatcher is not easing. A tool that does not require spreadsheet genius is an argument for that dispatcher to stay.
How to talk to a vendor — and how to start with GESOFT
A vendor who on the first call promises a tachograph, GITD, “full Mobility Package compliance” and “our own e-TOLL” does not understand your trade or is betting you will not press. A vendor who immediately tells you to throw out FireTMS does not either. Questions worth asking everyone, including us: where is the invoice source in 2026? What happens when there is no signal? Who is the controller of GPS data? Is SENT a checkbox or a PUESC process? After three years can you leave with the data? Can the offer be lined up against an MVP (jobs, vehicles, drivers, status, documents), not a 40-slide roadmap?
For a conversation with us, prepare not an 80-page RFP but a fleet brief: number of combinations, domestic / international, reefer/ADR/parcels, jobs per week, board or fixed lanes, which finance system, whether someone already owns PUESC and KSeF, whether you have a TMS today, what hurts in it. Within 24 hours of that brief we come back via contact. If the answer is SaaS, you will hear SaaS. If a layer, you will hear a layer. If our own job heart, you will hear the MVP scope and what we will not touch (tachograph, GITD, statutory accounts, e-TOLL).
You do not need a “TSL digitalisation strategy”. You need one truth about the run before the next empty, the next KSeF correction or the next run without RMPD does what a spreadsheet will not show: a margin hole in a year when the trade is already running into the wind. That is the whole thesis of this text. The rest is a checklist and sources so you do not buy a slide.
If one sentence is to remain on this page for a partners’ meeting, let it be this: we are not buying a map. We are buying a haulage order record that will carry the vehicle, the driver, the document, SENT, cost and the KSeF invoice. Everything else — the board, the tachograph, the authority, the road charge — stays where law and the market put it. Software for hauliers that understands this is a tool. Software for hauliers that does not is a cost.
Frequently asked questions
- Does transport company software replace the tachograph and GITD?
- No. The tachograph, working-time records, the licence and GITD checks stay where the law puts them. The system can plan a shift, hold certified copies and raise alerts. It cannot be a substitute for the device or the authority.
- Will GESOFT tell us to throw out FireTMS or Trans.eu?
- No. SaaS TMS wins on a standard model. We build custom or a layer (driver app, portal, KSeF, SENT) when the template cannot hold tariffs, offline or integrations. We do not burn a working TMS as a matter of principle.
- From when does SENT/RMPD apply to moves through Poland?
- GITD: from 1 November 2024 carriers from outside the EU/EFTA/Switzerland; from 1 January 2025 carriers from the EU/EFTA/CH on a carriage to/from a non-EU country under a permit from an international agreement. PUESC forms (RMPD100, update, RMPD406). A missing notification is treated like driving without a permit.
- From when does KSeF cover the freight invoice?
- Issuing: 1 February 2026 if 2024 gross sales exceeded PLN 200 million, 1 April 2026 for others. Receiving invoices from 1 February 2026. B2C optional. Source: ksef.podatki.gov.pl, Act of 5 August 2025 (Journal of Laws 2025 item 1203). Do not issue outside KSeF once it already applies to you.
- Do you build your own e-TOLL?
- No. We import passage statements and allocate cost onto the job or the vehicle. Accounts, OBUs and charges stay with the operator. The same for foreign vignettes: cost on the run, not a substitute charging system.
- What is in the MVP?
- Jobs, vehicles, drivers, route status, documents. Then — according to the pain — offline Android, a shipper portal, a KSeF/finance bridge, SENT, pallets, subcontractors, e-TOLL allocation. No AI, no promise of a load board.
- Does the app calculate driver working time instead of the tachograph?
- No. It can show the shift plan and warn of a collision with rest, and perhaps import status from records you already have. The official record stays in the tachograph and in the records the rules require.
- How many licensed international hauliers are there in Poland?
- Secondary compilations by Webfleet (7 Apr 2026) and Trans.info (6 Feb 2026), citing BTM/GITD: 43,924 at end-2025, −2.5% year on year. That is a licence register, not a census of trucks in motion. TLP: in 2024 the number of firms with a Community licence fell for the first time.
- Do we need a custom TMS with five trucks?
- Rarely. On a small fleet and standard freight, a spreadsheet or SaaS wins. Custom makes sense when the model sticks out (tariffs, portal, offline, SENT, unit loads) or when chat and the sheet already lie. We say that plainly on the call.
- How do we start — what should we send via contact?
- A fleet brief: number of combinations, profile (domestic/international, cargo), whether you use a board, which finance system, whether you have a TMS, what hurts, whether SENT and KSeF apply. An offer within 24 h. We do not need an 80-page RFP to say whether to build or stay on SaaS.
Describe your project