Approval can come by hand or automatically after the approval delay. A refund through POST /v2/transactions/{id}/refund doesn’t fire it: you get transaction.updated, so refetch that transaction’s commissions.
Every webhook is delivered as JSON with the same envelope, commission.updated carries the commission in data: