We use the Products and Price Lists within Dynamics 365 (CRM). There is an optional field called “override unit price” on the Billing Line of the Billing Schedule, which can be used to modify pricing for a particular invoice.