Multi-currency price list


I have a question regarding the functioning of price lists: can one price list handle multiple currencies?

My problem is that if I create one price list per currency, I will have to remember for each item which is the corresponding price list.

Any good way to manage this? I’d like to have only one price list for selling (I do not need different price lists) but with item prices in multiple currencies.

Not sure, As of now, you will have to create separate price lists for each currency. Maybe you can name the price list as the currency?

Thanks for the answer. It means that I will have to know for every item which currency is used to select the right price list?

Sent from mobile device

@mouuuton Did you ever solve this problem?

the original Topic is 6 years old, so many things could have happened to the internal logic of ERPNext. In that regards I would say the question is kind of out of context.

On this particular matter I think the logic “one pricelist per currency” is still in place and I don’t see any reason to do it differently. Can you provice a usecase you have in mind?

The scenario I have:
The distribution company is buying different items from multiple international suppliers (-> the imported buying prices are in different currencies, e.g. USD, EUR). The customers are getting these items in one quotation /invoice in their local currency (can be again EUR or something else).

Item A from supplier A. buying price is 100 Euro.
Item B from supplier B. buying price is 100 US Dollar.

Customer wants to receive the quotation for these two items in EUR. Not sure what the easiest way to process this would be?

1 Like

each Supplier and each Customer has a Currency assigned to them (this can be your companies base currency or a different forreign currency)

the customer will always receive a Quotation/Sales Invoice in it’s assigned currency. You can not quote/invoice anybody in any other currency, no matter what your default currency or the supplier’s currency.

@vrms thanks for you support and quick reply!

i agree with your statements.
the problem I have: to add itemA (buying and selling price available, in EUR price list, via import) and itemB (buying and selling price available in USD price list, via import) into one quotation, I need to have prices in one currency within the same pricelist. This would be an additional manual step including manual exchange rate management?
because as far as I see, the quotation only takes the selling rates from the one price list selected in the Quotation.

Again, maybe I am still misunderstanding the concept or overlook something…

Edit: if I select one pricelist after another, the system takes the correct prices from the lists and keeps them in the quotation item list.

  1. you can always manually out any price on a quotation/invoice, not matter of any existing item price entry
  2. not 100% sure whether it behaves like that but I would imaginge in case you do not have any item price entry on the same currency’s pricelist then your customers currency the system may do the exchange automatically based on the live rates picked.

are you aware of the selling an buying distinction of item price entries? So an item buying price EUR can never appear in a Quoation/Invoice neither in EUR, nor any other currency, because it is just on the wrong side of things (which is a good thing, as you wouldn’t sell any item for the same price as you buy it unless you have a very unusual business model.

translation of buying into a selling price always (in the logic of ERPNext at least) is a manual process. I am not really aware of any automatism for such


it actually won’t, but create an item price entry in the price list in the Customer’s currency once you create a price manually in the Quotation/Invoice.

1 Like

thanks for your patience. I was investigating and also clarifying our requirements.
the solution we are currently testing is based on an “automated” switch of price lists based on a property of the item.
not sure yet if it solves/survives all use cases.

frappe.ui.form.on("Quotation Item", "item_code", function(frm, cdt, cdn) {
var d = locals[cdt][cdn];
    frappe.db.get_value("Item", {"item_code": d.item_code}, "mainitem", function(value) {
        d.mainitem= value.mainitem;

frappe.ui.form.on("Quotation Item", "item_code", function(frm, cdt, cdn) {
          var d = locals[cdt][cdn];
		if (d.mainitem== '1'){
		    frm.set_value("selling_price_list", 'MainPricelist');
		else {
		  frm.set_value("selling_price_list", 'SecondaryPricelist');