Here's the best deal that scales and does not have any unintended consequences.
During the verification process, check if the user exists, if so, check the orders in progress. If customers have orders in the process, then do not pay additional delivery if the delivery address matches their current order.
You will need to do this check again during the checkout process, because they can leave their basket in this way for any number of hours, and if their processing order was filled while their basket was sitting idle, you would have to eat an additional charge delivery.
A good added feature will tell them that their delivery is free and will be combined with their existing order.
source share