In this paper, we study two-way communication scenarios with energy harvesting. In particular, we consider the two-way and two-way relay channels with finite data storage. We solve the throughput maximization problem with finite batteries and finite data buffers. This entails iteratively solving an energy problem, which distributes the available energy over the course of the communication session, and a data problem, which schedules how much data to send at each node over the course of the communication session. We provide a directional waterfilling interpretation to the energy problem with the addition of water pumps and overflow protection bins. The data problem turns out to be a linear program which we solve by forward induction. We provide numerical results demonstrating the impact of the battery and buffer sizes on the achieved throughput. We observe, for communication scenarios of interest, that a relatively modest size of data storage is sufficient to harness the performance benefits of data buffering, i.e., to achieve the throughput values without buffer size limitations.