Why most gas stations don’t make money from selling gas

With gas prices climbing up, you may think station owners are getting greedy. But the economics behind the pump tell a different story.


September 12, 2021

America is a nation of gas guzzlers. 

Over the past 20 years:

  • The total number of miles we drive has gone up by ~20%
  • SUV sales have doubled, and now outnumber cars
  • The average household expenditure on gas has risen to $250 per month

In a rough and tumble 2020, gas stations in the US still managed to sell 123B gallons of fuel — enough to fill 187k Olympic-size swimming pools.

With average gas prices at a 6-year high, you might think station owners are rolling in the dough.

But the business model of gas stations is a bit counterintuitive. 

Most gas stations barely turn a profit on their core product, and when the price of oil goes up they may even take a loss on it.

Battling small margins, cutthroat competition, and the looming threat of electric vehicles, many gas stations are more reliant than ever on secondary revenue streams.

Who owns gas stations?

Looking at those big signs along the freeway — Shell, 76, Chevron, ExxonMobil — it may seem like gas stations are all owned by big oil companies.

In reality, the majority of owners are individual operators who only own a single station.

Zachary Crockett / The Hustle

These owners fall into 2 main camps:

  1. Franchisees who pay name-brand gas refineries royalties (anywhere from 3% to 14% of revenue) to use their branding
  2. Independent operators who run generic “no-name” stations and buy gas on the open market

Most major oil companies have backed out of the retail business because selling gas generally isn’t very profitable.

According to IBISWorld, gas stations make an average net margin of just 1.4% on their fuel.

That’s far lower than the 7.7% average across all industries — and ranks beneath other notoriously low margin businesses like grocery stores (2.5%) and car dealerships (3.2%).

To understand why, let’s step back and take a look at the typical supply chain of gasoline.

The profit pipeline

Gasoline begins its journey as crude oil, largely sourced on home soil in states like Texas and North Dakota.

Once extracted from oil fields, this raw liquid is:

  1. Sent to refineries to be processed into gasoline
  2. Funneled via pipeline into bulk storage containers, and
  3. Transported via freight trucks to gas stations, where it’s kept in 20k-gallon underground drums

By the time gas reaches the pump, the profit potential is pretty dismal.

Let’s say you buy one gallon of gas at your local station for $3.18 (the current national average).

Here’s a rough breakdown of where that money goes:

Zachary Crockett / The Hustle

Gas stations typically only receive a fraction of the price listed on the sign. And after factoring in overhead — labor, utilities, insurance, credit card transaction fees — the average profit is winnowed down to ~$0.05 to $0.07 per gallon.

Now, there is a lot of variance here: Some owners The Hustle spoke to claim to make $0.30+/gallon; others, as little as $0.01.

But assuming daily sales of 4k gallons at $0.05/gallon, your typical station might only bring home $200-300/day from gas.

By contrast, those coin-operated air machines you find at most stations can rake in $300 to $500 in profit per month — even after paying the companies that lease them out.

Why don’t stations just raise their prices?

For starters, gas stations know that the majority of consumers choose where to go solely based on price.

They have an incentive to keep those numbers on the board as constant as possible.

And even if they didn’t, local competition keeps them in check: The best locations — high-traffic freeway exits and on-ramps — are often packed with clusters of stations that jockey for business.

Zachary Crockett / The Hustle

A misconception is that gas station owners love when gas prices go up.

In reality, they hate it as much as you do — largely because competition creates something of a pricing Catch-22:

  1. When wholesale gas costs go up, many station owners would rather keep prices steady and take a loss than hemorrhage customers to competitors.
  2. When wholesale costs fall, many gas stations are wary of slashing their prices for fear of sparking a price war. 

Luckily, most gas stations don’t care much about gas profits.

The real money is made inside the store

Today, 80% of all gas stations have a convenience store on site.

According to a study conducted by the National Association of Convenience Stores, 44% of gas station customers go inside. And among them, 1 in 3 ends up indulging in some kind of treat.

The goods inside these stores — Doritos, sunglasses, lotto tickets, energy drinks — only account for ~30% of the average gas station’s revenue, yet bring in 70% of the profit.

Gross margins on certain items can be upwards of 50%.

Zachary Crockett / The Hustle

Some forces are working against this business model.

Most modern pumps have card readers, negating the need to go inside to pay. The average time a customer spends at a gas station is now just 2-3 minutes.

Convenience stores also have some of the highest crime rates of any business in America, with average annual losses to robberies topping $761 per location.

But stations have a bigger concern: The long-term future of gas.

The gas station of tomorrow

Gas stations have been in decline for several decades.

In 1995, there were ~195k of them in the US; today, that number is down to ~115k

