UPS
United Parcel Service, Inc. (UPS) is the world's largest domestic and international package delivery company and a fully integrated partner with ShipStation API.
In addition to domestic and international services, ShipStation API accounts in the United States can also leverage UPS Mail Innovations® consolidation services via ShipStation API, if available to your UPS account.
This guide provides developers with the details necessary to build the UPS shipping capabilities from your own UPS account into your ShipStation API workflows.
If you are using or plan to use the UPS services included with ShipStation API, rather than connecting your own UPS account, see our UPS from ShipStation guide.
Requirements
Property | Description | Type | Required? |
---|---|---|---|
nickname | This is a nickname for you to identify the carrier account in ShipStation API. | string | required |
account_number | Account Number | string | required |
account_postal_code | Account Postal Code | string | No |
account_country_code | Country your UPS account is based in | string | No |
Connect Account
You can connect a UPS account using the POST method to the /v1/connections/carriers/
endpoint, or via the ShipStation API Dashboard.
For instructions on connecting UPS via the ShipStation API dashboard, go to our UPS help article.
Connect via Endpoint
carrier_name
: ups
POST /v1/connections/carriers/:carrier_name
Sample request:
Example Response
You will receive a 302 response with a Location
header. You must redirect your user to the URL from this header, which will land on a UPS sign-in screen.
We advise redirecting your user to this location URL in a pop-up window. When the user has signed in, they will land on a page that will direct them to close the window. At this point, your application should make a list carrier call to retrieve the new list of connected carrier accounts.
Reconnecting a UPS Account
In some cases, you may need to reconnect a UPS account to ShipStation API. Reconnection can take place in the ShipStation API dashboard or via API. Using the Reconnect method will allow you to keep the same carrier_id
and connection contract.
The following scenarios will require you to reconnect your UPS account to ShipStation API:
- If you change your UPS account password, use the reconnect option to reauthorize the connection.
- If your UPS account refresh token times out, use the reconnect option to resolve this issue and maintain your
carrier_id
. This issue is somewhat rare but can occur on some accounts. - If your UPS account was connected before June 3, 2024, you'll need to reconnect to re-establish a connection with the UPS oAuth API. Review our How To Reauthorize Your UPS Account help article for details.
Example Reconnect Call
PUT /v1/connections/carriers/:carrier_name/:carrier_id
Modify Carrier Settings
ShipStation API takes advantage of some of UPS's advanced functionality but does not enable it by default. If you need to modify the properties of your UPS account connection or enable some of the carrier's advanced functionality not enabled by default, you can update these settings in your ShipStation API account dashboard or via API using the PUT method with the /v1/connections/carriers/
endpoint.
Additional Properties
Parameter | Type | Description |
---|---|---|
nickname | string | The display name assigned to the account. |
is_primary_account | boolean | Indicates the account is or is not the default account. |
pickup_type | enumerated string | daily_pickup , occasional_pickup , customer_counter See our Intro to Pickup Dropoff apge to learn more. |
use_carbon_neutral_shipping_program | boolean | Adds a fee to the shipment to purchase carbon offset credits. |
use_ground_freight_pricing | boolean | An advanced option available for certain UPS services. See our UPS Ground Freight page for more details. |
use_consolidation_services | boolean | Enable the use of UPS consolidation services like UPS Mail Innovations® or UPS Ground Saver. |
use_order_number_on_mail_innovations_labels | boolean | |
mail_innocations_endorsement | enumerated string | return_service_requested forwarding_service_requested address_service_requested change_service_requested leave_if_no_response |
mail_innovations_cost_center | string | |
use_negotiated_rates | boolean | If your account has been approved for negotiated rates, you can enable this option to use those rates. Once enabled, negotiated rates cannot be disabled. |
account_postal_code | string | Required Postal code for the account. |
invoice | string | |
mail_innovations_customer_id | string | Required to get rates for MI services. Also known as UPS MI account number. |
mail_innovations_customer_guid | string | Required to get rates for MI services. Also known as a rate key. |
account_country_code | string | Required 2-character country code associated with the account. |
account_number | string | The UPS account number. |
Sample update request:
PUT /v1/connections/carriers/:carrier_name/:carrier_id/settings
A successful request will receive an HTTP status 204 response.
Rates
UPS supports sending estimated rates (including your contracted negotiated rates) to ShipStation API.
Service Details
Available UPS services are provided below. Please note that carriers may update their available services at any time. To ensure you are always using valid services, you can use the list carrier services endpoint at any time.
For most services, the max weight is 150 lbs and the max combined length and girth (2Wx2H) is 165" (419cm).
Domestic Services
Service | Transit Time | Service Codes |
---|---|---|
UPS® Ground | 1-5 Business days | ups_ground |
UPS 3 Day Select® | 3 Business days | ups_3_day_select |
UPS 2nd Day Air® | 2 Business days | ups_2nd_day_air |
UPS 2nd Day Air AM® | 2 Business days (before noon) | ups_2nd_day_air_am |
UPS Next Day Air Saver® | 1 Business day (End of day) | ups_next_day_air_saver |
UPS Next Day Air® | 1 Business day | ups_next_day_air |
UPS Next Day Air® Early | 1 Business day (delivery between 8:00 am-10:00 am) | ups_next_day_air_early_am |
Ground Saver Services
On April 2nd, 2025, UPS replaced SurePost services with UPS Ground Saver®. This domestic service is available to US-based accounts and has a delivery time of Ground+1 day. While the name of the service has been updated, the Service Codes you use in your requests remain the same.
Service | Service Codes |
---|---|
UPS Ground Saver® Less than 1 lb | ups_surepost_less_than_1_lb |
UPS Ground Saver® 1 lb or Greater | ups_surepost_1_lb_or_greater |
UPS Ground Saver® BPM | ups_surepost_bpm |
UPS Ground Saver® Media | ups_surepost_media |
International Services
Service | Transit Time | Service Codes |
---|---|---|
UPS® Standard (International) | Varies by location | ups_standard_international |
UPS® Ground (International) | Varies by location | ups_ground_international |
UPS WorldWide Expedited® | 2-5 Business days, can vary by location | ups_worldwide_expedited |
UPS WorldWide Saver® | 1-3 Business days, can vary by location | ups_worldwide_saver |
UPS WorldWide Express® | 1-3 Business days, can vary by location | ups_worldwide_express |
UPS WorldWide Express Plus® | 1-3 Business days, can vary by location | ups_worldwide_express_plus |
UPS Next Day Air® (International) | Next day | ups_next_day_air_international |
UPS 2nd Day Air® (International) | 1-2 Business days, can vary by location | ups_2nd_day_air_international |
Mail Innovations Services
US-based accounts that have Mail Innovations service enabled, also have access to these services:
Service Name | Service Code | Description |
---|---|---|
Expedited Mail Innovations | expedited_mail_innovations | Domestic service, rates will be returned if they are loaded into your UPS account. |
Priority Mail Innovations | priority_mail_innovations | International service, rates not available. |
Economy Mail Innovations | economy_mail_innovations | International service, rates not available. |
To configure your account for shipping with Mail Innovations services, you will need to modify your UPS carrier settings and update the following UPS-specific properties:
- Set
use_consolidation_services
totrue
- Populate the
mail_innovations_endorsement
,mail_innovations_cost_center
,mail_innovations_customer_id
, andmail_innovations_customer_guid
properties with their corresponding values, which your UPS account rep can provide you.
Shipping from Great Britain to Northern Ireland
At this time, UPS has not provided any details about required changes when creating labels for shipment from Great Britain to Northern Ireland as related to the Windsor Framework.
We will provide details about using UPS to ship to Northern Ireland as soon as they are available.
Return Services
UPS supports returns for all domestic services except for SuerPost and Mail Innovations®.
Although UPS Mail Innovations® does offer a return service option, we do not currently support it in ShipStation API. If you attempt to create a return label using UPS Mail Innovations®, you will see an Object reference not set to an instance of an object
error message.
Packages
Package Name | Package Code | Dimensions |
---|---|---|
UPS Letter | ups_letter | 12.5-15in x 9.5in |
UPS 10 KG Box® | ups_10_kg_box | 16.5in x 13.25in x 10.75in |
UPS 25 KG Box® | ups_25_kg_box | 19.75in x 17.75in x 13.25in |
UPS Tube | ups_tube | Triangular tube for rolled papers 38in x 6in x 6in |
UPS Express® Pak | ups_express_pak | 16in x 12.75 in |
UPS Express® Box | ups_express_box | 12.5in x 3.75in x 18in |
UPS Express® Box - Small | ups_express_box_small | 13in x 11in x 2in |
UPS Express® Box - Medium | ups_express_box_medium | 16in x 11in x 3in |
UPS Express® Box - Large | ups__express_box_large | 18in x 13in x 3in |
UPS has 10 predefined package types for use with MI services:
Predefined Package Name | Package Code | Min/Max Weight |
---|---|---|
MI - BPM Flat | mi_bpm_flat | 0.1 lb. - 15 lbs. |
MI - BPM Parcel | mi_bpm_parcel | 0.1 lb. - 15 lbs. |
MI - First Class | mi_first_class | 0.1 lb. - 13 lbs. |
MI - Irregulars | mi_irregulars | 1 oz. - 16 oz. |
MI - Machinables | mi_machinables | 6 oz. - 16 oz. |
MI - Media Mail | mi_media_mail | 0.1 lb. - 70 lbs. |
MI - Parcel Post | mi_parcel_post | 0.1 lb. - 70 lbs. |
MI - Priority | mi_priority | 0.9 lb. - 70 lbs. |
MI - Standard Flat | mi_standard_flat | 0.1 oz. - 16 oz. |
MI Intl - BPM | mi_intl_bpm | 0.1 lb. - 15 lbs. |
MI Intl - Flats | mi_intl_flats | 0.1 oz. - 16 oz. |
MI Intl - Parcels | mi_intl_parcels | 0.1 lb. - 15 lbs. |
Adding Shipment Insurance
UPS supports adding insurance to your shipments. Review the Parcel Insurance page for details on adding shipment insurance with ShipStation API.
A few notes about adding insurance to UPS shipments:
- UPS covers the first $100 by default.
- Insurance >$100-$300 is an additional flat fee of $2.70.
- For each additional $100, it's $0.90 per $100.
To prevent insurance claims for a higher value than a product is worth, UPS requires multiple forms of documentation and may contact you for confirmation. - The claims process begins when you report loss or damage to UPS, and then UPS will send you documentation and move on from there.
In the event of a high-value shipment, UPS will want to inspect it if declared as damaged and may take other measures.
Label Support
- Label sizes: 4" x 6:
- Label formats: PDF, PNG, ZPL
Label Reference Fields
UPS supports adding custom label messages. UPS labels include two reference fields, each with a 35-character max length. If the text in a reference field exceeds 35 characters, the text will be truncated on the label.
- Label message 1 maps to the first label reference field.
- Both label message 2 and message 3 map to the second label reference field. If both label message 2 and message 3 are used, they will be combined into the second label reference field.
- Label messages are not supported on return labels.
- For international shipments, the label messages will appear on the UPS commercial invoice.
- For MI services, Order # and MI Cost Center values are mapped by default to the Ref1 and Ref2 fields, so they cannot be customized.
Multi-Package Labels
UPS supports ulti-package shipping for most service classes. The maximum number of labels for a multi-package shipment is 20.
UPS returns individual labels per package for multi-package shipments (one main label file and then individual files in the response).
Label Branding
UPS supports label branding.
Voiding Labels
You can void a UPS label using ShipStation API up to 24 hours after label creation. If you need to void a label after the 24 hour period, you may still be able to do so using your UPS account portal.
Paperless Labels
UPS services support creating paperless labels with ShipStation API.
Customs Declarations
Most UPS accounts are configured to submit customs forms electronically via the UPS EDI system. Check with your UPS account representative if you are unsure if your account is EDI enabled.
If your account is not EDI enabled or you are shipping to a country that does not support electronic submission, you will need to include three copies of the printed commercial invoice (downloadable from the form_downloads
object) in your international shipments. These can be in the box itself or in the plastic sleeve outside the box.
When the declared value of a shipment is $1k or higher, UPS will automatically return a high-value report to ShipStation API titled “UPS Control Log” which you can download from the form_downloads
object. You must print two copies and retain one that is signed by the UPS employee who accepts the package. The signed report will serve as part of your documentation should the high-value shipment become lost or damaged.
Delivery Confirmation
UPS supports the following delivery confirmation options (options other than online
may incur an additional fee from UPS).
Confirmation Type | API Code | Description |
---|---|---|
Online | online | This is the default option if no confirmation type is specified. |
Delivery | delivery | Delivery confirmation requested. |
Signature | signature | Signature confirmation requested. |
Adult signature | adult_signature | Adult signature confirmation requested. This confirmation type is required if shipping alcohol. |
Verbal | verbal | Verbal confirmation requested. |
See our Delivery Confirmation page for more details about using the confirmation
property.
Shipping Alcohol
To ship alcohol with your UPS account, you must be authorized by UPS to do so and have it included in your UPS contract.
Additionally, you must:
- Put “Contains alcohol” stickers on the shipment and must follow all the UPS requirements for alcohol shipments.
- Include the
adult_signature confirmation
type when creating the label using ShipStation API.
Review UPS’s How To Ship Special-Care or Regulated Items page for details.
Advanced Options
UPS supports certain advanced options, which you can add to the shipment
object when creating a shipment or label.
Option | Type | Default Value | Description |
---|---|---|---|
additional_handling | boolean | null | Indicate the shipment requires special handling. |
bill_to_party | enumerated string | null | Determines which party is paying for shipping costs. This field must be used in conjunction with the bill_to_country_code , bill_to_postal_code , and bill_to_account fields . Available values: recipient - Required for FedEx Ground Collect. third_party - Bill to an account that is not connected to ShipStation API. If null , shipping costs will be billed to the connected carrier account. See our Bill to a Third Part page for more details. |
collect_on_delivery | object | null | Defers payment to recipient when package is delivered. Requires the following properties: payment_type , amount , currency . See our Collect on Delivery page for details on using this advanced option. |
delivered_duty_paid | boolean | false | Indicates the shipment is DDP (that is, the shipper is paying the duties/taxes for the shipment rather than the recipient). |
dry_ice | boolean | false | Indicates the shipment includes dry ice. Used in conjunction with the dry_ice_weight object. |
freight_class | string | null | The NMFC freight class, used specifically for UPS Ground Freight pricing and in conjunction with use_ups_ground_freight_pricing property. |
non_machinable | boolean | false | Indicates that the package cannot be processed through sorting machines. |
saturday_delivery | boolean | false | Indicates that the carrier should charge for delivery on Saturday for services that do not otherwise include Saturday delivery. |
use_ups_ground_freight_pricing | boolean | null | Determines if UPS Ground Freight pricing will be used. Must use in conjunction with freight_class property. |
To ensure you always have the most up-to-date information about a carrier's advanced options, use the list carrier options call.
Manifests
UPS does not support creating printable manifests. All shipment data is submitted electronically to UPS at the time of label creation, so UPS will have the shipment data in their system.
Scheduling Pickups
UPS supports scheduling pickups using ShipStation API. Set the pickup_type
property for your account settings to the option indicated by your UPS account representative.
daily_pickup
- only use this option if your UPS account is enabled for it.occasional_pickup
customer_counter
UPS pickup times can vary depending on service and pickup location. Please contact your UPS account representative to get information specific to your account.
Service Points (PUDO)
UPS does not support shipping to service points.
Tracking
ShipStation API's integration with UPS supports receiving tracking updates. Review our Track a Package guides for details on tracking with the ShipStation API.
Disconnecting Your UPS Account
See the Disconnect section in our Delete a Carrier page for the process of deleting or disconnecting a carrier from ShipStation API.