So if the "send email" step fails (temporarily), the next worker to come along will grab the same receipt and send it again?
I think a better solution would be to use a centralized queue that actually does the mail sending, and retries in case of failure.