Skip to content

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. 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. 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. 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. 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. 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. 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.

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.