diff -ruN a/commerce_usps.info b/commerce_usps.info
--- a/commerce_usps.info	2015-02-25 16:03:34.000000000 -0600
+++ b/commerce_usps.info	2015-02-25 16:07:32.000000000 -0600
@@ -4,6 +4,7 @@
 dependencies[] = commerce
 dependencies[] = commerce_shipping
 dependencies[] = commerce_physical
+dependencies[] = commerce_packing
 
 core = 7.x
 
@@ -12,4 +13,3 @@
 core = "7.x"
 project = "commerce_usps"
 datestamp = "1424461982"
-
diff -ruN a/includes/commerce_usps.xml.inc b/includes/commerce_usps.xml.inc
--- a/includes/commerce_usps.xml.inc	2015-02-25 16:03:34.000000000 -0600
+++ b/includes/commerce_usps.xml.inc	2015-02-25 16:18:42.000000000 -0600
@@ -20,7 +20,8 @@
   $rates = array();
   $usps_services = commerce_usps_service_list('domestic');
 
-  $weight = commerce_usps_get_order_weight($order);
+  /*$weight = commerce_usps_get_order_weight($order);*/
+  $containers = commerce_packing_get_packages($order);
 
   $request = new SimpleXMLElement('<RateV4Request/>');
   $request->addAttribute('USERID', variable_get('commerce_usps_user', ''));
@@ -31,17 +32,19 @@
   $i = 1;
 
   foreach (variable_get('commerce_usps_services', array()) as $machine_name => $service) {
-    $package = $request->addChild('Package');
-    $package->addAttribute('ID', $i);
-    $package->addChild('Service', $usps_services[$machine_name]['request_name']);
-    $package->addChild('FirstClassMailType', 'PARCEL');
-    $package->addChild('ZipOrigination', substr(variable_get('commerce_usps_postal_code', ''), 0, 5));
-    $package->addChild('ZipDestination', substr($shipping_address['postal_code'], 0, 5));
-    $package->addChild('Pounds', $weight['pounds']);
-    $package->addChild('Ounces', $weight['ounces']);
-    $package->addChild('Container', 'VARIABLE');
-    $package->addChild('Size', 'REGULAR');
-    $package->addChild('Machinable', 'TRUE');
+    foreach ($containers as $key => $container) {
+      $package = $request->addChild('Package');
+      $package->addAttribute('ID', $i .'-'. $key);
+      $package->addChild('Service', $usps_services[$machine_name]['request_name']);
+      $package->addChild('FirstClassMailType', 'PARCEL');
+      $package->addChild('ZipOrigination', substr(variable_get('commerce_usps_postal_code', ''), 0, 5));
+      $package->addChild('ZipDestination', substr($shipping_address['postal_code'], 0, 5));
+      $package->addChild('Pounds', $containers[$key]['weight']['pounds']);
+      $package->addChild('Ounces', $containers[$key]['weight']['ounces']);
+      $package->addChild('Container', 'VARIABLE');
+      $package->addChild('Size', 'REGULAR');
+      $package->addChild('Machinable', 'TRUE');
+    }
     $i++;
   }
 
@@ -62,11 +65,17 @@
 
         // Make sure that the package service is registered.
         if (!empty($usps_service['machine_name'])) {
-          $rates[$usps_service['machine_name']] = array(
-            'amount' => commerce_currency_decimal_to_amount((string) $package->Postage->Rate, commerce_default_currency()),
-            'currency_code' => commerce_default_currency(),
-            'data' => array(),
-          );
+          // If amount key exists then add amount.
+          if (isset($rates[$usps_service['machine_name']]) && array_key_exists('amount', $rates[$usps_service['machine_name']])) {
+            $rates[$usps_service['machine_name']]['amount'] = $rates[$usps_service['machine_name']]['amount'] + commerce_currency_decimal_to_amount((string) $package->Postage->Rate, commerce_default_currency());
+          }
+          else {
+            $rates[$usps_service['machine_name']] = array(
+              'amount' => commerce_currency_decimal_to_amount((string) $package->Postage->Rate, commerce_default_currency()),
+              'currency_code' => commerce_default_currency(),
+              'data' => array(),
+            );
+          }
         }
       }
     }
