I'm in the middle of this right now, where BA claim to have made a refund to an old, expired card.
I spoke to AMEX and they advised me to ask for various details, including a reference for the refund. Upon requesting this, BA said they could not provide it, but would make the refund to my new card.
They promised this would be done within 7 working days and this was over 2 weeks ago. I was told at the start of this week I would get the payment within a few days....am still waiting...