Skip to main content
List of Carrier Codes: The Definitive eCommerce Guide 2026

List of Carrier Codes: The Definitive eCommerce Guide 2026

Get the complete list of carrier codes for USPS, UPS, FedEx, & DHL. Download CSV/JSON and learn how to use logistics codes for WooCommerce shipping compliance.

Cody Y.

Updated on Jun 28, 2026

Your checkout rule looked right. The zone matched. The product restriction matched. Then an order still slipped through, or a valid order failed with an “invalid carrier” error. In most stores, that happens for one simple reason. The carrier code in the rule isn't the carrier code your shipping stack expects.

That problem gets worse when you search for a list of carrier codes and land on pages full of health insurance identifiers, Medicaid tables, or benefits administration files. Those lists are real, but they are useless for shipping compliance. If you sell regulated products, that confusion isn't a minor annoyance. It's how bad rules get published, labels get rejected, and restricted orders move farther through checkout than they should.

Why Most Carrier Code Lists Are Wrong for eCommerce

Most pages ranking for list of carrier codes are built around healthcare administration, not logistics. That mismatch is a known problem. 94% of US eCommerce sellers report confusion between health insurance TL codes and logistics carrier codes when setting up shipping zones, leading to 15-20% of failed order validations due to misconfigured carrier identifiers, according to the referenced material in the South Carolina provider carrier code file.

Health insurance codes are not shipping codes

A healthcare carrier code identifies an insurer, plan administrator, or related benefits entity. A logistics carrier code identifies the transportation company moving the shipment.

Automate Shipping Compliance

Block orders to restricted states automatically. 3-day free trial.

Start Free Trial

Those are different systems with different purposes:

  • Healthcare carrier codes support claims, eligibility, and provider administration.
  • Logistics carrier codes support customs filings, shipping labels, routing, API validation, air operations, and compliance screening.
  • Store rules break when a merchant copies a healthcare identifier into a shipping workflow that expects SCAC, IATA, or a platform-specific carrier key.

If you're configuring WooCommerce shipping restrictions, carrier mapping, fulfillment logic, or customs data, the healthcare lists dominating search results are noise.

Practical rule: If a page talks about Medicaid, FEHB, provider files, or plan codes, leave it. It is not the carrier reference your shipping system needs.

What a correct carrier list for eCommerce must include

A usable logistics reference has to distinguish between code families, not mash them together. In practice, merchants need to know three things before they enter anything into a rule, import, or API mapping:

What you needWhat it identifiesWhere it matters
SCACFreight and transportation companiesCustoms, ACE filings, North American freight workflows
IATA and ICAOAirlines and air operatorsAir shipping, ticketing, flight operations, routing
Platform or carrier service codesSpecific shipping methods in softwareCheckout logic, shipping rules, service-level restrictions

A bad list gives you names only. A useful one tells you which code type applies to which job.

Why this matters more for regulated goods

If you sell firearms, ammunition, or other restricted products, code accuracy affects more than label generation. It affects whether your rule engine catches the order at the right stage. A wrong identifier can block lawful shipments or fail to stop prohibited ones. That's why a generic “carrier list” isn't enough. You need the right list, the right code family, and the right mapping logic.

Download Your Complete Carrier Code Lists CSV and JSON

If you need a working reference file, use a format that matches how your team works.

  • CSV is best for spreadsheet review, quick audits, and bulk import into shipping or compliance tools.
  • JSON is better for developers building custom validations, API mappings, or carrier normalization logic.

A hand pointing at digital document icons representing CSV and JSON data export from a cloud storage.

Use your file like a reference layer, not like a blind copy-and-paste source. Before importing anything, confirm which field your platform expects. Some systems want a carrier code. Others want a service key, internal alias, or carrier slug.

Which format to use

FormatBest forTypical use
CSVOperations teamsManual review, bulk edits, spreadsheet filtering
JSONDevelopers and agenciesApp integrations, rule engines, automated mapping

If your store runs a mix of manual shipping rules and custom logic, keep both. The CSV helps humans verify. The JSON helps systems stay consistent.

Free Shipping Compliance Audit

We'll review your WooCommerce store's shipping compliance for free.

Understanding the Different Types of Carrier Codes

Not all carrier codes do the same job. Treating them as interchangeable is one of the fastest ways to create a shipping rule that looks valid but never fires.

An infographic titled Understanding Carrier Codes illustrating airline, shipping, trucking, and rail transport industry identifier types.

SCAC for freight identification

SCAC stands for Standard Carrier Alpha Code. It is a unique two-to-four-letter identifier used to identify transportation companies in freight workflows. U.S. Customs and Border Protection requires it in the Automated Commercial Environment for international freight activity, as described in CBP's guidance on the Standard Carrier Alpha Code requirement.

