There are many ways I can think of to crack this together, but I want to know what is best here:
I have three tables. Products, price lists and prices.
One product may belong to many price lists.
One price list may belong to many products.
This relationship is many, many, and as far as I know, a Junction table (pricelist_products) is required. It works well.
Now one product in the price list can have several prices. A product only ever gets a price when it is included in the price list.
What I thought of is using the identifier from the pricelist_products navigation table as a foreign key in the price table, but is it really ... hacky?

Fishy example:
Product 1 - fishing rod.
Price List A - Fishermen.
Price List B - Fishingshop.
Price List A, Product 1, Price 1: (Monthly repayment option 1 (no deposit))
Price list A, Product 1, price 2: (Monthly repayment option 2 (with deposit))
Price List A, Product 1, Price 3: (Quaterly repayment)
Price List B, Product 1, Price 1: (Quaterly repayment)