@@ -88,48 +97,60 @@
 function commerce_usps_intl_rate_v2_request($order, $shipping_address) {
   $rates = array();
 
-  $weight = commerce_usps_get_order_weight($order);
+  /*$weight = commerce_usps_get_order_weight($order);*/
+  $containers = commerce_packing_get_packages($order);
 
   $request = new SimpleXMLElement('<IntlRateV2Request/>');
   $request->addAttribute('USERID', variable_get('commerce_usps_user', ''));
   $shipment_value = commerce_usps_get_shipment_value($order);
 
   // @TODO: Support multiple packages based on physical attributes.
-  $package = $request->addChild('Package');
-  $package->addAttribute('ID', 1);
-  $package->addChild('Pounds', $weight['pounds']);
-  $package->addChild('Ounces', $weight['ounces']);
-  $package->addChild('Machinable', 'True');
-  $package->addChild('MailType', 'Package');
-  $package->addChild('ValueOfContents', commerce_currency_amount_to_decimal($shipment_value, commerce_default_currency()));
-  $package->addChild('Country', commerce_usps_country_get_predefined_list($shipping_address['country']));
-  $package->addChild('Container', 'RECTANGULAR');
-  $package->addChild('Size', 'REGULAR');
-  $package->addChild('Width', '');
-  $package->addChild('Length', '');
-  $package->addChild('Height', '');
-  $package->addChild('Girth', '');
-  $package->addChild('CommercialFlag', 'N');
+  foreach ($containers as $key => $container) {
+    $package = $request->addChild('Package');
+    $package->addAttribute('ID', $key);
+    $package->addChild('Pounds', $containers[$key]['weight']['pounds']);
+    $package->addChild('Ounces', $containers[$key]['weight']['ounces']);
+    $package->addChild('Machinable', 'True');
+    $package->addChild('MailType', 'Package');
+    //$package->addChild('ValueOfContents', commerce_currency_amount_to_decimal($shipment_value, commerce_default_currency()));
+    $package->addChild('ValueOfContents', commerce_currency_amount_to_decimal($containers[$key]['total_value'], commerce_default_currency()));
+    $package->addChild('Country', commerce_usps_country_get_predefined_list($shipping_address['country']));
+    $package->addChild('Container', 'RECTANGULAR');
+    $package->addChild('Size', 'REGULAR');
+    $package->addChild('Width', '');
+    $package->addChild('Length', '');
+    $package->addChild('Height', '');
+    $package->addChild('Girth', '');
+    $package->addChild('CommercialFlag', 'N');
+  }
 
   drupal_alter('commerce_usps_intl_rate_v2_request', $request);
 
   // Submit the rate request to USPS.
   $response = commerce_usps_api_request('API=IntlRateV2&XML=' . $request->asXML());
 
-  if (!empty($response->Package->Service)) {
-    foreach ($response->Package->Service as $service) {
-      $id = (string) $service->attributes()->{'ID'};
-
-      // Look up the shipping service by it's id.
-      $usps_service = commerce_usps_service_by_id($id, 'international');
-
-      // Make sure that the package service is registered.
-      if (!empty($usps_service['machine_name'])) {
-        $rates[$usps_service['machine_name']] = array(
-          'amount' => commerce_currency_decimal_to_amount((string) $service->Postage, commerce_default_currency()),
-          'currency_code' => commerce_default_currency(),
-          'data' => array(),
-        );
+  if (!empty($response->Package)) {
+    foreach ($response->Package as $package) {
+      foreach ($package->Service as $service) {
+        $id = (string) $service->attributes()->{'ID'};
+
+        // Look up the shipping service by it's id.
+        $usps_service = commerce_usps_service_by_id($id, 'international');
+
+        // Make sure that the package service is registered.
+        if (!empty($usps_service['machine_name'])) {
+          // If amount key exists then amount
+          if (isset($rates[$usps_service['machine_name']]) && array_key_exists('amount', $rates[$usps_service['machine_name']])) {
+            $rates[$usps_service['machine_name']]['amount'] = $rates[$usps_service['machine_name']]['amount'] + commerce_currency_decimal_to_amount((string) $service->Postage, commerce_default_currency());
+          }
+          else {
+            $rates[$usps_service['machine_name']] = array(
+              'amount' => commerce_currency_decimal_to_amount((string) $service->Postage, commerce_default_currency()),
+              'currency_code' => commerce_default_currency(),
+              'data' => array(),
+            );
+          }
+        }
       }
     }
   }
