Industry guide · POS

Convenience Store Software for Multi-Site Operators: Fuel, Tobacco, Lottery and the Invoice Drawer

The short answer

Build when the leak is bigger than the license. For a multi-site chain drowning in fuel variance, scan data submissions, lottery pack settlement and a drawer full of DSD paper, a focused first release lands at $60k to $130k in 12 to 16 weeks, and a full platform that replaces the back office runs $150k to $400k phased over 6 to 12 months. Below roughly 8 stores with one fuel brand and no foodservice, keep PDI or Petrosoft and spend the money on labor instead.

Why back office software makes or breaks a convenience store operator

A 22-store chain runs on five systems that do not talk to each other. Gilbarco Passport or Verifone Commander at the register. A Veeder-Root TLS-450 in the back room measuring inches of product in the tanks. A Scientific Games or IGT lottery terminal sitting on its own line, printing its own paper. PDI Enterprise or Petrosoft CStore Office doing back office, sort of. And QuickBooks, where one AP clerk keys in whatever paper actually made it to the office.

Every Monday looks the same. The district manager drives a loop of six stores collecting a rubber banded stack of Frito-Lay, Coca-Cola, bread and Red Bull invoices that a 6am clerk signed without counting the cases. Two are missing entirely. One has a case cost 47 cents higher than the last delivery, which nobody caught, so that item sold all week at the old retail at a margin nothing in the system predicted. The clerk keys 180 invoices over a day and a half. By the time cost of goods is trustworthy it is the 12th and the month is already closed. In our discovery week at a 34-store operator we timed it: 61 hours per month of pure invoice keying, plus 9 hours of district manager windshield time just moving paper.

Fuel moves the most dollars and the thinnest margin, so a variance you cannot see for two days is a variance you eat. Tobacco is the biggest inside category and the most program-dependent, so a scan data file that submits late is a rebate check that shrinks. Lottery is a state-audited inventory of physical paper that most POS (Point of Sale) systems treat as a single miscellaneous department. Software here is the difference between catching five figures a month of quiet leakage and quietly eating it.

Problem 1: fuel variance you find out about on Wednesday

Your ATG says 6,140 gallons of 87 in tank 1. Passport says you sold 4,880. The bill of lading says the jobber dropped 8,500. Somebody has to reconcile those three numbers, and today that somebody is a bookkeeper doing it in Excel two days later, from a printed TLS report and a BOL that got faxed. When a submersible pump seal starts weeping or a dispenser meter drifts, you lose gallons for weeks before the spreadsheet catches it. And EPA 40 CFR 280 wants daily inventory reconciliation with a monthly variance inside 1.0% of throughput plus 130 gallons. Miss that and you are not just losing product, you are out of compliance.

PDI and Petrosoft both do fuel reconciliation. What they do not do is your reality: a mixed fleet where nine sites are Passport, six are Commander, two are old Ruby2, four ATGs are TLS-350 and the rest are Franklin, and three sites are on a jobber who emails BOLs as PDF attachments from an iPhone. The off-the-shelf tool wants one clean feed. You do not have one.

What a custom build does: poll each site controller's NAXML movement and journal exports on a 15 minute cycle, poll the ATG directly over serial-to-IP for tank levels and delivery events, and parse the BOL PDF on arrival to get gross, net and temperature-corrected gallons. Then run a rolling variance per tank per site, and alert the fuel manager by text when a tank crosses a threshold he sets, not when the month closes. One client caught a leaking dispenser meter on day three of a build we had not even finished. Document extraction from BOLs and jobber emails is where AI is reliable enough to depend on here: the models read a scanned or photographed BOL, pull carrier, terminal, product, gross and net gallons, and post the delivery against the right tank without anyone typing.

Problem 2: tobacco programs you are technically enrolled in and practically failing

Altria's scan data program, Reynolds' program, ITG's program: all of them pay you for submitting clean, weekly, UPC-level scan data with the right retail price on the right promotional item, and all of them claw back or zero out when the file is wrong. The failure mode is boring and expensive. A store rings a multi-pack promo as two singles because the cashier did not scan the combo. A price change went into 14 stores and not the 15th. The buydown expired Sunday and the price book still says the promo price on Monday, so you sell at the promo retail without the promo money behind it.

Off-the-shelf back office will generate the submission file. It will not tell you, on Tuesday morning, that store 11 sold 340 packs of a promo SKU at the wrong retail and you just donated $290 to a competitor's margin. It has no opinion about your specific manufacturer contracts because it was built for everyone's contracts.

