Industry guide · Field Service Management

Courier Company Software: Dispatch, PODs, and Billing That Actually Hold Up

The short answer

Build only if same-day dispatch, proof of delivery, and driver settlement are the thing you sell. A focused first release runs $60k to $130k and ships in 12 to 16 weeks; a full dispatch, POD, billing, and driver-settlement platform runs $150k to $400k phased over 6 to 12 months. Those are Digital Heroes delivery bands across 2,000+ projects, not a market survey. If you run under roughly 150 jobs a day on standard point-to-point work, stay on an off-the-shelf courier system and spend the money on drivers. If you are re-keying jobs from email into dispatch, paying a billing clerk to reconcile PODs against invoices, and losing accounts because a customer cannot see where their 2pm STAT is, the build pays for itself inside the first year.

Why dispatch and POD software makes or breaks a courier company

A courier company is a promise business. Somebody calls at 10:47am and says the biopsy sample has to be at the lab by 1pm, and everything you own gets bet on the next two hours. The software either holds that promise together or it quietly leaks money out of every corner of the operation.

Here is what the leak actually looks like. The dispatcher runs a whiteboard next to two monitors, one with the courier system (OnFleet, Circuit for Teams, Onro, Dispatch Science, or a fifteen-year-old install of CXT or Key Software's Xcelerator), the other with Outlook. Roughly a third of the day's jobs arrive as email: a hospital scheduler sends a run sheet, a law firm sends an address in the signature block, a pharmacy sends a PDF manifest. Someone re-types those into the system. At 4pm a driver texts a photo of a signed slip because the app's POD screen crashed and he did not want to lose the stop. That photo lives on a phone. Two weeks later the customer disputes the delivery, the billing clerk spends forty minutes finding it, and you credit the job anyway because the timestamp is not attached to anything.

Then there is settlement. If you run independent contractors, Friday is a spreadsheet day. Someone exports the completed stops, applies per-piece rates, waiting-time rules, fuel surcharge, tolls, and the negotiated deductions for insurance and scanner rental, then pastes it into a pay file. At 40 drivers this is a person's Thursday and Friday. At 120 drivers it is two people and a permanent error rate that always favors whoever complains loudest. The dispatch tool does not price. The accounting tool does not know what a stop is. So a human sits in the gap, forever.

Problem: your dispatch board does not know what a STAT costs you

The scenario: it is 11:15am, you have 22 open jobs, 14 drivers on the road, and a $95 STAT medical run just landed downtown. The dispatcher assigns it to the nearest driver. The nearest driver is carrying a routed pharmacy run with 31 stops on a contract that pays $4.10 a stop and has an SLA at 6pm. He takes the STAT, the pharmacy run slips, you miss the SLA on a $12,000-a-month account to protect a $95 job.

Off-the-shelf dispatch is optimized for distance and time. OnFleet and Circuit will happily tell you who is closest. They do not know your contract terms, they do not know which customer is in a renewal window, they do not know that the pharmacy account has a 98 percent on-time clause with a credit penalty. That data lives in your head and in a contract PDF in Dropbox.

What a custom build does: the assignment engine scores every candidate driver against margin at risk, not just ETA. The job record carries the rate, the customer's SLA, the penalty clause, and the driver's current committed workload. When the dispatcher hovers a job, they see "assign to Marcus: STAT delivered 12:40, pharmacy route slips to 6:25pm, $840 SLA credit exposure" versus "assign to Dana: STAT delivered 12:55, no route impact." That is a five-second decision instead of a gut call. Building this requires a data model that off-the-shelf tools do not have: contracts as first-class objects with rate tables, service levels, penalty terms, and exception rules, joined to jobs at assignment time.

Problem: a third of your jobs arrive as unstructured email and PDFs

Every courier company over about 60 jobs a day has an inbox problem. Hospitals send Excel run sheets. Freight forwarders send a PDF with a house airway bill. A property manager sends a text that says "need the keys from 4th and Pine to our Bellevue office before 5." One person, usually your best CSR, spends two to three hours a day turning prose into structured jobs. At 90 jobs a day with 30 arriving by email, that is roughly 15 hours a week, call it $22k a year in fully loaded cost, and every re-key is a chance to fat-finger a suite number.

The incumbent tools give you a customer web portal and consider the problem solved. It is not solved, because your customers will not use it. The hospital scheduler has an EHR workflow and a fax habit. The law firm's paralegal has been emailing your dispatch address since 2011. You can either fight your customers or absorb the format.

This is where AI earns its keep, and it is the single highest-ROI piece we build in this category. A document extraction service watches the dispatch inbox, classifies each message (new job, status question, address correction, invoice dispute), and for job requests pulls out pickup, delivery, contact, ready time, deadline, piece count, weight, and reference numbers into a draft job. It matches the sender to a customer account and applies that account's default service level. The CSR sees a queue of pre-filled jobs and confirms or corrects. In the builds we have shipped, the model handles the clean 70 to 80 percent and escalates the rest with the original email attached. The critical design detail: never auto-dispatch an extracted job without a human confirm on day one. Run it in shadow mode for three weeks, measure field-level accuracy per customer, then auto-release only the customer and document types that clear your threshold. Couriers who skip the shadow period ship a system that dispatches drivers to the wrong suite and never regains trust.

The second AI piece: after-hours booking. A voice and SMS agent that answers the 9pm call, asks the four questions that matter, quotes from your real rate table, and creates the job with the on-call dispatcher notified only if it is a STAT. That is a real account-win feature, because your competitor's after-hours line goes to voicemail.

Problem: proof of delivery is evidence, and yours is a photo on a phone

A POD is not a checkbox. When a $40,000 shipment of surgical instruments goes missing, or a legal filing deadline is contested, the POD is the only thing between you and a claim. What most courier operations actually have: a signature scribble in the driver app, sometimes a photo, sometimes a note, with a GPS point that may or may not have been captured because the driver was in a hospital basement with no signal.

Off-the-shelf driver apps store PODs, but they store them as attachments to a stop, not as an evidence chain. You cannot easily prove the photo was taken at that location at that time by that device and was never modified. You cannot enforce that a controlled-substance delivery required a printed recipient name plus a license scan plus a temperature reading, while a standard envelope needed a signature only. And you almost certainly cannot push the POD back into the customer's system automatically, which is what the enterprise accounts are actually asking for.

What the build does: POD becomes a configurable, per-service-level capture spec. Medical courier work captures signature, printed name, recipient role, cooler temperature, and a photo of the sealed container. Legal work captures signature plus a photo of the stamped copy. Pharmacy captures a barcode scan per tote so the count is provable. Every artifact is written offline-first to the device, hashed, then synced with the device GPS fix, the timestamp, the driver ID, and the app version, into an append-only record. Nothing is editable after the fact; corrections create a new linked record with a reason code. When the dispute arrives, the billing clerk pulls one page and it is over in ninety seconds. This is also what lets you sign HIPAA business associate agreements with confidence: the audit trail exists because the data model made it exist, not because someone remembered to take a photo.

The offline-first requirement is the part that most under-budgeted builds get wrong. Hospital loading docks, underground parking, rural routes: your app will lose signal every single day. If POD capture depends on a live API call, drivers will work around it, and the workaround is a text message photo, which is where you started.

Problem: billing and driver settlement are two spreadsheets pretending to be a system

Courier pricing is genuinely hard, and this is the reason generic delivery software cannot serve a real courier company. You have zone-based rates for one account, per-mile for another, per-piece with a minimum for the pharmacy run, a flat monthly for the dedicated route, waiting time after 15 minutes billed in 6-minute increments, after-hours multipliers, a fuel surcharge indexed to a published rate that changes weekly, an oversize adder, and a redelivery fee that you waive for the accounts you like. Then invoicing is per-account with wildly different formats: one wants a weekly consolidated invoice with a reference number column matching their PO, another wants per-job invoices into their AP portal, a third wants an EDI 210.

Circuit and OnFleet do not do this. They were built for delivery execution, not for courier revenue. So you export CSVs into an accounting system, usually QuickBooks, and a person applies the rules. The same person then applies the mirror-image rules to compute driver pay, because a job that bills at $38.50 pays the contractor $26.95 minus the scanner fee minus insurance minus a fuel share. The mismatch between the two spreadsheets is where your margin goes to die, and you cannot see it because nobody has ever produced per-job margin at your company.

The build: one rating engine, two consumers. Every job is priced at completion by an engine that reads the contract's rate card, applies accessorials from actual captured data (the POD's arrival and departure timestamps produce waiting time, the barcode scans produce piece count, the GPS trace produces mileage), and writes a billable line and a payable line in the same transaction. Invoices generate per account on that account's schedule and format and post to QuickBooks or NetSuite through the API, not through a CSV. Driver settlement statements generate on the same data with the deductions applied, and every driver sees theirs in the app on Monday, itemized, which cuts the "you shorted me" phone calls to near zero. Now you have per-job margin, which means you can finally answer the question nobody at a courier company can answer today: which of my accounts is actually profitable? In several of our builds, that report is what paid for the project. The customer who "everyone loves" turns out to be barely above water because of unbilled waiting time on hospital docks.

