Вы явно не отправляете одну и ту же валюту как в SetExpressCheckout, так и в DoExpressCheckoutPayment.
USD - «основная» валюта.Это означает, что если валюта не указана, по умолчанию она возвращается к доллару США.Вот почему, если вы ничего не указали, это работает правильно.
Просмотрите (или опубликуйте) свой код для SetExpressCheckout и DoExpressCheckoutPayment, так как я уверен, что вы неправильно указали CURRENCYCODE для любого из вызовов API.