Problems & solutions · Custom Software

Deposit Return Scheme Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Deposit Return Scheme Software architecture and database illustration showing common problems and fixes.
The short answer

The most expensive failure is a build that assumes reverse vending machines are online. They are not. A machine drops off the network for six hours, uploads its backlog when it reconnects, and a system without idempotent event handling counts those sessions twice, or misses them entirely because the reconciliation window had already closed. Your claim then goes to the scheme operator carrying a number you cannot defend, and when it comes back adjusted you have no trail from the adjustment down to the sessions that caused it, so you absorb the difference on every container in the period.

Why does the connected machine assumption catch so many builds?

Every proposal in this category shows the same picture: machines on the left, a pipeline in the middle, a reconciliation dashboard on the right. It is drawn as if events arrive in order, once each, shortly after they happen. In a supermarket estate none of those three things is reliably true.

A reverse vending machine sits in a store lobby on a network that also carries tills, scales and a card terminal. It loses connectivity for a shift. It gets power cycled by a duty manager. A site's router is replaced and the machine sits offline over a weekend. When it comes back it uploads what it has been holding, and those sessions arrive with timestamps from yesterday into a system that has already closed yesterday.

Two failure patterns follow, and they pull in opposite directions. If the pipeline has no idempotency, a retried upload writes the same sessions again and your container counts inflate, which looks like good news until the counting centre disagrees. If the pipeline discards anything outside the current window, real volume disappears and you claim less than you are owed. Either way, the reconciliation drifts and nobody notices, because a few hundred containers a week hides inside a total of hundreds of thousands.

The fix is a design constraint, agreed before anyone writes code. Every machine event carries a stable identifier from the machine itself, the pipeline processes each identifier exactly once regardless of how many times it arrives, and events are recorded against the time they occurred rather than the time they were received. Then run an offline exposure report from day one: hours per machine per day with no contact, and the container volume that eventually arrived from those windows. In the deposit and returns work we have delivered, that first report is always worse than the operations team expected, and it is the number that justifies the project.

What goes wrong when machine, till and counting centre data are joined?

The three way reconciliation is the point of the whole system, and it is where builds quietly go wrong, because the three sources do not share a key.

The machine knows a session. The point of sale (POS) knows a voucher barcode. The counting centre knows a bag or a cage and a count that arrives days later. Nothing in that chain carries a shared identifier unless you create one, and creating one means touching the physical process: the voucher has to carry the session, the bag has to carry the machine and the collection date, and the counting centre report has to come back keyed on something you issued.

Where projects go wrong is by attempting the join on time and volume instead. It works in testing on clean data and fails on real weeks, because two machines in the same store empty on the same day, a bag gets split, a cage goes out with a partial load, and a voucher printed on Friday is redeemed on Monday. What you end up with is a match rate in the low nineties and no way to investigate the rest.

Design the identifiers first, physically. A session identifier printed on the voucher and readable at the till. A bag label generated by the system rather than written on tape. A collection manifest that ties bags to a vehicle and a date. Then the exception queue is meaningful: machine offline window, voucher issued but never redeemed, redemption without a matching issue, count variance at the collection point. Finance stops looking at a total and starts working a short list of named breaks, which is the only version of this that anyone maintains after month three.

Why do the point of sale and machine vendor integrations break after launch?

Both integrations fail for reasons that are foreseeable, and both fail in ways that do not raise errors.

On the machine side, TOMRA and Envipco both ship capable fleet software, and both are built around their own hardware. The interface you get depends on your commercial relationship and the generation of machine, and it can differ across an estate acquired at different times. A build that consumes a daily summary export will look identical in a demo to one that consumes session level events with container detail, and only the second can support fraud work or genuine reconciliation. If the vendor changes an export format or a firmware release alters how a session is reported, a summary based integration keeps producing plausible numbers that are now wrong.

On the till side, voucher redemption is often just a barcode scan against a generic discount or refund tender. There is no structured record saying which voucher was redeemed, so the system infers it from the amount and the time. That inference degrades the moment a customer redeems two vouchers in one basket, or part redeems against a shop, or a supervisor keys a value manually because the barcode will not scan.

