Problems & solutions · ERP

Freight Forwarding Software Problems: The 5 That Quietly Eat File Margin, and How to Avoid Them

Freight Forwarder Management Software architecture and database illustration showing common problems and fixes.
The short answer

The most expensive failure in a forwarding build is modelling the shipment as the unit of profit instead of the file. Once costs and revenues hang off shipments, a consolidation cannot be apportioned in the system, accruals have nowhere natural to live, and the answer to what a file earned goes straight back into a spreadsheet. You will have spent $90,000 to $200,000 and still find out in July that a March file lost half its margin to a demurrage charge and a chassis split nobody accrued, which is exactly the problem the project was funded to solve.

Why does the build get scoped around shipments instead of files?

Because a shipment is what everyone can see. Operations talk about containers, customers ask where their cargo is, and a developer given a week with your team will come away with a tracking system in their head. So the specification describes shipments with statuses, documents and milestones, and the finance requirements arrive later as reports.

A file is not a shipment. It holds a quotation, one or more house bills, the master bill they consolidated into, purchase costs from carriers, hauliers, warehouses, brokers and agents, sales charges to one or more customers, accruals for what has not yet arrived, and a share arrangement with the origin or destination agent. Every commercial question you have, customer profitability, lane profitability, trade profitability, is a roll up of that object. If it does not exist in the schema, no amount of reporting will produce it later.

The specific place this shows up is consolidation. Apportioning master bill ocean freight across nine house bills by chargeable weight is arithmetic and most systems manage it. Apportioning a destination terminal handling charge when one of those house bills rolled to the next vessel is a business rule that you have to decide and encode. If the system cannot express the rule, an operator resolves it in Excel and file profit becomes an opinion again.

The fix is to insist on the model before pricing. Ask for the file, the house and master structure, and the apportionment rules on a whiteboard in the first working session, and treat any proposal that cannot draw them as a proposal for a tracking system with an invoice screen bolted on.

What goes wrong when you migrate rate cards and open files?

Rate data is the schedule risk on almost every forwarding project, and it is almost never in the plan. Contract rates, tariffs and surcharges live in spreadsheets that different people built over different years, with inconsistent structures: one file keyed by port pair, another by trade lane, a third with surcharges in a tab whose validity dates are in a comment. Normalising that into a repository a quoting engine can read is real work, and it has to happen before quoting can be automated at all.

Budget it as its own workstream with a named owner from your pricing team, not as data migration inside a developer estimate. The people who can resolve which of two conflicting bunker surcharge tabs is current are your people, and their availability is the constraint.

Open files are the second trap. A cutover date arrives with hundreds of files in flight, each carrying costs already incurred, accruals for costs expected, revenue partly invoiced, and documents in a folder structure the new system does not share. Moving them mid-life produces files whose history is split across two systems, and the first quarter's profitability reporting is then unusable.

The pattern that works is to open new files in the new system from a chosen date, close out existing files in the old one, and run both for a period rather than migrating live files. Import closed file history for reporting and lane analysis, where a small loss of fidelity is acceptable. Accept a reporting gap of one quarter and say so out loud at the start, because discovering it in month five looks like a project failure when it was always the plan.

Why do carrier, customs and agent integrations break after launch?

They break because the message quality assumed in testing is not the message quality in production. Carrier status feeds arrive late, arrive twice, skip a milestone, or report an event for a container that your file no longer contains after a roll. Agent statements arrive as PDFs in layouts that change without notice. Customs interfaces reject on validation rules that were not exercised by your test set.

The consequence is subtle rather than dramatic. Nothing crashes. The milestone view slowly stops matching reality, operations quietly return to emailing the carrier, and within two quarters the customer portal is showing statuses your own staff do not trust. A portal your operations team contradicts on the phone is worse than no portal.

Three design decisions prevent most of it. Make every inbound message idempotent and replayable, so a duplicate is harmless and a bad day can be reprocessed. Record a processing outcome per record rather than per file, so a partial failure is a queue of eleven items with an owner rather than a rejected batch nobody wants to open. And keep an exception queue that a named person works each morning, because integrations in this trade are not fire and forget and pretending otherwise is how they rot.