What a custom build does: model the promotion itself as a first-class object with effective dates, participating UPCs, expected retail, expected allowance per unit, and per-store enrollment. Push price book changes down to every site controller from one screen and verify they landed by reading the movement file back. Then reconcile expected allowance against what the manufacturer actually paid, line by line, and flag the gap. That last step is the one nobody sells you, and it is usually the one that pays for the project.

Problem 3: lottery is a physical inventory your POS thinks is one department

Instant tickets arrive as books with pack numbers. A pack gets activated on the state terminal, sits in a dispenser, sells ticket by ticket, and eventually settles. In between, a $30-per-ticket book represents $900 of bearer paper sitting in a plastic bin next to a teenager on third shift. Most operators reconcile lottery once a week against the state's invoice, which means a missing book is discovered somewhere between five and nine days after it walked out.

The state terminals do not integrate with your POS in any way you control, and PDI or Modisoft treat lottery as a department total. Neither can tell you which pack, in which store, on which shift, stopped selling in a pattern that does not look like selling.

What a custom build does: track lottery at pack and book level with activation, dispenser slot assignment, shift-level ticket counts entered on a tablet in 40 seconds, and settlement matched against the state file. Then run the shift close so that the lottery number, the cash number, and the register number all have to agree before the manager can close. We also model commission per game so the operator can actually see lottery contribution instead of assuming it.

Problem 4: the DSD invoice drawer

Core-Mark or McLane sends you a clean EDI 810 and that part is fine. The problem is the 40 other vendors. The bread guy, the beer distributor, the ice company, the Red Bull rep who rearranges your cooler and leaves a hand-written credit. That paper is signed by whoever is on register, dropped in a drawer, and eventually keyed by a clerk who cannot check whether the cost changed because the cost history lives somewhere else.

The off-the-shelf answer is "get your vendors on EDI." Your vendors will not get on EDI. This is not a software problem you can solve by buying software, it is a paper problem, and it is exactly the problem AI is now good at.

What a custom build does: the clerk photographs the invoice at the counter when the vendor is still standing there. Extraction pulls vendor, invoice number, date, and every line with UPC, quantity, unit cost and extended total. The system matches each line against the price book, flags cost changes above a threshold the operator sets, flags quantities that do not match the receiving count, and pushes a suggested retail change to hold the target margin. Approved invoices post to Sage Intacct or QuickBooks as a batch. Nobody drives paper anywhere. At the 34-store client, that 61 hours a month became about 6 hours of exception review, and cost changes started getting caught the day they happened instead of the next quarter.

Problem 5: you cannot see a bad shift until the money is gone

Sweethearting, no-sale drawer opens, void patterns, over-rings after a customer leaves, drive-offs coded as errors. Every POS logs the events. None of them tell you which cashier, at which store, has a void rate three standard deviations off their peers on the same daypart. Your loss prevention today is a district manager's gut feeling and a DVR nobody watches.

Off-the-shelf reporting gives you cash over/short by shift, which is a lagging summary of a problem you needed to see as a pattern.

What a custom build does: ingest the journal at transaction level across the whole fleet, score cashiers against their own history and their peer group, and surface the top ten anomalies every morning with a link to the exact transaction timestamps so the DM can pull the video for 30 seconds instead of two hours. Forecasting comes free once the transaction data is in one place: daily labor demand by store and daypart, cigarette carton reorder points that account for promo lift, and fuel delivery timing so you stop paying for emergency drops.

What this costs and how long it takes

These are Digital Heroes delivery bands across 2,000-plus projects, not a market survey. A focused first release, meaning one or two of the problems above done properly for your whole fleet, is typically $60k to $130k and ships in 12 to 16 weeks. A full platform that replaces the back office across fuel, inventory, price book, invoices, lottery, labor and accounting posting runs $150k to $400k phased across 6 to 12 months.

What drives price up in this category specifically: a mixed POS fleet, because Passport, Commander and Ruby2 each need their own integration and testing; sites where the site controller export is misconfigured and has been for years, which is discovery work before it is development work; ATG models that require serial hardware at the site; manufacturer program logic, because Altria and Reynolds rules are not the same rules; anything touching cardholder data, since staying out of PCI scope by never touching the payment path is cheaper than the alternative by a wide margin; and store count, because 60 sites is not 6 sites with a bigger number, it is a rollout program with training and a support path.

Build or buy: take the honest side

Buy when you run 8 or fewer sites, one fuel brand, one POS platform, no foodservice program, and your growth plan is organic. PDI CStore Essentials, Petrosoft CStore Office or Modisoft will do the job and you will never justify a build. Buy also when your real bottleneck is that nobody is reading the reports you already have.

