Skip to Content

Offsetting in Odoo: a signed document, not an afternoon's reconciliation

October 29, 2026 by
Offsetting in Odoo: a signed document, not an afternoon's reconciliation

You have a partner you sell to and buy from. You owe them 40,000 lei, they owe you 52,000.

The bad option is familiar: two crossing payments, two bank charges and a week in which the same money takes a pointless tour through two banks.

The normal option is offsetting: a document signed by both parties that settles 40,000 lei in both directions, leaving a receivable of 12,000.

The problem is that an international ERP has no such function. What it has is manual reconciliation — and that is exactly where the difference between an offset and an improvisation begins.

Why a reconciliation is not an offset

Technically, you can reach the same accounting result by matching lines by hand. In practice, you lose three things:

  1. The document. The offsetting report is a deed signed by both parties and kept on file. If all the system holds is a line match somebody made one afternoon, a year later nobody knows what was offset, on what basis and with whose agreement.
  2. The state. An offset has a cycle: it is prepared, it is signed, it takes effect. A reconciliation only has "done".
  3. Clean reversibility. A wrong offset has to be undone, not "offset back" with another document that tangles the balances further.

What the flow looks like in Odoo

The module adds its own offsetting model, with a status bar — draft, done, cancelled — and a chatter, so with a full history: who did it, when, what changed.

Step 1 — pick the partner and the date. The document gathers the unreconciled lines from the partner's receivable and payable accounts, as at the chosen date.

Step 2 — pick what gets settled. On each line you decide how much is offset: in full or in part. A large invoice can be settled halfway, exactly as far as the debt on the other side reaches.

Step 3 — validate. A single balanced entry is posted, in a miscellaneous operations journal, which closes the matched lines through Odoo's standard reconciliation.

After that, the invoices involved look like any settled invoice. They do not sit in a special state, they need no separate treatment at closing, and they surprise nobody in the partner balance.

Cancelling, when something went wrong

Cancelling resets the source entry to draft and then cancels it, releasing the previously reconciled lines. The invoices become open again, with their earlier balances.

What matters is that this is done from the document, not by unpicking the reconciliation by hand: the document stays in the system, cancelled, with its history. You can see that an offset existed and that it was cancelled — which, during an audit or a conversation with the partner, is exactly the information needed.

What to check beforehand

Offsetting is a simple operation that turns complicated if the data is not clean. Four checks catch almost everything:

  1. The partner is the same on both sides. Branches, places of business, duplicate records — all produce the situation where the receivable sits on one partner and the payable on another. Offsetting happens on the commercial entity, so the records have to be linked correctly.
  2. The documents are validated. Lines in draft do not exist as far as offsetting is concerned.
  3. They are not already partly reconciled with something else. If an invoice already has a partial payment, only the remaining balance enters the offset.
  4. The agreement exists. Offsetting presupposes both parties' consent, and the generated document is the record of it. First you agree, then you record — not the other way round.

When it is worth using

In any two-way commercial relationship, but especially:

  • distribution with returns of packaging or goods, where invoices flow in both directions every month;
  • cross services between companies in the same group;
  • work with subcontractors who are customers at the same time.

For those companies, monthly offsetting is not an exception but a routine. And a routine deserves a document, not a repeated improvisation.

In short

The difference between offsetting and reconciliation is not an accounting one, it is documentary. The result in the balances can be identical; what differs is whether, a year from now, you can still explain what happened.

The module is on Odoo Apps, for Odoo 19 and 20: Account Compensation.

If you want to see how it looks on your partners with two-way flows: nexterp.ro/contactus.

Offsetting in Odoo: a signed document, not an afternoon's reconciliation
October 29, 2026
Share this post
Archive