Is there any way to delete ubercart role expiration through rules in Drupal 7
It seems that you are removing the role through the drupal standard rules. Try calling the own uc_ubercart function to better compatibility.

/**
 * Deletes an expiration using user id or user id and rid.
 *
 * This function deletes expirations associated with users and roles. If
 * no role ID is passed, the function deletes all role expirations associated
 * with the given user. Otherwise, the function only deletes expirations whose
 * user and role IDs match. If any roles were actually deleted, the function
 * notifies the user. The menu cache is then flushed, as privileges to view
 * menu items may have been lost in the process.
 *
 * @param $account
 *   A Drupal user object.
 * @param $rid
 *   A Drupal role ID.
 * @param $silent
 *   When set to TRUE will suppress any Drupal messages from this function.
 */
uc_roles_delete($account, $rid = NULL, $silent = FALSE) {}


An example with custom module (without rules):

https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hook_node_insert/7

/**
 * Implements hook_node_insert().
 */
function mymodule_node_insert($node) {

  if ($node-&gt;type == 'customtype') {
    $rid = 3; //@TODO: set rol ID
    $account = user_load($node-&gt;uid);
    // Delete UC Role!
    uc_roles_delete($account, $rid, TRUE);
  }

}


You can also use this code on the rules action PHP but I prefer the hook.