If you want to ensure that the payer account is not overdrawn by this transfer, you can additionally have a stream processor (partitioned by payer account number) that maintains account balances in a local database and validates transactions based on that state. Only valid transactions would then be placed in the request log in step 1.