Customer and Supplier as one Party - Please contribute to bounty

In the real world of retail/wholesale business, most likely, some customers are also our suppliers. In this case, we are making invoices and bills for the same party… That is why is better to have just so called Party with the option to make it customer and supplier.

In this case, for reconciliation purposes, supplier and customer Statement will be merged for the purpose of getting net of the actual payable or receivable for reconciliation as same in Odoo… But for reporting purposes, if invoices and bills are not yet paid, it still should be shown as separate accounts in the financial statements as payable(in liabilities section) and receivables (in asset section)…

In getting the statement showing both balances of receivables and payables, there should be a button which can be used to offset amount with invoices and bill in case the party would want to pay only for the net outstanding balance for all invoices and bills. When clicking the button, it should automatically go to a journal entry wherein invoices and bills can be allocated to each other in order to allocate amounts which should take effect the offsetting of amounts to apply the receivables to payables and vice versa…

Link two bounty Bountysource
Discussions on the topic
Ability to use supplier as customer
How to make a common Customer & Supplier? - #17 by sheno


Please expand this and make the whole part list configurable. So a Student is a Party, An Employee is a Party. A Teacher is a Party. A Guest (think ERPNext Hospitality) is a Party. A Patient (Think ERPNext Healthcare) is a Partt. A Donor (think ERPNext for Non-Profits) is a Party.

Let’s rebuild the party type to make it totally configurable.

Not sure if it is technically feasible though. @rmehta can weigh in.



@JayRam that is already being done separately

lets have focussed bounties!

Edit: The core feature required is the ability to cancel invoices against each other right?

Maybe an addition in Payment tool?

@rmehta It needs to be reflected in Ledger properly as well and ability to generate the statement for example
Vendor-Customer Invoice - 10000
Vendor-Customer Bill - 5000
Net Payable/Receivable - 5000

This needs to reflect on each vendor-customer whether there is a due or we need to pay her. Also credit checks needs to be handled accordingly if possible.

Essentially we need ability to treat same entity as vendor as well as supplier, so all customer invoices go in debit and vendor bill go in credit of the same entity instead of separate entity which may be happening now.

I am not really sure if this can be done by just additional payment tool.

I think I found a solution by a work around for The problem of reporting the net balance of the same (customer/supplier) entity:

  • register the entity who is a supplier

  • And a customer by the exact same name.


  • Use each one on their relevant transactions, so, you will issue sales invoices for the Customer, and purchase invoices for the supplier who has the same name.

  • When you need to create a report that gathers both the supplier and the customer at the same page, with transactions in a historical order, and the correct balance of both of them by the last time, do the following:

  • Avoid using Party type and the party filters in the standard filter.

  • In the standard filter pick: “Group by party

  • Use the Instant search filter in the general ledger table itself as in the following image by filtering only the party name (without defining the party type)

So, the person name is “Ezat Sayed
And he is double recorded, once as a supplier, and once as a customer.
when we use this filter, he will appear with two records, sales invoice (with his customer account) and purchase invoices (with his supplier account).
And the balance is correct by the last line. (The balance is correct because we picked group by party)

  • When you print, or convert to PDF

  • And when you export to Excel, it will export the filtered records of “Ezat Sayed” as a supplier + customer, and with the correct balance in the last line as well.


Thanks for sharing

Altho I can’t say I grok much of this…

This solution doesn’t allow the user to put the same company as a supplier and a customer in the same time.
It requires that we will have a supplier by a name, and a customer by the same name, and each one has their relevant transactions.
The point is, we can find out the net balance of this entity in one place.
We won’t have to look for its transactions and balance as a supplier once, and then go to look for its transactions as a customer, and then compare balances to see how much we or they owe.
This work around enables the user to have a very fast and easy report gathering all the transactions of a supplier and a customer with the same name.


This actually works

Simple solution to an otherwise complex problem, Lol

Am trying to think of a reason why this cannot be used in a real life situation

1 Like

@ETCOMed_Eg Thanks for sharing your idea.

How I can test this?

Guys give some :heart: to the solution.

1 Like

I edited the original answer to explain the use case in details. Please check



hats off for a truly innovative solution.

1 Like

Thanks for above solution. Everything is fine except the balance. Please see the screenshot.

Please help me to find solution and my mistake.

this is a very late reply but better than never.
This problem is solved in a newer version (V13.11…) and later. by a feature called “Party Link”
If you are updated, check it in “Accounting Settings” (Enable Party link).
It is already integrated in the main version, but the explanation of how it works is in this link (the contributor had it as a custom app)
Double Ledger Parties (Customer / Supplier as same party) - Developers / App Development - ERPNext Forum

1 Like