Courses (a patch test then a full set, say) take one deposit when the client books the first step. You get it then, less Stripe's costs, and it is used up by the steps that cost money, in order.
Repeat clients can ask for a booking to repeat. We hold their next visit only, tell them the day before we charge, and take the deposit 3 days before the visit. They can skip, move or stop at any time before that.
Neither ever needs approving, even if you approve bookings.