Zachary Crockett / The Hustle

Among the major contributors to this trend:

  1. Natural gas is getting cheaper and more popular
  2. Electric vehicles (EVs) and driverless cars pose a long-term threat to gas sales
  3. Real estate in urban areas (NYC, DC, San Francisco, Boston) can be utilized for more profitable endeavors, like condos or office developments

Many stations have made the costly decision to install EV charging units, which can cost $100k a pop.

It’s a hard cost to justify, given that EVs currently make up <1% of cars on the road. But the industry is experiencing a rapid rise: 4 in 10 consumers say they’d consider buying an EV for their next car, and stand-alone EV stations are popping up all over the country to serve them.

EV-agnostic stations — and smaller operations that can’t afford the preemptive expense — risk getting left behind in the long term.

Zachary Crockett / The Hustle

But if all else fails, gas stations always have a secret financial weapon in their back pocket: Those mesmerizing rotating hot dog machines.

BONUS FACTS:

  • What’s up with that 9/10ths of a penny thing? Almost a century ago, when gas was just $0.15/gallon, the government levied a gas tax of a fraction of a cent. It’s irrelevant today, but station owners have kept it around because it makes prices look marginally better.
  • Explosions don’t just happen in the bathrooms. On average, ~4.2k fires break out at gas stations around the country each year, causing $30m in property damage. Most of them are caused by cars. A few are caused by hot dog machines.
  • Speaking of bathrooms… a nice toilet can drive a gas station’s sales. According to one survey, 22.6% of customers who use a bathroom report “frequently” making an impulse purchase on the way out.
  • KFC started at a gas station. Colonel (Harland) Sanders whipped up his first fried chicken plate in the 1930s while running a gas station in North Corbin, Kentucky.

Join 1.5m+ professionals getting The Hustle daily news brief

Business and tech news in 5 minutes or less

100% free, no ads or spam, unsubscribe anytime

Psst

How'd Bezos build a billion dollar empire?

In 1994, Jeff Bezos discovered a shocking stat: Internet usage grew 2,300% per year.

Data shows where markets are headed.

And that’s why we built Trends — to show you up-and-coming market opportunities about to explode. Interested?

