iATS recurring payments: "mismatched contact id for the customer code"
Table civicrm_iats_customer_codes does not have the correct Customer id to match what iATS has on file. This is likely because you edited or merged the customer at some point and something got messed up in the process.
You can use the iATS web portal to view what customer code (I know you said you found it already--but the next person might not know where to find it) iATS has associated with that donation. You can look under reports for the donation or in the Virtual Terminal for the customer name.
You can use the API Explorer to find what civi has for the iATS customer id in the civicrm_iatscustomer_codes table. I used the settings below to find what customer ID is currently in Civi. Locate the invoice id associated with the failed transactions. Then search for that. Click the Execute button and search for "cstc": "AXXXXXXXX",in the returned data. 
WARNING; you can change your data via the API so poke around in there with caution. Generally a Get action should be safe but create, edit, or replace actions will make changes.


To fix the problem you will need to change the Customer Code for that entry in your civicrm_iats_customer_code table so it matches what iATS. iATS does not let you edit the customer code at their end so you have to do it on the civi end.