Blog/Operations

STCC Codes Explained: A Shipper's Quick Reference

April 11, 2026 · 10 min read · Operations
Key fact: Every rail shipment in North America is classified by a 7-digit STCC code. Using the wrong one can mean overpaying on rates, triggering compliance issues, or having your shipment rejected at origin.

If you've ever looked at a rail freight bill of lading, you've seen a 7-digit number next to your commodity description. That's the STCC code — Standard Transportation Commodity Code — and it's one of the most important numbers in rail shipping. It tells the railroad what you're shipping, determines which rate applies, dictates equipment requirements, and flags whether special handling rules kick in. Most shippers never think about it until something goes wrong: a rate correction shows up on their invoice, a car gets held at origin, or a hazmat shipment gets rejected because the code doesn't match the placard. This guide breaks down how STCC codes work, how they're structured, and how to make sure you're using the right one.

What Are STCC Codes?

STCC stands for Standard Transportation Commodity Code. It's a 7-digit classification system maintained by the Association of American Railroads (AAR) that assigns a unique code to every commodity that moves by rail in North America. Think of it as the railroad's universal product catalog — every ton of coal, every carload of lumber, every tank car of ethanol has a corresponding STCC code that identifies exactly what it is.

The system was developed decades ago to standardize how railroads classify freight. Before STCC codes, each railroad had its own commodity descriptions and rate schedules, which made pricing inconsistent and billing disputes constant. The STCC system gave the industry a common language: a 7-digit number that means the same thing whether you're shipping on BNSF, Union Pacific, CSX, or Norfolk Southern.

STCC codes appear on virtually every rail shipping document you'll encounter. They show up on the bill of lading, the waybill, the freight bill, tariff publications, and rate quotes. If you're shipping by rail for the first time, you'll need to know your STCC code before you can get an accurate rate quote or book a car.

How STCC Codes Are Structured

An STCC code is a 7-digit number, and the digits aren't random. Each segment narrows the classification from broad category down to specific product. Understanding this hierarchy helps you verify you're using the right code and troubleshoot when something looks off.

The Digit Breakdown

Here's how the 7 digits break down, using crushed stone (STCC 1411210) as an example:

The structure works like a tree. The first two digits place you in a broad category (there are roughly 40+ major commodity groups). Each subsequent pair of digits gets more specific. By the time you reach all seven digits, you've identified the exact product.

Major Commodity Groups

The first two digits tell you the general category. Some of the most common groups rail shippers encounter:

First 2 Digits Commodity Group Examples
01 Farm Products Wheat, corn, soybeans
10 Metallic Ores Iron ore, copper ore
11 Coal Bituminous, anthracite, lignite
14 Nonmetallic Minerals Sand, gravel, crushed stone
20 Food & Kindred Products Processed foods, sugar, beverages
24 Lumber & Wood Products Lumber, plywood, wood chips
28 Chemicals Fertilizers, industrial chemicals, plastics
29 Petroleum & Coal Products Crude oil, diesel fuel, asphalt
32 Clay, Concrete, Glass Cement, bricks, glass products
33 Primary Metals Steel, aluminum, copper
40 Waste & Scrap Scrap metal, recyclables
46 Miscellaneous Mixed Shipments Multimodal container freight
49 Hazardous Materials Hazmat-classified commodities

Notice that group 49 is special — it's reserved entirely for hazardous materials, which we'll cover in detail below.

Why STCC Codes Matter to Shippers

STCC codes aren't just administrative paperwork. They directly affect four things that hit your bottom line: rates, equipment, handling, and compliance.

Rate Determination

The STCC code is one of the primary inputs railroads use to calculate your freight rate. Railroad tariffs are organized by STCC code — each code maps to a specific rate group, and those rate groups have different pricing structures. Two commodities moving in the same type of car over the same route can have very different rates because their STCC codes place them in different rate categories.

This is why getting the code right matters financially. If your product gets classified under a higher-rated STCC code than it should be, you'll pay more per carload than necessary. And if a railroad audits the shipment and finds you've been using a lower-rated code than appropriate, they'll back-bill you for the difference — sometimes going back months. For a deeper look at how railroad pricing works, see our guide to rail freight rates.

Equipment Assignment

Different STCC codes require different types of railcars. Grain (STCC 01) moves in covered hoppers. Crushed stone (STCC 14) moves in open-top hoppers or gondolas. Chemicals (STCC 28) often require tank cars with specific linings and fittings. When you provide your STCC code on a car order, the railroad uses it to determine what equipment to supply. A wrong code can result in the wrong car showing up at your facility — and reordering means delays and potential demurrage charges on the car you can't use.

Handling and Routing