The protections are the same in both directions. Insist on session level machine data and name the interface in the contract. Insist that the point of sale writes the voucher identifier as a structured field even if it means a small change on the till. Then run a scheduled reconciliation between what the vendor believes it sent and what you recorded, with a named person receiving the exceptions rather than a dashboard nobody opens.

What happens when manual takeback and scheme audit trails are not covered?

These two get cut from scope together, usually with the words phase two, and they are the two that decide whether a claim survives challenge.

Manual takeback is real volume. Machines fill, jam, break, or do not exist in smaller stores, and in most schemes containers then come over the counter. Someone counts them into a bag, writes a number on a label, refunds the customer and the bag joins the collection stream. That handwritten number enters your claim with exactly the same authority as a machine reading, and it is attributable to nobody. When variance appears at the counting centre, you cannot tell whether it is shrink, a miscount or a machine fault, because a large slice of your volume has no operator, no timestamp and no trail.

The audit trail problem is quieter. Systems get built where a correction updates a record in place, because that is the natural way to write software. In a scheme claim, an updated record is not evidence. When a scheme operator adjusts a claim and asks how you arrived at your figure, you need to walk from the claim total down to individual sessions and show every adjustment as an entry rather than a change.

Both fixes are small. Manual takeback gets a deliberately minimal capture step on a handheld or tablet: count, operator, time, bag identifier, linked to the refund at the till. It is not sophisticated software, and its value is that manual volume becomes something you can trend by site and by person, which is where a surprising share of variance turns out to live. The ledger becomes append only, corrections are reversing entries with a visible reason, and the claim is a period object with a full trail rather than a number assembled in a spreadsheet.

Should you build custom or configure what you already own?

For a lot of retailers the honest answer is do not build, and we would say so before quoting.

If you run a small number of stores with a single machine vendor under one scheme, the TOMRA or Envipco portal plus a monthly export genuinely covers you. The reconciliation exposure is small enough to absorb, and the money does more good in store operations. Before commissioning anything, ask your vendor what session level reporting they can already expose to you, because plenty of operators are running on a summary export while a richer feed sits available under the same contract.

Equally, do not build against a scheme that has not launched. Specifications and dates in this sector have moved more than once, and building to a draft means paying twice. Wait for the rules to settle and confirm them with your scheme administrator rather than a software vendor.

Build when volume makes the small numbers large. A mixed hardware estate across enough sites that no single portal shows your position. Handling fee income that your finance team treats as a real line. A claim you have already been challenged on and could not defend. Or you are the scheme operator, in which case you will build, because no packaged product implements another jurisdiction's rules and your credibility with members rests entirely on settlement accuracy.

How do hidden costs get into the quote?

Five items account for most of the overruns in this category, and every one of them is knowable before you sign.

Vendor data access assumed rather than confirmed. The pacing item on these projects is usually getting session level data out of the machine vendor, not writing the software. Get the interface confirmed in writing before the build starts, because a quote that assumes an interface you do not have is a quote for a different project.

The second hardware vendor. Each adapter is genuine work, and vendor event models differ enough that a second one is not a configuration exercise. Price it separately.

Older point of sale estates. Writing a voucher identifier as a structured field is trivial on a modern cloud till and can be a small change request with its own vendor, its own queue and its own cost on an older estate. Check this in week one.

Connectivity tolerance. Late arriving events, duplicate suppression and reprocessing are architecture, not features, and retrofitting them is close to a rewrite. Any proposal that treats store connectivity as reliable is underpriced.

Counting centre integration. Weight and count data comes off industrial equipment rather than a documented interface, and it usually needs someone on site. It is the line most often left out entirely.

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

Ask how they will handle a machine that was offline for four hours and then uploads its backlog. If the answer does not include idempotent event handling and duplicate session detection, the reconciliation will drift and you will find out when a claim is adjusted. Late and repeated data is the normal condition here, not an edge case.

Ask what hardware they have integrated and at what level, naming the vendor and the interface. There is a large difference between a daily summary export and session level events with container detail, and only the second supports fraud work or a defensible claim.

Ask how they would prove a claim to a scheme auditor. The right answer involves an append only event store where nothing is quietly edited and a trail from the claim total down to an individual session. If history can be rewritten, your audit position is weak no matter how good the reports look.

