diff --git a/payment/uc_paypal/uc_paypal.module b/payment/uc_paypal/uc_paypal.module
index 7f88f76..53b0e33 100644
--- a/payment/uc_paypal/uc_paypal.module
+++ b/payment/uc_paypal/uc_paypal.module
@@ -308,12 +308,18 @@ function uc_paypal_wpp_charge($order_id, $amount, $data) {
     'dec' => '.',
   );
 
+  $wpp_currency = variable_get('uc_paypal_wpp_currency', 'USD');
+  if (isset($order->currency) && $order->currency != $wpp_currency
+      && in_array($order->currency, _uc_paypal_currency_array()) ) {
+    $wpp_currency = $order->currency;
+  }
+
   if ($data['txn_type'] == UC_CREDIT_PRIOR_AUTH_CAPTURE) {
     $nvp_request = array(
       'METHOD' => 'DoCapture',
       'AUTHORIZATIONID' => $data['auth_id'],
       'AMT' => uc_price($amount, $context, $options),
-      'CURRENCYCODE' => variable_get('uc_paypal_wpp_currency', 'USD'),
+      'CURRENCYCODE' => $wpp_currency,
       'COMPLETETYPE' => 'Complete',
     );
   }
@@ -381,7 +387,7 @@ function uc_paypal_wpp_charge($order_id, $amount, $data) {
       'STATE' => uc_get_zone_code($order->billing_zone),
       'ZIP' => $order->billing_postal_code,
       'COUNTRYCODE' => $billing_country[0]['country_iso_code_2'],
-      'CURRENCYCODE' => variable_get('uc_paypal_wpp_currency', 'USD'),
+      'CURRENCYCODE' => $wpp_currency,
       'DESC' => substr($desc, 0, 127),
       'INVNUM' => $order_id .'-'. time(),
       'BUTTONSOURCE' => 'Ubercart_ShoppingCart_DP_US',
@@ -683,12 +689,18 @@ function uc_paypal_ec_checkout($form, &$form_state) {
     'dec' => '.',
   );
 
+  $wpp_currency = variable_get('uc_paypal_wpp_currency', 'USD');
+  if (isset($order->currency) && $order->currency != $wpp_currency
+      && in_array($order->currency, _uc_paypal_currency_array()) ) {
+    $wpp_currency = $order->currency;
+  }
+
   $nvp_request = array(
     'METHOD' => 'SetExpressCheckout',
     'RETURNURL' => url('cart/echeckout/selected', array('absolute' => TRUE)),
     'CANCELURL' => url('uc_paypal/wps/cancel', array('absolute' => TRUE)),
     'AMT' => uc_price($order->order_total, $context, $options),
-    'CURRENCYCODE' => variable_get('uc_paypal_wpp_currency', 'USD'),
+    'CURRENCYCODE' => $wpp_currency,
     'PAYMENTACTION' => variable_get('uc_paypal_wpp_payment_action', 'Sale'),
     'DESC' => substr($desc, 0, 127),
     'INVNUM' => $order->order_id .'-'. time(),
@@ -778,12 +790,18 @@ function uc_paypal_ec_form_submit($form, &$form_state) {
     'dec' => '.',
   );
 
+  $wpp_currency = variable_get('uc_paypal_wpp_currency', 'USD');
+  if (isset($order->currency) && $order->currency != $wpp_currency
+      && in_array($order->currency, _uc_paypal_currency_array()) ) {
+    $wpp_currency = $order->currency;
+  }
+
   $nvp_request = array(
     'METHOD' => 'SetExpressCheckout',
     'RETURNURL' => url('cart/echeckout/review', array('absolute' => TRUE)),
     'CANCELURL' => url('uc_paypal/wps/cancel', array('absolute' => TRUE)),
     'AMT' => uc_price($subtotal, $context, $options),
-    'CURRENCYCODE' => variable_get('uc_paypal_wpp_currency', 'USD'),
+    'CURRENCYCODE' => $wpp_currency,
     'PAYMENTACTION' => variable_get('uc_paypal_wpp_payment_action', 'Sale'),
     'DESC' => substr($desc, 0, 127),
     'INVNUM' => $order->order_id .'-'. time(),
@@ -856,6 +874,12 @@ function uc_paypal_ec_submit_form_submit($form, &$form_state) {
     'dec' => '.',
   );
 
+  $wpp_currency = variable_get('uc_paypal_wpp_currency', 'USD');
+  if (isset($order->currency) && $order->currency != $wpp_currency
+      && in_array($order->currency, _uc_paypal_currency_array()) ) {
+    $wpp_currency = $order->currency;
+  }
+
   $nvp_request = array(
     'METHOD' => 'DoExpressCheckoutPayment',
     'TOKEN' => $_SESSION['TOKEN'],
@@ -869,7 +893,7 @@ function uc_paypal_ec_submit_form_submit($form, &$form_state) {
     'ITEMAMT' => uc_price($subtotal, $context, $options),
     'SHIPPINGAMT' => uc_price($shipping, $context, $options),
     'TAXAMT' => uc_price($tax, $context, $options),
-    'CURRENCYCODE' => variable_get('uc_paypal_wpp_currency', 'USD'),
+    'CURRENCYCODE' => $wpp_currency,
   );
 
   $nvp_response = uc_paypal_api_request($nvp_request, variable_get('uc_paypal_wpp_server', 'https://api-3t.sandbox.paypal.com/nvp'));
@@ -937,6 +961,12 @@ function uc_paypal_wps_form($form_state, $order) {
     'dec' => '.',
   );
 
+  $wps_currency = variable_get('uc_paypal_wps_currency', 'USD');
+  if (isset($order->currency) && $order->currency != $wps_currency
+      && in_array($order->currency, _uc_paypal_currency_array()) ) {
+      $wps_currency = $order->currency;
+  }
+
   $data = array(
     // PayPal command variable
     'cmd' => '_cart',
@@ -955,7 +985,7 @@ function uc_paypal_wps_form($form_state, $order) {
     'rm' => 2,
 
     // Transaction information
-    'currency_code' => variable_get('uc_paypal_wps_currency', 'USD'),
+    'currency_code' => $wps_currency,
     'handling_cart' => uc_price($shipping, $context, $options),
     'invoice' => $order->order_id .'-'. uc_cart_get_id(),
     'tax_cart' => uc_price($tax, $context, $options),
