From Puno we took an international bus to get to Copacabana, on the other side of Lake Titicaca in Bolivia. The whole journey took around 3 hours including the border crossing. The buses all leave from the terminal terrestre in Puno, which is about a 10 minutes taxi ride from the town centre for 5 soles. The buses tend to leave at around 7am for the morning and then again early afternoon, so we opted for the morning departure.
To make things easy we had already bought our tickets the day before from an agency in town for 25 soles each and they provided us with the actual ticket, instead of just a voucher to then change at the terminal. One thing to note is that you have to pay departure tax at the terminal before being allowed out to your bus, this was only 1 sole per person and they give you a sticker to prove you paid.
The bus follows the road around the lake for the whole of the journey and makes for a nice view if you sit on the left-hand side of the bus. After about 2 hours you reach the border with Bolivia. From here you have to present your immigration form from entry into Peru, which is stamped. You then go next door and have your passport stamped out.
Once you are formally stamped out of Peru you have to walk along the road for 200m through an arch which signifies you are now in Bolivia. Along the way and on both sides you will find money changers, snacks and toilets. Once in Bolivia you will see a building on the left where there are a couple of guys behind desks stamping people in. The whole process is very simple just make sure you have a filled in immigration form at the ready. If you travel with any international bus company they will provide you with one at the start of your journey. As a note there are no fees to pay for either country if you are a european citizen.
Once ready we all re-boarded the bus for the final 30 minutes to Copacabana. Those who were travelling onwards to La Paz had an hour or so to wait for a different bus to pick them up and carry on their journey.