UPS mobile data API: tracking, rates, and claims
UPS is the official Android app of United Parcel Service, the Atlanta-based parcel carrier, and puts tracking, shipping and claims for its U.S. network behind one UPS ID account. The home screen and its widgets split packages into Track and Delivered tabs showing each parcel's milestone, delivery window and ship-to address, while guests can still look up a single 1Z tracking number without signing in. The Track Details screen lays out the service level (such as UPS Ground), declared value, leave-at location and a scan-by-scan activity timeline from the origin scan onward. In the ship flow, users enter origin, destination, weight and dimensions, compare services by price and time in transit, see negotiated account rates when their profile carries a UPS shipper number, and create a label. UPS My Choice delivery preferences, a Track History list where saved tracking numbers get nicknames, and a claims flow that checks eligibility before filing a damage or loss claim round out the app. It serves U.S. consumers following inbound orders and small businesses and shipping desks sending outbound parcels, competing with FedEx, USPS Informed Delivery, DHL Express and multi-carrier trackers such as AfterShip.
1Z tracking numbers key the whole parcel record: home lists of in-transit and delivered packages carry trackingNumber, milestoneCode, currentStatusDescription, shipToAddress and lastActivityDateTime, and each package's detail adds serviceLevelDescription, packageWeight, declaredValueAmount, deliveryDetailDate, leaveAtLocation, ship-from and ship-to city and postal code, and an activity timeline of scans stamped with activityCode and gmtDate.
Rate quotes price an origin-destination lane per service: each ratedShipment returns transportationCharges, baseServiceCharge and totalCharges as currencyCode plus monetaryValue, with negotiatedRateCharges for the account's shipperNumber and a guaranteedDelivery transit-day count. Claims data comes in two steps, an eligibility record with isEligible, maximumPaymentAmount and accountNumber, then a filed damage or loss claim identified by claimNumber, claimId, registrationID and status; saved Track History rows pair inquiryNumber with inquiryNickname, lastTrackedTimeStamp and statusCode.
Receiving desks poll the milestones to flag late packages, compare deliveryDetailDate against purchase-order due dates and open a claim when a package is eligible; checkout services store the quoted totalCharges and negotiated rates on each order for landed-cost pricing; warehouse systems file damage claims for cartons marked damaged and write the claimNumber back onto the ASN; shared mailrooms map nicknames onto tracking numbers and hide packages the front desk has already processed. openData Studio turns this UPS parcel record into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
List homepage shipments
GET
/v1/shipments/homeopendataReturns the signed-in home trackTab and deliveredTab lists (trackingNumber, milestone, status, ship-to address, delivery window) used by the UPS home screen and widgets.
Auth: Bearer access token issued by the app's account token service (Authorization: Bearer). Guest track-by-number still works without a UPS profile.
- trackTab
- deliveredTab
- trackingNumber
- milestoneCode
- milestoneDescription
- currentStatusCode
- currentStatusDescription
- shipToAddress
- addressLine
- city
- stateProvinceCode
- postalCode
- countryCode
- lastActivityDateTime
- displayDateValue
- deliveryLocation
- shipFromName
- nickName
- consolidatedDcoEligibility
GET /v1/shipments/home HTTP/1.1 Authorization: Bearer <accessToken> Accept: application/json{ "response": {"statusCode": "1"}, "trackTab": [{ "trackingNumber": "1Z999AA10123456784", "milestoneCode": "I", "milestoneDescription": "In Transit", "currentStatusCode": "I", "currentStatusDescription": "On the way", "shipToAddress": { "name": "Alex Rivera", "attentionName": "Receiving", "type": "DESTINATION", "address": { "addressLine": ["55 Glenlake Pkwy NE"], "city": "Atlanta", "stateProvinceCode": "GA", "postalCode": "30328", "countryCode": "US" } }, "lastActivityDateTime": "2026-09-25T14:22:00Z", "displayDateValue": "Thu, Sep 26", "displayTimeValue": "By 8:00 PM", "deliveryDateType": "SCHEDULED", "deliveryLocation": "Front door", "shipFromName": "Acme Warehouse", "nickName": "Office monitors", "type": "1Z", "isHidden": false, "consolidatedDcoEligibility": true, "securityCodeEligible": false }], "deliveredTab": [] }Get tracking details
GET
/v1/shipments/{trackingNumber}opendataHydrates the Track Details screen: current status, service level, declared value, ship-from/ship-to address parts, and the activity scan timeline.
Auth: Bearer access token issued by the app's account token service. Public tracking-number lookup is allowed; delivery-change and claims fields need a signed-in UPS ID.
- trackingNumber
- currentStatusCode
- currentStatusDescription
- serviceLevelCode
- serviceLevelDescription
- packageWeight
- declaredValueAmount
- declaredValueCurrencyCode
- deliveryDetailDate
- deliveryDetailTime
- signedForByName
- leaveAtLocation
- shipFromCity
- shipFromPostalCode
- shipToCity
- shipToPostalCode
- activity
- activityCode
- description
- gmtDate
GET /v1/shipments/1Z999AA10123456784 HTTP/1.1 Authorization: Bearer <accessToken> Accept: application/json{ "trackingNumber": "1Z999AA10123456784", "currentStatusCode": "I", "currentStatusDescription": "On the way", "serviceLevelCode": "03", "serviceLevelDescription": "UPS Ground", "brandedServiceLevelCode": "GND", "brandedServiceLevelDescription": "Ground", "packageWeight": "12.4", "packageWeightUnits": "LBS", "declaredValueAmount": "250.00", "declaredValueCurrencyCode": "USD", "deliveryDetailDate": "20260926", "deliveryDetailTime": "200000", "deliveryDetailTypeCode": "DEL", "signedForByName": "", "leaveAtLocation": "Front Door", "shipFromCity": "Louisville", "shipFromStateProvinceCode": "KY", "shipFromPostalCode": "40213", "shipFromCountryCode": "US", "shipFromCompanyName": "Acme Warehouse", "shipToCity": "Atlanta", "shipToStateProvinceCode": "GA", "shipToPostalCode": "30328", "shipToCountryCode": "US", "activity": [{ "activityCode": "OR", "description": "Origin Scan", "city": "Louisville", "stateProvinceCode": "KY", "postalCode": "40213", "countryCode": "US", "displayDate": "09/24/2026", "displayTime": "6:14 PM", "gmtDate": "20260924", "gmtTime": "221400" }] }Quote shipment rates
POST
/v1/rates/quotesopenfinanceReturns ratedShipment quotes (transportationCharges, totalCharges, negotiatedRateCharges, time-in-transit) for the ship-services picker.
Auth: Bearer access token issued by the app's account token service. NegotiatedRateCharges appear when the profile has a shipperNumber.
- rateRequest
- shipment
- shipFrom
- shipTo
- shipmentPackage
- pickUpDate
- shipperNumber
- ratedShipment
- code
- description
- billingWeight
- transportationCharges
- baseServiceCharge
- totalCharges
- currencyCode
- monetaryValue
- negotiatedRateCharges
- guaranteedDelivery
POST /v1/rates/quotes HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "rateRequest": { "shipment": { "shipFrom": {"city": "Atlanta", "stateProvinceCode": "GA", "postalCode": "30328", "countryCode": "US"}, "shipTo": {"city": "New York", "stateProvinceCode": "NY", "postalCode": "10001", "countryCode": "US"}, "shipmentPackage": { "packagingType": {"code": "02"}, "packageWeight": {"unitOfMeasurement": {"code": "LBS"}, "weight": "5.0"}, "dimensions": {"unitOfMeasurement": {"code": "IN"}, "length": "12", "width": "8", "height": "4"} }, "pickUpDate": "20260926", "shipperNumber": "A1B2C3", "promoAliasCode": "", "estimatedQuote": true, "service": {"code": "03"} } } }{ "ratedShipment": [{ "service": {"code": "03", "description": "UPS Ground"}, "billingWeight": {"unitOfMeasurement": {"code": "LBS"}, "weight": "5.0"}, "transportationCharges": {"currencyCode": "USD", "monetaryValue": "14.82"}, "baseServiceCharge": {"currencyCode": "USD", "monetaryValue": "12.40"}, "serviceOptionsCharges": {"currencyCode": "USD", "monetaryValue": "0.00"}, "totalCharges": {"currencyCode": "USD", "monetaryValue": "14.82"}, "negotiatedRateCharges": {"totalCharge": {"currencyCode": "USD", "monetaryValue": "11.10"}}, "guaranteedDelivery": {"businessDaysInTransit": "2"}, "timeInTransit": {"serviceSummary": {"estimatedArrival": {"date": "20260929", "time": "230000"}}}, "upSellTag": "" }], "alert": [], "response": null }Check claim eligibility
GET
/v1/claims/{trackingNumber}/eligibilityopenfinanceGates the Create Claim flow: whether the package can be filed, shipper accountNumber, maximumPaymentAmount, and currency.
Auth: Bearer access token issued by the app's account token service. Requires the UPS profile that shipped or received the package.
- isEligible
- isUpsStoreAccount
- isRedirect
- isSppPhotoExists
- shipperDefaultCurrency
- maximumPaymentAmount
- accountNumber
- accountCountry
- shipmentData
- eligibilityMessages
GET /v1/claims/1Z999AA10123456784/eligibility HTTP/1.1 Authorization: Bearer <accessToken> Accept: application/json{ "isEligible": true, "isUpsStoreAccount": false, "isRedirect": false, "isSppPhotoExists": true, "shipperDefaultCurrency": "USD", "maximumPaymentAmount": 100.0, "accountNumber": "A1B2C3", "accountCountry": "US", "shipmentData": { "trackingNumber": "1Z999AA10123456784", "serviceLevelDescription": "UPS Ground" }, "eligibilityMessages": [] }Submit a package claim
POST
/v1/claims/{claim_type}openfinanceCreates a damage or loss claim and returns claimNumber, claimId, registrationID and status for the claims dashboard.
Auth: Bearer access token issued by the app's account token service. Claim type in the path is damage or loss after the eligibility check succeeds.
- trackingNumber
- iobb
- endUserIP
- claimRequesterType
- claimType
- accountNumber
- accountCountry
- phoneNumber
- claimNumber
- claimId
- registrationID
- status
- message
- transId
POST /v1/claims/damage HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "trackingNumber": "1Z999AA10123456784", "iobb": "N", "endUserIP": "203.0.113.10", "claimRequesterType": "SHIPPER", "claimType": "DAMAGE", "accountNumber": "A1B2C3", "accountCountry": "US", "phoneNumber": "4045550100", "shipFromAddress": {"city": "Louisville", "stateProvinceCode": "KY", "postalCode": "40213", "countryCode": "US"}, "shipToAddress": {"city": "Atlanta", "stateProvinceCode": "GA", "postalCode": "30328", "countryCode": "US"} }{ "claimNumber": "CLM-2026-88421", "claimId": "c8f1e2a0-4b11-4d22-9c33-11aa22bb33cc", "trackingNumber": "1Z999AA10123456784", "registrationID": "REG-441902", "accountNumber": "A1B2C3", "status": "SUBMITTED", "message": "Claim accepted", "transId": "trx-9f2c" }Retrieve saved track history
POST
/v1/shipments/historyopendataLoads the signed-in user's saved tracking list (inquiryNumber, nickname, lastTrackedTimeStamp, status) used by Track History and nickname save/delete.
Auth: Bearer access token issued by the app's account token service. Bound to the UPS ID that saved the inquiryNumber list.
- request
- userData
- updateNicknameOnlyIndicator
- trackHistoryData
- inquiryNickname
- inquiryNumber
- lastTrackedTimeStamp
- statusCode
- statusDescription
POST /v1/shipments/history HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "request": {"requestAction": "Retrieve"}, "userData": {"userId": "ups-uuid-4419"}, "updateNicknameOnlyIndicator": "N" }{ "trackHistoryData": [{ "inquiryNickname": "Office monitors", "inquiryNumber": "1Z999AA10123456784", "lastTrackedTimeStamp": "2026-09-25T14:22:00Z", "statusCode": "I", "statusDescription": "In Transit" }], "response": {"statusCode": "1"} }
Data categories
- shipment tracking
- delivery status
- shipping rates
- claims
- saved track history
- ship-to addresses
Where teams use this data
Inbound exception desk
A receiving desk polls the shipment list and tracking detail calls to flag delayed milestoneCode values, compare deliveryDetailDate against PO due dates, and open a claim when isEligible is true.
Landed-cost quoting
A checkout service posts origin/destination and packageWeight to the rate quote call and stores totalCharges.monetaryValue plus negotiatedRateCharges for the shipperNumber on the order.
Claims intake from WMS
When a warehouse marks a carton damaged, it runs the eligibility check, then submits a damage claim with trackingNumber, claimType DAMAGE and accountNumber, and files claimNumber back onto the ASN.
Nickname sync for shared mailrooms
A mailroom app retrieves the saved track history, maps inquiryNickname onto inquiryNumber, and hides packages the front desk already processed using lastTrackedTimeStamp and statusCode.
Frequently asked questions
Which UPS call lists packages on the home screen?
GET /v1/shipments/home returns trackTab and deliveredTab arrays. Each item carries trackingNumber, milestoneCode, currentStatusDescription, shipToAddress, lastActivityDateTime and nickName.
How does the UPS app quote a shipment?
POST /v1/rates/quotes with shipment origin/destination, package weight and dimensions, pickup date and shipperNumber. The ratedShipment list returns transportationCharges, totalCharges and negotiatedRateCharges as currencyCode plus monetaryValue.
Can you file a UPS claim from the same API surface?
Yes. GET /v1/claims/{trackingNumber}/eligibility reports isEligible and maximumPaymentAmount. POST /v1/claims/{claim_type} then returns claimNumber, claimId and status.
Where are saved tracking numbers stored?
POST /v1/shipments/history returns trackHistoryData rows of inquiryNumber, inquiryNickname, lastTrackedTimeStamp, statusCode and statusDescription for the signed-in UPS ID.
Apps similar to UPS
- FedEx — FedEx is a package-delivery company whose FedEx Express unit is an overnight courier service, a common U.S. alternative to UPS for parcels.
- USPS Informed Delivery — USPS Informed Delivery previews incoming letter mail and lets users track and manage inbound and outbound packages in one place, including via its mobile app.
- DHL Express — DHL provides courier, package delivery and express mail service; DHL Express is the international express arm used for cross-border parcels.
- AfterShip — AfterShip is a shipment-tracking service that consolidates tracking information from postal services and private delivery companies into one view.
Topics
- UPS API
- UPS tracking API
- UPS shipment rating
- UPS claims API
- UPS My Choice
- package tracking api
- inquiryNumber
- ratedShipment
- shipping rates api
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use