Abstract In this paper, a general periodic preventive maintenance (PM) policy for a repairable revenue-generating system is developed and studied. We define ‘ageing losses’ as the difference in revenues generated by an ideal system (no ageing) and a real system that ages over the same period of consideration. It is assumed that preventive maintenance slows the system deterioration process and therefore reduces ageing losses. The proposed model is general in the sense that (1) both the warranty contracts and system ageing losses are incorporated in the maintenance cost modeling and (2) the implementation of PM actions does not have to be strictly periodic. A cost model is developed for the buyer under two decision variables—the calendar time of the first PM and the degree of each PM. Numerical examples are then presented to show the effectiveness of the proposed model. Sensitivity analyses are further conducted to investigate the impact of model parameters on optimal solutions.