On document extraction for purchase invoices and agent statements, expect a confidence threshold and a human review path from day one. Extraction genuinely removes a full time job of matching PDFs to files. It does not remove the reviewer, and a build that assumes it does will post mismatched costs to files and corrupt the very margin numbers you were trying to fix.

What happens when accruals and unbilled charges are not covered?

This is the gap that makes the whole build pointless, and it is routinely left to phase two because it sounds like accounting rather than operations. It is neither. It is the operational discipline that decides whether your reported margin is real.

Every expected cost should exist on the file the moment the booking is made, at an estimated value taken from the rate card or from history on that lane and that supplier. Without that, an invoice arriving in July has nothing to land against, and the file that closed in April was always going to be optimistic. With it, the variance is visible the day the invoice arrives.

Two queues make accruals useful rather than decorative. Accruals older than a threshold with no invoice received are an operations task with an owner, because a supplier who has not billed you in ninety days will bill you eventually. Invoices arriving against files with no matching accrual are a different queue, because they usually indicate a cost nobody expected and often a charge that should have been passed on.

Unbilled revenue is the quieter half. A remote area delivery surcharge, a pallet exchange, three days of origin storage caused by the shipper, waiting time on a delivery. None of these appear as a loss anywhere, because a system that only knows what was invoiced cannot show you what was not. The build requirement is that the customer invoice is assembled from every recorded charge against the quotation's commercial terms, with an exception queue for charges nobody has decided about, rather than from an operator's memory of what belongs on this file.

Should you build custom or configure what you already own?

If you are a general forwarder running conventional ocean and air below roughly forty staff, implement CargoWise or Magaya properly and stop. We would tell you that in a first call. CargoWise is the most complete product in the category and it earns its position. Magaya suits small and mid sized forwarders well. Descartes brings genuine strength in customs and network connectivity. Logitude World and Softlink are accessible and priced accordingly. A build to reach the same place is money you should spend on people who can sell.

Be honest about which complaint you have. If your complaint is that CargoWise makes you work its way, that is real, and it is a consequence of adopting an operating model as well as a system. Changes go through its configuration framework, and forwarders with unusual processes either conform or maintain satellite spreadsheets. Conforming is often the right answer and it is much cheaper than a build.

The build case is specialisation. Project cargo where every file is an engineering exercise. Perishables where the temperature record is part of the product. Pharmaceutical logistics with validation requirements. Cross border e-commerce where volume is enormous and value per shipment is tiny, which inverts every operational assumption the mass market suites make. In those cases the differentiator lives outside the standard system, and the differentiator is the business.

How do hidden costs get into the quote?

The rate repository, described above, is the most commonly omitted item and one of the largest. If it is not a named line with a named owner, it is hiding.

Direct customs filing is the next. Each national system you file into is its own project with its own certification, its own message set and its own timetable. A proposal that treats customs as one line item has scoped one country and will discover the second in month six.

Air alongside ocean is a separate module rather than a variation. Chargeable weight, air waybill handling and settlement practice differ enough that building both at once roughly doubles the operational surface. Multi entity and multi currency accounting is unavoidable above a certain size and changes the ledger design rather than adding to it. Warehouse operations, if you run your own facilities, is a distinct system that people assume is included.

Then the per-partner costs. Every carrier and agent integration arrives with its own message quality and its own onboarding, so ten partners is not one integration repeated. Budget the parallel running period explicitly, because two systems for a quarter is a real operational cost in people, not a technical footnote. And plan 15 to 20 percent of build cost per year afterwards for hosting, security patching, carrier message changes and small feature work.

What separates a build that works from one that fails here?

Ask the developer to model a consolidation on a whiteboard: nine house bills under one master, one of which rolls to the next sailing, with a destination charge that has to be apportioned. If the apportionment rules do not come out without prompting, the margin questions will still be unanswerable when the system is live.

Ask how accruals are created and aged, and specifically what queue an operations person opens on a Tuesday morning. A team that treats accruals as an accounting concern has not understood where the money goes in this trade.

