Recently, while working on a project, I came across a rather puzzling issue: UPS Saver was not showing up as an option when requesting rates, even though it was enabled as a valid method and theoretically, should always be a valid option for anywhere in Canada or the US
Obviously the first steps were to inspect the code and ensure that we didn’t have anything altering the rates we were requesting and/or were receiving. Turns out there wasn’t any custom code changing the rates, and upon looking into the raw requests and the API documentation I determined we were making the correct call to UPS (they refer to it as a “shop” call) and receiving all available rates for the destination/origin.
Upon further testing, I realized that it was only happening with our Canadian store and not the US store, and thus was specifically associated with the “Originating from Canada” option. To sum up the issue it appears that UPS has at some point updated their API with new Canadian specific request codes for their rates (the shipment codes stayed the same) and Magento (at least up to Community 18.104.22.168) hasn’t updated the UPS module to reflect these changes.
To address this issue for the client I developed a small extension to patch the built-in UPS module and accommodate the changes (it also addresses a mismatch with ‘UPS Worldwide Expedited’ which suffers from a similar issue). This module adds an extra “UPS Saver (Canada)” method in the backend with the correct rate request code assigned to it, as well as making a few adjustments during the shipment creation to use the appropriate code based on the shipping origin.