If you've ever stared at a rail BoL wondering which commodity code goes in which field, you're not alone. The three systems were built for different purposes by different authorities, and they overlap in confusing ways. Here's the strict distinction, with the conditions where each is required or optional.
The One-Paragraph Summary
On a rail BoL, the STCC is always required (the railroad rates the waybill against it). The NMFC item is optional and only relevant when the move involves intermodal or TOFC where the LTL classification matters. The HTS code is required on cross-border moves (per 19 CFR §123.91, 6-digit minimum; 10-digit HTSUS for US imports; 10-digit Fracción Arancelaria for Mexico).
STCC: Standard Transportation Commodity Code (Rail)
The Standard Transportation Commodity Code is a 7-digit numeric code maintained by Railinc, the AAR's data subsidiary. Every commodity moved by rail has an STCC. The railroad's electronic waybill is rated against the STCC, accessorials are triggered by the STCC, and the AAR's commodity statistics are aggregated by STCC.
STCC structure: 7 digits, often presented as NN-NNN-NN. Leading digits group commodity families:
- 01-04: Agricultural products (grain, fruit, livestock)
- 10: Metallic ores
- 11: Coal
- 13-14: Crude petroleum, natural gas, nonmetallic minerals
- 20-24: Food products, beverages, tobacco
- 26: Pulp, paper, and allied products
- 28: Chemicals
- 29: Petroleum products (refined)
- 32: Stone, clay, concrete, glass
- 33: Primary metal products
- 34-38: Fabricated metal, machinery, electrical, transportation equipment, instruments
- 40-46: Waste/scrap, special handling, mail, containers, intermodal
- 49: Hazardous materials (separate file at Railinc)
Required on every rail BoL line per AAR Rules 5 and 110. Without an STCC, the railroad can't rate the move.
NMFC: National Motor Freight Classification (LTL Truck)
The National Motor Freight Classification is the LTL trucking classification system maintained by the NMFTA (National Motor Freight Traffic Association). It groups commodities into 18 freight classes (Class 50 through Class 500) based on density, stowability, handling, and liability. The class drives LTL rates.
NMFC items are 6 digits, sometimes followed by a sub-item (e.g., 121200-01). The NMF 100 series book is the canonical publication ($200/yr subscription).
On a rail BoL, NMFC is optional. It's more commonly populated on intermodal (TOFC/COFC) moves where the freight may be reclassified at a transload to LTL trucks for final delivery. Most pure carload rail BoLs leave NMFC blank.
HTS / HTSUS: Customs Tariff Codes
The Harmonized Tariff Schedule is the global commodity classification system maintained by the World Customs Organization at the 6-digit level. National authorities extend it:
- HTSUS (US): 10-digit, maintained by USITC for imports into the US
- Schedule B (US exports): 10-digit, maintained by US Census Bureau
- Canadian Customs Tariff: 10-digit, maintained by CBSA
- Fracción Arancelaria (Mexico): 8-10 digit, maintained by SAT
HTS drives duty rates, USMCA eligibility, AES filings, and the Pedimento / CARM declarations. Per 19 CFR §123.91, the rail BoL on a cross-border move must show at minimum the 6-digit HTS classification with weight for sealed containers.
Which Code Goes Where on the Rail BoL
On the commodity row of a standard rail BoL:
- Description of articles: freetext + STCC + (hazmat) proper shipping name
- STCC code: 7 digits, required, in its own field
- NMFC item: 6 digits + sub-item, optional, in its own field
- HTS code: 6-10 digits, conditional (required on cross-border per §123.91)
Common shipper mistake: putting an HTS code in the STCC field, or vice versa. The railroad's rating engine fails because the codes don't match either's catalog. The free Rail BoL Builder validates STCC against the parsed Railinc catalog and HTS against the USITC HTSUS so you can't accidentally swap them.
Cross-Border Conditions
US to Mexico: the BoL needs both STCC (for the rail leg) and Fracción Arancelaria (10-digit MX customs code). The Carta Porte 3.1 complement uses BienesTransp (8-digit CPV code from a separate SAT catalog) plus FraccionArancelaria for the customs side. See our MX cross-border guide.
US to Canada: STCC for the rail leg + Canadian Customs Tariff code (10-digit) for the CBSA filing. See our CA cross-border guide.
US to overseas via rail-to-port: STCC + Schedule B (10-digit US export classification) + the ocean BoL HTS for the destination country's customs. The rail leg uses STCC; the ocean leg uses Schedule B for AES and HTS for arrival.
The 49-Prefix Hazmat STCC
Hazmat STCCs are maintained in a separate Railinc file. They start with "49" as the leading 2 digits (e.g., 4905755 for UN1203 Gasoline). When you check the HM indicator on a BoL line, the STCC validation expects a 49-prefix code.
This is independent of the UN identification number that appears in the proper shipping description (UN1203, Gasoline, 3, PG II). The UN number identifies the substance globally; the 49-STCC identifies it for rail rating purposes. Both go on the BoL.
Using the BoL Builder Validators
The free Rail BoL Builder validates each code against its source catalog:
- STCC: autocomplete from the parsed Railinc STCC catalog
- NMFC: optional, format-validated against the NMF 100 pattern
- HTS: validated against the USITC HTSUS (US imports), Schedule B (US exports), CBSA Tariff (CA), or Fracción Arancelaria (MX) catalogs depending on cross-border mode
- Hazmat lines: STCC required to start with "49"
Clean code data on the BoL means clean waybill data at the railroad, clean customs filings on cross-border moves, and fewer invoice disputes downstream. Open the BoL Builder →
Frequently Asked Questions
What's the difference between STCC and NMFC codes?
STCC (Standard Transportation Commodity Code, 7 digits) is a rail commodity code maintained by Railinc for railroad rating; required on every rail BoL line. NMFC (National Motor Freight Classification, 6 digits + sub-item) is an LTL trucking classification maintained by NMFTA that drives LTL freight class (50-500); optional on rail BoLs, more relevant on intermodal/TOFC moves that touch LTL.
What's the difference between STCC and HTS?
STCC is a US-only rail commodity code used by Railinc for railroad rating and AAR statistics. HTS (Harmonized Tariff Schedule) is the global customs classification system maintained by the World Customs Organization at the 6-digit level and extended by national authorities (HTSUS for US imports, Schedule B for US exports, Fracción Arancelaria for Mexico, Canadian Customs Tariff for Canada). HTS drives duty rates and is required on cross-border BoLs per 19 CFR §123.91.
Do I need STCC on every rail BoL?
Yes. AAR Rules 5 and 110 require the STCC on every commodity line of a rail BoL. Without an STCC, the originating carrier can't rate the move on the electronic waybill. For hazmat shipments, the STCC must be from the Railinc Hazmat STCC file (codes starting with "49").
When is HTS required on a rail BoL?
On cross-border moves. Per 19 CFR §123.91, the rail BoL must show at minimum the 6-digit HTS classification with weight for sealed containers entering the US. US exports require Schedule B (10-digit) on AES filings and on the BoL when applicable. US-to-MX moves need 10-digit Fracción Arancelaria; US-to-CA moves need 10-digit Canadian Customs Tariff.
Are hazmat STCC codes different from regular STCC codes?
Yes. Hazmat STCCs are maintained in a separate Railinc file (the Hazmat STCC layout) and always start with the leading digits "49" (e.g., 4905755 for UN1203 Gasoline). Non-hazmat STCCs use other leading digits (01-46). The 49-prefix is the validation signal that a commodity line should trigger the hazmat compliance block on the BoL.
Can I leave NMFC blank on a rail BoL?
Usually yes. NMFC is optional on rail BoLs. It's more commonly populated on intermodal (TOFC/COFC) moves where the freight may be reclassified at a transload to LTL trucks for final delivery and the LTL class matters. Pure carload rail BoLs typically leave the NMFC field blank.
Generate Your Rail Bill of Lading in 60 Seconds — Free
Stop assembling BoLs from PDF scans and spreadsheets. Our free Rail Bill of Lading Builder renders an AAR-compliant, hazmat-ready BoL with §172.204 certification, §172.604 emergency phone block, and Section 7 non-recourse signature line built in. Email-gated PDF download. No account needed.
Open the BoL Builder →Questions on a complex hazmat or cross-border move? Call (601) 821-2199.