Ask what happens when a purchase invoice arrives for a file that closed two months ago. The answer reveals whether they have thought about the reality of the business or only about the diagram, and there is a correct answer: the file reopens for costing, the variance is recorded against the accrual, and the period impact is visible without rewriting closed accounts.

Ask which carrier, customs and agent integrations they have delivered in production, by name. Then sequence the project so it proves itself: quotation, files with consolidation, accruals and invoicing first, in 14 to 20 weeks, with agent settlement, customs and the portal deliberately behind it. Finally, settle ownership in writing before kickoff. You should hold the repository, the infrastructure accounts and the export path, because your rate data and your file history are the most valuable assets the business has after its people.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. SaaS spend averaged $4,830 per employee (up 21.9% year over year), with large enterprises (10,000+ employees) spending roughly $284M annually and running about 660 apps, while organizations wasted an average of $21M annually on unused licenses. Source: Zylo (2025) →
  2. McKinsey estimates that digitizing the supply chain (Supply Chain 4.0) can cut lost sales by up to 75%, reduce inventories by up to 75%, and lower supply chain operational costs by up to 30%, with up to 30% lower transport and warehousing costs. Source: McKinsey & Company (2016) →
  3. Only 22% of firms are 'future ready' having significantly transformed digitally; these companies show average revenue growth 17.3 percentage points and net margins 14.0 percentage points above their industry average. Source: MIT Center for Information Systems Research (MIT Sloan) (2022) →
  4. SMS reminders that stated the specific cost of the appointment to the health system reduced missed appointments in Trial One, with the DNA (did-not-attend) rate falling from 11.1% (control) to 8.4% (specific-costs message) - an odds ratio of 0.74 (95% CI 0.61-0.89), i.e. roughly a 24-26% relative reduction - at no additional cost. (Trial Two replicated this at an 8.2% DNA rate.). Source: PLOS ONE (Hallsworth et al.) (2015) →
Aryan G. · Shopify Engineer · Delhi

Aryan builds and maintains Shopify stores at Digital Heroes, handling theme changes, product and collection setup, app configuration and the steady stream of small fixes a live store generates. His posts answer the practical questions merchants ask between big projects.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