Certain STCC codes trigger special handling requirements. High-value goods might get priority routing. Temperature-sensitive commodities might be restricted from certain routes or yards. Heavy-loading commodities affect which track segments the car can travel (some branch lines have lower weight limits). The STCC code tells the railroad's operations team how to handle your car from origin to destination.

Regulatory Compliance

For hazardous materials, the STCC code is a compliance requirement, not just a pricing tool. Hazmat shipments must carry the correct 49-series STCC code, and that code must match the UN/NA number, the placard, and the shipping description on the bill of lading. Mismatches can result in fines, shipment rejection, or — in serious cases — DOT enforcement action. The stakes are higher here than a rate correction.

Common STCC Codes for Rail Commodities

Here are some of the most frequently used STCC codes across major rail commodity groups. If you're shipping any of these products, these are the codes you'll be working with:

Farm Products (01-Series)

Grain is one of the highest-volume rail commodities in North America. If you're an elevator operator or grain merchandiser, you'll use these codes on every shipment. See our grain shipping guide for the full picture.

Coal (11-Series)

Aggregates and Minerals (14-Series)

Metals (33-Series)

Fertilizers (28-Series)

Petroleum (29-Series)

Pro tip: Keep a reference list of the STCC codes you use regularly. When you need a rate quote, having the exact code ready eliminates back-and-forth and speeds up the quoting process.

Hazmat and the 49-Series STCC Codes

The 49-series STCC codes deserve their own section because they work differently from standard commodity codes and carry real regulatory weight.

When a commodity is classified as hazardous material under DOT regulations (49 CFR), it gets a 49-series STCC code in addition to — or sometimes instead of — its standard commodity code. The 49-series code is built from the commodity's UN/NA identification number, which links it directly to the DOT hazmat table.

How 49-Series Codes Are Structured

A 49-series STCC code starts with "49" and incorporates the hazmat class and UN number. For example:

When shipping hazmat by rail, the 49-series code must appear on the bill of lading, and it must match the placard on the car, the shipping name in the commodity description, and the emergency response information. Railroads cross-reference all of these, and discrepancies will stop your shipment.

Key Rules for Hazmat STCC Codes

  1. Always use the 49-series code — not the standard commodity code — for any hazmat shipment
  2. Match it to the UN/NA number exactly — the railroad will verify this against the placard
  3. Update codes when regulations change — DOT periodically reclassifies materials, and your STCC code must reflect current classifications
  4. Residue cars still need hazmat codes — a tank car that last contained a hazmat product is still considered hazmat until it's been cleaned and purged

If you're shipping fertilizers like anhydrous ammonia or any petroleum products, you'll be dealing with 49-series codes regularly. Don't guess on these — get them wrong and you're looking at fines, not just rate adjustments.

STCC vs NMFC: Rail Codes vs Trucking Codes

If you ship by both rail and truck, you've probably encountered two different classification systems: STCC for rail and NMFC for trucking. They serve a similar purpose — classifying commodities for pricing — but they're completely separate systems maintained by different organizations.

Feature STCC (Rail) NMFC (Trucking)
Maintained by AAR (Association of American Railroads) NMFTA (National Motor Freight Traffic Association)
Code format 7 digits 6 digits + sub-items
Classification basis Commodity identity and characteristics Density, stowability, handling, liability
Rate impact Maps to railroad tariff rate groups Maps to LTL freight classes (50-500)
Hazmat handling 49-series STCC codes Hazmat class within NMFC item
Used by Class I, short line, and regional railroads LTL and truckload carriers

The key difference is philosophical. NMFC classification is heavily based on density (how much space your freight takes up relative to its weight), while STCC classification is based on what the commodity actually is. A carload of steel coils and a carload of crushed stone might have similar densities, but they have very different STCC codes — and very different rate structures — because the railroads price them based on commodity value, handling requirements, and market competition.

There's no direct crosswalk between STCC and NMFC codes. If you're transitioning freight from truck to rail (or using transloading to combine both), you'll need to know the appropriate code for each mode separately.

How to Find the Right STCC Code

Finding the correct STCC code for your commodity is straightforward if you know where to look. Here's the process:

1

Start with the AAR STCC Directory

The official STCC directory published by the AAR is the authoritative source. It lists every active code with full commodity descriptions. Your rail logistics provider should have access to the current edition and can look up codes for you.

2

Check Railroad Tariff Publications

Class I railroads publish their tariffs with STCC codes listed by commodity. If you're already working with a railroad, their pricing team can confirm the correct code for your product. Rate quotes typically include the STCC code, so you can verify it matches your commodity.

3

Describe Your Product Precisely

When looking up a code, be specific about what you're shipping. "Steel" isn't enough — the code differs for steel coils, steel plate, steel pipe, steel scrap, and structural steel. Similarly, "chemicals" could be dozens of different codes. The more specific your commodity description, the more accurate the code assignment.

