91³Ô¹ÏÍø

Watch CBS News

See which retailers are changing their return policies for the holidays, and which are charging fees

The holiday shopping rush is over, which means the return rush will soon follow.

But before you head back to the store, check the fine print. Many major retailers are adjusting their return policies, while some are adding fees.

Amazon

Amazon is offering an extended return window for the holiday season.

Most items ordered between Nov. 1 and Dec. 31 can be returned through Jan. 31, 2026, as long as they're in the original packaging, according to the retailer's website.

There are some notable exceptions. Apple products purchased between Nov. 1 and Dec. 31 must be returned by Jan. 15, 2026.

The retailer also says several items cannot be returned, including perishables, customized products, automobiles and any products that were marked "final sale."

You can find Amazon's .

Apple Store

Apple says all items purchased between Nov. 8 and Dec. 25 can be returned through Jan. 8, 2026.

You can find Apple's .

Best Buy

Best Buy is letting customers return purchases made between Oct. 31 and Dec. 31 until Jan. 15, 2026.

But the retailer says products purchased with third-party activation contracts like phones, tablets and mobile hotspots, do not qualify.

You can find Best Buy's .

Macy's

For the holiday season, Macy's is extending its return window until Jan. 31, 2026, on items purchased between Oct. 6 and Dec. 31.

You can find Macy's .

Retailers offering extended returns
Retailers offering extended returns CBS Philadelphia

Kohl's

Most purchases made between Oct. 5 and Dec. 31 from Kohl's are returnable through Jan. 31, 2026, according to the retailer. 

You can find Kohl's .

Target

Target said this year it's extending its holiday return window on electronics and entertainment items, as well as most Target Plus items purchased between Nov. 1 and Dec. 24.

For electronics and entertainment items, excluding Apple and Beats:  

  • Items must be returned by Jan. 24, 2026

For Target Plus items, excluding seasonal décor:  

  • Items must be returned by Jan. 24, 2026

For Apple and Beats products and mobile phones:  

  • Items must be returned by Jan. 8, 2026

For all other new, unopened items, Target said its typical 90-day window for free returns applies.

You can find Target's .

Target extended returns policy
Target extended returns policy CBS Philadelphia

Walmart

Walmart said most items purchased in-store or online between Oct. 1 and Dec. 31 can be returned until Jan. 31, 2026. However, marketplace items are not returnable.

You can find Walmart's .

Return and restocking fees

Free returns aren't a given anymore. Some retailers are charging fees for items returned by mail.

It will cost you $7.50 to use a prepaid label to , while there is a $4.95 fee per return request . 

a $9.95 return label fee, in addition to a restocking fee. charges a $5 restocking fee on most mailed returns.

To mail a , you'll pay $9.99 unless you join the retailer's Star Rewards program, which is free. 

You might be charged for returning some items, if opened, to Best Buy.

will also charge a return fee if you do not opt for its label-free, box-free drop-off option at a designated Kohl's, Whole Foods, or Staples location. A growing list of retailers offers box-free, label-free, in-person returns at selected locations through Happy Returns.

All fees are deducted from your refund.

Stores with return fees
Stores with return fees CBS Philadelphia

There is one simple way to avoid most of these fees: Return the item in-store or to a designated location. 

Looking for help with a consumer issue? Click here to submit your complaint to In Your Corner.

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=50747257b890e014813016b79ece0fb2'; 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(); } }); }); }); });