A quick background: I work for a software company which sells software B2B. After the initial purchase, the software we sell works on a support renewal basis of either 1 or 3 years. There are only about 8 products available for purchase.
So that's the scenario. Currently, when purchases are made online the customer enters their details from scratch, even if they have purchased the product (or one of the other products) previously. A proper renewal is only handled by speaking to sales, who sets up a renewal invoice which can just be paid using a one page credit card form - completely separate from our store.
As you can imagine, having the customer enter their details each time means inaccuracies in the data received, so sales must manually link customers up. This causes issues with licensing - purchases online get licensed instantly - so changing details is a bit painful.
One solution floating around is having customers register/login upon return. This obviously solves the data match up nicely, but I'm concerned about how infrequently accessed the store is. With 99% users only returning, at most, once a year, having an account is almost wasted. It may not be the same person purchasing the next year, and they may not know which email was used to register (let alone what password). So we get new registrations each time and the data remains cluttered.
Has anyone come across this type of scenario before? How did you solve it?