This is not going to be resolved at a player level this is at a corporate level and database level.
Here is how this played out. I am a former XIV player before the re-boot. Right Before HeavenSward became available Steam had a sale on the game. So I purchased both copies on steam. I was able of course to access XIV immediatly and started going through the main quest with very little knowledge of the issues that would occur just a few days later.
On early access I tried to gain access by following every bit of information I could find and I received the "Code not Valid" Of course contacting Square at this time is crazy as its release time but after TWO days I did get help and they said contact Steam.
Here is the Issue. I have a PC account and you CAN NOT activate Heavensward on a PC account with a Steam Code, even if you purchased both from Steam. Its because the original account is PC.
So contact Steam is the resolution and ask for a refund. Their reply is sorry you have been playing for over 3 hours. YES but only the original game not the expansion. Sorry no dice.
The only way I could correct the issue was to Create a entirely new account for Steam, this obvisouly did not transfer my old character or anything from the past.
To keep my old stuff I had to re-purchase Heavensward for PC and that allowed me to keep my old character.
So now I have two accounts one for steam and one for PC. Only one obviously is on a monthly charge the other is a wasted copy of the original game and Heavensward.
I wish I could tell you I was the only person to have this issue, but on the Steam forums there are swarms of people having this issue, most are just walking away.
They wont pay for the game twice to play it.
I hope this explains in detail the issue. I think the resolution in simply on the database side between you both. Keys should be universal between Steam and Square. Its the same game...why they are not is a corporate issue and then a code issue getting all those codes activated on old accounts.
Anyway hope this helps! I dont want the company to lose players over a really dumb database error between two great companies.
I have an extra copy of the game that I can do nothing with. #WastedMoney