ShipEngine vs RevAddress: What the ShipStation API Rename Changes for USPS Teams
Updated 9 min read By RevAddress
Topics: Vendor comparison, Pricing
Start with the thing on ShipEngine’s own pricing page: “ShipEngine is becoming ShipStation API.” Every documentation link in their own navigation already points at docs.shipstation.com, and the pricing page title reads ShipStation API. Integrations keep working. Documentation URLs, support paths, and branding are moving, which matters if you are choosing a stack you expect to leave alone for three years.
Underneath the rename, the comparison is unchanged in shape. ShipEngine is a 200-carrier platform for logistics companies and marketplaces. RevAddress is a USPS layer for businesses whose parcels are mostly USPS. ShipEngine has more features; the question is what you pay to carry the ones you never call.
What ShipEngine charges, as published
| Plan | Price | What it covers |
|---|---|---|
| Free | $0/mo | ShipStation’s carrier accounts only. Labels, rate comparison, tracking, tracking webhooks, sandbox, analytics. No bring-your-own carrier accounts, no PUDO search. |
| Advanced | from $75/mo | 1,000 labels/mo. Bring your own carrier accounts, standalone address validation, PUDO search, taxes and duties, branded labels and tracking portal. |
| Enterprise | custom | For operations over 25,000 shipments a month. Custom billing, higher rate limits, dedicated implementation manager. |
Overage on Advanced steps down with the tier you sit on: $0.075 per additional label at 1,000, $0.065 at 5,000, $0.060 at 10,000.
Two details in that table change the bill.
The Free plan cannot validate an address on its own. ShipEngine footnotes it directly: US and global address validation on Free is performed as part of the Get Rates or Create Label actions. If your use case is checkout validation with no label at the end of it, Free does not serve it, and the entry price is $75 a month.
Advanced’s allowance is per endpoint, not pooled. ShipEngine’s FAQ describes the plan as 1,000, 5,000, or 10,000 API calls per month to each of order imports, create labels, track parcels, validate addresses, rate shopping, and PUDO searches. That is generous for a mixed workload, and it is the opposite of how RevAddress meters. Six endpoints at 1,000 calls each is six thousand calls for $75, as long as your traffic distributes the way the buckets do.
RevAddress pools everything into one monthly number: 1,000 requests on Free, 5,000 on Starter at $29, 25,000 on Growth at $79, 100,000 on Pro at $199. One bucket is simpler to reason about and worse at the boundary, because a spike in one endpoint eats another endpoint’s headroom.
Pricing per workload
ShipEngine’s headline price is per label. RevAddress’s is per API request. USPS’s own fee, which BYOK teams pay directly, is per address lookup. A fair comparison is per workload. A team shipping 5,000 USPS parcels a month, validating each address once:
- ShipEngine Advanced at the 5,000 tier: the plan, plus label volume, plus validation inside the validate-addresses bucket. Labels and validation both fit in their own allowances.
- RevAddress: Starter at $29 covers 5,000 pooled requests. Validating 5,000 addresses consumes the whole budget, so a real shipping workload wants Growth at $79 for 25,000. On top of that, USPS bills your own Enterprise Payment Account $22.50 for 5,000 address lookups. Label creation needs Pro at $199.
- Postage is paid to USPS in both cases and is not part of either fee.
If the entire job is labels, ShipEngine’s model is built for it. If the job is a lot of address work and a smaller number of labels, the pooled model gets cheaper fast, because RevAddress does not charge per validation at all.
Architecture
| Feature | ShipEngine | RevAddress |
|---|---|---|
| Carriers | 200+ carriers and order sources | USPS only |
| USPS access | ShipEngine’s carrier accounts, or your own on Advanced | Your own USPS enrollment (BYOK) on paid plans |
| Address parsing | Yes, unstructured text to fields | No, structured input required |
| Batch validation | Yes | Yes, 50 addresses per call on your USPS license, Growth and above |
| Webhooks | Yes | Tracking webhooks on Starter and above, limited rollout |
| Insurance | Yes | No |
| SDKs | C#, Java, Node.js, PHP, Python, Ruby | Python, Node.js, PHP, MIT-licensed |
| Interactive docs | Yes | Yes, OpenAPI 3.0 with a live try-it |
| Latency | Not published | Measured live on the status page |
ShipEngine has more surface. Free-text address parsing, multi-carrier rate comparison, insurance, taxes and duties, PUDO lookup, branded tracking portals, and the broadest SDK coverage in the category. Each of those is a real capability RevAddress does not have.
RevAddress goes deeper on one carrier. Raw DPV confirmation codes and DPV footnotes, ZIP+4, carrier route, CMRA, vacancy and business flags, all returned on your own USPS license, plus Census-based standardization and geocoding that need no USPS license at all. A layer over one carrier can expose that carrier’s fields; a layer over two hundred has to normalize them.
What comes back from a validation
import shipengine
se = shipengine.ShipEngine(api_key="TEST_xxx")
result = se.validate_addresses([{
"address_line1": "1600 Pennsylvania Ave NW",
"city_locality": "Washington",
"state_province": "DC",
"postal_code": "20500",
"country_code": "US",
}])
addr = result[0]
if addr.status == "verified":
print(f"Valid: {addr.matched_address.address_line1}")
else:
for msg in addr.messages:
print(f"{msg.type}: {msg.message}")
import requests
resp = requests.post(
"https://api.revaddress.com/api/address/validate",
headers={"X-API-Key": "rv_live_your_key_here"},
json={
"streetAddress": "1600 Pennsylvania Ave NW",
"city": "Washington",
"state": "DC",
"ZIPCode": "20500",
},
)
data = resp.json()
info = data.get("additionalInfo", {})
if info.get("DPVConfirmation") == "Y":
print(f"Valid: {data['address']['streetAddress']}")
print(f"Carrier route: {info.get('carrierRoute')}")
print(f"Delivery point: {info.get('deliveryPoint')}")
else:
print(f"DPV: {info.get('DPVConfirmation')}")
ShipEngine returns a verified or unverified status plus a message list. It has to: the same call has to describe a Canadian address and a German one, and a USPS-specific code has nowhere to go in that response.
RevAddress returns the DPV confirmation code as USPS issues it. Y confirmed, N not confirmed, D confirmed to the building with a missing secondary, S confirmed with an extra secondary USPS ignored, plus the DPV footnotes. Three of those four fail a boolean check and each one is a different repair. The status-plus-messages shape carries most of that information in prose; the code carries it in a field you can group by.
Labels, on whose credentials
This is where the two models diverge most.
ShipEngine buys postage through its own carrier accounts on Free, or through yours on Advanced. Either way, one API call produces a label.
RevAddress creates labels on your USPS license, on the Pro plan with access by request, drawing on your own Enterprise Payment Account. There is no RevAddress-credential label path, deliberately: postage has to be paid by the entity that owes it, and a shared-credential label is somebody else’s postage liability.
# Carrier-routed: the carrier_id selects USPS out of 200 options
shipment = se.create_label_from_shipment_details(
shipment={
"carrier_id": "se-USPS",
"service_code": "usps_ground_advantage",
"ship_from": from_addr,
"ship_to": to_addr,
"packages": [{
"weight": {"value": 32, "unit": "ounce"},
"dimensions": {
"length": 12, "width": 6,
"height": 4, "unit": "inch"
},
}],
},
)
label_url = shipment.label_download.pdf
# Runs on YOUR USPS license and EPA. Pro plan.
label = client.labels.create(
from_address={
"streetAddress": "123 Sender St",
"city": "New York",
"state": "NY",
"ZIPCode": "10001",
},
to_address={
"streetAddress": "456 Receiver Ave",
"city": "Los Angeles",
"state": "CA",
"ZIPCode": "90001",
},
weight=32,
mail_class="USPS_GROUND_ADVANTAGE",
processing_category="MACHINABLE",
)
label_url = label.label_url
No carrier_id on the RevAddress side, because there is one carrier. That is a small convenience and not a reason to choose a platform.
The reason to care about BYOK is upstream of the code. USPS tightened API access through 2026: CRID and MID enrollment, app-level approval, a signed Addresses API license, and a funded Enterprise Payment Account. When your access sits inside a reseller’s account, your continuity depends on their compliance posture. When it sits in your own CRID, it depends on yours.
BYOK and the USPS 60-requests-per-hour limit
On BYOK, USPS enforces 60 requests per hour per application on address validation by default, shared across every endpoint your app calls, which is 1,440 a day.
RevAddress budgets, caches, and retries against that window, and you can request an increase from USPS through a support ticket. ShipEngine’s shared pool absorbs the limit for you, which is a real advantage of a reseller. The rate limit guide covers the patterns that work within it.
When ShipEngine is the right choice
- You ship with three or more carriers. Multi-carrier rate comparison across FedEx, UPS, DHL, and USPS behind one contract is the product.
- You need free-text address parsing. ShipEngine turns “1600 Penn Ave Washington DC” into fields. RevAddress requires structured input.
- You need insurance, duties, or PUDO lookup. RevAddress has none of these.
- Your workload spreads evenly across endpoints. Per-endpoint buckets are strictly better than a pooled budget when no single endpoint dominates.
- You are building a logistics platform or a 3PL. Carrier abstraction is the whole point, and paying for it is correct.
- You need C#, Java, or Ruby. RevAddress ships Python, Node.js, and PHP.
When RevAddress is the right choice
- USPS is most of what you ship. A 200-carrier abstraction has a cost, and it is paid in per-label fees and in USPS fields that get normalized away.
- Your address volume is much larger than your label volume. Validation, standardization, and geocoding are not metered per call on a RevAddress plan; they draw on one monthly budget that costs $29 or $79.
- You want the USPS relationship in your name. BYOK on every paid plan. The CRID, MID, EPA and USPS reporting are all yours.
- You want to start at zero. 1,000 requests a month of Census-based standardization, geocoding, and address extract, no USPS license, no card. It puts an address into correct postal form with coordinates; whether mail arrives is a DPV answer, on your own license.
- You need the raw postal fields. DPV codes, DPV footnotes, ZIP+4, carrier route, CMRA, vacancy, business flags, all on your own USPS license.
- You want to read the client library. The SDKs are MIT-licensed and public.
Migrating the USPS endpoints
Non-disruptive, one endpoint at a time. ShipEngine keeps serving your non-USPS carriers throughout.
- Create a free key at revaddress.com/signup. No card.
- Install:
pip install usps-v3ornpm install usps-v3. - Swap validation.
se.validate_addresses()becomesclient.addresses.validate(). Mapverifiedto DPVY; read the footnotes for everything ShipEngine put inmessages. - Run both against real addresses and diff the results before cutting traffic over. Free-tier volume covers a sample.
- Connect your USPS app from the dashboard for DPV, ZIP+4, rates, and service standards. About three minutes if your license already exists. If it does not, start the CRID and MID enrollment now, because signatures move at legal-department speed.
- Move labels last, and only if you are on Pro with a funded EPA.
- Keep ShipEngine for FedEx, UPS, DHL, insurance, and duties.
Budget two to four hours for a validation swap. Budget weeks for the USPS license if you do not have one, and start that clock first.
Sources
- ShipEngine, Pricing, checked August 23, 2026. Plan prices, the overage ladder, the per-endpoint FAQ answer, the Free-plan validation footnote, and the ShipStation API rename banner are all published there. Monthly prices for the 5,000 and 10,000 tiers are not shown on the public page; only the overage rates are.
- USPS, Addresses API Tech Sheet, fee schedule effective August 1, 2026, published August 13, 2026.
- RevAddress plan prices, limits, and per-plan features come from the pricing page, which renders from the same catalog the API meters against.
Start today
- Create a key, free for 1,000 requests a month with no card
- See pricing
- API reference with a live try-it
- Shipping API comparison 2026: EasyPost, Shippo, ShipEngine and RevAddress side by side
Questions
- Is ShipEngine shutting down?
- No. ShipEngine's own pricing page carries a banner reading "ShipEngine is becoming ShipStation API," and its developer documentation now lives at docs.shipstation.com. This is a rename and consolidation under the ShipStation brand, not a shutdown. Existing integrations keep working; plan on documentation URLs and branding moving.
- What does ShipEngine's Advanced plan include?
- As published in August 2026, Advanced starts at $75 a month for 1,000 labels, and the allowance is per endpoint rather than pooled. ShipEngine's own FAQ describes 1,000, 5,000, or 10,000 API calls per month to each of order imports, create labels, track parcels, validate addresses, rate shopping, and PUDO searches. Overage runs $0.075 per additional label at the 1,000 tier, $0.065 at 5,000, and $0.060 at 10,000.
- Can I validate addresses on ShipEngine's free plan?
- Only inside another call. ShipEngine's pricing page footnotes that US and global address validation on the Free plan can be performed as part of the Get Rates or Create Label actions. Standalone validation, along with bringing your own carrier accounts, requires Advanced.
- Does RevAddress create shipping labels?
- Yes, on your own USPS license. Label creation and voids are on the Pro plan, with access by request. RevAddress does not print labels on its own credentials, because postage has to be paid by the entity that owes it. Census standardization is free; rates, service standards and USPS verification need a paid plan.
- Do I need a USPS license for RevAddress?
- Not to begin. Standardization, geocoding, and address extract run against US Census Bureau data with no USPS credentials at all. DPV, ZIP+4, rates, tracking, and labels run on your own signed USPS Addresses API license, connected from the dashboard in about three minutes. RevAddress manages the OAuth lifecycle, credential encryption, caching, retries, and rate-limit budgeting on top of it.
Read next
-
Shipping API Comparison 2026: EasyPost, Shippo, ShipEngine, RevAddress
EasyPost, Shippo, ShipEngine and RevAddress compared on published rates: labels, tracking, address lookups, USPS fees, and the fitting volume for each.
-
Shippo vs RevAddress: Per-Label Fees, Per-Validation Fees, and Flat Plans
Shippo bills $0.07 a label and $0.02 an address validation as of August 2026. What that costs at volume against a flat plan, and when Shippo wins.
-
USPS API Pricing 2026 — What It Actually Costs
USPS address validation stopped being free on August 1, 2026. The published fee curve, the license that gates it, and what direct vs third-party costs.