I belong to a large professional organization - we have a monthly lunch meeting, which requires us to provide a confirmed head count in advance to the venue. And we are then charged for that head count, at a minimum.
We used to allow payment on site, however, that led to a large number of no-shows, and we still had to pay. In people's defense, it is possible they don't realize this, but the only way to enforce it is to require advance payment.
We started doing that, and while we still have some no-shows, we do have their money. We also take walk-ins, space permitting.