Is it safe to insert the newest row with SELECT INTO?
You could kind of make it work if you included a change_id in the table, had a unique index on (account_id, change_id), and always incremented change_id by 1 from the previous value for that account_id.  Then on conflicting inserts to the same account_id, one will fail with a unique constraint violation and need to re-try.

You could do it in one insert into ... select statement.  Or you can do it in two separate statements as long as they are in one transaction, and the first statement selects both balance and change_id simultaneously.

I think it is horrible design.  But it can work.  Really you have two entities, a transaction and an account, and so should have two tables rather than trying to cram them into one.