Checkout session setup looks right. What I'd add before going live: you're trusting the amount from the frontend when creating the session. Move that to the server, look up the deposit amount from your own bookings table by id instead of accepting it as a parameter, otherwise anyone can pay €1 for a €200 deposit by editing the request.
Also set up the webhook for checkout.session.completed before flipping keys, not after, it's how you'll know a payment actually landed.