91³Ô¹ÏÍø

Watch CBS News

Trump legal fees dispute heads to Georgia Court of Appeals as Fani Willis seeks to block nearly $17 million payout

An Atlanta judge has allowed Fulton County District Attorney Fani Willis to seek immediate appellate review in a dispute over millions in legal fees tied to the now-dismissed Georgia election interference case against former President Donald Trump.

On Monday, Fulton County Superior Court Judge Scott McAfee granted a Certificate of Immediate Review, allowing Fulton County District Attorney Fani Willis to challenge a previous ruling that blocked her office from intervening in the dispute nearly $17 million in legal fees sought by Trump and several co-defendants. 

The request sends the matter to the Georgia Court of Appeals, which will decide whether Willis should be allowed to participate in the legal fight over who ultimately pays the costs associated with the prosecution.

The judge previously barred Willis from dispute

The dispute stems from a ruling that disqualified Willis and her office from further involvement in matters tied to the case, including litigation over financial reimbursements after the indictment was dismissed. 

Trump and several co-defendants have sought reimbursement of their legal expenses under a Georgia law that allows defendants to recover attorney fees if a prosecution is found to be legally invalid.

Earlier this month, McAfee ruled that because the district attorney's office had been removed from the underlying prosecution, it could not intervene in the subsequent legal battle over the reimbursement claims. 

Willis' office argued that the decision would leave Fulton County taxpayers responsible for the massive legal bill.

Willis argues taxpayers should not foot the bill

In court filings, the district attorney's office said it intends to challenge both the legal basis for the claims and the potential financial impact on Fulton County.

"The District Attorney has no intention of allowing Fulton County taxpayers to pay such an absurd amount for such an absurd reason," the filing states. 

Willis' attorneys argue the statute being used to seek reimbursement does not apply in this case and claim many of the defendants' fee requests are either unreasonable or legally ineligible.

Appeals court already involved in case

The Georgia Court of Appeals has previously played a major role in the high-profile case.

In December 2024, the appellate court overturned a prior decision by McAfee that had allowed Willis to remain on the election interference prosecution. 

That ruling ultimately led to the collapse of the case against Trump and his co-defendants.

Now, the appellate court will again weigh in — this time on whether Willis can challenge the defendants' claims for millions in legal reimbursements.

What happens next

Because McAfee granted the certificate of immediate review, Willis' office can formally petition the Georgia Court of Appeals to take up the matter.

The outcome could have major financial implications for Fulton County, where the prosecution of Trump's alleged efforts to overturn Georgia's 2020 election results became one of the most closely watched cases in the country.

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(); } }); }); }); });