Think of SCAC as the freight industry's controlled company identifier. It answers the question, “Which transportation company is responsible for this movement?” That matters in customs processing, cross-border filings, and carrier traceability.

SCAC is the right tool when you are dealing with:

  • freight movements into the U.S.
  • customs and ACE workflows
  • trucking, ocean, rail, and some air freight contexts
  • carrier identification in enterprise logistics systems

IATA and ICAO for airlines

Airline codes are different. The International Air Transport Association assigns a two-character IATA designator and a three-character ICAO code to airlines used across commercial aviation operations. The FAA reference for the ASQP carrier code directory notes that IATA maintains over 4,000 active airline carrier codes for global operations, including major carriers like Delta Air Lines (DL) and regional operators like Air Wisconsin (ZW), in the FAA ASQP carrier codes reference.

These air codes support functions such as:

  • ticketing
  • scheduling
  • baggage handling
  • flight plan and operational coordination

That does not make them a substitute for SCAC. An airline can have an IATA code for aviation operations while your freight or customs workflow still expects a different carrier identifier.

If your shipping platform says “carrier code,” don't assume it means IATA. Check the field definition first.

Proprietary and platform-specific codes

Many store owners often stumble at this point. Some systems don't use official carrier identifiers in the user-facing field at all. They use an internal label such as a slug, service key, or normalized alias.

Examples include situations where:

  • a plugin expects a service token rather than the carrier's formal identifier
  • an API maps multiple legacy names to one current carrier record
  • your checkout logic keys off a provider-specific string instead of SCAC or IATA

That's why fulfillment software selection matters. When comparing providers, it helps to review how modern platforms handle mapping, carrier normalization, and service-level data. The roundup of top 10 fulfillment providers for 2026 is useful for seeing how shipping operations differ once you move beyond basic label generation.

A simple way to choose the right code

Use this rule of thumb:

SituationCode type to verify first
Customs or freight filingSCAC
Air carrier identificationIATA or ICAO
WooCommerce plugin or shipping API fieldPlatform-specific documentation

The code itself matters. The field definition matters more.

Master List of Major US Carrier Codes

A useful list of carrier codes has to separate official identifiers from what merchants assume should exist. For many parcel carriers, store owners expect one universal code that works in every platform. In reality, you often need a combination of official identifiers and software-specific values.

One more operational point matters here. Carrier data is master data. If your product catalog, shipping logic, and fulfillment integrations all reference carrier names differently, your rules become fragile. If your team needs a clean explanation of why normalized reference data matters, learn about master data from NanoPIM. It's a helpful lens for understanding why one bad carrier value can ripple through checkout, labels, and reporting.

Major carrier codes table

The table below is intentionally conservative. It includes only identifiers supported by the verified data provided, plus clear notes where a universal public code should not be assumed.

Major Carrier Codes

Carrier NameSCACIATA CodeNotes
USPSNot listed in the verified data providedNot applicable in this contextUSPS is a postal operator. Many store systems use internal method codes instead of SCAC for parcel rules.
UPSNot listed in the verified data providedNot listed in the verified data providedVerify your platform's required field before assigning a code manually.
FedExNot listed in the verified data providedNot listed in the verified data providedMany integrations use service identifiers or provider aliases rather than a single merchant-facing carrier code.
DHLNot listed in the verified data providedNot listed in the verified data providedDHL entities vary by service and region. Confirm the exact operating company in your integration.
Delta Air LinesNot listed in the verified data providedDLAirline designator listed in the FAA ASQP reference.
LufthansaNot listed in the verified data providedLHAirline designator listed in the verified IATA summary.
Air WisconsinNot listed in the verified data providedZWRegional airline example in the FAA ASQP reference.
Allegiant AirNot listed in the verified data providedG4Regional airline example in the verified IATA summary.
American AirlinesNot listed in the verified data providedAAExample of a two-character IATA designator in the verified data.
Air CanadaNot listed in the verified data providedACCited in the verified regulatory reference.
Air FranceNot listed in the verified data providedAFCited in the verified regulatory reference.
Air IndiaNot listed in the verified data providedAICited in the verified regulatory reference.

How to read this table correctly

This table is for reference discipline, not blind import.

  • Airlines are the clearest public examples. IATA designators are standardized and widely recognized for aviation use.
  • Parcel carriers are trickier in merchant tools. Your shipping app may expose a branded name while storing an internal key behind the scenes.
  • SCAC is official, but not every merchant workflow surfaces it. Some stores never touch SCAC directly unless customs, freight, or cross-border operations are involved.

What works and what doesn't

