UPS Shipping not accurate compared to UPS site

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
11 years ago
We're trying to verify an issue with the nopCommerce UPS shipping estimates calculation.

From our understanding, we can tie the estimated shipping costs to our UPS account, which does have a discount associated with it due to the volume of business.

When we log into the UPS website use their shipping estimator, the UPS ground and other charges are at least $2 cheaper than how they're showing up on nopCommerce.

We configured the account settings under Configuration > Shipping > Shipping Rate Computation Methods.
Everything there seems to match our UPS settings.  However, it seems to react as though our account and discounts are not being applied at all.  (that is, it's using the default UPS shipping, so all the charges are at least $2 more expensive than they should be).

Is this the right area for setting this up and is there a way to test the settings, or see the return info coming from the UPS XML response?
11 years ago
You can't  see the return info coming from the UPS XML response without debugging the code, or sniffing the network with a tool like fiddler (which could be impossible if your site is hosted).   Or, you could fabricate the same XML that CreateRequest() creates and post it manually - but probably a pain to do.    Best bet may be to call UPS tech support.
11 years ago
I too am having the EXACT same problem with NOPs shipping calculations vs. UPSs and I have our UPS account connected as well, and am finding that the dollar amounts are at least $2.00 higher on NOP vs. UPS. I have contacted UPS tech support and they keep telling me to contact my developer that is using NOPCommerce. Shocker...he doesn't know how to fix it either.

My solution at this point, so I can launch our new website, is to put notes saying that shipping is just an ESTIMATE and that final shipping amounts will be reflected on customers final invoice. AND because of teh shipping not calculating correctly I also had to switch over to manual CC processing because we can't have customers cards being charged one amount, and then our shipping dept. shows a lesser amount on their end when the package is out by them to be delivered. We had have to constantly be going into the backend of NOP and crediting CCs and then recharging the correct amounts. NOT good for business.
11 years ago
I'd still suspect it's a UPS problem.   If you like, use Shipping Director (www.noptools.com) to see the returned data without any possible change by nopC (additional shipping charges, etc.).   Install the trial plugin, and then just insert two records:

0   Active    Boolean    $Debug    true
10 Active    Option       Shipping  true    Shipping.UPS

(Be sure that Shipping.UPS is in the 'Rate Expression' field.  Leave remaining fields blank)

Here's a blog excerpt that explains $Debug

$Debug boolean false   When true, detailed messages are written to the system log.
(Note:   Because log messages are not HTML formatted, they can be hard to read in the browser.  So, when viewing a System Log record, click View to see the log detail page.  Then, right click the page and "View Source".  Scroll down (a bit more than half way) until you see the plain text messages.  [or search for 'UPS']

You should see something like this (I just pulled this from a log of Fedex - you would see Shipping.UPS)

Shipping.Fedex
  Option: FedEx Priority Overnight 70.81  
  Option: FedEx Standard Overnight 60.58  
  Option: FedEx Ground 10.64  

These are the raw descriptions/rates returned by the API prior to any changes in NopC.   If they don't match the rates you get on your UPS online, then it's got to be on their end.   Be sure that when you check the rates online in UPS that you are using the same account you've set up in nopC.

(P.S.  I have a customer using FedEx, and the FedEx tech support finally made it "better" after several calls, but it's still off by about 30 to 40 cents!)
11 years ago
Here's what the UPS techs are telling us (see below).  Bottom line is it doesn't appear that nopCommerce supports Negotiated Rates set with UPS.   It would have to be programmatically customized to accommodate the Negotiated Rates info in both the XML request and response.

To receive Negotiated Rates some XML additions are required that are slightly different from a basic request.

1. The approved User ID associated with the Negotiated Rates must be used in the AccessRequest container along with the Access Key and Password.

2. The approved shipper number must be included in the RatingServiceSelectionRequest/Shipment/Shipper/ShipperNumber container.

3. The empty node <NegotiatedRatesIndicator/> must be included in the RatingServiceSelectionRequest/Shipment/RateInformation container. The RateInformation container may need to be added as well.

4. The <StateProvinceCode> node is required in the RatingServiceSelectionRequest/Shipment/Shipper/Address container or RatingServiceSelectionRequest/Shipment/ShipFrom/Address container depending on the absence or presence of the ShipFrom container. If the <ShipFrom> container is present, the <StateProvinceCode> node is required there. In the absence of a <ShipFrom> container the <StateProvinceCode> node is required in the <Shipper> container. It is also required in the RatingServiceSelectionRequest/Shipment/ShipTo/Address container.

Please see the XML snippet below for examples of element placement. Note these are in addition to the already required tags for all Rates Tool requests:

<?xml version="1.0" encoding="UTF-8"?>
<AccessRequest>
<AccessLicenseNumber>XXXXXXXXXXXXXXXX</AccessLicenseNumber>
<UserId>XXX..XXX</UserId>
<Password>XXXX..XXXX</Password>
</AccessRequest>

<?xml version="1.0" encoding="UTF-8"?>
<RatingServiceSelectionRequest>
<Shipment>
<Shipper>
<ShipperNumber>XXXXXX</ShipperNumber>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required here if ShipFrom is not present -->
</Address>
</Shipper>
<ShipFrom>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required here if ShipFrom is present -->
</Address>
</ShipFrom>
<ShipTo>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required -->
</ShipTo>
<RateInformation>
<NegotiatedRatesIndicator/>
</RateInformation>
</Shipment>
</RatingServiceSelectionRequest>


5. Negotiated rates are returned in the NegotiatedRates node of the XML response and only at the shipment level. Published rates are still returned in the normal locations.

<NegotiatedRates>
<NetSummaryCharges>
<GrandTotal>
<MonetaryValue>16.08</MonetaryValue>
</GrandTotal>
</NetSummaryCharges>
</NegotiatedRates>
</RatedShipment>

6. Lastly, please note that the Customer Integration Environment (CIE) only returns a 1% discount regardless of your actual negotiated rates. You will need to move to production to see your actual rates.
10 years ago
mtcg wrote:
Here's what the UPS techs are telling us (see below).  Bottom line is it doesn't appear that nopCommerce supports Negotiated Rates set with UPS.   It would have to be programmatically customized to accommodate the Negotiated Rates info in both the XML request and response.

To receive Negotiated Rates some XML additions are required that are slightly different from a basic request.

1. The approved User ID associated with the Negotiated Rates must be used in the AccessRequest container along with the Access Key and Password.

2. The approved shipper number must be included in the RatingServiceSelectionRequest/Shipment/Shipper/ShipperNumber container.

3. The empty node <NegotiatedRatesIndicator/> must be included in the RatingServiceSelectionRequest/Shipment/RateInformation container. The RateInformation container may need to be added as well.

4. The <StateProvinceCode> node is required in the RatingServiceSelectionRequest/Shipment/Shipper/Address container or RatingServiceSelectionRequest/Shipment/ShipFrom/Address container depending on the absence or presence of the ShipFrom container. If the <ShipFrom> container is present, the <StateProvinceCode> node is required there. In the absence of a <ShipFrom> container the <StateProvinceCode> node is required in the <Shipper> container. It is also required in the RatingServiceSelectionRequest/Shipment/ShipTo/Address container.

Please see the XML snippet below for examples of element placement. Note these are in addition to the already required tags for all Rates Tool requests:

<?xml version="1.0" encoding="UTF-8"?>
<AccessRequest>
<AccessLicenseNumber>XXXXXXXXXXXXXXXX</AccessLicenseNumber>
<UserId>XXX..XXX</UserId>
<Password>XXXX..XXXX</Password>
</AccessRequest>

<?xml version="1.0" encoding="UTF-8"?>
<RatingServiceSelectionRequest>
<Shipment>
<Shipper>
<ShipperNumber>XXXXXX</ShipperNumber>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required here if ShipFrom is not present -->
</Address>
</Shipper>
<ShipFrom>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required here if ShipFrom is present -->
</Address>
</ShipFrom>
<ShipTo>
<Address>
<StateProvinceCode>XX</StateProvinceCode> <!-- Required -->
</ShipTo>
<RateInformation>
<NegotiatedRatesIndicator/>
</RateInformation>
</Shipment>
</RatingServiceSelectionRequest>


5. Negotiated rates are returned in the NegotiatedRates node of the XML response and only at the shipment level. Published rates are still returned in the normal locations.

<NegotiatedRates>
<NetSummaryCharges>
<GrandTotal>
<MonetaryValue>16.08</MonetaryValue>
</GrandTotal>
</NetSummaryCharges>
</NegotiatedRates>
</RatedShipment>

6. Lastly, please note that the Customer Integration Environment (CIE) only returns a 1% discount regardless of your actual negotiated rates. You will need to move to production to see your actual rates.


Has someone created a plugin for this? Or what code changes would have to made to get the NegotiatedRates.
10 years ago
I have modified the UPS plug in to accept negotiated rates. Do you have access to the source code? I will need to send you the updated UPSComputationMethod.cs file or build the whole plug in. Should I release this as a whole new UPS plugin specifically for negotiated rates? I guess I could also build on top of the current plug in to simply allow for that option to be enabled/disabled as well, just don't have the time right now.
10 years ago
tjbishop wrote:
I have modified the UPS plug in to accept negotiated rates. Do you have access to the source code? I will need to send you the updated UPSComputationMethod.cs file or build the whole plug in. Should I release this as a whole new UPS plugin specifically for negotiated rates? I guess I could also build on top of the current plug in to simply allow for that option to be enabled/disabled as well, just don't have the time right now.


Sent you a PM to see if you could send me the code file.
10 years ago
Thanks, I sent a PM as well.  Would it be helpful for others to have that code posted here?

Thanks again.
10 years ago
Here is a link to my dropbox for the UPSComputationMethod.cs file that has been modified to accept negotiated rates.

https://www.dropbox.com/s/lvurnltm8vqexpl/UPSComputationMethod.cs

Hope that helps.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.