View FAQ →

Shipping

Connect UPS

Your own UPS contract, with no aggregator fee on top of it.

Category
Shipping
Setup time
Under 10 minutes
Sync
On-demand rating · pull-based tracking

Overview

UPS + TackQuote

EasyPost charges a per-label fee on top of whatever the carrier charges. A seller who already holds a negotiated UPS contract and rates through an aggregator therefore pays twice: once to UPS under their own contract, and again for the privilege of buying the label. Connecting UPS directly removes that second charge. TackQuote authenticates with your own UPS app over OAuth 2.0 client credentials and calls UPS's Rating, Shipping and Tracking APIs itself, with no aggregator in the middle. When your shipper number is entitled to them, UPS answers with NegotiatedRateCharges — your contracted price, which is the number this connection exists to reach. Every rate carries its own cost basis, so a published rate returned because the account was not entitled is labelled as published rather than passed off as contract pricing. Where you have connected UPS directly, UPS is served directly even if EasyPost is also connected: a direct connection wins per carrier, because entering your UPS credentials is an unambiguous request to stop paying a per-label fee on UPS.

Create an app on the UPS Developer Portal, store its credentials alongside your shipper number, and TackQuote rates, labels and tracks on your own contract.

Where to connect. Setup happens in the seller portal — most connectors under Integrations, the rest on the Settings page named in the setup steps below.

Before you start

What you'll need

  • A UPS account with a shipper number your contract is attached to
  • An app on the UPS Developer Portal (developer.ups.com) for the Client ID and Client Secret
  • Negotiated-rate entitlement on that shipper number, if you want contract pricing rather than published rates

Setup

How to connect UPS

  1. Store your UPS credentials

    Client ID, Client Secret and your six-character UPS account (shipper) number belong under Settings → Shipping Carriers.
  2. Verify the connection

    A verification call runs the OAuth grant and nothing else — free, with no side effect — so a credential problem is reported as a credential problem rather than as a rating failure.
  3. Rate, label, track

    Request rates for a parcel, buy a label against the service code you choose, and pull tracking on demand. Buying a label is always an explicit action, because it spends real money on your UPS account.

Capabilities

What you get

Your Negotiated Rate Charges

Rating requests carry your shipper number, so UPS returns NegotiatedRateCharges where your account is entitled to them. That is your contracted price, not a retail estimate of it.

No Per-Label Aggregator Fee

Labels are bought from UPS and billed to your UPS account. Nothing sits between you and the carrier taking a cut of each label.

Cost Basis On Every Rate

Each rate says whether UPS applied your contract or its published tariff. A short rate list caused by an entitlement problem looks like one, instead of looking like the market.

Sandbox Before Production

Point the connection at UPS's Customer Integration Environment to exercise rating and labels without billable postage, then switch it to production.

FAQ

UPS questions

Why connect UPS directly when EasyPost already reaches UPS?

Cost. EasyPost adds its per-label fee on top of the UPS charge, so if you already hold a UPS contract you pay both. A direct connection bills only UPS. Where both are connected, TackQuote serves UPS directly and leaves your other carriers on EasyPost.

What if my shipper number is not entitled to negotiated rates?

UPS answers with its published rates and TackQuote labels them as published rather than as your contract price. Authentication succeeding proves your app credentials, not your pricing entitlement, so run a rate test to see which basis you are actually getting.

Can TackQuote reprint, void or refund a UPS label?

No. UPS returns the label inline when you buy it and gives no durable URL, so the document is handed to you once and never stored — re-hosting a buyer's full postal address is not something this API takes on. Void and refund are not implemented either; handle both in UPS directly.

Are shipping costs added to quote totals automatically?

Not yet. Rating, labels and tracking work, but nothing in the quote-pricing path reads a carrier rate — so a quote will never silently change price because a carrier changed a rate.

See the UPS overview page