We describe the design and implementation of GNU Taler, an electronic payment system based on an extension of Chaum's online e-cash with efficient change. In addition to anonymity for customers, it provides the novel notion of income transparency, which guarantees that merchants can reliably receive a payment from an untrusted payer only when their income from the payment is visible to tax authorities. We show the provable security of our protocol, which in addition to the usual security properties also formally models conservation of funds and income transparency. Lastly, we contribute a novel Byzantine consensus algorithm, which could be applied to distributed ledgers.