4

Consider the Form and Packaging

The same basic material can have different STCC codes depending on its form. Raw iron ore has a different code than iron ore pellets. Bulk liquid caustic soda has a different code than bagged dry caustic soda. The physical form of your product — bulk, bagged, liquid, pelletized, coiled — can change the classification.

5

Verify with Your Rail Logistics Provider

Before locking in a code for a new commodity, confirm it with someone who deals with rail tariffs daily. A good rail logistics provider will verify the code, check that it matches the tariff rate you were quoted, and flag any hazmat implications you might have missed.

Important: STCC codes are periodically updated by the AAR. Codes can be added, retired, or reclassified. If you haven't shipped a particular commodity in a while, verify the code is still current before placing a car order.

Common STCC Mistakes and How to Avoid Them

After years of coordinating rail shipments, these are the STCC-related errors we see most often — and every one of them costs the shipper time or money.

1. Using a Generic Code When a Specific One Exists

Every commodity group has "NEC" (not elsewhere classified) catch-all codes. Some shippers default to these when a more specific code exists for their product. The problem: NEC codes often carry higher rates because railroads price them conservatively. If your specific product has its own STCC code, using it can mean a lower rate.

For example, shipping potash as "fertilizer materials, NEC" instead of using the specific potash code (2812530) could put you in a higher rate group. Always look for the most specific code that matches your product.

2. Not Updating Codes When Products Change

If your manufacturing process changes the composition, form, or classification of your product, the STCC code may need to change too. A shipper who starts producing a different grade of steel, switches from bulk to bagged product, or changes the chemical formulation of a product should verify the STCC code still applies. Using an outdated code is one of the most common triggers for railroad audits and rate corrections.

3. Confusing Standard and Hazmat Codes

A commodity can have both a standard STCC code (describing what it is) and a 49-series code (describing its hazmat classification). For hazmat shipments, you must use the 49-series code. Some shippers accidentally use the standard code on hazmat shipments, which can result in the car moving without proper hazmat routing and handling — a serious safety and compliance issue.

4. Copying Codes from Old BOLs Without Verifying

It's tempting to pull the STCC code from a previous bill of lading and reuse it. This works fine as long as the code hasn't been updated, your product hasn't changed, and the original code was correct in the first place. We've seen shippers carry forward an incorrect code for years, only discovering it during a railroad audit that results in a large back-billing for rate differences.

5. Ignoring Packaging and Form Differences

As mentioned above, the same base material in different forms can have different STCC codes. Crude oil in a tank car has a different code than petroleum coke in a gondola, even though both come from petroleum. If you're shipping the same basic commodity in a new form or packaging, double-check the code.

STCC Codes in Your Shipping Documents

The STCC code appears in multiple places throughout the shipping process. Knowing where it shows up helps you verify consistency and catch errors before they become problems:

Consistency across all of these documents is critical. If your BOL says one STCC code and your rate agreement references another, you're setting yourself up for a billing dispute. For more on rail shipping paperwork, check our supply chain courses which cover documentation in detail.

Frequently Asked Questions

What is an STCC code in rail freight?

An STCC (Standard Transportation Commodity Code) is a 7-digit number used by railroads to classify every commodity shipped by rail. It determines which tariff rates apply, what equipment is required, and whether special handling rules are in effect.

How do I find the STCC code for my product?

Start with your railroad's tariff publications or ask your rail logistics provider. The AAR's STCC directory is the official reference. Your product's composition, form, and packaging all affect which code applies, so be as specific as possible when looking one up.

What happens if I use the wrong STCC code?

Using the wrong STCC code can result in rate corrections (usually higher), reclassification penalties, rejected shipments, or compliance violations if hazmat codes are involved. Railroads audit STCC codes and will back-bill the difference if they find a mismatch.

What is the difference between STCC and NMFC codes?

STCC codes are used exclusively for rail freight, while NMFC codes are used for trucking. They classify commodities for pricing but use different numbering systems and are maintained by different organizations — the AAR for STCC and the NMFTA for NMFC.

Do STCC codes affect rail freight rates?

Yes. STCC codes are one of the primary factors that determine your rail freight rate. Each code maps to a tariff rate group, and different commodities carry different rate structures based on value, density, handling requirements, and market factors.

Steel Wheel Logistics
We coordinate bulk rail freight across North America — from rate negotiation and car sourcing to transload coordination and tracking. Based in Mississippi, serving shippers nationwide.

Ready to Ship by Rail?

We'll evaluate your lanes and tell you straight whether rail makes sense for your freight. No obligation.

Get a Free Quote
← Back to All Posts