Build when three of these are true: you are over 15 sites; you acquire stores, so you inherit whatever POS the seller had; you have manufacturer programs worth five figures a month; you have already paid for a custom report package or an integration consultant on top of your back office license; and your controller has a spreadsheet that the whole company depends on. That spreadsheet is the specification. The signal that it is time is not that the tool is bad, it is that you have built a shadow system around the tool, and you are now paying for both.

How to choose a developer for convenience store software

First, make them draw your data model on a whiteboard before they quote. If they cannot explain the difference between a price book item, a promotional item and a scan data eligible item, or why a lottery pack is not the same kind of inventory as a case of Monster, they will learn on your money. Ask them to define wet stock variance without looking it up.

Second, ask for the specific integrations, not the category. "We integrate with POS" is not an answer. "We have pulled NAXML PJR and MCM out of Passport and Commander, polled a TLS-350 over serial-to-IP, consumed an EDI 810 from Core-Mark, and posted to Sage Intacct" is an answer. Ask what happens when a site's internet drops for six hours, because it will.

Third, get the compliance boundary in writing. The build should stay outside PCI cardholder data scope by design, should support your EPA reconciliation obligation with an auditable trail, and should handle state lottery reporting rules for every state you operate in. Ask who owns the code and the database on day one, and if the answer is anything other than you, walk.

Fourth, insist on a phase one that ships to real stores in under 16 weeks with real clerks using it. A vendor who wants nine months before anything touches a counter has never trained a third-shift cashier on anything.

Research & sources

