US state hazardous waste generator annual fees by category
State-by-state annual registration and compliance fees for hazardous waste generators. Each record is one state’s fee for one generator category (VSQG, SQG, LQG, transporter, TSD facility), with the dollar amount, the fee basis (flat annual, per-ton, revenue-based), the due date, and the legal citation. Answers 'what is the annual hazardous waste fee for an SQG in [state]', 'which states charge VSQGs', 'what are the hazardous waste fees in North Carolina vs Vermont'. Fees range from $75 (Vermont VSQG) to $3,880+ (Massachusetts SQG) — a 50× range across states for equivalent generator categories.
The data
| State | Generator Category | Annual Fee | Fee Basis | Due Date | Effective Date | Legal Citation | Tonnage Fee |
|---|---|---|---|---|---|---|---|
| Washington | All generators | $69 | flat annual (revenue-based threshold: applies if gross income exceeded $12,000) | August 20 | 2025 | RCW 70A.300 | |
| New Jersey | CESQG | $50 | flat annual (adjusted annually) | N.J.A.C. 7:26G-3.3 | |||
| North Carolina | Disposer | $1,992 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | $2.45/ton received (commercial facilities only) | |
| Illinois | Incineration Facility | $4,000 | flat annual | 415 ILCS 5/22.15 | |||
| District of Columbia | LQG | $1,000 | flat annual | March 1 | 20 DCMR 4390 | ||
| Illinois | LQG | $500 | flat annual | 415 ILCS 5/22.15 | |||
| Iowa | LQG | $250 | flat annual | April 15 | Iowa Code 455B.424 | ||
| New Jersey | LQG | $940 | flat annual (adjusted annually) | N.J.A.C. 7:26G-3.3 | |||
| North Carolina | LQG | $1,660 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | $0.70/ton generated | |
| Vermont | LQG | $600 | flat annual | April 30 | 10 VSA Section 6608(f) | ||
| Virginia | LQG | $1,000 | flat annual | August 27, 2014 | 9VAC20-60-1285 | ||
| Wisconsin | LQG | $470 | flat annual plus tonnage | Wis. Stat. 289.67(2) | $20/ton generated | ||
| Illinois | Off-site Disposal Facility | $70,000 | flat annual | 415 ILCS 5/22.15 | |||
| Illinois | On-site Disposal Facility | $18,000 | flat annual | 415 ILCS 5/22.15 | |||
| District of Columbia | SQG | $500 | flat annual | March 1 | 20 DCMR 4390 | ||
| Iowa | SQG | $25 | flat annual | April 15 | Iowa Code 455B.424 | ||
| New Jersey | SQG | $660 | flat annual (adjusted annually) | N.J.A.C. 7:26G-3.3 | |||
| North Carolina | SQG | $317 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | $0.70/ton generated | |
| Vermont | SQG | $125 | flat annual | April 30 | 10 VSA Section 6608(f) | ||
| Wisconsin | SQG | $350 | flat annual plus tonnage | Wis. Stat. 289.67(2) | $20/ton generated | ||
| Illinois | Storage Facility | $500 | flat annual | 415 ILCS 5/22.15 | |||
| North Carolina | Storer | $1,992 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | $2.45/ton received (commercial facilities only) | |
| North Carolina | Transporter | $996 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | ||
| North Carolina | Treater | $1,992 | flat annual | July 1, 2025 | N.C.G.S. 130A-294.1 | $2.45/ton received (commercial facilities only) | |
| Illinois | Treatment Facility | $2,000 | flat annual | 415 ILCS 5/22.15 | |||
| District of Columbia | TSD Facility | $2,500 | flat annual | March 1 | 20 DCMR 4390 | ||
| Virginia | TSD Facility | $2,800 | flat annual | August 27, 2014 | 9VAC20-60-1285 | ||
| District of Columbia | VSQG | $100 (fewer than 8 employees) / $250 (8 or more employees) | flat annual | March 1 | 20 DCMR 4390 | ||
| Vermont | VSQG | $75 | flat annual | April 30 | 10 VSA Section 6608(f) |
Where this came from
Every record above links the page it was taken from and quotes the sentence that states it. These are the 9 sources this dataset was assembled from.
- ecology.wa.govhttps://ecology.wa.gov/waste-toxics/business-waste/reports-fees/hazardous-waste-generation-fee
- law.cornell.eduhttps://www.law.cornell.edu/regulations/new-jersey/N-J-A-C-7-26G-3-3
- deq.nc.govhttps://www.deq.nc.gov/about/divisions/waste-management/hazardous-waste-section/fees-and-records-management/hazardous-waste-fees
- epa.illinois.govhttps://epa.illinois.gov/topics/forms/fees/hazardous-waste.html
- doee.dc.govhttps://doee.dc.gov/service/hazardous-waste-annual-fee-and-self-certification
- iowadnr.govhttps://www.iowadnr.gov/environmental-protection/land-quality/hazardous-waste-contaminated-sites/fees
- dec.vermont.govhttps://dec.vermont.gov/waste-management/hazardous/administrative/generator-fees
- law.lis.virginia.govhttps://law.lis.virginia.gov/admincode/title9/agency20/chapter60/section1285/
- docs.legis.wisconsin.govhttps://docs.legis.wisconsin.gov/document/statutes/289.675
Machine-readable
- data.jsonThe whole dataset — every record with its source URL and source quote.
- Open Knowledge Format bundleOne JSON object per line — every record's frontmatter and quoted span exactly as it is held here, in one fetch.
- data.csvThe same records as one flat table, for a spreadsheet or a dataframe. The last four columns are the source URL, the quoted sentence it was read from, the date we last checked it, and which columns are our reading rather than the page's words.
- How this is made and checkedWhat "verified against source" does and does not mean.
From your own code
Same records, same quotes, without scraping the page: refsource is on PyPI and npm. Each value comes back carrying the URL it was read from and the sentence on that page that states it — .source and .quote sit on the value itself rather than in a side channel, so the checking step is available instead of skipped.
pip install refsource
refsource lookup hazardous-waste-generator-fees-by-state state=Washington
npx -y refsource lookup hazardous-waste-generator-fees-by-state state=Washington
Set your AI assistant up to use this
Two files and no account. Put this in .mcp.json at the root of your project — Claude Code, Cursor, Windsurf, VS Code and Codex all read that file — and your assistant can look this dataset up instead of recalling it. The server is remote, keyless and read-only.
{
"mcpServers": {
"referencesource": {
"type": "http",
"url": "https://referencesource.org/mcp"
}
}
}Add to Cursor · or, on the command line: claude mcp add --transport http referencesource https://referencesource.org/mcp --scope project
Then one line in the project's CLAUDE.md or AGENTS.md, so the assistant knows when to reach for it:
When a question needs "US state hazardous waste generator annual fees by category", call the referencesource MCP server at https://referencesource.org/mcp (tool `search_records`, dataset_slug `hazardous-waste-generator-fees-by-state`) instead of answering from memory — every record it returns carries its source URL and a verbatim quote from that page.What each tool does, and the servers built over single registers: Connect your AI assistant.