Then insist on the sequencing that saves money: one machine vendor, one scheme, your highest volume thirty or forty sites, and the reconciliation run in observation mode alongside the existing process for a full claim period before it drives anything. Settle ownership of the repository and the cloud accounts in the contract before kickoff, which is how Digital Heroes ships, because scheme rules change on a regulator's timetable and you cannot afford to sit in a supplier's release queue when a settlement format is revised.

Research & sources

The evidence behind this guide

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

  1. The 2024 DORA report found AI adoption significantly increases individual productivity, flow, and job satisfaction, but negatively impacts software delivery throughput and stability - a paradox leaders must manage with fundamentals like smaller batch sizes and robust testing. Source: DORA / Google Cloud (2024) →
  2. Only 16% of respondents said their organizations' digital transformations had successfully improved performance and equipped them to sustain gains over the long term; even in digitally savvy industries such as high tech, media, and telecom, self-reported success rates did not exceed 26%. Source: McKinsey & Company (2018) →
  3. An analysis of enrollment and completion data for 221 MOOCs (Katy Jordan, published in the International Review of Research in Open and Distributed Learning, IRRODL, 16(3), 2015 - not the Journal of Distance Education) found completion rates ranging from 0.7% to 52.1%, with a median completion rate of 12.6%, and completion negatively correlated with course length (longer courses had lower completion rates) - underscoring how unsupported self-paced online courses struggle to finish learners. Source: Journal of Distance Education (via ERIC / Katharina Jordan) (2015) →
  4. 73% of surveyed businesses now use a headless architecture (up nearly 40% since 2019), and 98% of those not yet using it are evaluating or planning to evaluate headless within 12 months, with 82% saying it makes delivering consistent content easier. Source: WP Engine (2024) →
Aria P. · Senior Account Manager · Retail · Sydney

Aria manages retail accounts at Digital Heroes, mostly commerce and Shopify work. Her days involve launch dates, stock feeds, peak trading periods and the awkward conversations that come with all three. She writes for retailers trying to work out what a platform build will demand of their own team.

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

FAQ

Frequently asked questions

