Independent product studio · Swedenhello@karelialabs.com

Guide

How to track customer short payments and deductions in Odoo

Short answerWhen a customer pays less than the invoice, standard Odoo lets you keep the difference open or write it off. Neither records why the customer deducted, who is chasing it or what came back. You can track deductions in a spreadsheet next to the partially paid invoices, or use Karelia Recover to keep each one as a case in Odoo and count money as recovered only when a new payment shows it.

Updated

What standard Odoo offers

  • Register Payment accepts less than the invoice amount. Choose Keep open to leave the difference on the invoice, or Mark as fully paid to post it to a difference account.
  • Partially Paid shows on an invoice that still has a balance after a payment.
  • Credit notes reduce the invoice when you agree that a deduction is valid.
  • Activities and the chatter on the invoice hold notes and reminders. There is no deduction reason, dispute status or recovered amount.

The usual workaround

Keep the difference open and list the short-paid invoices in a spreadsheet with the reason, the person chasing it and a follow-up date. Or mark the invoice as fully paid and post the difference to a write-off account, which closes it at once. The spreadsheet drifts away from Odoo, and a write-off hides the deduction in an expense account where nobody follows it up. Neither shows how much the customer actually paid back.

One case per deduction

  1. Install Karelia Recover on Odoo.sh or your own server (Odoo 18, 19 or 20).
  2. Run Recover / Discover Short Payments for an invoice-date range. It proposes draft cases from posted, partially paid customer invoices and skips invoices that already have a case. Deductions can also be imported from a CSV file in the documented format.
  3. Review each case: the invoice, the deducted amount, a reason such as pricing, short delivery or damage, an owner, a deadline and the evidence. Start investigation freezes the evidence; later correspondence goes in the chatter.
  4. Mark the case disputed with your rationale, or let a manager accept the deduction with an explanation. Accepting creates no accounting entry.
  5. When the customer pays, allocate the new bank-matched payment that is reconciled on the invoice. A manager confirms the cash recovery once the full deduction is covered.
  6. Follow open cases with the Deadline passed filter, group them by reason or customer, and print a case summary.
Customer deduction case in Odoo 20 with invoice, reason, owner, deadline, deducted amount and confirmed recovery, synthetic demo data
One case per short payment

A partial payment can also be an agreed instalment. Discovered cases are drafts for your team to review; nothing is disputed, posted or sent to the customer automatically.

FAQ

How do I record a short payment in Odoo?

Register the payment for the amount received. In the payment dialog, choose Keep open to leave the difference on the invoice, or Mark as fully paid to post it to a difference account.

Does an accepted deduction count as recovered?

No. In Karelia Recover only new cash, matched to the bank and reconciled on the invoice, counts as recovered. Credit notes, write-offs and payments made before the investigation started do not.

Can it read remittance PDFs or EDI files?

No. Deductions are entered by hand or imported from a documented CSV format. PDF, EDI and retailer portals are not read.

More guides

More from Karelia Labs