A potentially larger issue is how you communicate changes in the array of receipts. There are two huge red flags for me here: the use of lifecycle events to manage data retrieval, and passing of naked data. See this post for more information and a suggested alternate design.
As for the total, I would recalculate it when a new array of receipts presents. This could either be done in the service or in the page. I would make that decision based on whether anybody aside from that page cares about the total. If not, I’d do it in the page. If so, in the service.