← All use casesChasing down a discrepancy in Odoo
Every finance team has the number that will not reconcile. The bank balance is off by a consistent amount. The inventory valuation disagrees with the general ledger. Two reports that should agree don't, and the last person who understood why has left.
These are miserable to chase by hand because the answer is almost never where you start looking. It's a journal entry posted twice, a product with a costing method nobody changed, a date filter on a report that quietly excludes a week. Finding it means walking the records, and the records are the part nobody has time for.
CodeCobra reads your live database and walks them for you. It comes back with the cause and the specific records that demonstrate it — not a confident summary you have to take on trust. If it can't establish something, it says so rather than producing a plausible number.
Nothing is changed while it investigates. An Odoo connection set to Read cannot write, so you can point it at production and get an answer without any possibility of it altering what it's looking at.
What people asked, and what came back
Real production requests, condensed and with anything identifying removed.
ControllerManufacturing
Why is my bank balance off by $35,000 every month for June and July? Is there an entry we made that caused it?
What happened: Traced it to a journal entry posted in June and repeated in July, found the balancing side hit Cost of Goods Sold, and drafted the reversal — waiting on approval before touching anything.
ControllerManufacturing
Outstanding receipts as of June 30 show $977K. What makes that up — is it payments that never bank-matched?
What happened: Broke the balance down into its components and isolated exactly which portion was payments that never matched a bank statement line.
OperationsDistribution
Are internal notes being printed on my pickup tickets?
What happened: Yes — found the exact ticket where internal pricing notes printed under two products, and the template line responsible. Corrected its own first theory when the real order contradicted it.
OperationsDistribution
Why does this product take the contractor pricelist price for a retail customer instead of the retail price?
What happened: Diagnosed the pricelist rule — then warned that the obvious fix alone would make 70 items bill $0.00 on another price list, and fixed both.
OwnerManufacturing
Based on inventory for this item, how many pieces did I actually get out of each metric ton?
What happened: Computed the true delivered cost per tonne — base price plus landed charges, 44.6% on top of the raw material price — pulled live from his own inventory.
OperationsDistribution
Review these orders — why didn't they auto-invoice?
What happened: Walked both orders through the auto-invoice conditions and named the one condition each of them failed.
ControllerManufacturing
This delivery shows delivered to the customer, but the stock moves say it went to a different address. Why?
What happened: Followed the stock moves and explained the mismatch between the order's address and where the goods actually shipped.
More requests in this category
- Why does this invoice show as paid when there's no payment attached to it?Controller · Manufacturing
- Which orders are stuck waiting on a back-order, and what's actually holding each one?Operations · Distribution
- The aging report doesn't match the receivables account. Where's the difference coming from?Controller · Distribution
- Which products did we sell below cost last month, and on which orders?Owner · Wholesale
- Why did this transfer reserve stock from the wrong warehouse?Operations · Wholesale
- Two deposits from last Tuesday never matched a statement line. Can you find them?Controller · Food service
- Why is this product showing in stock on the website when we have zero on hand?Operations · Retail
Does it change anything while investigating?
No. Set the connection to Read and it physically cannot write, whatever anyone asks it to do. Investigations are the safest thing you can do with CodeCobra, which is why most people start here.
How do I know the answer is right?
Because it shows you the records. A good answer names the specific entries, orders or moves that produce the discrepancy, so you can open them in Odoo and check. Ask for them if they aren't offered.
What if it can't find the cause?
It tells you, and tells you what it ruled out. A hedged answer is information — it means the data genuinely doesn't support a conclusion, usually because a field was never filled in or the history predates your Odoo instance.