This sounds like you are setting up a tax on paypal's side.
What happens is the store checks for the total payment that was sent to paypal. But paypal is sending back a different total since it is added tax.
Which version of the store are you using?
An option is to remove the security checks for payment amount changes.
Open storeipn.php
Find
if ($securehash != md5($mc_gross . $modSettings['store_hash'] ))
{
//$hash2 = md5($mc_gross . $shipping . $modSettings['store_hash'] );
mail($notify_email, "Store IPN AMOUNT CHANGE", "IPN Amount change detected. The amount sent ($mc_gross) did not match the amount due. \n $res\n $req");
$payment_status = 'IPN Amount Change';
//die('The amount you sent in your payment did not match the amount due');
}
Change to
/*
if ($securehash != md5($mc_gross . $modSettings['store_hash'] ))
{
//$hash2 = md5($mc_gross . $shipping . $modSettings['store_hash'] );
mail($notify_email, "Store IPN AMOUNT CHANGE", "IPN Amount change detected. The amount sent ($mc_gross) did not match the amount due. \n $res\n $req");
$payment_status = 'IPN Amount Change';
//die('The amount you sent in your payment did not match the amount due');
}
*/
And one more place
Find
if ($securehash != md5($mc_gross . $modSettings['store_hash'] ))
{
//$hash2 = md5($mc_gross . $shipping . $modSettings['store_hash'] );
mail($notify_email, "Store IPN AMOUNT CHANGE", "IPN Amount change detected. The amount sent ($mc_gross) did not match the amount due. \n $res\n $req");
$payment_status = 'IPN Amount Change';
die('The amount you sent in your payment did not match the amount due');
}
Change to
/*
if ($securehash != md5($mc_gross . $modSettings['store_hash'] ))
{
//$hash2 = md5($mc_gross . $shipping . $modSettings['store_hash'] );
mail($notify_email, "Store IPN AMOUNT CHANGE", "IPN Amount change detected. The amount sent ($mc_gross) did not match the amount due. \n $res\n $req");
$payment_status = 'IPN Amount Change';
die('The amount you sent in your payment did not match the amount due');
}
*/