Came across this one recently – Pagseguro is a Brazilian payment processor Pagsegurowith a built in postal calculation function.

All of a sudden the client’s store was throwing errors on checkout:

O VALOR do item 1 não foi informado.
O VALOR do item 2 não foi informado.

and so on.

Using HttpFox I could see that the correct value for the currency (tep_draw_hidden_field(‘moeda’, ‘BR’)) was being passed to the payment server but no values for the individual items in the order.

After a bit of digging I found that the client (ahem!) had been in the store admin and he had changed the currency code for Brazilian Reals to ‘BR’ from the existing ISO-4217 code ‘BRL’ so that it would match the  ‘BR’  required by Pagseguro as per their moeda field.

The Pagseguro payment module passes individual prices for each item in the order to the payment server by using the osCommerce function  $currencies->get_value($currency) – changing the currency code in the admin to BR will make this function return a zero value.

So if you find that your Reals are not being correctly calculated then check that admin currency setting.