"It is working fine except that some data is being cached by the loop"
What is it that is being cached here? The only thing I can think of is that your request is being cached? (so after a while, the payment status is actually changed, but it still gets the old cached data?)
http://php.net/manual/en/function.clearstatcache.php
clearstatcache is not for that ;)
You could use the curl setting:
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
to force using a new connection every time
You could also add a unique GET parameter to the URI:
$payStat = $this->global_Curl($data, 'api/payment/status?cachebuster='. microtime(true))->data;