Case study · money & operations
The money came in, but the order still says unpaid. Six leaks we found in our own shop
In our flower shop, money slipped away quietly: in stuck payments, in a promo code that ended up on coupon sites, in inflated ad-account numbers, in the driver's pay rate and in our host's failing DNS. Between June and September 2026 we found six of these leaks and closed five.
- 12,800 ₽
- in stuck payments found on the reconciler's first run
- ≈21,000 ₽
- in discounts lost to a leaked promo code in 30 days
- 4.5×
- ad-account inflation: 177 "conversions" vs 39 real orders in August
- 20,189 ₽
- a driver was underpaid over 6 weeks on a flat rate
Nothing broke loudly
The shop was running, orders kept coming, revenue roughly added up. Nobody went looking for missing money, because nothing broke in a way you'd notice.
It all leaked quietly: in third-party dashboards, in stuck payments, in a discount the coupon sites found. We caught almost every leak the same way: put numbers from two places side by side and look at the difference.
Six leaks and what happened to them
- 1
Payment went through, order says "unpaid"
Customers paid by card and closed the tab. The bank took the money, the website still showed the order as unpaid, and the florist never started on it. The reconciler's first pass found 3 of these, worth 12,800 ₽. Now the robot catches them on its own.
- 2
A promo code ended up on coupon sites
A 5% code spread to discount aggregators: 77 orders in 30 days worth 418,905 ₽. About 21,000 ₽ went out as discounts. We killed the code and switched to one-time personal codes.
- 3
The ad account counted 4.5× the orders
The Yandex Direct dashboard showed 177 "conversions" for August. There were 39 real orders. Ad decisions were being made on an inflated number. Now we count orders only from analytics and the order database.
- 4
The driver was shorted on long trips
Our driver got a flat 440 ₽ per delivery, whatever the address. Recalculating by distance showed he'd been underpaid 20,189 ₽ over 6 weeks. Now pay is calculated per kilometer automatically, so there's nothing to argue about.
- 5
Checkout hung for almost two minutes
Our host's DNS servers went down four times in three months. Checkout hung for up to 114 seconds, and one customer walked away with a 9,990 ₽ order. We set up our own DNS cache and a watchdog.
- 6
Abandoned carts with no contact info, still open
190 abandoned carts in 28 days worth 1.62M ₽, and we have contact details for only 11. We've found this one but haven't closed it yet.
What we put in place so they stay closed
Money reconciliation
- A robot matches bank payments to website orders and marks them paid
- Personal promo codes instead of one shared code
- CRM revenue matches the accountant's report to the ruble
Honest ad numbers
- Orders are counted from analytics and the order database
- The ad dashboard is no longer a source for decisions
Delivery
- Driver pay by distance: up to 10 km 450 ₽, 10-15 km 550 ₽, beyond that 39 ₽ per km
- A daily delivery log, adjustments only with a note
Server
- Our own DNS cache on the shop's server
- A watchdog that keeps an eye on the host's resolver
How to look for these leaks in your business
Almost every leak turned up with one move: take numbers from two sources and compare them. Bank against website, ad dashboard against analytics, flat driver rate against actual distance.
You can check three things in an evening. Export a month of bank payments and compare them with paid orders on your site. Compare your ad dashboard's conversions with the orders in your database. Count how many deliveries went further than 10 km and what you paid for them.
Honest status
Every number comes from our own shop, with the period listed for each leak. The sixth one, abandoned carts with no contact info, is still open. We don't publish order numbers or staff names.
Questions, answered
How do I know if I'm losing payments too?
Compare a month of card-processing statements with paid orders on your website. If the bank has the payment but the site says "unpaid", it's the same leak. Our very first check found three of these, worth 12,800 ₽.
Why does the ad dashboard show more orders than I actually have?
It counts every goal selected in the campaign as a conversion, and an order is only one of them. If the goals aren't filtered, you'll see several times more "conversions" than orders: 177 vs 39 for us in August. Check against your analytics and order database.
Do I need a custom CRM for this?
You can run the check once by hand. A system makes sense when you want a robot to do it every day and raise the alarm on its own. The payment reconciler can also be added as a standalone module.
See also
Custom CRM
Payment reconciler, cash count and automatic driver pay in one system. Packages and prices.
All projects: websites, CRMs, apps
What we've already built, with one fact you can check for each.
Case study · a system for the business
Four channels, four hundred orders a month, one system. Repeat orders up from 28% to 36% since May
Read the case
Case study · realtor system
Listings in WhatsApp groups, clients in DMs, shortlists built by hand. We built a realtor system for 1,106 listings
Read the case
Free process review
Let's find where your money is leaking
Payments, ads, discounts, delivery. Tell us how orders and money move in your business, and we'll show you for free what to check first.
- Where to reconcile payments, ads, discounts and delivery
- Which leaks a settings change fixes and which need a module
- A rough estimate if automation makes sense
We reply in writing within a couple of hours. No calls needed and no sales script.
Numbers you can check
- ≈400
- orders a month in the flower shop I run
- 36.2%
- of orders in Sept 2026 came from returning customers, up from 28.1% in May
- 10 years
- that site in search, full history on the table
The same case shows a 51% Google drop in May 2026. Most people hide that. I show it and write what I am doing about it.