We consider a dynamic pricing problem for a consumer electronics trade-in program. The trade-in program offers two options: trade-in-for-cash and trade-in-for-upgrade. The firm sets trade-in prices and resale prices to maximize its total expected profit. Given the challenge of solving the problem using dynamic programming, we develop simple and provably effective heuristic policies. We first propose a policy termed Static Control policy and show its profit loss is in the order of O(T1/2), where T is the number of selling periods. We then design a Batched-Adjustment Control policy, which dynamically makes price adjustment based on the realized uncertainties. The profit loss of BAC is in the order of O(T1/3).Finally, we study three extensions of our model: initial stocking of new products, additional features of trade-in programs, and vertically differentiated products. We extend the dynamic policy and its theoretical performance analysis to all three extensions.