How should one sell an item to a buyer whose value for the item will only be realized next week? E.g. consider selling a flight to some executive who may or may not have a meeting with a client next week. Suppose that both the seller and the buyer only know a distribution, F, from which the buyer's value, v, for the item will be drawn. One way the seller could go about this sale is to make a take-it-or-leave-it offer today. The offer reads "pay E[v] today to get the item next week." A risk-neutral buyer would find this offer attractive, hence the seller would extract the full surplus, E[v]. The unsettling feature of the afore-described mechanism is that, for some realizations of v, the bidder ends up with negative utility. In particular, while our mechanism is interim Individually Rational (IR), it is not ex-post IR. How could we fix this? One way is to wait until next week when the value is realized and make a take-it-or-leave-it offer of the item at an optimal monopoly price, a price p maximizing p (1 - F(p)). The new mechanism is clearly ex-post IR, but its revenue could be much smaller than that of the previous one. Still, this trivial mechanism extracts the best possible revenue among all ex-post IR mechanisms, as a simple argument can establish. However, this optimality argument fails when several items are to be sold over consecutive periods. In this paper, we provide a characterization of the revenue-optimal, ex-post IR, dynamic mechanism selling k items over k periods to a bidder whose values are independent. In particular, we optimize the seller's revenue subject to the following strong individual rationality condition: at each period, the stage utility of the agent, defined to be the surplus from that period's allocation minus the agent's payment, must be nonnegative. In particular, the non-negativity of the stage utilities implies that, at the end of each period, the agent's realized utility from participating in the mechanism so far is non-negative. We provide extensions to multiple bidders and an infinite horizon with discount factors. Results. Our characterization reveals structural properties of optimal mechanisms. We show that there exists an optimal mechanism in which, in all periods except for possibly the last, the stage utility of all realized types of the agent is zero; that is, every type is asked to pay its surplus from the allocation. To satisfy incentive compatibility, the mechanism maintains a scalar state variable that dictates the future allocations and payments. More precisely, we show that an optimal mechanism can be described by two functions that depend only on the current state of the mechanism and the agent's bid (rather than the full history of bids): an allocation function that specifies the probability of allocating the item (and hence the payment due to the afore-described surplus extraction), and a state update function that specifies how the state variable should be updated. We provide a characterization of allocation and state update functions that will result in feasible mechanisms, and a recursive family of static single-dimensional problems, the solution to which are the optimal allocation and state update functions. These can be identified via backwards induction. Moreover, our characterization allows us to design simple mechanisms that guarantee at least half of the optimal revenue and are efficiently computable, for any k. While the optimal mechanism needs to carefully balance revenue gain at each period with updating the state variable in a manner that allows for more revenue in the future, the 2-approximately optimal mechanism is based on much simpler tradeoffs. We show that randomizing over two simple mechanisms gives a 2-approximation to the optimal revenue. The first mechanism simply ignores all history and myopically maximizes revenue in each period. The second mechanism ignores the bidder's report in each period to compute the allocation in that period. Instead it allocates the item with a probability that only depends on the state variable, which itself is updated as a simple function of each period's allocation probability and report. Thus, compared to the optimal mechanism, the 2-approximation is described using fewer parameters. Similarly to the optimal mechanism, the 2-approximation is found via backwards induction. Techniques. A natural approach to identifying the optimal dynamic mechanism would be to attempt a k-period dynamic programming formulation. Indeed, we are seeking an optimal collection of allocation and price rules, (equation presented), where (equation presented) represents the probability that the item is allocated to the bidder in period i, as a function of his reports (equation presented) in all periods up to period i, and (equation presented) records the expected price paid by the bidder in period i. What makes the problem challenging is that the choices we make for the allocation and payment in period i will affect the incentive constraints for all periods < i. This makes the representation complexity of the internal states of the naive dynamic programming formulation explode. Yet, our characterization shows that a more tractable dynamic programming formulation exists. The interesting feature of our formulation is that is nests its subproblems in the opposite way than the naive one, namely the last period's optimization sits inside the nested sequence of problems while the first period's optimization sits outside. More importantly, it maintains a sparse representation of the decisions made by the dynamic program in periods > i that it passes on to period i. In particular, the information does not explode (in the number of periods) as we exit the nested sequence of optimizations. Ultimately our characterization amounts to reducing our dynamic programming formulation to a type of single-item revenue-utility tradeoff problem. The goal in this problem is to optimize a linear combination of the seller's revenue and a given function of the bidder's utility. In the absence of the latter term, this problem can be formulated in terms of the allocation function, and can be point-wise optimized leading to 0-1 allocation rules. With the utility term, it becomes more natural to formulate the problem in terms of the bidder's utility function. We characterize the optimum of this problem and show that the optimal mechanism may involve fractional allocations. More details and discussion of related work can be found in [Ashlagi et al. 2016].