In order to identify and remove duplicate purchases, a unique purchase id needs to be passed in s.purchaseid variable on hits with a purchase.
If a purchase id is passed in with the hit on which a purchase occurred (purchase event is set), the purchase id is stored on servers. The amount of time it is stored for is not really defined, but could be at the least, several months.
Any hit that comes in at a later time with a purchase event set on the hit and has a purchase id that is found in the table with previous purchase ids is considered to be a duplicate purchase hit.
If a hit with a purchase (purchase event set on the hit) is passed in WITHOUT a purchase id in the hit, then Adobe Analytics uses information from the hit and creates a "temporary purchase id" for this particular hit/purchase. This temporary purchase id applies to the visitor (visitor id) of this particular hit only. The previous 5 temporary purchase ids are stored for each visitor id (per report suite).
Any hit that comes in at a later time with a purchase event set on the hit but WITHOUT a purchase id in the hit then has the "temporary purchase id" created and it is compared to the five previous temporary purchase ids stored for that visitor id (for that report suite). If it matches one of those five, then the hit is considered to be a duplicate purchase hit.
On the sixth (non-duplicate) purchase by a visitor (for a report suite) that doesn't have a purchase id passed in (so a temporary purchase id is created) the first such purchase will have its temporary purchase id no longer stored.
If a hit is determined to be a duplicate purchase, no commerce information is updated for that hit (even if there are other commerce events on that hit).