Bloat wouldn't even account for a delay this long. This seems to be the realm of bad design or overly cautious developers. My guess is that 'printing the receipt' really means process the transaction hitting a bunch of different record stores and APIs along the way and that the system waits for all of that to complete before sending the print job.