UPS icon

UPS mobile data API: tracking, rates, and claims

UPS · Transport

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

  • UPS screenshot 1
  • UPS screenshot 2
  • UPS screenshot 3
  • UPS screenshot 4
  • UPS screenshot 5
  • UPS screenshot 6
  • UPS screenshot 7

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/home opendata

    Returns 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} opendata

    Hydrates 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/quotes openfinance

    Returns 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}/eligibility openfinance

    Gates 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} openfinance

    Creates 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/history opendata

    Loads 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

Get a quote