Is it possible to make a SELECT wait until an ongoing UPDATE finishes?
"sufficient balance to perform an operation", this should be one transaction, the check and the operation, otherwise the check is a waste of time.  Plenty could happen between check and operation, if you separate them.