User data allowance trading is emerging as a promising field in mobile data networks. Mobile operators are establishing data trading platforms to attract more users. To date, there has been no coherent study on user data allowance trading. In this paper, we develop a truthful framework that allows users to bid for data allowance. We focus on preventing price cheating, guaranteeing fairness and minimizing trading maintenance cost. We model the data trading process as a double auction problem. We develop algorithms to solve the problem. The algorithms use a uniform price based on a competitive equilibrium to defend against price cheating and provide fairness, and use linear programming to minimize trading maintenance cost. We conduct extensive simulations to testify the proposed mechanism. Results show that our mechanism is truthful, fair and can minimize the cost of trading.