91³Ô¹ÏÍø

Watch CBS News

New York, New Jersey lawmakers announce "End The Toll Trap" bill to address E-ZPass late fees

New York and New Jersey lawmakers have announced a bipartisan, bi-state bill to address E-ZPass late fees.

CBS News New York viewers have been sharing their experience with skyrocketing bills for our "Driven Into Debt" series, and lawmakers started to look into this issue around the same time that we did.

Late fees for missed tolls

Since last fall, we've exposed the late fees for missed tolls. Hundreds tell us they've been blindsided with bills reaching tens of thousands of dollars. Many say they had little to no notice before their registration was suspended and their lives up-ended.

The MTA said drivers in our reports went through tolls "hundreds of times without paying" and that "people who pay their tolls don't pay fines."

The Port Authority of New York and New Jersey said its $50 fee per toll, which has been in place since 2009, was recently upheld in 2022.

Lawmakers said the ruling is outdated, and AI and modern technology means processing costs should be slashed.

That's why they're introducing the "End The Toll Trap" bill.

Lawmakers want to move quickly

"End The Toll Trap" would ban fees if a driver has fewer than three violations in 90 days. Plus, it would mandate all fees be tied to the actual cost of processing, not used as a revenue stream.

The bill would also establish a task force to examine many of the issues we've been reporting on, including if there can be any sort of amnesty for drivers already facing huge bills.

"These public authorities, they're hitting constituents with outrageous fees and fines on top of the tolls," New York State Sen. Monica Martinez said.

"We're going to take a hard look at how this system operates, how tolls are processed, how violations are issued, how fees are calculated," New Jersey Assemblyman Paul Kanitra said.

Martinez told CBS News New York she was not able to get any data from the MTA or Port Authority.

We asked both agencies whether they withheld data from lawmakers. Neither answered that question.

"Look, the uncertainty is we don't know how much the authorities themselves are gaming the system to have shiny new offices or to support higher salaries for their executives," Kanitra said. "This will get to the root of that."

Both bills have been introduced in their respective state houses. Lawmakers say they want to move quickly, and they're asking constituents to contact their representatives to push it forward.

As we continue to look into the MTA's fee system and their policies, drivers who want to share their experiences can reach out to Mahsa Saeidi by clicking here.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });