I changed the rate to List, and the error is gone. I'm getting the fedex rates now. So, the problem is somewhere in the code for the account rates:
else // For ACCOUNT Discounted Rates, calculate the cost as below
{
$cost = ($rateReply->RatedShipmentDetails[0]->ShipmentRateDetail->TotalNetCharge->Amount)/MODULE_SHIPPING_FEDEX_WEB_SERVICES_CURRENCY;
$cost = (float)round(preg_replace('/[^0-9.]/', '', $cost), 2);
} // For ACCOUNT Discounted Rates, END
$transitTime = ''; // 9.4.6
if (in_array($rateReply->ServiceType, array('GROUND_HOME_DELIVERY', 'FEDEX_GROUND', 'INTERNATIONAL_GROUND'))) {
$transitTime = ' (' . str_replace(array('_', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteeen'), array(' ', 1,2,3,4,5,6,7,8,9,10,11,12,13,14), strtolower($rateReply->TransitTime)) . ')';
}
if (isset($rateReply->DeliveryTimestamp)) {
// $transitTime = ' (Estimated Delivery on: ' . date('l, F jS Y \a\t g:ia', strtotime($rateReply->DeliveryTimestamp)) . ') ';
$transitTime = ' (Estimated Delivery Date: ' . date('l, F jS Y', strtotime($rateReply->DeliveryTimestamp)) . ') ';
}
$methods[] = array('id' => str_replace('_', '', $rateReply->ServiceType),
'title' => ucwords(strtolower(str_replace('_', ' ', $rateReply->ServiceType))) . $transitTime,
'cost' => $cost + (strpos($this->types[$rateReply->ServiceType]['handling_fee'], '%') ? ($cost * (float)$this->types[$rateReply->ServiceType]['handling_fee']/100) : (float)$this->types[$rateReply->ServiceType]['handling_fee']));
// }
}
}