[email-submission-form redirect-to-home="true" button-text="Join Free" include-trends-opt-in="true" id="main-signup-form" fail-url="" success-url="https://thehustle.co/signup" default-source="thehustleco" default-campaign="home"]
<script type="text/javascript"> var onloadCallback = function() { grecaptcha.render('verify-your-humanity', { 'sitekey' : '6LdddrcZAAAAALyttpvOqiwQGwq5BNhgDz4tMQGE' }); }; function getCookieValue(a) { var b = document.cookie.match('(^|[^;]+)\\s*' + a + '\\s*=\\s*([^;]+)'); return b ? atob(decodeURIComponent(b.pop())) : ''; } function setHiddenFieldValue(wrappingDiv, searchParams, className, utmName, cookieName, defaultValue) { var el = wrappingDiv.getElementsByClassName(className)[0]; var existingVal = el.getAttribute('value'); var newVal = searchParams.get(utmName) || getCookieValue(cookieName); if ((existingVal == null || existingVal == '' || existingVal == defaultValue) && (newVal != null && newVal != '')) { el.setAttribute('value', newVal); } } function setHiddenFieldValueFromUtm( wrappingDiv, searchParams, className, utmName, defaultValue ) { var el = wrappingDiv.getElementsByClassName(className)[0]; if (el != null) { var existingVal = el.getAttribute("value"); var newVal = searchParams.get(utmName); if (newVal != null && newVal != "") { el.setAttribute("value", newVal); } } } function initForm() { var wrappingDivs = document.getElementsByClassName('email-submission'); wrappingDivs.forEach(wrappingDiv => { var sp = new URLSearchParams(window.location.search); setHiddenFieldValue(wrappingDiv, sp, 'funnel-source', 'utm_source', 'funnel_source', 'thehustleco'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-campaign', 'utm_campaign', 'funnel_campaign', 'home'); setHiddenFieldValue(wrappingDiv, sp, 'funnel-medium', 'utm_medium', 'funnel_medium', ''); setHiddenFieldValue(wrappingDiv, sp, 'funnel-referral', 'ref', 'funnel_referral', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-a', 'a', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-c', 'c', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-o', 'o', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-oc', 'oc', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-e', 'e', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-f', 'f', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-r', 'r', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-t', 't', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s1', 's1', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s2', 's2', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s3', 's3', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s4', 's4', ''); setHiddenFieldValueFromUtm(wrappingDiv, sp, 'funnel-s5', 's5', ''); var error_message = getCookieValue('funnel_error_message'); if (error_message && error_message.trim() != '') { var error = wrappingDiv.getElementsByClassName('funnel-error')[0]; var prev_email = getCookieValue('funnel_email'); error_message = prev_email + " is not valid. Please try again"; error.innerHTML = error_message; error.style = ''; } }); if (false) { initCaptchaFormV2(); } } function initCaptchaFormV2() { var v3RecaptchaResponseEl = document.getElementById('recaptcha-response-v3'); v3RecaptchaResponseEl.parentNode.removeChild(v3RecaptchaResponseEl); var wrappingDiv = document.getElementById('main-signup-form'); var subForm = wrappingDiv.getElementsByClassName('email-submission')[0]; var captchaVersion = document.createElement('input'); captchaVersion.class = 'g-recaptcha hidden-input'; captchaVersion.type = 'hidden'; captchaVersion.name = 'g-recaptcha-response-v2'; captchaVersion.value = 'true'; subForm.appendChild(captchaVersion); var captchaEl = document.createElement('div'); captchaEl.id = 'verify-your-humanity'; subForm.appendChild(captchaEl); var captchaApiScriptEl = document.createElement('script'); captchaApiScriptEl.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit'; captchaApiScriptEl.async = true; captchaApiScriptEl.defer = true; document.head.appendChild(captchaApiScriptEl); } function appendCheckboxes() { var optInDivs = document.querySelectorAll('.trends-opt-in'); optInDivs.forEach(el => { if (el.getElementsByClassName('trends-opt-in-checkbox').length < 1) { var checkbox = document.createElement('input'); checkbox.setAttribute('class', 'trends-opt-in-checkbox'); checkbox.setAttribute('type', 'checkbox'); checkbox.setAttribute('name', 'trends_opt_in'); var label = document.createElement('label'); label.setAttribute('class', 'trends-opt-in-text'); label.textContent = "Yes, I'd like to receive updates on market opportunities before they explode from Trends by The Hustle"; el.appendChild(checkbox); el.appendChild(label); checkbox.click(); } }) } window.addEventListener('DOMContentLoaded', (event) => { var funnel_email_cookie = getCookieValue('funnel_email'); if ( (true) && (funnel_email_cookie != null && funnel_email_cookie != '') ) { window.location.replace('/home'); } initForm(); if (true) { appendCheckboxes(); } }); </script> <div class="email-signup" id=main-signup-form> <div class="funnel-error" style="display:none;"></div> <form class="email-submission" action="https://cms.thehustle.co/api/v1/contacts/wordpress_create" method="post"> <input class="funnel-source hidden-input" type="hidden" name="source" value="digg"> <input class="funnel-campaign hidden-input" type="hidden" name="campaign" value="home"> <input class="funnel-medium hidden-input" type="hidden" name="medium"> <input class="funnel-referral hidden-input" type="hidden" name="referral_code"> <input class="funnel-fail-url hidden-input" type="hidden" name="fail_url" value=""> <input class="funnel-a hidden-input" type="hidden" name="a" value=""> <input class="funnel-c hidden-input" type="hidden" name="c" value=""> <input class="funnel-o hidden-input" type="hidden" name="o" value=""> <input class="funnel-oc hidden-input" type="hidden" name="oc" value=""> <input class="funnel-e hidden-input" type="hidden" name="e" value=""> <input class="funnel-f hidden-input" type="hidden" name="f" value=""> <input class="funnel-r hidden-input" type="hidden" name="r" value=""> <input class="funnel-t hidden-input" type="hidden" name="t" value=""> <input class="funnel-s1 hidden-input" type="hidden" name="s1" value=""> <input class="funnel-s2 hidden-input" type="hidden" name="s2" value=""> <input class="funnel-s3 hidden-input" type="hidden" name="s3" value=""> <input class="funnel-s4 hidden-input" type="hidden" name="s4" value=""> <input class="funnel-s5 hidden-input" type="hidden" name="s5" value=""> <input class="funnel-success-url hidden-input" type="hidden" name="success_url" value="https://thehustle.co/signup"> <input id="recaptcha-response-v3" class="g-recaptcha hidden-input" type="hidden" name="g-recaptcha-response" value=""> <input class="signup-email" type="email" name="email" placeholder="Your email address" required> <input class="email-submit" type="submit" value="Join Free"> <div class="trends-opt-in"></div> <div submit-success> <template type="amp-mustache"> <p class="c-message c-message--success">Thank you for subscribing.</p> </template> </div> <div submit-error> <template type="amp-mustache"> <p class="c-message c-message--failed">Your submission failed. Please try again!</p> </template> </div> </form> </div>