AI helps here in one specific place: reading the customer's remittance advice and the accounts that short-pay. Cash application at a courier company with 400 active accounts is a slog, and an extraction model matching remittance line items to invoices, flagging the deductions for review, saves the AR person most of a week per month.

Problem: your best account wants an API and you do not have one

The moment you go after a hospital system, a national 3PL, or a pharmacy chain, procurement asks a question that ends deals: can you receive our orders electronically and push status back into our system? The right answer is yes, with an API, or with an EDI 204 in and 214 status out, or with a flat-file drop on their SFTP twice an hour, whichever they run.

Off-the-shelf courier platforms have an API, but it is their API, on their object model, with their rate limits, and you cannot map their status codes to the customer's required milestone codes. You also cannot promise the customer a webhook when their specific reference number changes status, because their reference number is stuffed in a notes field.

The build gives you an integration layer you own: a job intake API with per-customer field mapping, outbound status events on the customer's vocabulary (their milestone codes, their reference number as a first-class field), and a tracking page you can white-label for their end recipients. When a large account's IT team asks for a sandbox and a spec, you send a link the same day. That responsiveness is worth more in enterprise courier sales than any feature.

What this costs and how long it takes

These bands are Digital Heroes delivery experience across 2,000+ projects, and they reflect what we actually charge and ship, not an industry estimate.

