I dug into the code:
Firstly, in my humble view, it could use splitting into separate functions. One function is almost 400 lines long, making investigation hard.
I think I've seen the problem though. If your version of civicrm is less than 4.7.12, it won't activate a lot of the logic for recurring contributions.
https://github.com/iATSPayments/com.iatspayments.civicrm/blob/a92dd620a8975469e65372b3e34c812e5130faa1/iats.php#L244
function _iats_civicrm_use_repeattransaction() {
$version = CRM_Utils_System::version();
return (version_compare($version, '4.7.12') < 0) ? FALSE : TRUE;
}
For example, line 1425, which decides if to use line 1448, which currently reads:
$complete['is_email_receipt'] = empty($options['is_email_receipt']) ? 0 : 1;
try {
$contributionResult = civicrm_api3('contribution', 'completetransaction', $complete);
}
Update
Oh, and there are also two unmerged patches from solid contributors:
https://github.com/iATSPayments/com.iatspayments.civicrm/pulls