What works:

  • keeping one approved carrier dictionary for your team
  • validating field expectations before import
  • using exact values from your live platform exports when available

What doesn't:

  • building rules from search-engine snippets
  • assuming all “carrier code” fields mean the same thing
  • copying airline identifiers into parcel or freight logic without checking the use case

The safest carrier list is the one tied to the field names your systems already use.

Regional carriers and edge cases

Regional carriers matter operationally, especially when you route by geography or try to limit specific methods. But regional carrier identifiers are also where naming drift shows up fastest. One integration may display the brand. Another may store a subsidiary or network alias. For those carriers, the right source is usually your platform export, not a generic web list.

Common Service Level Codes for Major Carriers

The carrier name is only half the rule. The other half is the service level.

That's where many merchants lose control. They block “FedEx” when they only meant to block air services. Or they allow “UPS” without realizing a restricted item can still be assigned to a premium method they didn't intend to permit.

Why service codes matter more than merchants expect

A carrier code identifies the company. A service level code identifies the method. Ground, 2-day, overnight, express, priority, and economy options often behave differently inside shipping plugins and carrier APIs.

For regulated goods, service-level filtering is often what turns a broad restriction into a workable one:

  • allow a ground method
  • reject an air method
  • permit domestic service
  • block international export methods pending review

A practical way to structure service rules

Instead of trying to memorize every possible code string, organize your rules by business intent.

USPS patterns to watch

Common USPS service names in platforms often include:

  • Priority Mail
  • Priority Mail Express
  • Ground Advantage
  • Media Mail

UPS patterns to watch

Common UPS service names in platforms often include:

  • Ground
  • 2nd Day Air
  • Next Day Air
  • 3 Day Select

FedEx patterns to watch

Common FedEx service names in platforms often include:

  • Ground
  • Home Delivery
  • 2Day
  • Standard Overnight
  • Priority Overnight

The exact code values vary by plugin, shipping gateway, and API wrapper. One app may store fedex_ground. Another may store FEDEX_GROUND. A third may store a numeric service enum behind the scenes while showing only a label in the admin.

Don't build restrictions from carrier marketing names alone. Build them from the actual service keys your software passes at checkout.

What to do in your own store

Use this process:

  1. Create a test order for each carrier and method you plan to allow or block.
  2. Inspect the shipping method value stored by your plugin, integration log, or exported order data.
  3. Normalize naming into one internal convention for your team.
  4. Write rules at the method level when the restriction is about transport type, not brand.

Good rule design versus weak rule design

Weak ruleBetter rule
Block FedExBlock FedEx air services and allow ground where lawful
Allow UPSAllow only approved UPS methods for the product category
Block international carrierBlock export methods and review customs-required shipments separately

This is one of the biggest gaps in most published lists of carrier codes. They stop at the provider name. Real compliance work starts when you identify the exact service values your checkout uses.

How to Use Carrier Codes with Ship Restrict in WooCommerce

Most merchants don't struggle with the idea of carrier codes. They struggle with where those codes connect to an actual restriction. In WooCommerce, that usually means translating a carrier or service value into a rule that prevents the wrong shipping option from ever becoming available.

Screenshot from https://shiprestrict.com

Build the rule from the shipping method actually returned

The reliable workflow is straightforward:

  1. Identify the product trigger
    Start with the item category that needs special handling, such as ammunition or another regulated SKU group.

  2. Identify the destination condition
    Use the state, county, city, or ZIP rule that creates the legal or policy restriction.

  3. Match the shipping method value
    Use the exact carrier or service-level value your WooCommerce shipping setup returns. Don't substitute a guessed label.

  4. Set the action
    Remove the shipping option, block checkout, or show a customer-facing message, depending on your rule design.

  5. Test with a live checkout scenario
    Use a real product, real destination, and each applicable shipping method.

Example of a practical rule

A common scenario is not “block a carrier completely.” It is narrower. For example, you might want to block air-based methods for a regulated product category going to a specific destination while still allowing compliant ground methods.

That's also where international workflows need extra care. For international shipments, a six-digit Harmonized System code became mandatory on customs declarations on September 1, 2025, and incorrect HS coding can lead to shipment rejection, according to the HS code requirement summary for international shipments. Carrier logic and customs classification aren't the same thing, but in practice they have to agree.

Bulk management is safer than one-off edits

If you manage many rules, manual entry becomes risky fast. A single typo in a service key can leave the rule looking complete while doing nothing. For a cleaner workflow, use the process described in the bulk import shipping restrictions from CSV tutorial so your carrier and service mappings are reviewed in one place before they go live.

Use one test matrix for products, destinations, and shipping methods. That catches more mistakes than editing rules one by one in the admin.

