Когда я делал систему начисления платежей за работу- закладывал логику отката операций. Иногда на этапе тестирования дыры возникают в настолько неожиданных местах... поэтому в "идеальной бизнес логике" нужно связывать все эти сущности- транзакции, списания и прочее. Сперва проверка на возможность операции, после выполнение- успешность выполнения. Если нет- откат, ошибка. Бывает всякое)