Why did our file profit reports stay unreliable after we launched a new system?
Usually because the system models shipments rather than files, so consolidation costs cannot be apportioned inside it and accruals have nowhere to live. Operators then resolve both in spreadsheets exactly as before, and the reports inherit the spreadsheet's assumptions. Check whether your schema has a file object holding the quotation, house and master bills, purchase costs, sales charges and accruals together. If it does not, reporting changes will not fix it.
How long does normalising our rate cards actually take?
Longer than anyone budgets, because the work is decision making rather than data entry. Contract rates, tariffs and surcharges typically sit in spreadsheets built by different people in different years, with validity dates in comments and conflicting versions of the same surcharge. Give it a named owner from your pricing team and treat it as a workstream running alongside the build, because automated quoting cannot start until it is done.
Should we migrate open files into the new system at cutover?
No. Files in flight carry incurred costs, accruals, partial invoicing and documents, and splitting that history across two systems makes the first quarter's profitability reporting unusable. Open new files in the new system from a chosen date, close out existing files in the old one, and import closed file history for lane and customer reporting where slight fidelity loss is acceptable. Announce the reporting gap at the start so it is not mistaken for a failure later.
Our carrier milestone feed drifted out of sync with reality. Why?
Because production message quality is nothing like test message quality. Feeds arrive late, arrive twice, skip milestones and report events for containers that left your file after a roll. Nothing crashes, so the drift is invisible until operations quietly go back to emailing carriers. Idempotent replayable message handling, per-record processing outcomes and a morning exception queue with a named owner are what keep the feed trustworthy.
Is document extraction on agent statements reliable enough to trust?
It is reliable enough to remove a full time matching job, and not reliable enough to remove the reviewer. Statements and purchase invoices arrive as PDFs in hundreds of layouts that change without notice, so build a confidence threshold and a human review path from the first release. A system that posts extracted costs straight to files without review will corrupt the margin numbers the project exists to produce.
When is CargoWise the right answer rather than a build?
For a general forwarder running conventional ocean and air below roughly forty staff, almost always. It is the most complete product in the category and implementing it properly costs far less than reaching the same place with custom software. The trade is that it is an operating model as well as a system, so unusual processes either conform or live in satellite spreadsheets. Build only when specialisation, meaning project cargo, perishables, pharmaceutical logistics or cross border e-commerce, forces the differentiator outside the suite.
What is the most commonly missed cost in a forwarding software quote?
Rate repository normalisation, followed by direct customs filing counted per country. Each national customs system is its own project with its own certification and timetable, so a proposal with customs as a single line has scoped one country. Air alongside ocean is a separate module rather than a variation, parallel running is a real operational cost in people, and ongoing maintenance runs 15 to 20 percent of build cost per year.
How do we stop unbilled charges leaking once the system is live?
Make billing a system step rather than a memory step. The customer invoice should be assembled from every charge recorded against the file, checked against the quotation's commercial terms, with an exception queue for charges nobody has decided about yet. Remote area delivery surcharges, pallet exchanges, shipper-caused storage and waiting time never appear as losses because unbilled revenue is invisible in a system that only knows what was invoiced.
How long does custom ERP development take?
Plan on 3 to 4 months for the first working module and 6 to 12 months for a full multi-module rollout. In Digital Heroes delivery experience the schedule risk is data migration and integration testing, not feature coding, so we stage go-lives module by module instead of one big-bang launch.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
How small can the first version of my software be and still be worth building?
One workflow, end to end, for one type of user: the single process that currently burns the most hours or loses the most money. In Digital Heroes delivery experience, first versions scoped to 6 to 10 weeks of build time ship, get used, and generate the feedback that makes version two obviously right, while 9-month first versions routinely launch with features nobody touches. Everything you cut from v1 gets cheaper to build later, because real usage reorders the roadmap for you.
Will a custom ERP scale as we grow from 50 to 500 employees?
Yes, if it is designed for that from the start, which mostly means clean database design, permissions that handle new departments, and modules that stay separable. Adding users to software you own costs nothing in licenses, the opposite of the per-seat scaling penalty on NetSuite or Dynamics. What does need budget as you grow is new modules and integrations, so keep a small standing development arrangement rather than restarting a vendor search every two years.
Should I pick Microsoft Dynamics 365 Business Central or build a custom ERP?
Pick Business Central if you already live in the Microsoft stack, your processes are close to standard, and around $80 per user per month for Business Central Essentials stays affordable at your headcount. Build custom when your revenue-driving workflow, such as custom manufacturing steps or unusual pricing logic, would need heavy extension work anyway. In our experience, once Dynamics customization quotes pass about $100,000 the custom option deserves a serious side-by-side.
How do I vet an agency for an ERP project?
Ask to speak with two clients who have been running an ERP the agency built for at least two years, because ERP quality shows up in year two, not at launch. Then ask for their data migration plan, their module rollout sequence, and the named senior engineers who will be on your project. An agency that leads with screen designs instead of process mapping is a red flag for ERP work.
How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
What does it cost to maintain a custom ERP each year?
Budget 15 to 20 percent of the original build cost per year, so a $150,000 ERP needs roughly $22,000 to $30,000 annually for hosting, security patches, integration upkeep, and small improvements. Across Digital Heroes maintenance contracts, third-party APIs changing is the biggest recurring work item. That total still usually sits well under the license bill for a comparable NetSuite or Dynamics seat count.
What should I prepare before contacting an ERP development agency?
Bring a list of your current tools and spreadsheets, a rough map of how an order or job moves through the company today, your user count by role, and the three problems costing you the most hours. You do not need a formal specification; a good agency writes that with you during discovery. Companies that arrive with those four things typically cut two to three weeks off scoping in our experience.
Who can build a custom ERP software system?

Digital Heroes builds custom ERP software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other ERP software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?