Ordered, Arrived, Invoiced: The 3-Way Check Hotels Skip

By Shahyn Kamali, Founder · June 4, 2026 · 4 min read

A hotel places an order. The supplier ships it. An invoice arrives. Somewhere in that chain, small discrepancies slip through — and nobody notices until the money is already gone.

We are piloting Atrium with a hotel in Niagara Falls on a workflow that sounds almost too simple to need software: compare what was ordered, what arrived, and what was invoiced, before payment.

Three documents that are supposed to agree.

The purchase order says what you asked for and what you agreed to pay. The goods receipt says what actually came off the truck. The invoice says what the supplier believes you owe. In a perfect week all three tell the same story.

Most weeks, two of them agree and the third is never checked. The invoice is the one that gets attention, because it is the only one with a due date attached to it.

Two-way matching — invoice against purchase order — is the common compromise. It catches the price problem and misses the quantity problem entirely. It is better than nothing, and it is exactly the half of the check that lets a short delivery through.

A real example.

On one order, the purchase-order unit price of $52.32 came back as $54.50 on the invoice. Twelve cases were ordered, ten were delivered — but all twelve were billed. On that single order, $69.08 quietly walked out the door.

Individually, errors like this look trivial. Across hundreds of invoices a year they add up to real money, and they are invisible if you only check the invoice total.

Two errors hiding in one invoice.

  • Unit price mismatch — the price billed is higher than the price agreed, a textbook case of supplier price drift.
  • Short delivery — billed for more than arrived, usually described as billed-but-not-received.

Notice that neither error requires anyone to have behaved badly. A rep updates a price list. A warehouse runs short and substitutes nothing. The billing system does what it was always going to do.

Why the total is the worst place to look.

An invoice total is the end of a calculation. It is correct arithmetic performed on inputs that may be wrong. If the price is high and the quantity is generous, the total is still perfectly consistent with itself — it simply describes a delivery that did not happen.

An invoice total is correct arithmetic performed on inputs nobody checked.

This is why approving on the total feels safe and is not. Nothing on the page looks wrong. Everything adds up. The error sits one level down, in the line items nobody has time to read.

The step hotels skip is the receipt.

In practice, the missing document is almost always the goods receipt. Somebody signs the driver’s sheet at the back door at six in the morning, the paperwork goes in a drawer, and it never meets the invoice that arrives eleven days later.

Nobody skips it out of carelessness. The receiving door and the accounting desk are two different people, two different hours of the day, and often two different buildings. Without something holding both records, the comparison has nowhere to happen.

The consequence is specific. Short deliveries become permanent. If nothing records that ten cases arrived against twelve ordered, the hotel pays for twelve, and the window to ask for a credit closes without anyone noticing it was open.

What the check produces.

The output of a 3-way check is not a verdict. It is a queue: a short list of lines that deserve a second look, each with the evidence attached. Atrium sorts every covered line into one of a few plain states.

  • Match — ordered, arrived, and invoiced agree. Nothing to do.
  • Over — the billed rate exceeds what was agreed, with the variance calculated for you.
  • Short — fewer units arrived than were billed.
  • Needs review — something does not line up, and Atrium will not guess on your behalf.

That last state matters more than it looks. A missing match is not proof of anything. If a receipt is absent or a rate was never confirmed, the honest answer is that a person should look, not that the supplier did something wrong.

Nothing pays automatically.

Atrium never moves money. It does not hold, release, or dispute anything. It surfaces the line, shows the ordered price beside the invoiced price and the delivered quantity beside the billed quantity, and stops there. Hold it, request a credit, or approve it anyway. Your call.

That boundary is deliberate. The value of the check depends entirely on the team trusting it, and nothing destroys trust faster than software that acts on its own mistake.

What to do with a flagged line.

The action is almost always small. Most flagged lines resolve with a short email: this invoice, this line, ordered at this price, billed at that one, please confirm. Suppliers issue credits for this constantly. It is a routine part of the relationship, not a confrontation.

What changes the difficulty is timing. A credit requested before payment is administrative. The same credit requested three months later is a favour, and favours run out.

So the value of catching it early is not only the amount recovered. It is that the conversation stays easy, and the relationship stays worth having.

It works because it is boring.

There is nothing clever about comparing three numbers. The difficulty was never the comparison — it was doing it on every line of every invoice, every week, forever, without anyone getting tired or going on vacation. That is the only part worth handing to software.

Prices that crept up. Deliveries that came up short. Bills that arrived twice. A pre-payment exception review catches each one while you can still do something about it, and the first report costs nothing.

See it on your own invoices

Forward about 10 recent supplier invoices and Atrium returns a free Hotel Spend Leak Report — what changed, what may be duplicated, and what needs review before payment.