UPS mobile data API: tracking, rates, and claims
The UPS app (version 10.34.1.8) signs in with a Bearer access token, then serves tracking, rating and claims over JSON. The home list loads from /v1/shipments/home; package pages call /v1/shipments/{trackingNumber} for scan activity, declared value and ship-to fields.
The ship flow posts /v1/rates/quotes and reads ratedShipment.totalCharges. Claims start at /v1/claims/{trackingNumber}/eligibility (isEligible, maximumPaymentAmount) and submit through /v1/claims/{claim_type}. Saved tracking nicknames load from /v1/shipments/history.
UPS (package com.ups.mobile.android, versionName 10.34.1.8) is United Parcel Service's Android client for tracking inbound and outbound packages, quoting rates, creating labels, managing UPS My Choice enrollments, and filing claims. Signed-in calls use a Bearer access token issued by the app's account token service. The home screen hydrates from a shipment list call whose trackTab and deliveredTab rows carry trackingNumber, milestoneCode, currentStatusDescription and shipToAddress. Package pages load a tracking detail view with scan activity, shipFrom/shipTo fields, declaredValueAmount and deliveryDetailDate. The ship flow posts a rate quote and reads ratedShipment.totalCharges, including negotiatedRateCharges when the profile has a shipperNumber. Claims gate on an eligibility check (isEligible, maximumPaymentAmount, accountNumber) before a damage or loss submission returns claimNumber and status, and a saved-history call returns the user's inquiryNumber nicknames.
Screenshots
API surface
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
Illustrative example reconstructed from the app's interface — not a live capture.
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": [] }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's home screen shipment list and widget feed.Field set matches the track and delivered tabs rendered for a signed-in account.
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
Illustrative example reconstructed from the app's interface — not a live capture.
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" }] }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's track details screen and its scan activity timeline.Reflects the status, service-level, declared-value and address blocks on that screen.
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
Illustrative example reconstructed from the app's interface — not a live capture.
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 }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's ship flow service-and-price picker.Field set matches the per-service charge cards shown before label creation.
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
Illustrative example reconstructed from the app's interface — not a live capture.
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": [] }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's create-claim gate that runs before the claim form opens.Reflects the eligibility flags and payout cap shown to the shipper.
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
Illustrative example reconstructed from the app's interface — not a live capture.
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" }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's damage and loss claim submission flow.Field set matches the confirmation screen's claim number and status.
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
Illustrative example reconstructed from the app's interface — not a live capture.
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"} }Derived from the app's interface; endpoint details are illustrative, not a live capture.
Reconstructed from the app's saved tracking list with nickname editing.Reflects the per-number nickname, last-tracked time and status rows.
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.
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.