A focused first release runs $60k to $130k over 12 to 16 weeks. For a courier, the right first release is almost always: dispatch board with contract-aware assignment, an offline-first driver app with configurable POD capture, and the rating engine producing billable and payable lines. That is the spine. Everything else attaches to it later. We deliberately do not build the customer portal in release one, because your dispatchers and drivers have to trust the system before your customers touch it.

A full platform runs $150k to $400k phased over 6 to 12 months. That adds per-account invoicing with accounting integration, driver settlement, the customer API and EDI layer, the AI email intake, after-hours booking, white-label tracking, and the margin reporting.

What drives price up in courier specifically. First, rate card complexity: if you have twelve pricing models across your book, the rating engine is a real project on its own, and every legacy account with a hand-negotiated quirk adds days. Second, the number of live integrations: each customer EDI connection is 2 to 4 weeks of build plus their testing calendar, which you do not control. Third, offline reliability on the driver app: making sync genuinely bulletproof across bad networks and cheap Android hardware is expensive and is the thing you must not cheap out on. Fourth, compliance scope: HIPAA for medical courier work, chain of custody for controlled substances or legal, and the audit logging that goes with them. Fifth, migration from a legacy system like CXT or Key Software, where the historical POD archive and open AR have to come across cleanly.

What drives price down: fewer pricing models, one region, a driver base on standardized devices, and an owner who will make decisions in one meeting instead of three.

Build versus buy: the honest line

Buy. If you run under roughly 150 jobs a day, your work is mostly standard point-to-point, you have fewer than four distinct pricing models, and no customer has ever asked you for an API, then OnFleet, Circuit for Teams, Onro, or Dispatch Science will run your business for a few hundred to a couple thousand dollars a month. Building custom software at that scale is a hobby that competes with hiring drivers. Take the off-the-shelf tool, tighten your dispatch discipline, and grow.

Build. The signals are specific, and when three of them are true you are already paying for a custom system, just in salaries and credits instead of in a project:

One, you employ a person whose actual job is moving data between two systems. Two, you cannot produce per-job margin by account, so you are pricing renewals blind. Three, you have lost or declined an enterprise account in the last year because you could not meet an integration or POD requirement. Four, your rate card has structures your software cannot express, so someone applies them manually every billing cycle. Five, your differentiator in the market is an operational capability, a two-hour STAT guarantee, temperature-controlled chain of custody, a dedicated route model, and your software actively cannot represent it.

My position: courier companies build too late, not too early. The pattern we see is an operator running 300 jobs a day on a $600-a-month tool plus four people and a stack of spreadsheets, convinced the software is fine because the invoices go out. The software is not fine. It is costing $250k a year in labor and leaked margin to avoid a $150k build. The trigger is not job volume alone, it is the moment your operational complexity exceeds what a general tool can express, and you can usually name the exact day that happened.

How to choose a developer for courier dispatch and POD software

Four things to check, and they will separate the real candidates fast.

Make them design the data model on the call. Ask how they would model a job that has a pickup window, a hard deadline, three pieces with individual barcodes, a waiting-time accessorial, a POD requirement that varies by service level, a billable rate from one contract and a payable rate from a driver agreement, and a legal-hold requirement on the POD. If they start talking about "orders" and "deliveries" as flat records, they have built food delivery, not courier. Courier's hard object is the contract, not the stop.

