To add tax to "ot_custom" class (or "ot_discount" if replace by it), you have to edit "admin/edit_orders.php" and modify like this :     1. Line 499 : tep_db_query("DELETE FROM " . TABLE_ORDERS_TOTAL . " WHERE orders_id = '" . (int)$oID . "'"); $j=1; //giving something a sort order of 0 ain't my bag baby $new_order_totals = array(); // Add tax to ot_custom bof $tax_to_add=0; // Add tax to ot_custom eof if (is_array($_POST['update_totals'])) { //1 foreach($_POST['update_totals'] as $total_index => $total_details) { //2 2. Line 517 : if ( ( ($order_totals[$i]['code'] == 'ot_tax') && ($order_totals[$i]['code'] == $ot_class) && ($order_totals[$i]['title'] == $ot_title) ) || ( ($order_totals[$i]['code'] != 'ot_tax') && ($order_totals[$i]['code'] == $ot_class) ) ) { //6 //only good for components that show up in the $order_totals array // Add tax to ot_custom bof if ($order_totals[$i]['code'] == 'ot_tax') { $order_totals[$i]['value'] += $tax_to_add; $order_totals[$i]['text'] = $currencies->format($order_totals[$i]['value'], true, $order->info['currency'], $order->info['currency_value']); } // Add tax to ot_custom eof if ($ot_title != '') { //7 3. Line 562 : } elseif ( (tep_not_null($ot_value)) && (tep_not_null($ot_title)) ) { // this modifies if (!strstr($ot_class, 'ot_custom')) { //3 // Add tax to ot_custom bof //This calculates tax on ot_custom $tax_to_add += $ot_value * $tax / (100 + $tax); // Add tax to ot_custom eof $new_order_totals[] = array('title' => $ot_title, 'text' => $currencies->format($ot_value, true, $order->info['currency'], $order->info['currency_value']), 4. Line 577 : //save ot_skippy from certain annihilation if ( (!in_array($ot_class, $written_ot_totals_array)) && (!in_array($ot_title, $written_ot_titles_array)) && (tep_not_null($ot_value)) && (tep_not_null($ot_title)) && ($ot_class != 'ot_tax') && ($ot_class != 'ot_loworderfee') ) { //7 //this is supposed to catch the oddball components that don't show up in $order_totals $new_order_totals[] = array( 'title' => $ot_title, 'text' => $currencies->format($ot_value, true, $order->info['currency'], $order->info['currency_value']), 'value' => $ot_value, 'code' => $ot_class, 'sort_order' => $j); //$current_ot_totals_array[] = $order_totals[$i]['code']; //$current_ot_titles_array[] = $order_totals[$i]['title']; $written_ot_totals_array[] = $ot_class; $written_ot_titles_array[] = $ot_title; // Add tax to ot_custom bof //This calculates tax on non-standard $tax_to_add += $ot_value * $tax / (100 + $tax); $order->info['total'] += $ot_value; // Add tax to ot_custom eof $j++; } //end 7 } //end 2