Is it advisable to asynchronously update the summary table every time a transaction is deleted?
1M/year is 2 per minute.  You can do a lot of updating in 30 seconds.  1M/day (12/second) would be more exciting.

Do you need to rerun the summary queries?  Can't you just do a subtract via an UPDATE?  Possibly fast enough to be synchronous.

How often do you need to post a correction?  If it is rare, consider adding a row to the summary table with a negative number.  Then, when you do your reports, the SUM() comes out right.  (You do sums, correct?)

It seems just wrong to have summary tables but to continually rebuild the table.