Ask what they have shipped that works offline. Request a specific story: what happens when a driver captures four PODs in a hospital basement, force-quits the app, and reconnects two hours later after another driver has already been reassigned one of those stops. The answer should involve a local write-ahead queue, idempotent sync, and a defined conflict rule. Vague reassurance here means you will be debugging lost PODs in month four.

Check the integration and compliance track record concretely. Have they moved an EDI 204 or 214, posted invoices into QuickBooks or NetSuite through the API rather than a CSV import, and built under a HIPAA business associate agreement? Ask who signs the BAA and how they handle PHI in logs and in error reporting, because that is where teams without healthcare experience leak it.

Settle ownership before the SOW. You should own the repository, the cloud accounts, and the CI pipeline from day one, with your name on the AWS or GCP bill and the code pushed to your organization from the first commit. If a developer wants to host it in their account and hand you a login, that is not a vendor, that is a landlord. Get a written exit plan: what you receive, in what state, within how many days, if you part ways in month five.

Research & sources

The evidence behind this guide

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

  1. IBM frames first-time fix rate as a core field service KPI, noting the industry average sits around 80% (roughly one in five jobs needs a return visit). Correction: IBM cites best-in-class providers at 89-98%, not '85%+'. Source: IBM (2024) →
  2. Grand View Research valued the global field service management market at USD 4.43 billion in 2022 and projects it to reach USD 11.78 billion by 2030, a 13.3% CAGR, driven by growing field operations in telecom, utilities, construction and energy. Source: Grand View Research (2023) →
  3. Flexera's 2025 State of the Cloud Report (survey of 750+ technical and executive leaders) found that 84% of respondents believe managing cloud spend is the top cloud challenge for organizations today, with cloud budgets already exceeding limits by 17%. Source: Flexera (2025) →
  4. McKinsey found that currently demonstrated technologies can fully automate about 42% of finance activities and mostly automate a further 19%, indicating roughly 60% of finance work is technically automatable. Source: McKinsey & Company (2018) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

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

FAQ

Frequently asked questions

