I tested the code bit more...
And found the problem.
The mistake happens in GCCV plugin from http://addons.oscommerce.com/info/9020
See checkout_process.php there...
require(DIR_WS_CLASSES . 'order.php');
$order = new order;
// load the before_process function from the payment modules
$payment_modules->before_process();
// Stock Check
$any_out_of_stock = false;
if (STOCK_CHECK == 'true') {
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
$any_out_of_stock = true;
}
}
// Out of Stock
if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
}
$payment_modules->update_status();
if ( ($payment_modules->selected_module != $payment) || ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
}
require(DIR_WS_CLASSES . 'order_total.php');
$order_total_modules = new order_total;
$order_totals = $order_total_modules->process();
The call $payment_modules->before_process(); have to be after $order_total_modules->process();.
The order_total process calculate the shipping tax and the payment before_order call paypal.
So if anyone else have the same problem by using "Credit Class, Gift Vouchers & Discount Coupons osC2.3.3.4" try the fix by moving this line.