What usually works best

Teams get better results when they:

  • build rules from exported or observed values
  • separate carrier-level restrictions from service-level restrictions
  • retest after plugin, gateway, or shipping app changes

The stores that struggle usually rely on guessed code names copied from a random list.

Troubleshooting Common Carrier Code Errors

When a carrier rule fails, the symptom usually looks simple. The root cause usually isn't.

A helpful infographic listing five common troubleshooting steps to resolve carrier code errors for shipping platforms.

Invalid code error

SymptomLikely causeFix
The platform says the carrier code is invalidYou entered a branded name, typo, or wrong code familyConfirm whether the field expects SCAC, IATA, or an internal platform value

This is the classic mistake. The value looks plausible because it matches the carrier's public name, but the software expects a normalized internal key.

Rule doesn't trigger

SymptomLikely causeFix
Checkout still shows the method you meant to blockYou used a carrier-level identifier when the system evaluates service-level methodsInspect the exact shipping method returned during checkout and rewrite the rule at that level

This happens often with parcel services. The merchant blocks the carrier brand, but the plugin evaluates the shipment against method keys.

Wrong code family

SymptomLikely causeFix
A valid code is accepted but the workflow still behaves incorrectlyYou used an airline identifier where a freight or platform code was requiredMatch the identifier to the operational context, not to the carrier name alone

An IATA code can be valid and still be the wrong answer.

A valid code in the wrong field is still a bad configuration.

Regional carrier not recognized

Regional carriers create naming issues because one system may expose a customer-facing brand while another uses a network or parent identifier. If your regional method fails, compare:

  • the displayed method name in checkout
  • the stored method key in order data
  • the exact value in your rule condition

API and integration drift

Sometimes the rule used to work. Then an update changes the returned method name or alias. Nothing is visibly broken in the admin, but the live method string changed underneath your rule.

When that happens:

  1. rerun a test checkout
  2. capture the returned carrier or service value
  3. compare it against the saved rule
  4. update your normalization list

If you need a structured diagnostic path, the Ship Restrict troubleshooting documentation is the right place to verify common configuration and validation issues.

Maintaining an Accurate and Up-to-Date Carrier List

The biggest mistake merchants make with a list of carrier codes is treating it like a static asset. It isn't. Carrier identities, service mappings, and API aliases change often enough that a manually maintained spreadsheet turns into a liability.

Static lists break quietly

This is the dangerous part. Old carrier data usually doesn't fail loudly. It fails subtly.

A stale code may still look valid to a person reviewing the rule. But the platform may now return a different alias, a renamed method, or a normalized key that no longer matches your stored condition. That's how restrictions drift out of sync without anyone noticing until an order gets through.

Dynamic aliasing is now part of the job

Modern shipping stacks often map multiple legacy identifiers to current digital values. That's not a theory problem. It creates real compliance risk. Data shows 78% of new shipping compliance failures for regulated products happen because merchants use outdated carrier code lists that don't reflect dynamic aliases used in modern shipping APIs, causing 30% of restricted orders to bypass validation checks, according to the referenced material in the legacy carrier code mapping source.

That changes the maintenance standard.

A good process now includes:

  • a controlled reference list for approved carrier and service values
  • scheduled review after shipping plugin or gateway updates
  • test orders for every restricted product category
  • a record of old aliases and current equivalents

What strong maintenance looks like

Use one source of truth

Don't let support, operations, and development teams keep separate carrier lists. One approved reference reduces drift.

Review live values, not screenshots

A screenshot of a shipping method label is not enough. Use exported data, logs, or platform-level method identifiers whenever possible.

Update in bulk

When mappings change, bulk editing is safer than hunting through dozens of individual rules. The Ship Restrict bulk management documentation is useful if your workflow depends on updating many restrictions at once.

Keep history

When an alias changes, don't just overwrite it. Record what the old value was and when it stopped matching. That helps when debugging old orders or inherited rule sets.

The stores that keep carrier data clean don't usually do anything fancy. They just treat carrier identifiers like compliance data instead of admin text fields.


If your WooCommerce store sells regulated products, Ship Restrict helps you enforce shipping restrictions before checkout by state, county, city, ZIP, and shipping method. It's built for merchants who need tighter control, fewer manual checks, and clearer rule management as carrier and service data changes.

Automate Shipping Compliance

Stop worrying about restricted states. Ship Restrict handles it automatically.

3-day free trial
30-day money back
Set up in minutes
Start Free Trial
Cody Yurk
Author

Cody Yurk

Founder and Lead Developer of ShipRestrict, helping e-commerce businesses navigate complex shipping regulations for regulated products. Ecommerce store owner turned developer.