diff --git a/uc_stripe.module b/uc_stripe.module
index fea930d..98be240 100644
--- a/uc_stripe.module
+++ b/uc_stripe.module
@@ -296,7 +296,7 @@ function uc_stripe_settings_form() {
   $form['uc_stripe_settings']['uc_stripe_poweredby'] = array(
     '#type' => 'checkbox',
     '#title' => t('Powered by Stripe'),
-    '#description' => 'Show "powered by Stripe" in shopping cart.',
+    '#description' => t('Show "powered by Stripe" in shopping cart.'),
     '#default_value' => variable_get('uc_stripe_poweredby', FALSE),
   );
 
@@ -365,8 +365,10 @@ function uc_stripe_charge($order_id, $amount, $data) {
     'prec' => 2,
   );
 
-  // Format the amount in cents, which is what Stripe wants
-  $amount = uc_currency_format($amount, FALSE, FALSE, FALSE);
+  // Stripe wants charges to be
+  // "A positive integer in the smallest currency unit (e.g 100 cents to charge $1.00, or 1 to charge ¥1, a 0-decimal currency)"
+  // Zero-decimal currencies will use a multiplier of 1
+  $amount = $amount * uc_stripe_get_currency_multiplier();
 
   $stripe_customer_id = FALSE;
 
@@ -457,7 +459,7 @@ function uc_stripe_charge($order_id, $amount, $data) {
       )
     );
 
-    $formatted_amount = $amount / 100;
+    $formatted_amount = $amount / uc_stripe_get_currency_multiplier();
     $formatted_amount = number_format($formatted_amount, 2);
 
     $result = array(
@@ -533,7 +535,7 @@ function uc_stripe_renew($order, &$fee) {
 
     //Create the charge
     $amount = $fee->fee_amount;
-    $amount = $amount * 100;
+    $amount = $amount * uc_stripe_get_currency_multiplier();
 
     $charge = \Stripe\Charge::create(array(
         "amount" => $amount,
@@ -684,3 +686,21 @@ function uc_stripe_uc_payment_method_credit_form($form) {
 
   return $output;
 }
+
+/**
+ * Get the currency multiplier for the given or default currency code.
+ * @param $currency_code
+ * @return int
+ */
+function uc_stripe_get_currency_multiplier($currency_code = NULL) {
+  if (!$currency_code) {
+    $currency_code = variable_get('uc_currency_code');
+  }
+
+  $zero_decimal_currencies = array(
+    'BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA',
+    'PYG', 'RWF', 'VND', 'VUV', 'XAF', 'XOF', 'XPF'
+  );
+
+  return in_array($currency_code, $zero_decimal_currencies) ? 1 : 100;
+}
\ No newline at end of file
