We consider the problem of designing an expected-revenue maximizing mechanism for allocating multiple non-perishable goods of <inline-formula><tex-math notation="LaTeX">$k$</tex-math></inline-formula> varieties to flexible consumers over <inline-formula><tex-math notation="LaTeX">$T$</tex-math></inline-formula> time steps. In our model, a random number of goods of each variety may become available to the seller at each time and a random number of consumers may enter the market at each time. Each consumer is present in the market for one time step and wants to consume one good of one of its desired varieties. Each consumer is associated with a flexibility level that indicates the varieties of the goods it is equally interested in. A consumer’s flexibility level and the utility it gets from consuming a good of its desired varieties are its private information. We characterize the allocation rule for a Bayesian incentive compatible, individually rational and expected revenue maximizing mechanism in terms of the solution to a dynamic program. The corresponding payment function is also specified in terms of the optimal allocation function. We leverage the structure of the consumers’ flexibility model to simplify the dynamic program. Our simplified dynamic program allows us to provide an explicit allocation procedure and a simple payment rule in terms of the solution of the dynamic program.