The evidence behind this guide

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

  1. Global retail loses an estimated $1.73 trillion annually to inventory distortion (out-of-stocks and overstocks), equal to about 6.5% of global retail sales, despite $172 billion spent on improvements in the past year. Source: IHL Group (2025) →
  2. The average documented online shopping cart abandonment rate is 70.22% (based on 50 studies), and large ecommerce sites can achieve a 35.26% increase in conversion rate through better checkout design. Source: Baymard Institute (2024) →
  3. An EY survey found one in five U.S. payrolls contains errors, each costing an average of $291 to remediate, with a typical 1,000-employee organization spending roughly 29 workweeks per year fixing common payroll errors. Source: EY (Ernst & Young) (2022) →
  4. Salesforce's field-service research (State of Service / field service trends, survey of 5,500+ service professionals) found that 74% of mobile workers report increasing workloads and 47% say appointments don't go as planned due to customer miscommunication, unaccounted-for parts, or insufficient appointment lengths and travel times. (The separate claim that admin tasks consume ~30% of a technician's hours is NOT supported by the report - the seventh-edition data instead states technicians spend about 18% of working hours, ~7 hours/week, on admin, and only ~32% of time interacting with customers.). Source: Salesforce (2024) →
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 convenience store software cost for a 20 to 40 store chain?
A focused first release, meaning one or two problem areas like fuel reconciliation or DSD invoice capture done across the whole fleet, typically runs $60k to $130k and ships in 12 to 16 weeks. A full back office replacement covering fuel, price book, invoices, lottery and accounting posting is $150k to $400k phased over 6 to 12 months. Price is driven mostly by how many POS platforms and ATG models you have to integrate, not by store count alone.
Is it cheaper to just keep PDI Enterprise or Petrosoft CStore Office?
On the license line, yes, and for a single-platform chain under about 8 sites it is genuinely the right answer. The comparison changes once you add up what you already spend around the tool: the custom report package, the integration consultant, the AP clerk keying paper, and the controller spreadsheet the whole company depends on. If you are running a shadow system on top of your back office, you are paying twice already.
Can custom software pull data out of Gilbarco Passport and Verifone Commander?
Yes. Both export NAXML movement and journal files from the site controller, which is the standard integration path and does not require the vendor's cooperation or a new license tier. Older Ruby2 sites and mixed fleets from acquisitions are handled per platform, which is why a mixed fleet costs more to integrate than a uniform one.
How do we migrate off our current back office without losing price book history?
You do not cut over cold. The normal path is to run the new system in parallel for two to four weeks while both read the same POS exports, then reconcile the numbers store by store until they match. Price book, cost history and vendor master are extracted from the incumbent database or its export files first, cleaned, and loaded before parallel starts. Budget real time for cleanup, because most price books have years of dead UPCs in them.
How long before we can shut the old system off?
Plan on 12 to 16 weeks to a first release that real store staff use, then another 4 to 8 weeks of parallel running before you cancel the incumbent contract. Chains that try to shut off the old system at go-live end up turning it back on. Time the cancellation to your renewal date, not to your launch date.
Do we own the code if we build this?
You should own the source code, the database, the infrastructure accounts and the deployment pipeline outright from day one, with no ongoing license to the developer for the software they built for you. If a development shop wants to retain ownership and rent it back to you, that is a product company, not a development partner. Get the ownership clause in the contract before work starts.
Can it handle Altria and Reynolds scan data submissions?
Yes, and the more useful part is what happens after submission. A custom build models each promotion with its effective dates, participating UPCs, expected retail and expected allowance per unit, generates the weekly file, and then reconciles what the manufacturer actually paid against what you expected. The gap between those two numbers is what most operators have never been able to see.
Does custom software cover EPA fuel reconciliation and PCI compliance?
For fuel, the build performs daily inventory reconciliation against ATG readings, POS sales and delivery documents, and keeps the auditable trail EPA 40 CFR 280 expects, including the monthly variance threshold of 1.0% of throughput plus 130 gallons. For PCI, the correct design keeps the system entirely outside cardholder data scope by never touching the payment path, which is dramatically cheaper than building inside scope. Get that boundary written into the statement of work.
Can AI actually read our paper DSD invoices from Frito-Lay and the bread guy?
Yes, this is one of the places AI is genuinely reliable now. A clerk photographs the invoice at the counter, extraction pulls vendor, invoice number, date and every line with UPC, quantity and unit cost, and the system matches those lines against your price book and flags cost changes above a threshold you set. At one 34-store client, roughly 61 hours a month of invoice keying dropped to about 6 hours of exception review.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
How do I vet a development agency for a POS project specifically?
Ask to see a live POS or payments product they built, then ask exactly how they handled offline mode, receipt printing, and PCI scope, because those three areas expose anyone who has only built ordinary web apps. A competent agency will name the payment SDKs they used, such as Stripe Terminal or Adyen, and describe their terminal certification process without checking notes. If the portfolio is all marketing sites and dashboards, keep looking.
How much does it cost to build a custom POS system for a small business?
A single-location custom POS covering checkout, inventory, receipts, and payment integration typically lands between $30,000 and $70,000, based on Digital Heroes delivery data across 2,000+ projects. Multi-location systems with kitchen displays, franchise reporting, or offline sync usually run $80,000 to $250,000. The biggest cost drivers are custom hardware support and how much of the payment flow you build versus integrate.
We run multiple restaurant locations on Toast. Would switching to a custom POS actually save money?
Usually only at 8 or more locations, where per-terminal software fees, add-on modules like online ordering and loyalty, and processing markup commonly total $8,000 to $20,000 per location per year in the statements Digital Heroes reviews for restaurant groups. A custom system converts that into a one-time build of $100,000 to $250,000 plus maintenance, which models out to 18 to 30 month payback for most groups. Under five locations, stay on Toast and put the money into operations.
Will an app built for 10 users survive growing to 500?
Yes, if it is built on standard cloud infrastructure with a sound data model, because moving from 10 to 500 users is a hosting configuration change, not a rebuild. The scaling decisions that actually hurt are made early and invisibly: how the database is structured, how accounts and permissions are modeled, and whether background work is queued properly. Ask your agency how the system would handle ten times the load; the right answer is boring and specific, and a promise to cross that bridge later means you will pay for the bridge twice.
What happens to a custom POS when the internet goes down?
A properly built POS keeps ringing sales offline: orders, catalog, and pricing live in a local database on the register, and completed transactions queue and sync once the connection returns. Card payments are the real constraint; certain certified terminals support store-and-forward offline card acceptance with a per-transaction risk limit you set, and cash always works. Confirm your agency designs offline-first from day one, because bolting it on later means rewriting the data layer.
How many developers does it take to build a POS system?
A typical Digital Heroes POS team is 4 to 6 people: one backend developer, one or two client developers for the register app, a designer through the first half, a QA engineer, and a project lead. That size delivers a single-location system in about 3 to 4 months. Be skeptical of anyone pitching a one-developer POS build, because payments, offline sync, and hardware testing each demand dedicated attention.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
Will a custom POS scale if we grow from 3 locations to 30?
Yes, provided location-awareness is built into the data model from the start, meaning every transaction, price, and stock count carries a location ID even while you have one store. Adding a location then becomes provisioning hardware and configuring the store, not rewriting software, and cloud hosting costs grow far slower than per-terminal subscriptions would. Retrofitting multi-location onto a single-store schema is one of the most expensive rewrites Digital Heroes gets called in to do, so state your expansion plans upfront even if they are two years away.
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?