What actually happens when a reverse vending machine goes offline?
It keeps accepting containers and holds the events until it reconnects, then uploads a backlog with yesterday's timestamps. A pipeline without idempotent handling writes them twice and inflates your counts. A pipeline that discards anything outside the current window loses real volume and you underclaim. Events need a stable machine issued identifier, exactly once processing, and recording against the time they occurred rather than the time they arrived.
Why does matching machine counts to till refunds by time and value fail?
Because it works on test data and not on real weeks. Two machines in one store empty on the same day, a bag gets split, a cage goes out part loaded, and a voucher printed on Friday gets redeemed on Monday. You end up with a match rate in the low nineties and no way to investigate the remainder. Design shared identifiers into the physical process instead: session on the voucher, system generated bag labels, a collection manifest.
Is a daily summary export from our machine vendor good enough?
No, not if reconciliation or fraud detection is the point of the project. A summary tells you a total and cannot tell you which session produced a variance, so an adjusted claim becomes unarguable. Ask for session level events with container detail, name the interface in the contract, and confirm it is available before the build starts, because vendor data access is usually the pacing item rather than the engineering.
How should manual over the counter takeback be handled?
With a deliberately small capture step on a handheld or tablet recording the count, the operator, the time and a bag identifier, linked to the refund at the till. Without it, handwritten counts enter your claim with the same authority as machine readings and are attributable to nobody, so variance at the counting centre cannot be diagnosed. Manual volume trended by site and by person is where a surprising share of variance turns out to live.
What does a scheme auditor need to see?
A trail from the claim total down to individual container sessions, with every correction visible as an entry rather than as a change to a record. Systems that update records in place feel natural to build and are weak as evidence, because you cannot show what the figure was before and why it moved. Append only storage with reversing entries and a visible reason on each adjustment is the requirement, and it has to be designed in rather than added.
When should a retailer not build deposit return software?
When you run a small number of stores with one machine vendor under a single scheme, where the vendor portal plus a monthly export is proportionate and the reconciliation exposure is absorbable. Also when the scheme you are preparing for has not launched, because specifications and dates in this sector have moved more than once and building against a draft means paying twice. Confirm current rules with your scheme administrator, not a software vendor.
What gets left out of deposit return software quotes?
Confirmed vendor data access, the second hardware vendor's adapter, changes to an older point of sale estate so voucher identifiers are written as structured fields, connectivity tolerance treated as architecture rather than a feature, and counting centre integration where data comes off industrial equipment rather than a documented interface. The last one is the line most often omitted entirely and it usually needs someone physically on site.
How do we roll this out without breaking a live claim cycle?
One machine vendor, one scheme and your highest volume thirty or forty sites first, with the new reconciliation running in observation mode beside the existing process for a full claim period before it drives any decision. Compare the two outputs at the end of that period and investigate every difference. Switching a settlement process on the strength of a demo is how operators discover their exception logic was wrong at the worst possible moment.
How much should a small business expect to pay for custom software?
Across 2,000+ Digital Heroes projects, a small business system that replaces spreadsheets or one core workflow typically lands between $40,000 and $80,000, with more complex first versions running up to $150,000. The two levers that move the number most are integrations and user roles, not the team's hourly rate. Any quote under $15,000 for a full production system means the vendor has not understood your scope yet.
Is a solo freelancer enough for my project, or do I really need an agency?
A solo freelancer is a fine choice for a well-defined build under roughly $15,000 to $20,000 with a limited lifespan: an internal calculator, a scripted integration, a prototype. Above $50,000, or for any system your business will depend on for years, you are buying continuity as much as code: enforced code review, cover when someone is ill, and support that outlasts one person's career plans. Price the risk of a single point of failure, not just the hourly rate.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
Couldn't I just build my app in Bubble or another no-code tool instead of hiring an agency?
For validating an idea with real users, yes, and we tell clients that honestly. The walls come later: Bubble apps cannot be exported as code to run anywhere else, performance drops on complex data operations, and usage-based pricing climbs as you grow. A meaningful share of Digital Heroes custom builds are rebuilds of no-code MVPs that proved the business worked, which is the system operating as intended: validate cheap, then build the version that scales.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
How do I work out whether custom software will pay for itself?
Do the arithmetic on hours before anything else: if the system saves three staff eight hours a week at a $35 loaded hourly cost, that is about $43,700 a year against, say, a $70,000 build plus 15 to 20% annual maintenance, a payback around two years. Add revenue effects only if you can name them specifically, like faster quotes or fewer abandoned orders, not as vague growth. In our delivery experience the businesses that see payback inside 24 months are the ones automating a process they already measure.
What happens if I stop paying for maintenance after launch?
Nothing breaks on day one, which is what makes it dangerous. Within 6 to 18 months, unpatched dependencies accumulate known vulnerabilities, an integrated API like Stripe ships a breaking change, and the first fix requires a developer to relearn a stale codebase at full price. Budget 15 to 20% of the build cost per year for upkeep; it is the difference between a $500 patch and a $15,000 emergency.
What are the biggest mistakes first-time software buyers make?
Choosing the lowest bid, paying more than 30-40% upfront instead of on milestones, skipping a written specification, and having no maintenance plan for after launch. The most expensive of the four in Digital Heroes rescue projects is the missing spec: without written acceptance criteria, done becomes an argument instead of a checklist, and every disagreement resolves in the vendor's favor. Fix those four and you have avoided most of the ways these projects fail.
How do I calculate whether custom software will pay for itself?
Divide the build cost by the monthly benefit, where benefit is hours saved times loaded hourly cost, plus subscription fees replaced, plus any revenue the software unlocks. Three staff saving 10 hours a week each at a $40 loaded rate is about $62,000 a year, which pays back a $60,000 build in roughly 12 months. Across Digital Heroes internal-tool projects, 12 to 24 months is the normal payback range, and anything projecting under 6 months usually means the spreadsheet is hiding costs.
How many people should be working on my software project?
A typical $40,000 to $150,000 build runs on three to five people: a technical lead, one or two developers, a designer, and someone owning QA and project communication, often as overlapping part-time roles. More bodies do not make software arrive faster; past a point they slow it down with coordination overhead. The question that matters more than headcount is whether one named senior engineer is accountable for the outcome.
Who can build a custom software system?

Digital Heroes builds custom 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 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?