I forgot to mention I used a railcard, so the actual fare I bought was
this
Both journeys were also in 'peak' time.
Yes, to perform a calculation accurately we would need to know details like that

As an undiscounted
ODT is also £19.60, however the respective London Thameslink fares are different.
In that case, I would argue (but no doubt GTR would disagree with me) that the value of those journeys is ~£7.80 each way (half of the £15.65
SDR) and you should be entitled to £3.90 each way.
The problem with tickets that permit multiple journeys is that it is difficult to have universal agreement for a fair method of assigning 'value' to any particular leg for which that ticket was used. It's difficult to argue that you should be entitled to less than the relevant proportion of a Harpenden-London ticket, especially if all you did was a couple of tube journeys off-peak (which, for comparison purposes, would have cost less on their own than what you paid if you had an Oyster loaded with a Railcard discount, but would have cost more if you didn't). But there is no way for the train company to know what you did in London and arguably it wouldn't make sense to pay people holding the exact same fare, who incurred the exact same delays, differing amounts and wouldn't be practicable either.
I'd simply state what I think the calculation should be, and say that you trust they will send you the difference. I'd add that if they are not prepared to send the difference, I would like a breakdown of exactly how they calculated that sum and state that I would take the matter to London Travelwatch. That alone should make GTR go for the easy option and simply send you the difference.