How much does custom courier dispatch software cost for a company running 300 jobs a day?
Expect $60k to $130k for a focused first release covering dispatch, an offline driver app with proof of delivery capture, and a rating engine, shipping in 12 to 16 weeks. A full platform adding per-account invoicing, driver settlement, customer APIs, and EDI runs $150k to $400k phased over 6 to 12 months. Those are Digital Heroes delivery bands across 2,000+ projects. At 300 jobs a day you are almost certainly already spending more than that annually on manual re-keying, billing reconciliation, and leaked margin.
Should we build custom software or just use OnFleet or Circuit for Teams?
Use OnFleet or Circuit if you run under roughly 150 jobs a day on standard point-to-point work with fewer than four pricing models and no customer asking for an API. They are execution tools and they do that well for a few hundred to a couple thousand dollars a month. They cannot price a courier book with zone rates, per-piece minimums, waiting time, and fuel surcharge, and they cannot compute driver settlement. Once someone applies those rules by hand every week, the off-the-shelf tool has stopped being cheaper.
Can custom software actually handle our rate cards with waiting time, fuel surcharge, and per-account minimums?
Yes, and that rating engine is usually the highest-value piece of the whole build. The engine reads each contract's rate card and applies accessorials from data your drivers already capture: arrival and departure timestamps produce waiting time, barcode scans produce piece count, the GPS trace produces mileage. It writes a billable line and a payable driver line in the same transaction, which is how you finally get per-job margin by account. Budget more time if you have more than eight or ten distinct pricing structures, since each hand-negotiated legacy quirk adds build days.
How do we migrate off CXT or Key Software's Xcelerator without losing our POD history and open AR?
Migration is a planned phase, not a switch flip, and it typically adds 3 to 6 weeks to the timeline. The pattern that works: extract customers, contracts, rate cards, open jobs, open AR, and the historical POD archive into a staging database, reconcile totals against your legacy reports line by line, then run both systems in parallel for two to four weeks with new jobs in the new system and legacy billing finishing its cycle. Historical PODs come across as read-only archived records so disputes on old jobs are still answerable. Budget real time for rate card cleanup, because legacy systems always hide accounts nobody remembers agreeing to.
How long before our dispatchers and drivers are actually using it?
Dispatchers and drivers touch the first release, which ships in 12 to 16 weeks, and that is deliberate. The spine is the dispatch board, the offline driver app, and the rating engine, because if your operations team does not trust the system nothing else matters. Customer-facing pieces like the portal, tracking page, and APIs come in the second phase. Plan two to three weeks of parallel running with a subset of drivers before you cut the whole fleet over.
Do we own the code if we hire an agency to build our courier platform?
You should own the repository, the cloud accounts, and the CI pipeline from day one, with the AWS or GCP bill in your name and code pushed to your organization from the first commit. That is how Digital Heroes structures it, and any developer who wants to host in their own account and hand you a login is a landlord, not a vendor. Get a written exit plan in the SOW: what you receive, in what state, within how many days, if the relationship ends mid-build. This matters more in courier than most categories because your POD archive is legal evidence you may need for years.
What does HIPAA compliance require for medical courier delivery software?
You need a signed business associate agreement with your developer and your hosting provider, encryption of patient-linked data at rest and in transit, role-based access so a driver only sees the stops assigned to them, and an audit log of every read and write on records containing protected health information. The place teams leak PHI is error reporting and application logs, so ask specifically how patient identifiers are scrubbed before anything reaches a logging service. The chain-of-custody proof of delivery record, with hashed artifacts, device GPS, timestamp, and driver ID, is what lets you defend a specimen dispute two years later.
Can AI reliably create jobs from the run sheets and emails our customers send us?
Yes, on the clean 70 to 80 percent, and that is where the biggest labor savings in this category sit. An extraction model reads the dispatch inbox, classifies each message, pulls pickup, delivery, deadline, piece count, and reference numbers into a draft job, and matches the sender to a customer account. The non-negotiable rule: run it in shadow mode for about three weeks measuring field-level accuracy per customer before you let anything auto-release, and never auto-dispatch an extracted job on day one. Couriers who skip the shadow period send a driver to the wrong suite in week two and the CSRs never trust the queue again.
Will a custom driver app work when drivers lose signal in hospital basements and parking garages?
It has to, and this is the single requirement you cannot compromise on. The app writes proof of delivery artifacts to a local queue on the device first, then syncs with idempotent operations when signal returns, with a defined conflict rule for the case where dispatch reassigned the stop in the meantime. If proof of delivery capture depends on a live API call, drivers will work around it by texting photos, which is exactly the problem you paid to solve. Ask any candidate developer to walk through the reconnect-after-two-hours scenario in detail before you sign anything.
How much does it cost to build custom field service management software for a small business?
For a company running 5 to 25 technicians, a focused first version with scheduling, dispatch, a technician mobile app, and invoicing typically runs $40,000 to $80,000 in Digital Heroes delivery experience. A full platform with offline mode, a customer portal, GPS tracking, and accounting sync lands between $90,000 and $180,000. The two biggest cost drivers are offline sync depth and integration count, so pin both down in scoping and the quote holds.
Should I hire a freelancer or an agency to build my field service software?
An agency in almost every case, because a field service build spans a mobile app, a dispatch web console, a backend, offline sync, and accounting integrations, which is four or five specialties one person rarely covers. A freelancer is the right choice for a single integration or a well-scoped add-on under $15,000. The solo-built field service systems Digital Heroes inherits fail most often at handover, when the freelancer has moved on and nobody can safely modify the sync engine.
Who owns the code when an agency builds my software?
You should, completely, through a written intellectual property assignment that transfers everything on final payment; without that clause, copyright stays with whoever wrote the code by default. Insist that the repository lives in your own GitHub organization from day one and that hosting, domains, and third-party accounts are registered to you. Also check for licenses to the agency's proprietary frameworks buried in the contract, because those can make switching vendors practically impossible even when you own your own code.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
What are the biggest mistakes companies make when building custom field service software?
Four mistakes cause most failures: scoping only the happy path so offline work and job reassignment surface later as change orders, leaving QuickBooks sync until the end instead of designing for it, skipping technician input until launch, and having no post-launch support plan. Across 2,000+ Digital Heroes projects, failed field service builds almost always failed on process, not programming. Every one of these is prevented in the scoping phase, which is why discovery matters more than the framework.
How much would it cost to build something like ServiceTitan just for my company?
A true ServiceTitan clone would cost millions and you do not need one, because companies that bring this request to Digital Heroes typically use 20 to 30 percent of its features. Building that slice, shaped to your exact dispatch board and technician day, runs $80,000 to $200,000 depending on offline requirements and integrations. The field service builds that succeed copy a workflow, not a product.
What tech stack should a custom field service platform be built on?
The dependable 2026 stack is React Native or Flutter for the technician app, React for the dispatch console, Node.js or Python on the backend, and PostgreSQL with an offline sync layer on the device. Boring, widely used technology wins here because any competent team can maintain it five years from now. Be wary of an agency proposing a stack only they can staff; that is a lock-in strategy, not an engineering decision.
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?