<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Fuel Stack ]]></title><description><![CDATA[I build for fuel marketers. I write about what breaks their operations.

]]></description><link>https://www.readthefuelstack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!P6sT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F010ab553-207d-46bf-b7a8-c542449c1975_301x301.png</url><title>The Fuel Stack </title><link>https://www.readthefuelstack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 12 Aug 2026 03:37:18 GMT</lastBuildDate><atom:link href="https://www.readthefuelstack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Dibyesh Giri]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[dibyesh@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[dibyesh@substack.com]]></itunes:email><itunes:name><![CDATA[Dibyesh Giri]]></itunes:name></itunes:owner><itunes:author><![CDATA[Dibyesh Giri]]></itunes:author><googleplay:owner><![CDATA[dibyesh@substack.com]]></googleplay:owner><googleplay:email><![CDATA[dibyesh@substack.com]]></googleplay:email><googleplay:author><![CDATA[Dibyesh Giri]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Nobody Wants to Replace QuickBooks. They Want It to Finally Work for Fuel.]]></title><description><![CDATA[The most common question I hear from fuel marketers is not which system to switch to. It is whether they even need to switch at all.]]></description><link>https://www.readthefuelstack.com/p/nobody-wants-to-replace-quickbooks</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/nobody-wants-to-replace-quickbooks</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 11 Aug 2026 14:00:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aeRg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aeRg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aeRg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aeRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/acd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:202444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/209745508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aeRg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!aeRg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Facd88795-4aef-4664-908c-89a3e9adb2a5_1672x941.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The gap is not inside QuickBooks. It is everything that happens before the invoice gets there.</figcaption></figure></div><p>Last month I was sitting with a fuel marketer in Texas.</p><p>QuickBooks open on one screen. A spreadsheet on the other. A stack of delivery tickets beside the keyboard that billing had not gotten to yet.</p><p>I asked how long they had been on QuickBooks.</p><p>Nine years, she said.</p><p>I asked if they had ever thought about switching.</p><p>She laughed.</p><p><em><strong>&#8220;We tried. Spent six months looking. Almost signed with someone. Then we looked at what migration would actually cost and what we would lose and we came back.&#8221;</strong></em></p><p>She pointed at the spreadsheet.</p><p><em><strong>&#8220;So now we have this.&#8221;</strong></em></p><p>That spreadsheet is not unusual. It is the standard solution at mid-market fuel distributors across the country. Built by someone on the team. Maintained by that same person. Quietly holding the operation together in ways nobody fully documented.</p><p>QuickBooks is on the first monitor. <strong>The spreadsheet is doing the actual work on the second.</strong></p><blockquote><p>That is not a QuickBooks problem. That is a workflow problem wearing a QuickBooks problem&#8217;s clothes.</p></blockquote><p></p><h4><strong>What QuickBooks is actually doing right</strong></h4><p>QuickBooks handles the accounting well. General ledger, accounts receivable, accounts payable, bank reconciliation, financial reporting.</p><p>For a fuel marketer who has been on it for years, that foundation matters. The team knows it. The bookkeeper knows it. The accountant can log in without a learning curve.</p><p>That is not nothing. That is years of knowledge embedded in a system that works.</p><p>The problem is not the accounting.</p><p></p><h4><strong>The problem is the ten steps between a fuel delivery and a clean transaction arriving in QuickBooks.</strong></h4><p>Rack price changes intraday. The next day rack starts coming in late afternoon. A delivery at 10am and a delivery at 3pm can carry different prices. Managing that correctly requires a system that understands rack timing.</p><p>Gallons are measured in gross at the terminal and net after temperature correction. Someone has to know which one the customer is being billed on.</p><p>The driver&#8217;s confirmation, the BOL, and the dispatch record all describe the same delivery. They all have to agree before billing can run.</p><p>Tax exemptions vary by customer, by site, by product type. They have to be applied correctly every single time.</p><p>QuickBooks was not designed to coordinate any of that. It was designed to record the result after it happens.</p><p>When a fuel marketer tries to use QuickBooks to manage that coordination, the billing team becomes the integration layer. They gather delivery data. Verify pricing. Apply exemptions. Enter the invoice. Every day. For every delivery.</p><p><strong>That is why billing is broken. Not because QuickBooks is the wrong tool. Because it is being asked to do something it was never built for.</strong></p><p></p><h4><strong>Why switching rarely fixes it</strong></h4><p>The instinct when billing breaks down is to blame the accounting system.</p><p>That instinct leads to ERP evaluations. New platforms that promise to handle everything in one place. Nine-month implementations. Budgets that grow. Go-live weekends where things break at midnight and the team works through it.</p><p>I wrote about Lisa in an earlier issue. She championed a full ERP implementation. Nine months. $240,000. <strong>Eighteen months after go-live, the spreadsheet was still open on the AP manager&#8217;s second monitor.</strong></p><p>The ERP did not fix billing because billing was not broken inside the accounting system. It was broken in the ten steps before the accounting system ever saw the transaction.</p><blockquote><p><strong>Replacing QuickBooks does not fix the workflow that feeds QuickBooks. It just means you are managing the same broken workflow inside something more expensive and less familiar.</strong></p></blockquote><p>And you gave up eight years of financial history to do it.</p><p></p><h4><strong>The question worth sitting with</strong></h4><p>Before the next software evaluation, one question is worth asking honestly.</p><p>Is billing broken because of where the invoice gets recorded? Or because of how it gets created?</p><p>In almost every fuel operation I have visited, the answer is the second one.</p><p>The invoice gets created late, or wrong, or with errors, because the workflow between the delivery and the invoice is manual and disconnected. People are filling the gaps by hand because no system was built to fill them automatically.</p><blockquote><p><strong>Fixing that does not require a new general ledger. It requires an operational layer in front of the general ledger that handles the fuel-specific complexity QuickBooks was never designed for.</strong></p></blockquote><p></p><h4><strong>What that layer actually does</strong></h4><p>The problems that break billing upstream of QuickBooks are consistent across fuel operations.</p><ol><li><p><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Pricing.</span> </strong>Rack changes intraday. The correct price at 10am is different from the correct price at 3pm. That has to be applied automatically, not looked up manually after the delivery happens.</p></li><li><p><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Delivery confirmation.</span></strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);"> </span>The driver confirms gallons. That confirmation should trigger billing immediately. Not sit in a queue until dispatch closes the load and billing pulls the ticket hours later.</p></li><li><p><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Document matching</span>.</strong> The BOL, dispatch record, and supplier invoice describe the same transaction. They need to agree before billing runs. In most operations they live in three different places and someone reconciles them at month-end.</p></li><li><p><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Tax and exemption logic</span>.</strong> A customer&#8217;s exemption status varies by site, by product, by monthly volume. That logic needs to live in the system. Not in someone&#8217;s memory.</p></li></ol><p>None of these are accounting problems. <strong>They are operational problems that show up in the accounting system as billing errors and late invoices.</strong></p><p>An operational layer that handles these problems upstream of QuickBooks does not replace the general ledger. It feeds it clean transactions instead of broken ones.</p><p></p><h4><strong>What this looks like in practice</strong></h4><p>Last year Fueleo processed over <strong>$5 million+ in invoices</strong> for our design partner customers with <strong>less than 1.45% sync error rate to QuickBooks.</strong></p><p>Not in a demo. In a live operation. Real deliveries. Real customers. Real invoices syncing cleanly into an accounting system the team already trusted and did not have to replace.</p><p>QuickBooks stayed exactly where it was.</p><p>What changed was what arrived at QuickBooks before anyone in accounting touched it.</p><p>Delivery confirmation triggered billing automatically. Pricing was validated at dispatch, not reconstructed afterward. The BOL matched the dispatch record before the invoice was created. Tax exemptions were applied correctly based on the customer profile.</p><blockquote><p><strong>The accounting team went from spending hours gathering information to spending minutes reviewing exceptions.</strong></p></blockquote><p>That is not a new general ledger. That is a workflow that finally feeds the existing one correctly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VFnT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VFnT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VFnT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/110dfd0d-d721-4f83-a171-864502653315_1672x941.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:122984,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/209745508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VFnT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!VFnT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F110dfd0d-d721-4f83-a171-864502653315_1672x941.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"> <strong>The problem starts before QuickBooks.</strong></figcaption></figure></div><h4><strong>The decision that actually matters</strong></h4><p>Most fuel marketers do not need to replace QuickBooks.</p><p>They need to stop asking QuickBooks to do something it was never designed to do.</p><p>The general ledger is fine. The workflow feeding it is not.</p><p>Fixing the workflow does not mean tearing out the accounting system and starting over. It means building the layer in front of it that handles pricing, delivery confirmation, document matching, and tax logic before QuickBooks ever sees the transaction.</p><p><strong>Smaller than an ERP implementation. Faster. Less expensive. No migration. No learning curve. No eight years of history lost.</strong></p><p><strong>Garrett Daley</strong>, owner of <a href="https://americanpetroleumllc.com">American Petroleum</a>, said it directly.</p><p><em><strong>&#8220;QuickBooks does what QuickBooks does. Our problem is everything that has to happen before QuickBooks can do its job.&#8221;</strong></em></p><p>He was right. And once he understood that, the decision about what to build became clear.</p><p>The accounting system was never the problem.</p><p><strong>It was everything that had to happen before QuickBooks could do its job.</strong></p>]]></content:encoded></item><item><title><![CDATA[The Equipment Rental Account Looked Simple. The Invoice Said Otherwise.]]></title><description><![CDATA[The customers who look easiest to serve are sometimes the ones whose back office requirements you find out about after the first delivery.]]></description><link>https://www.readthefuelstack.com/p/the-equipment-rental-account-looked</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-equipment-rental-account-looked</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 04 Aug 2026 14:03:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pKNm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pKNm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pKNm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pKNm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1575389,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/209716260?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pKNm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!pKNm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c1d5917-2865-4611-a32e-308160fee78a_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Simple delivery. Hidden requirements. Delayed cash.</strong></figcaption></figure></div><p></p><p>I have talked to enough fuel marketers serving equipment rental companies to know how this conversation usually goes.</p><p>The sales call goes well. The account looks clean. Rental company needs fuel delivered to their job sites. Fuel marketer shows up, delivers, sends an invoice. Rental company pays, marks up the fuel to their customer, everyone moves on.</p><p>That is the story in the sales meeting.</p><p>Here is what happens after the first delivery.</p><h4><strong>The invoice goes out. Then the PO arrives.</strong></h4><p>The sales call goes well. The account looks clean. Rental company needs fuel delivered to their job sites. Fuel marketer shows up, delivers, sends an invoice. Rental company pays, marks up the fuel to their customer, everyone moves on.</p><p>That is the story in the sales meeting.</p><p>Here is what happens after the first delivery.</p><h4><strong><br>The invoice goes out. Then the PO arrives.</strong></h4><p>The driver delivers. Everything goes right. Gallons match. Ticket is legible. Invoice goes out same day.</p><p>Then the rental company&#8217;s AP team responds.</p><p>Not with payment. With a PO number.</p><p>A purchase order their team generated after the delivery, which needs to appear on the invoice before their system will touch it.</p><p>Billing pulls the invoice, adds the PO, regenerates, resends.</p><p><strong>The delivery was right. The invoice was right. The only thing missing was a number that did not exist when the invoice was created.</strong></p><p>Payment terms do not start until the corrected invoice lands in AP.</p><p>Let&#8217;s say you have five equipment rental accounts. Each averages fifteen deliveries a month at $2,500 per invoice.</p><p>That is 75 invoices a month. $187,500 in monthly receivables.</p><p>If every invoice requires a PO correction cycle that adds three days before payment terms start, you are carrying $18,750 in delayed receivables every month before the customer has even looked at the invoice.</p><p><strong>That is $225,000 a year sitting in a correction queue.</strong></p><p>Not because customers are not paying. Because the invoice was not ready to be paid.</p><blockquote><p><strong>Not a collections problem. A workflow problem that shows up in the aging report.</strong></p></blockquote><p></p><h4><strong>Why this happens specifically with rental companies</strong></h4><p>Most fuel distribution customers generate PO numbers before the order is placed. The PO exists when the order is created. Invoice references it. Done.</p><p>Equipment rental companies work differently.</p><p>Their fuel subcontracting is operationally driven. A site manager decides machines need fuel. They call the rental company. The rental company calls the fuel marketer. The fuel gets delivered. Procurement catches up afterward.</p><p>What most fuel marketers do not realize is that <strong>the rental company is not just passing the invoice through. They are marking up the fuel and billing it to their own customer as an ancillary revenue line.</strong></p><p>A delayed or incorrect invoice from the fuel marketer does not just slow their payment. It delays their invoice to their customer too.</p><p><strong>The problem travels upstream.</strong></p><h4><strong>The line item problem nobody mentions</strong></h4><p>Equipment rental companies need fuel cost and delivery charge as separate line items for their own tax treatment.</p><p>If the fuel marketer sends one combined line, the AP team has to split it manually before they can process it.</p><p>One more invisible step. One more reason the invoice takes longer to move.</p><h4><strong>The asset detail request</strong></h4><p>The fuel marketer delivered 800 gallons to a construction site.</p><p>But the rental company needs to know how many gallons went into the excavator, how many into the generator, how many into the light tower.</p><p>Not because they are being difficult. Because they already track every hour of use on every piece of equipment they rent and bill their customers at the asset level. Fuel is one of twelve revenue streams in a rental operation and each one has its own billing logic.</p><blockquote><p><strong>The fuel marketer is the only vendor not delivering data at that level of detail.</strong></p></blockquote><p>The driver delivered to a site. He did not track by asset. The ticket shows total gallons at a location. Someone now has to reconstruct the breakdown from memory or make an estimate.</p><h4><strong>All three problems share the same root cause</strong></h4><p>The billing requirements were never captured before the first truck rolled. They were discovered through rejection.</p><p>Every equipment rental account is different. But the fix flows in the same direction every time.</p><p><strong>The PO requirement</strong> needs to be captured at account setup, not discovered at invoice rejection. If this customer generates PO numbers post-delivery, the invoice should sit in a billing-ready state until the PO is collected. Not sent blank and corrected later.</p><p><strong>The asset-level detail</strong> needs to flow backward into dispatch before the driver arrives. If the rental company needs gallons by asset, the dispatch record needs the asset list before the driver arrives at the site, not just the address. The driver records gallons by asset at the point of delivery. Not reconstructed afterward from memory.</p><p><strong>The line item format and compliance requirements</strong> belong in the account profile at setup. Every document the customer needs, every format requirement their AP team has, every certification a site requires, should be visible to billing and dispatch before the first delivery happens.</p><p>None of these are complicated fixes. They all require one thing:</p><blockquote><p><strong>Billing requirements flowing backward into the dispatch workflow instead of being discovered forward through invoice rejections.</strong></p></blockquote><h4><strong>The question nobody asks in the sales conversation</strong></h4><p><em>Walk me through how your AP team processes a fuel invoice.</em></p><p>That one question surfaces the PO requirement, the line item format, the asset-level data expectation, and the compliance documentation before the first delivery. The account works the way the sales conversation described.</p><p>Wait until the first invoice comes back and you are three weeks into a correction cycle that was entirely avoidable.</p><p><strong>The equipment rental company is a good account. The happy path is real. You just have to ask about the other path before you start driving.</strong></p>]]></content:encoded></item><item><title><![CDATA[Bob Has Been Dispatching for Forty Years. Here Is What Building for Him Actually Looks Like.]]></title><description><![CDATA[The best software decisions I have made came from watching someone work before I touched a single feature.]]></description><link>https://www.readthefuelstack.com/p/bob-has-been-dispatching-for-forty</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/bob-has-been-dispatching-for-forty</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 28 Jul 2026 14:31:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!j0tt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j0tt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j0tt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j0tt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg" width="1672" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255786,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/208732223?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef31481f-f9de-411f-a1ef-9957224c7459_1672x941.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j0tt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 424w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 848w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!j0tt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f71a730-8588-4c38-8c47-0d31971919f9_1672x941.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Bob. Forty years of dispatch. Three minutes to solve what took me seven to understand.</em></figcaption></figure></div><p>The phone rang before Bob finished his sentence.</p><p>He picked it up, said a few words, looked at the load chart on his screen, moved a station from one split to another, changed the compartment assignment on the truck, and called the driver.</p><p>Three minutes. Maybe less.</p><p>I needed another fifteen minutes afterward just to understand everything that one decision had touched.</p><p>That was my introduction to how Bob dispatches fuel in East Texas.</p><h4><strong>The office</strong></h4><p>Bob is seventy four years old. He has been running dispatch and operations at this common carrier for four decades. His desk had two monitors, a printed load sheet beside the keyboard, and a phone that did not stay quiet for long. Driver names highlighted in different colors. Terminal notes written in the margins. A stack of dispatch packets waiting to be printed.</p><p>The spreadsheet on his left monitor had forty years of revisions. New colors. New tabs. Notes tucked into cells referencing decisions made years ago. It had grown alongside the operation. You could almost read the company&#8217;s history in it.</p><p>I had expected whiteboards and sticky notes and a system that mostly lived in someone&#8217;s head.</p><p>What I found was something more interesting. Bob had turned four decades of experience into a visual system that other people could follow.</p><blockquote><p>The spreadsheet was not for him. He already knew the answers. <strong>It was for everyone else.</strong></p></blockquote><h4><strong>What four decades actually looks like</strong></h4><p>Bob started dispatching when everything was paper. Load sheets written by hand. Delivery tickets carried back by the driver at the end of the shift. Customer calls taken on a landline with a notepad on the desk.</p><p>At some point the fax machine changed things. Then spreadsheets changed things.</p><p>But the core of the job never changed.</p><p>Knowing the trucks. Knowing the terminals. Knowing the drivers. Knowing which station needs to be hit first and why. Knowing that one customer always changes the order after the packet is printed and that one terminal backs up by 10am on Fridays.</p><p><strong>The tools got faster. The judgment stayed the same.</strong></p><p>I asked Bob if he had looked at dispatch software before.</p><p>He had. More than once.</p><p><em>&#8220;The demos always looked clean,&#8221;</em> he said. <em>&#8220;The reality always looked different. The systems wanted me to work the way they were built. They did not know how my terminals worked, how my drivers worked, or why certain stations had to be delivered in a certain order.&#8221;</em></p><p>So the spreadsheet survived. Every time.</p><p>Not because Bob was resistant to change. Because nothing he had seen was built around how the job actually works.</p><h4><strong>The morning before the first truck rolls</strong></h4><p>Before I arrived I thought the hardest part of common carrier dispatch was routing. Getting trucks to the right places in the right order.</p><p>Sitting with Bob changed that.</p><p>The hard part is everything that changes after you think you have the plan.</p><p>A driver calls in sick. The terminal runs out of premium. A customer adds 1,500 gallons after the packet is already printed. Bob crossed out the original quantity that morning, rewrote the compartment split by hand, and called the driver because the paper packet was now wrong before the truck had even left the yard.</p><p>One small change does not stay small. <strong>One compartment reassignment touches three loads. One late driver shifts two routes. One terminal running slow pushes the whole day back.</strong></p><p>And all of it lands on Bob&#8217;s desk before 7am.</p><h4><strong>The load chart</strong></h4><p>The first thing Bob walked me through was the load chart.</p><p>Every truck broken down by compartment. Product assigned to each slot. Gallon capacity. Delivery sequence.</p><p>Before I understood what I was looking at I thought it was about truck capacity. It was not. <strong>It was also a training document, a quality control check, and a communication tool rolled into one.</strong></p><p><em>&#8220;I have a mix of new and old drivers,&#8221;</em> Bob said. <em>&#8220;The experienced ones know the trucks. They load and go. The new ones are still figuring things out. This chart tells them exactly which product goes in which compartment. I do not want a new driver putting diesel in the wrong compartment because nobody told them clearly.&#8221;</em></p><p>An experienced driver looked at a list of customer names and already knew the likely sequence, the terminal, the compartment setup. A new driver needed every detail written out. The same dispatch packet had to work for both.</p><p>Without the chart, the calls started.</p><p><em>&#8220;Bob, which compartment is diesel again?&#8221;</em></p><p><em>&#8220;Bob, am I loading at Mount Pleasant or Tyler?&#8221;</em></p><p><em>&#8220;Bob, which station do I hit first?&#8221;</em></p><p><strong>Every one of those calls interrupted dispatch.</strong> The load chart was Bob&#8217;s way of answering those questions before they got asked.</p><p>Bob knew his drivers the way a coach knows a roster. He knew which driver could handle a complicated split load without calling in. He knew which driver needed the terminal written at the top of the packet in large letters because he had missed it before. He knew which driver would push back on a sequence change and which one would just figure it out.</p><p>That knowledge was not in any system. It lived in Bob.</p><h4><strong>The split load logic</strong></h4><p>The second thing Bob showed me was how he groups his gas stations.</p><p>Not alphabetically. Not by account number. By proximity to each other and by which terminal serves them.</p><p><em>&#8220;Split loads,&#8221;</em> he said. <em>&#8220;If I know which stations are close together and which terminal serves them, I can plan a split load in about two minutes. Group the stations, match the terminal, figure out the compartment breakdown, done.&#8221;</em></p><p>I initially thought this was a routing problem. Bob showed me it was equally a terminal problem, a compartment problem, a product problem, and a driver-familiarity problem all at once.</p><p>The groupings in that spreadsheet were not random. <strong>They were the result of thousands of routes, dozens of terminal relationships, and forty years of learning which combinations worked and which ones created problems later in the day.</strong></p><h4><strong><br>What happens when Bob takes a vacation</strong></h4><p>I asked him what happens when he takes a week off.</p><p>He smiled.</p><p><em>&#8220;I don&#8217;t.&#8221;</em></p><p>Not complaining. Just stating something that had become true over time.</p><p>I pushed a little. What would actually happen if he did?</p><p><em>&#8220;They call me anyway.&#8221;</em></p><p>Then I asked him what he wanted the operation to look like in five years.</p><p>He thought about it for a moment.</p><p><em>&#8220;I want whoever does this job after me to be able to do it right. Not have to call me every five minutes because something is not written down anywhere.&#8221;</em></p><p>He paused.</p><p><em>&#8220;Forty years is a long time to carry something. At some point it should live somewhere else.&#8221;</em></p><blockquote><p>Bob was never the bottleneck. <strong>Bob was the system.</strong> The spreadsheets existed because nothing had ever been built to hold what he knew. So he carried it. Every day. For forty years.</p></blockquote><h4><strong><br>What the visit changed about the design</strong></h4><p>I spent the first morning tracing Bob&#8217;s process rather than showing him anything. We took one real load and followed it from customer order to terminal selection, compartment assignment, driver instruction, delivery sequence, and printed packet. Every time Bob left the main spreadsheet to check another file, make a phone call, or write something by hand, we marked it.</p><p><strong>That exercise changed the design completely.</strong></p><p>We stopped treating a dispatch as a simple order assigned to a driver. The operating unit had to include the truck, the compartments, the terminal, the product split, the sequence, the certifications, and the driver instructions, all connected to the same record.</p><p>Later I watched a driver review his packet before leaving. He did not read it top to bottom. He looked first for the terminal, then the compartment split, then the stop sequence. That changed how we structured the mobile load screen.</p><p>Not every decision belonged in an automated rule. Bob knew one customer disliked late afternoon deliveries. Another site was difficult for a newer driver to navigate. Some knowledge could be structured. <strong>Some needed to stay visible as context the dispatcher could see and act on.</strong></p><p>The system now flags an expired TCEQ certification before Bob assigns the load instead of relying on him to check a second spreadsheet every morning. It shows Bob&#8217;s station groupings, preferred terminals, and compartment logic so a new dispatcher can see the decisions without calling Bob for every one of them. Driver instructions attach directly to the load so the questions that used to require a phone call get answered before the driver asks them.</p><blockquote><p><strong>The goal was never to replace what Bob knows. It was to make sure that knowledge does not disappear the day he finally takes a vacation.</strong></p></blockquote><h4><strong><br>The thing I keep coming back to</strong></h4><p>Every common carrier has a Bob.</p><p>Sometimes he is the dispatcher. Sometimes she is the billing manager. Sometimes it is the owner who has not taken a real week off in fifteen years.</p><p>Somewhere in every operation is one person carrying decades of unwritten knowledge the business quietly depends on.</p><p>Great software does not replace that person.</p><p><strong>It makes sure the operation can still run on the day they finally do.</strong></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Collections Team Was Doing Everything Right. The System Was Making Sure It Didn't Matter.]]></title><description><![CDATA[In fuel distribution, overdue invoices often start long before collections, with missing POs, delayed billing, unresolved credits, and fragmented delivery records.]]></description><link>https://www.readthefuelstack.com/p/the-collections-team-was-doing-everything</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-collections-team-was-doing-everything</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 21 Jul 2026 14:30:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!qdGT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qdGT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qdGT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qdGT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148204,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/207744572?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qdGT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!qdGT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1465ee9f-1c5e-4f90-ab03-0b53ff974feb_1672x941.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Overdue invoices often start long before collections, with missing POs, unresolved credits, billing delays, and fragmented delivery records.</figcaption></figure></div><p></p><p>Monica had the aging report open on her second monitor when I walked in.</p><p>Color-coded. Yellow for 30 days. Orange for 45. Red for 60. Dark red for 90.</p><p>There was a lot of dark red.</p><p>I asked her how she decides where to start each morning.</p><p><em>&#8220;We focus on the 90-plus day accounts first,&#8221;</em> she said. <em>&#8220;By the time we get to 30 or 60 days, the day is already gone.&#8221;</em></p><p>That stopped me. Most operations I visit begin active collections around 30 days past due. Monica&#8217;s team was not getting to accounts until they were three months overdue. Not because they did not care. Because they did not have time.</p><p>When I asked what was consuming the rest of it, she pulled up her task list.</p><p>Manual aging reports run in QuickBooks. Manual follow-up emails written from self-made templates that escalate in tone over time. Monthly statements manually generated, saved, and emailed to each customer. COD credit card authorizations routed to AR and processed by hand. ACH payments initiated by emailing Treasury with invoice details, waiting for two approvals, and confirming through the next day&#8217;s report.</p><p>By Monica&#8217;s estimate, <strong>70 to 80 percent of her team&#8217;s working time went to manual administrative work.</strong></p><p>Not collections. Not relationship management. Not the judgment calls that require someone who knows the customer. <strong>Administrative tasks that a well-designed workflow could handle automatically.</strong></p><div><hr></div><h4><strong>What upstream actually means</strong></h4><p>In fuel operations, an overdue invoice may have started failing weeks earlier. During customer setup. At order entry. In delivery documentation. In pricing. In credit processing. By the time it reaches collections it has already traveled through several hands, and the reason it is outstanding is rarely obvious to the person making the call.</p><p>Monica walked me through two accounts sitting in the dark red.</p><p>One invoice had a pricing error the customer caught before paying. <strong>The invoice used the wrong contract differential.</strong> The customer placed it on hold pending a credit. The credit request sat in billing for eight days. Monica&#8217;s team called at day 45 with no visibility into the open credit. The rep transferred the call, found the right person, and called the customer back two days later. By then the account was nearly 60 days old and the customer had explained the same problem twice.</p><p>And the one that made Monica close her eyes before she pulled it up.</p><p>A large fleet customer required a PO number on every invoice before their AP team could process it. The requirement had existed since the account was opened, but it was never captured in the customer&#8217;s billing profile. The invoice went out without one.</p><p>Monica&#8217;s team called at day 30. Waiting on a corrected invoice. Day 45. Same answer. Day 60. Escalated to the sales rep. Sales rep called the customer. Customer explained the PO requirement again. Sales rep emailed billing. Billing emailed the account setup team.</p><p>The invoice had been chased for months across four people before anyone understood what was actually wrong.</p><p><em>&#8220;That account,&#8221;</em> Monica said, <em>&#8220;has been sitting since January.&#8221;</em></p><p><strong>Months of follow-up calls and internal escalations for a piece of information that should have been captured the day the account was created.</strong></p><blockquote><p><strong>The customer was not refusing to pay. The invoice was not ready to be paid.</strong></p></blockquote><h4><strong>The context gap</strong></h4><p>Monica showed me what her team sees when they call a customer.</p><p>Invoice number. Amount. Days outstanding. Customer name.</p><p>Then she showed me what they cannot see.</p><p>Whether there is an open credit tied to the invoice. Whether the customer already contacted billing about a dispute. When the delivery was completed, when billing finalized the invoice, and when the customer actually received it. Whether the customer has a PO requirement that was never captured in their billing profile.</p><p><em>&#8220;We are calling customers about problems we do not fully understand yet,&#8221;</em> she said. <em>&#8220;And the customer has to explain it to us. Every time.&#8221;</em></p><p>The problem was not simply that the company used several systems. <strong>The problem was that no system carried the context of an invoice from delivery through payment.</strong></p><p>Credits lived in a queue Monica&#8217;s team could not see. Disputes were tracked in a spreadsheet one person maintained. Customer-specific billing requirements lived nowhere at all.</p><p>So a rep calling at day 45 was calling blind. She knew the invoice was outstanding. She did not know it had been on hold for three weeks. She did not know the customer had already emailed billing twice.</p><p><strong>That call did not collect anything.</strong> It confirmed that Monica&#8217;s team was the fourth group of people the customer had talked to about a problem that should have been resolved in week one.</p><h4><strong>What a connected workflow looks like</strong></h4><p>Before a collections rep dials a 45-day account she should be able to see:</p><p><strong>When was the delivery completed and when was the invoice actually sent?</strong></p><p><strong>Is there an open credit, its current owner, and the next required action?</strong></p><p><strong>Does this customer require a PO number and has it been validated on this invoice?</strong></p><p><strong>Is the invoice currently blocked and who owns the resolution?</strong></p><p><strong>The first call can become a resolution call instead of another discovery call.</strong> Context replaces confusion. Monica&#8217;s team stops being the fourth person and starts being the one who actually resolves it.</p><h4><strong>Where agentic workflow comes in</strong></h4><p>This is where workflow intelligence becomes useful. Not by replacing the collections rep. Not by adding another system to check. <strong>But by preventing incomplete invoices from reaching collections in the first place and surfacing unresolved exceptions before the rep picks up the phone.</strong></p><p>An agentic workflow operates continuously across the delivery-to-cash chain. It does not wait for a human to run a report or notice a problem. It watches the workflow, checks conditions against account rules, surfaces exceptions to the right people, and routes action to whoever owns the next step.</p><p>In the context of Monica&#8217;s operation that looks like this.</p><p>When a customer account requires a PO, that requirement is captured in the billing profile at account setup. When an order is placed for that customer without a valid PO, the workflow catches it before the invoice goes out. Not after months of follow-up calls. <strong>The exception is flagged and routed to the responsible team while there is still time to fix it cleanly.</strong></p><p>When an invoice has an open credit or pricing dispute, the workflow surfaces the issue, its current owner, and the next required action alongside the aging record. The collections rep sees it before dialing. <strong>The call starts with context instead of confusion.</strong></p><p>When monthly statements need to go out, the workflow generates and distributes them automatically. Monica&#8217;s team does not spend hours pulling, saving, and emailing.</p><p><strong>The agentic workflow does not make the collections call. It makes sure that when Monica&#8217;s team picks up the phone they understand why the invoice is outstanding before the customer has to explain it again.</strong></p><p>At Fueleo we built this into Leo, Fueleo&#8217;s AI workflow assistant, which operates across the procure-to-pay and order-to-cash workflows for fuel marketers. The PO validation. The credit surface. The exception routing. The automated statements. All of it running continuously in the background so the collections team can focus on the work that actually requires human judgment.</p><p>Monica&#8217;s January account would have been caught in week one. Not months later.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B6iG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B6iG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B6iG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg" width="1684" height="1212" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1212,&quot;width&quot;:1684,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:294492,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/207744572?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b413afb-fbda-4471-bb14-e5412d2476d4_1684x1236.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B6iG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 424w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 848w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!B6iG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6defac00-25c1-44f8-aa58-f985446f5bee_1684x1212.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Leo AI, Fueleo&#8217;s AI workflow agent, watches the delivery-to-cash process, catches exceptions early, and routes the next action before collections has to guess.</figcaption></figure></div><p></p><h4><strong>The question worth asking this week</strong></h4><p>Pull your ten oldest outstanding invoices.</p><p>For each one ask three questions:</p><p><strong>Why is it still outstanding?</strong></p><p><strong>Who owns the next action?</strong></p><p><strong>When did the company first know about the blocker?</strong></p><p>Then ask whether your collections team can answer those three questions without calling billing, dispatch, sales, or the customer.</p><p>If the answer is no, the problem is not collections. <strong>The workflow is creating more exceptions than the team can resolve.</strong> And no escalation template or collections cadence will fix what is being created upstream.</p><p>As I was leaving Monica said something that stayed with me.</p><p><em>&#8220;I have a great team. I just wish the rest of the company understood what they were sending us to fix.&#8221;</em></p><p><strong>You cannot ask collections to recover cash from invoices the rest of the operation never made collectible.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[QuickBooks Was Not the Problem. The Path to QuickBooks Was.]]></title><description><![CDATA[What working with American Petroleum taught me about building around the system operators already trust instead of replacing it.]]></description><link>https://www.readthefuelstack.com/p/quickbooks-was-not-the-problem-the</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/quickbooks-was-not-the-problem-the</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Thu, 16 Jul 2026 14:02:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!P6sT!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F010ab553-207d-46bf-b7a8-c542449c1975_301x301.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I started working closely with Garrett Daley at American Petroleum, the first thing I expected to hear was that QuickBooks was failing them.</p><p>That is what I hear from a lot of fuel marketers. The accounting system is slow. The invoices do not match the deliveries. The billing team spends half their day reconciling paperwork that should have been in the system already. And eventually someone in leadership says the words that start a very expensive conversation: maybe we need to replace QuickBooks.</p><p><strong>Garrett never said that.</strong></p><p>What he said, about three months into our conversations, was something more specific and more honest.</p><p><em><strong>&#8220;QuickBooks does what QuickBooks does. Our problem is everything that has to happen before QuickBooks can do its job.&#8221;</strong></em></p><p>That one sentence changed how I thought about what we were building.</p><h4><strong>What QuickBooks was actually doing</strong></h4><p>American Petroleum was not running a broken accounting system. They were running a capable one that was being asked to do something it was never designed for.</p><p>QuickBooks was handling customer records, invoices, accounts receivable, payments, bank reconciliation, and financial reporting. For a mid-market fuel marketer that has been on the platform for years, that is not a small thing. Their accounting team knew it. Their accountants knew it. Years of customer balances, payment history, and financial records lived inside it.</p><p>Replacing that to solve an operational problem would have been like tearing out a working foundation because the rooms upstairs needed renovation.</p><p><strong>The accounting was not broken. The path to the accounting was.</strong></p><h4><strong>What that path actually looks like</strong></h4><p>A fuel invoice looks simple from the outside. Customer received gallons. Price applied. Invoice sent.</p><p>Here is what actually has to happen before that invoice exists.</p><p>Someone has to confirm which customer placed the order and which of their delivery sites it is going to. Which product. Which truck. Which driver. Where the truck loaded. What the supplier cost was at that terminal on that day. How many gallons were ordered versus how many were actually delivered. Which pricing agreement applied, rack plus margin, cost plus, fixed contract, or something negotiated six months ago that lives in someone&#8217;s email. Whether there is a freight charge, a minimum delivery fee, an after-hours surcharge. Which fuel taxes apply. Whether the customer or that specific delivery site has a tax exemption. Whether the signed delivery ticket exists. Whether the BOL is attached.</p><p>Only after all of that does it become an invoice.</p><p><strong>QuickBooks can record the invoice. It cannot coordinate the events that create it.</strong></p><p>That distinction is the gap where most fuel marketing billing problems actually live. Not in accounting. In the ten steps before accounting ever sees the transaction.</p><h4><strong>What was breaking at American Petroleum</strong></h4><p>The field operation and the accounting workflow were disconnected.</p><p>Drivers completed deliveries. Dispatch knew what had been scheduled. Paper tickets contained some of the final information. Text messages contained other details. Pricing might exist in a spreadsheet, an email, or the billing manager&#8217;s memory from a conversation with the customer three months ago.</p><p>Billing then had to gather all of it together before a single invoice could go out.</p><p>When one item was missing, the invoice waited. When a driver&#8217;s handwriting was unclear, the invoice waited. When the delivered quantity did not match the original order, the invoice waited. When the pricing rule was ambiguous, the invoice waited.</p><p>Garrett&#8217;s billing team was not slow. They were capable and organized. They were just spending most of their time doing something that should not have been their job: assembling the delivery story from fragments scattered across three systems, two paper packets, and a group text.</p><blockquote><p>The billing team was not the bottleneck. The missing operational layer was.</p></blockquote><h4><strong>Why we did not replace QuickBooks</strong></h4><p>When we started building Fueleo around American Petroleum&#8217;s operation, the decision not to replace QuickBooks was deliberate.</p><p>Not because QuickBooks has no limits. It does. It is not a fuel dispatch system. It does not manage driver workflows or capture BOLs as part of a structured delivery record. It cannot calculate rack-based pricing or handle complex tax exemption logic. It cannot show you the difference between gallons delivered and gallons invoiced at any given moment.</p><p>But none of those limitations are reasons to replace an accounting system the team already trusts and already knows.</p><p><strong>They are reasons to build the operational layer that sits in front of it.</strong></p><p>The workflow we designed became:</p><div class="callout-block" data-callout="true"><p><em><strong>Order &#8594; Dispatch &#8594; Delivery &#8594; Documentation &#8594; Pricing &#8594; Invoice &#8594; QuickBooks</strong></em></p></div><p>Fueleo manages the fuel-specific process. QuickBooks remains the accounting system of record. Each platform does the work it is actually built for.</p><p></p><h4><strong>What changed at American Petroleum</strong></h4><p>The biggest improvement was not faster invoicing in isolation. It was the reduction of the operational friction that was making invoicing slow.</p><p>Before the workflow was connected, billing required several hours of manual work each day. The team collected delivery information, reviewed tickets, verified quantities, applied pricing, added fees, and entered invoices one by one.</p><p>After the workflow was connected, most of that data was already present by the time billing reviewed the delivery. The process became:</p><p>Review the completed delivery. Resolve any exception. Approve the invoice. Sync to QuickBooks.</p><p>Invoices went out closer to the delivery date. The billing team spent less time entering data. Management could finally see the difference between what had been delivered and what had been invoiced, in real time, without asking anyone.</p><p>Last year, <strong>Fueleo processed over $5 million in invoices for our design partner customers with less than 1.45% sync error rate to QuickBooks.</strong></p><blockquote><p>That number is not a demo metric. It is a live operation, real deliveries, real customers, real invoices, syncing cleanly into an accounting system the team already trusted and did not have to replace.</p></blockquote><p>QuickBooks stayed exactly where it was. The operation around it became something different.</p><h4><strong>The thing Garrett said that I keep coming back to</strong></h4><p>Toward the end of one of our early conversations, Garrett said something I have repeated probably a hundred times since.</p><p><em><strong>&#8220;Same-day invoicing is not an accounting feature. It is what happens when the rest of the operation is running right.&#8221;</strong></em></p><p>He was correct. Same-day invoicing is not created by adding a button inside QuickBooks. It requires the order to be structured correctly before the truck leaves. It requires the driver to capture the final gallons at the delivery site. It requires the ticket to exist and be legible. It requires the pricing rule to be known before dispatch, not reconstructed by billing after the fact.</p><blockquote><p><strong>Same-day invoicing is the result of a connected operation. The accounting system just records what a connected operation produces.</strong></p></blockquote><p></p><h4><strong>What this means for mid-market fuel marketers</strong></h4><p>Large fuel companies have the budget and staff for a full ERP replacement. Small operators can manage with QuickBooks and a few spreadsheets. Mid-market fuel marketers are caught between those two worlds. Complex enough that basic accounting workflows create constant friction. Not quite large enough to justify tearing out the financial system and starting over.</p><p>That gap is where Fueleo fits.</p><p>Not as a replacement for what already works. As the operational layer that makes what already works actually work for a fuel business.</p><h4><strong>QuickBooks keeps the books.</strong></h4><h4><strong>Fueleo connects the work that creates them.</strong></h4><p><em>Next issue: The collections team was doing everything right. The system was making sure it did not matter.</em></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m Dibyesh G., founder of Fueleo. I spend my time talking to fuel marketers about the operational problems hiding between their field operations and their accounting systems. This newsletter is where I write about what I find.</em></p></div>]]></content:encoded></item><item><title><![CDATA[I Went to Denver Looking for a Dispatch Problem. I Found an Outlook Calendar.]]></title><description><![CDATA[What a fuel operator taught me about looking past the workflow that looks broken and finding the one that actually costs money.]]></description><link>https://www.readthefuelstack.com/p/i-went-to-denver-looking-for-a-dispatch</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/i-went-to-denver-looking-for-a-dispatch</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 14 Jul 2026 14:30:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TdF9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TdF9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TdF9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 424w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 848w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 1272w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TdF9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic" width="1200" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22032433-147e-4658-b27c-42e8e7579486_1200x800.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:310105,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/204703689?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TdF9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 424w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 848w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 1272w, https://substackcdn.com/image/fetch/$s_!TdF9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22032433-147e-4658-b27c-42e8e7579486_1200x800.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Colorado, 2024. The trip that challenged my assumptions about fuel dispatch and changed the problem I decided to solve.</strong></figcaption></figure></div><p>In 2024 I flew to Denver to visit my friend Pete.</p><p>Pete runs a fueling company. He knows everyone in the industry and his opinion carries weight because he has been inside more fuel operations than most people will see in a career. When he offered to take me to see a friend who ran a bigger operation, I said yes immediately.</p><p>I went in thinking I knew what I was going to find.</p><p>Dispatch was the problem. I had been thinking about it for months. Mid-market fuel distributors running routes on whiteboards and phone calls. Drivers showing up to sites without clear instructions. Loads getting missed. Customers calling to find out where their fuel was.</p><p>I was going to see it in the field and it was going to confirm everything I had been thinking.<br></p><h4><strong>The Outlook calendar</strong></h4><p>We walked into the dispatch office and the owner pulled up his screen.</p><p>It was an Outlook calendar.</p><p>Every driver had the app on their phone. Recurring orders were scheduled in advance. The owner could see the day&#8217;s routes at a glance. Drivers knew their stops before they left the terminal.</p><p>I asked him about it.</p><p><em><strong>&#8220;It works for us,&#8221;</strong></em><strong> he said. </strong><em><strong>&#8220;Every driver has it. Easy to maintain recurring orders. We have been doing it this way for years.&#8221;</strong></em></p><p>He was not embarrassed. He was not describing a workaround he hoped to replace someday. He was describing a system that worked.</p><p>And he was right. Fuel was going out on time. Customers were getting their deliveries. Drivers knew where they were going.</p><blockquote><p><strong>The dispatch problem I flew to Denver to confirm did not exist.</strong></p></blockquote><p>I flew home with a lot to think about.</p><h4><strong>What I got wrong</strong></h4><p>I had made the mistake that is easy to make when you are building software for an industry you have not worked inside.</p><p>I looked at a tool and I saw a gap. I assumed that because Outlook was not designed for fuel dispatch, the people using it must be struggling.</p><p>They were not struggling. They had found something that worked and built their operation around it.</p><blockquote><p><strong>I was solving for the thing I could see. I had not yet spent enough time asking about the thing that was actually costing people money.</strong></p></blockquote><h4><strong>Two years later</strong></h4><p>In 2025 I decided to build Fueleo.</p><p>Before writing a line of code, I started having real conversations with fuel marketers. Operators, billing teams, controllers, owners. I asked them what was actually breaking in their operations. Not what looked broken from the outside. What they felt every day.</p><p>The same answer kept coming up.</p><p><em><strong><mark data-color="#ffe599" style="background-color: rgb(255, 229, 153); color: rgb(0, 0, 0);">The fuel always goes out on time. The invoice takes three to five days.</mark></strong></em></p><p>A driver delivers 5,000 gallons on a Tuesday morning. The customer has fuel in their tank by 10am. The invoice does not arrive until Friday. Sometimes the following Monday.</p><p>Not because anyone is being careless. Because the handoffs between delivery and invoice are long and nobody owns the gap between them.</p><p>The driver brings back the ticket. Dispatch closes the load. Billing checks the gallons. Pricing verifies the rack or contract rate. Someone checks freight, fuel surcharge, taxes, exemptions, fees. Then the invoice finally gets created and pushed into accounting.</p><p><strong>Each step adds hours. The hours add up to days. And the cash sits unbilled the whole time.</strong></p><p>The delivery was never the problem.</p><p><strong>The invoice was.</strong></p><h4><strong>What the Denver trip actually taught me</strong></h4><p>Looking back, the Outlook calendar was the most important thing I saw on that trip.</p><p>Not because it showed me a gap to fill. <strong>Because it showed me I was looking at the wrong gap.</strong></p><p>The operator had solved dispatch in a way that worked for his operation. What he had not solved, what nobody had solved cleanly, was the three to five day window between a completed delivery and a sent invoice.</p><p>That window is where cash flow sits unbilled. Where pricing errors go undetected until the customer calls. Where customer trust quietly erodes one late invoice at a time.</p><p>I would not have understood any of that if I had walked into Denver and found the dispatch chaos I was expecting. I would have built a dispatch tool and moved on.</p><p>Instead I walked out of an Outlook calendar demo with the most important question I have asked in this industry.</p><blockquote><p><em>If dispatch is working fine, what is actually broken?</em></p></blockquote><p>Two years of conversations with fuel marketers gave me the answer.</p><h4><strong>What I am still figuring out</strong></h4><p>I do not think I have gotten everything right since Denver.</p><p>There are parts of the fuel distribution workflow that are more complex than I understood when I started building. The way common carrier operations handle carrier settlements. The way wet hosing billing differs from tank delivery billing. The way tax exemption compliance sits between systems that were never designed to talk to each other.</p><p>Every operator conversation surfaces something I did not account for. <strong>That is not comfortable to admit when you are building software that people are trusting with their operations.</strong></p><p>But it is true.</p><p><strong>The thing I am most certain about is the thing the Denver trip taught me. The best way to understand what is broken is to go see what is working and ask why.</strong></p><p>The Outlook calendar was working. That question led me to the invoice.</p><p>I am still trying to earn the answer the same way: by walking into real operations, noticing what already works, and asking what still costs money.</p><div><hr></div><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m<a href="https://www.linkedin.com/in/dibyesh/"> Dibyesh Giri.</a>, founder of Fueleo. I spend my time talking to fuel marketers about the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about what I find.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Finding the Right Fuel Truck Driver Is Harder Than It Looks. Ovante Johnson Told Me Why]]></title><description><![CDATA[A conversation with the operations manager of Pacific States Petroleum on hiring, culture, and what happens after the 90-day mark.]]></description><link>https://www.readthefuelstack.com/p/finding-the-right-fuel-truck-driver</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/finding-the-right-fuel-truck-driver</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Thu, 09 Jul 2026 14:31:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ibJV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ibJV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ibJV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ibJV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg" width="728" height="970.6666666666666" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:1448,&quot;width&quot;:1086,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:211145,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/206064361?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9dd61da-decf-41f2-921a-eb0e01206703_1086x1448.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ibJV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ibJV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F57677686-aaaf-4402-a59d-8e6ccea5b6ef_1086x1448.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Ovante Johnson, operations manager at Pacific States Petroleum, on hiring fuel truck drivers, setting honest expectations, and what happens after the 90-day mark.</strong></figcaption></figure></div><p><strong>Ovante Johnson</strong> knows what it is like to sit in the driver&#8217;s seat.</p><p>Before he became operations manager at<strong> <a href="https://www.pacstatespetro.com">Pacific States Petroleum</a></strong><a href="https://www.pacstatespetro.com">,</a> he drove fuel trucks himself. He has done the early mornings, the unpredictable hours, the remote delivery sites, the customer calls from the cab. He knows what the job actually requires because he has done the job.</p><p>That background matters when you are the person deciding who gets hired to do it next.</p><p>I sat down with Ovante recently to talk about something that does not get discussed enough in fuel distribution: how hard it actually is to find and keep the right driver. Not just someone with a CDL and a clean record. Someone who fits the culture, handles the complexity, and is still showing up six months later the same way they showed up on day one.</p><div class="pullquote"><p><em><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">A note on this piece:</span></strong> this article is based on a real conversation with Ovante Johnson, operations manager at <a href="https://www.pacstatespetro.com">Pacific States Petroleum</a>. Some dialogue has been lightly reconstructed for clarity while preserving the substance of our conversation.</em></p></div><h4><strong>What the resume tells you before you pick up the phone</strong></h4><p>Ovante is direct about what he looks for on paper before anyone gets a call.</p><p><strong><span data-color="#ff0000" style="color: rgb(255, 0, 0);">Red flags</span>:</strong> multiple roles with three to six month tenures. A pattern of job hopping signals a retention risk before the interview even starts.</p><p><em>&#8220;Training a fuel truck driver costs real time and real money,&#8221;</em> he said. <em>&#8220;If someone has cycled through four companies in two years, I have to ask myself whether it is worth the investment.&#8221;</em></p><p><strong><span data-color="#38761d" style="color: rgb(56, 118, 29);">Green lights</span>:</strong> longevity at previous companies, an active CDL, and hazmat experience. Fuel distribution experience specifically is not required.</p><p><em>&#8220;A driver who spent eight years at a trucking company and never touched fuel is still a strong candidate,&#8221;</em> Ovante said. <em>&#8220;Long tenure tells me they can commit. We can teach the fuel side. We cannot teach reliability.&#8221;</em></p><blockquote><p><strong>The industry-specific knowledge is learnable. The work ethic and the willingness to show up consistently is much harder to develop after the fact.</strong></p></blockquote><h4><strong>The 90-day problem</strong></h4><p>This is the part of the conversation that stayed with me longest.</p><p>I asked Ovante what the biggest challenge in hiring actually is. Not the hardest part of screening. The hardest part of building a driver team that holds together over time.</p><p>He did not hesitate.</p><p><em>&#8220;The 90-day mark.&#8221;</em></p><p>Post-COVID, the CDL pool shifted. A meaningful share of newer drivers have five or six years of experience rather than ten or fifteen. And with that shift came a different set of expectations about what the job looks like day to day.</p><p>Ovante tells every candidate upfront: do not schedule appointments on work days. Hours are unpredictable. More hours means more pay, and the company frames that as a positive rather than a burden. But the mindset required to genuinely embrace that reality is harder to screen for than any technical skill.</p><blockquote><p><strong>The interview can reveal a lot. It cannot always reveal how someone will feel about the job three months in when the initial energy has settled and the reality of the schedule sets in.</strong></p></blockquote><p></p><h4><strong>What Pacific States is actually selling</strong></h4><p>Pacific States Petroleum is employee-owned. That fact shapes everything about how Ovante talks about the company, how existing employees describe it, and how the culture gets transmitted to new hires.</p><p><em>&#8220;If you want to be a number, go elsewhere,&#8221;</em> Ovante said. <em>&#8220;If you want to be valued, come here.&#8221;</em></p><p>The operations manager works alongside drivers and mechanics. There is no practical title hierarchy in the day to day reality of the operation. The president knows the drivers by name. The culture is hard-working and emergency-driven, because fuel distribution does not run on a predictable schedule, but it is also a community.</p><p>That community is transmitted peer to peer. Existing drivers, dispatchers, and managers carry the narrative organically. The company does not force a culture deck on new hires. <strong>The culture is absorbed by working alongside the people who already live it.</strong></p><div class="callout-block" data-callout="true"><p><em><strong>&#8220;We do not have to explain our culture in an orientation session,&#8221;</strong></em><strong> Ovante said. </strong><em><strong>&#8220;New hires figure it out pretty fast just by watching how we operate.&#8221;</strong></em></p></div><h4><strong>What this means for the industry</strong></h4><p>The fuel distribution driver shortage is real but it is not simply a supply problem. There are CDL holders in the market. The challenge is finding the ones whose expectations align with what the job actually requires, and retaining them once they understand what that means in practice.</p><p>The operators who figure this out first are not necessarily offering the highest pay. They are offering something harder to replicate: a clear culture, honest expectations, and a team environment where the work feels worth doing.</p><p>Pacific States has built that. It did not happen by accident. It happened because people like Ovante, who drove the trucks before they managed the teams, understand what the job actually asks of the people doing it.</p><p><strong>The hiring problem in fuel distribution is not that there are no good drivers. It is that finding the ones who will still be there at the 90-day mark, and the year mark, and the five-year mark, requires more than a CDL check and a phone screen.</strong></p><p>It requires knowing what you are actually hiring for. And being honest about it before anyone signs an offer letter.</p><h4><strong>The question worth asking if you hire fuel drivers</strong></h4><p>What do you tell candidates about the hours before they accept the offer?</p><p>And more importantly: do you tell them in a way that actually prepares them for a Tuesday in February, or in a way that sounds manageable until it isn&#8217;t?</p><p><strong>The 90-day problem is almost always a conversation that did not happen clearly enough in the first three weeks.</strong></p><p><em><strong>Next issue: I went to Denver looking for a dispatch problem. I found an Outlook calendar.</strong></em></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em><span>I&#8217;m </span><a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Giri</a><span>, founder of Fueleo. I spend my time talking to fuel marketers about the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about what I find.</span></em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[They Didn't Call to Complain. They Just Stopped Calling.]]></title><description><![CDATA[In fuel distribution, customers rarely announce they are leaving. First they pay slower. Then they order less. Then one day the volume is gone.]]></description><link>https://www.readthefuelstack.com/p/they-didnt-call-to-complain-they</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/they-didnt-call-to-complain-they</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 07 Jul 2026 14:03:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nHSV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nHSV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nHSV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nHSV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114182,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/204555574?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nHSV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 424w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 848w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 1272w, https://substackcdn.com/image/fetch/$s_!nHSV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f445a1b-b8a6-4bb0-b7e6-30ee4087c80f_1672x941.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong>Customers don&#8217;t always complain. First they pay slower. Then they order less. Then one day, they&#8217;re gone.</strong></figcaption></figure></div><p>I&#8217;ve spent the last year sitting beside dispatchers, billing clerks, controllers, and fuel company owners. I ask them one question over and over:</p><p><em><strong>&#8220;When did you last lose a customer and actually know why?&#8221;</strong></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>It is the thing I do most in this industry. Not building. Not selling. Asking.</p><p>The answers are almost always the same. A contract ended. A competitor undercut the price. The customer moved operations out of the area.</p><p>What almost nobody says is: we lost them because billing kept making small errors and the customer got tired of checking.</p><p>Not because it does not happen. Because they usually do not find out until it is too late.</p><h4><br><strong>One story keeps coming back to me</strong></h4><p>An ops director in Texas told me about a construction company that had been a customer for six years. Consistent volume. Paid within terms. Never caused problems. The kind of account you stop worrying about because it has always taken care of itself.</p><p>The customer never called to complain. Not about the first billing error. Not about the second. Not about the third.</p><p>He just stopped answering when the sales rep called. Payments that used to come in at net 28 started arriving at net 38, then net 45. Volume dropped thirty percent over four months. Nobody flagged it.</p><p>When he finally said he was moving to a different supplier, the ops director asked why.</p><p><em>&#8220;The invoices were always a little off,&#8221;</em> he said. <em>&#8220;Not by a lot. But every month there was something. I just got tired of having to check.&#8221;</em></p><p><strong>Six years. Three billing errors. Not a single escalation.</strong></p><h4><strong>25 out of 26</strong></h4><p>Lee Resource found that 25 out of 26 dissatisfied customers never complain.</p><p>They simply leave.</p><p>That number hits differently in the context of fuel distribution.</p><p>In fuel distribution, customers often cannot verify what they received. They were not at the site. They do not own the metering equipment. They are trusting your numbers.</p><p>Every small billing mistake becomes another entry in a mental ledger.</p><p>The wrong rack differential applied to a load. The freight surcharge pulled from last month&#8217;s rate table. Dyed diesel billed with the wrong tax treatment. Each one small enough to pay without calling. Each one just large enough to remember.</p><blockquote><p><strong>They do not call to tell you the ledger tipped. They just stop calling to order</strong></p></blockquote><h4><strong>What I keep hearing about how errors go unconnected</strong></h4><p>When I ask billing teams about disputes they almost always describe individual incidents. A credit was issued. The ticket was closed. Everyone moved on.</p><p>What I rarely hear is someone describing those incidents as a pattern connected to a specific customer&#8217;s experience over time.</p><p>The wrong rack differential applied to one load. Caught and credited. <strong>Nobody asked whether the same pricing logic had run on other accounts that month.</strong></p><p>A late invoice because dispatch closed the load a day behind. The customer&#8217;s payment came in late. Billing noted the slow payment. Nobody connected it to the late invoice.</p><p>A volume discrepancy. The invoice said 4,200 gallons. The customer&#8217;s equipment logs said 4,050. The customer paid and made a note to watch. They did not call.</p><p>Three events. Three systems flagged them. Nobody&#8217;s job was to connect them.</p><p><strong>That is how a six-year customer becomes a loss without a single escalation.</strong></p><h4><strong>The AR report is telling you something nobody is reading</strong></h4><p>When I ask ops directors and controllers to walk me through accounts that started paying slower before they left, the pattern is almost always visible in hindsight.</p><p>First, payment timing drifts.</p><p>Then, volume softens.</p><p>Finally, the customer disappears.</p><p>Nobody connected those two things to the billing friction that had been happening on the account for months.</p><p>When a historically reliable fuel customer starts paying slower, it is worth asking a different question before it goes to collections. Sometimes it is cash flow. Sometimes it is their AP process.</p><blockquote><p><strong>But often it is a relationship signal hiding inside the AR report.</strong></p></blockquote><p>A customer moving from net 28 to net 45 may not look like churn. <strong>But in fuel operations, payment drift is often one of the first visible signs that trust is weakening.</strong></p><h4><strong>What one AR manager told me</strong></h4><p>I was sitting with an AR manager at a mid-market distributor last year. I asked her how she knew when an account was starting to go sideways.</p><p>She thought about it for a moment.</p><p><em>&#8220;Honestly? When they stop calling about errors.&#8221;</em></p><p>I asked her to explain.</p><p><em>&#8220;When a customer disputes an invoice, it means they are still engaged. They care enough to call. When a customer stops disputing and just starts paying slow, that is when I get nervous. It usually means they have already decided something.&#8221;</em></p><p>That observation stayed with me.</p><blockquote><p><strong>The customer who calls to dispute an invoice is giving you a chance to fix the relationship. The customer who stops calling has already made a decision you do not know about yet.</strong></p></blockquote><h4><strong>The retention problem starts upstream of AR</strong></h4><p>When I talk to owners and ops directors about customer retention, the conversation almost always focuses on sales. Who is calling the account. When did the last check-in happen.</p><p>What rarely comes up is the operational chain the customer experiences every single time they receive a delivery.</p><p>Dispatch accuracy. Delivery confirmation. BOL capture. Pricing logic. Tax handling. Invoice timing. AR follow-up.</p><p><strong>The customer experiences all of that as one thing: can I trust this supplier to get it right without making me chase them?</strong></p><p>The fix is not another sales call. It is a connected workflow where delivered gallons, BOLs, contract pricing, taxes, fees, credits, and invoices are checked before the customer ever sees the bill. When those pieces connect, exceptions surface before the invoice goes out. The credit gets issued before the customer notices the discrepancy. The mental ledger never starts.</p><blockquote><p>The more time I spend inside fuel companies, the more convinced I become that <strong>customer retention is not primarily a sales problem. It is an operational visibility problem.</strong></p></blockquote><h4><strong>The question worth asking this week</strong></h4><p>Look at your top twenty accounts by volume. For each one:</p><p>Is their payment timing faster or slower than six months ago?</p><p>Has their volume changed in the last ninety days?</p><p>How many billing credits have they received in the last year and were those reviewed as a pattern or resolved as individual tickets?</p><p><strong>If you cannot answer those three questions without pulling data from multiple systems, you do not have a customer retention problem yet. You have a visibility problem. And the retention problem is building quietly underneath it.</strong></p><p>The warning signs were never hidden.</p><p>They were sitting in dispatch.</p><p>In billing.</p><p>In AR.</p><p>In delivery tickets.</p><p>In credit memos.</p><p>Every department saw one piece.</p><p><strong>Nobody saw the story.</strong></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Giri</a>, founder of Fueleo. I spend my time talking to fuel marketers about the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about what I find.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Tax Exemption That Was Valid Last Month. And the Audit That Found Out It Wasn't.]]></title><description><![CDATA[Fuel tax exemption compliance is not a complicated problem. It is a tracking problem. And the spreadsheet, the dispatch system, and the billing software are not talking to each other.]]></description><link>https://www.readthefuelstack.com/p/the-tax-exemption-that-was-valid</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-tax-exemption-that-was-valid</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 30 Jun 2026 07:18:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1N_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1N_4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1N_4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1N_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1306853,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/204234457?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1N_4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!1N_4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2dbc61e0-c5dc-4d68-8499-d9932640c395_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Maria runs billing for a mid-market fuel distributor in Central Texas. Her company delivers dyed diesel to agricultural customers, construction sites, and equipment rental companies across the region.</p><p>Every customer has an exemption on file. An AG number. A DD number. A signed statement. Maria tracks all of it in a spreadsheet: customer name, exemption type, number, expiration date, last delivery date.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>She updates it when she remembers. She checks it when someone asks.</p><p>Three weeks ago, a large agricultural customer called. Their latest invoice had a tax charge that wasn&#8217;t there before. Maria pulled the spreadsheet. <strong>The customer&#8217;s AG exemption had expired forty-two days earlier.</strong> Nobody had noticed. The driver didn&#8217;t know to check. Five loads had gone out in that window, tax-exempt, against an invalid certificate.</p><blockquote><p>The spreadsheet had the expiration date. The dispatch system had the delivery dates. The billing software had the invoices. <strong>Three systems, all holding a piece of the answer, none of them talking to each other.</strong></p></blockquote><h4><strong>The three-system problem nobody designed</strong></h4><p>Billing applies tax treatment based on the customer record. If it says exempt, the invoice goes out exempt. It doesn&#8217;t check expiration dates. It wasn&#8217;t built to.</p><p>Dispatch assigns drivers, routes, and loads. It has no visibility into exemption status. Compliance isn&#8217;t dispatch&#8217;s job.</p><p>The spreadsheet is supposed to be the bridge. But it&#8217;s passive. <strong>It doesn&#8217;t know when a load gets dispatched. It doesn&#8217;t update when a delivery happens. It only knows what someone typed into it, and it only gets checked when someone remembers to look.</strong></p><p>The certificate expired on a Tuesday. No alert fired anywhere. The driver picked up Wednesday&#8217;s load the same way he always had. By the time Maria found the problem, it was forty-two days and five deliveries old.</p><h4><strong>What Texas actually requires</strong></h4><p>Texas taxes diesel at twenty cents per gallon removed from a terminal, unless exempted by law.</p><p>An agricultural end user number allows up to <strong>25,000 gallons of tax-free dyed diesel per month.</strong> A non-agricultural end user number caps at <strong>10,000 gallons per month.</strong></p><p>These limits reset every calendar month. <strong>They are not cumulative across the year.</strong></p><p>Violations can exceed $10,000 per incident, plus back taxes. <strong>Federal penalties start at $1,000 per violation or $10 per gallon of improperly used fuel, whichever is greater, and apply to each separate incident.</strong></p><blockquote><p>Five loads against an expired exemption isn&#8217;t one incident. It&#8217;s five.</p></blockquote><h4><strong>Two questions, asked at the wrong time</strong></h4><ol><li><p><strong>Is the certificate valid right now?</strong> </p></li></ol><p>Not when the account was set up. Today. AG and DD numbers expire and get revoked regularly. Most billing teams check at onboarding, maybe annually. Almost nobody checks before every delivery, and dispatch certainly doesn&#8217;t, because dispatch doesn&#8217;t have the spreadsheet.</p><ol start="2"><li><p><strong>Has the customer hit their monthly limit?</strong> </p></li></ol><p>This requires pulling delivery history, summing exempt gallons, and comparing against the spreadsheet&#8217;s stated limit. At fifty or a hundred deliveries a day, that manual cross-check doesn&#8217;t happen consistently. <strong>It can&#8217;t. There aren&#8217;t enough hours.</strong></p><h4><strong>What an audit actually looks for</strong></h4><p>Fuel unaccounted for is presumed to have been sold or used for taxable purposes. <strong>The burden is on the distributor to prove an exemption was valid, not on the auditor to disprove it.</strong></p><p>An auditor wants the valid certificate at the time of each delivery, proof it hadn&#8217;t expired, a month-by-month gallon count against the limit, and an invoice that reflects it correctly. If any of that is missing, you&#8217;re looking at back taxes, penalties, and interest, not just an awkward conversation.</p><p><strong>The auditor does not care that the data was scattered across three systems. That&#8217;s your problem to solve, not theirs to accommodate.</strong></p><h4><strong>What it would have cost</strong></h4><p>Five loads, roughly 4,000 gallons each, 20,000 gallons total.</p><p>State tax exposure alone: <strong>$4,000.</strong></p><p>Federal exposure at the per-gallon rate: <strong>up to $200,000,</strong> in a worst-case reading.</p><p>In practice, enforcement varies, and a proactive first-time fix is treated differently than a pattern of evasion. But the asymmetry is the point:</p><blockquote><p>The cost of the failure dwarfs the cost of the system that would have prevented it.</p></blockquote><h4><strong>What actually closes the gap</strong></h4><p>Not a better spreadsheet. Not a fourth system. <strong>The exemption data has to live inside the same record dispatch and billing both use.</strong></p><p>When a load is assigned to an exempt customer, the system checks the certificate automatically. Expired or expiring within thirty days, the load doesn&#8217;t move without a documented override. Every closed delivery updates the customer&#8217;s monthly exempt gallon total automatically. Approaching the limit triggers a flag both billing and dispatch can see.</p><blockquote><p>The compliance logic has to live inside the workflow, not next to it.</p></blockquote><h4><strong>The question worth asking this week</strong></h4><p>Pick your ten largest dyed diesel customers in Texas. For each: when does their certificate expire, how many exempt gallons have they taken this month, and how close are they to the limit?</p><p>Now ask where each answer comes from. Spreadsheet? Billing? Dispatch?</p><p><strong>If you need three places to answer three questions about one customer, the compliance information isn&#8217;t in your workflow. It&#8217;s in the gap between your systems.</strong></p><p>Maria got lucky. The customer called before the auditor did.</p><p>For the current Texas exemption rules, gallon limits, and registration forms referenced in this issue, see the Texas Comptroller's diesel fuel page: <a href="https://comptroller.texas.gov/taxes/fuels/diesel.php">comptroller.texas.gov/taxes/fuels/diesel.php</a></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh G</a>., founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Fuel Dispatch Operation Was Running on Jenny's Memory]]></title><description><![CDATA[The most important system in your fuel operation is probably not software. It is a person. And she is thinking about retirement.]]></description><link>https://www.readthefuelstack.com/p/the-fuel-dispatch-operation-was-running</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-fuel-dispatch-operation-was-running</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Sun, 28 Jun 2026 17:02:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hO3n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hO3n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hO3n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hO3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1354088,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/203980244?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hO3n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!hO3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05662e00-9eda-441a-9dd1-f53b29a75311_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">When Dispatch Knowledge Lives in One Person&#8217;s Head</figcaption></figure></div><p>In fuel distribution, dispatch is not just putting trucks on a schedule.</p><p><strong>It is where customer promises, driver judgment, terminal constraints, delivery windows, and billing consequences all meet.</strong></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Jenny had been dispatching for the same petroleum distributor in Eastern Washington for fourteen years.</p><p>She knew every driver by name, by habit, and by the way each one sounded when something was about to go wrong on a route.</p><p>She knew which driver could handle a tight downtown delivery without getting frustrated. She knew which driver preferred certain routes because he understood the sites better. She knew which customers needed a call before the truck arrived. She knew which roads flooded in March. She knew which site had a gate code that changed every few months but never made it into the system.</p><p>She knew which terminals moved fast in the morning and which ones backed up by noon.</p><p>She knew which customer would complain if the delivery happened after 6am because their yard became too congested.</p><p>She knew which wet hose account had equipment spread across three lots even though the order only showed one address.</p><p>She knew which driver needed a warning before going to a difficult site.</p><p>And she knew the little dispatch decisions that prevented bigger problems later in billing, customer service, and operations.</p><p>None of this was documented.</p><p>It was just known. Because Jenny knew it.</p><p>The company threw her a retirement party on a Friday in October. Cake. A card signed by everyone. A gift card to a place she liked. Her manager gave a speech about what she meant to the operation.</p><p><strong>Three weeks later, dispatch started breaking.</strong></p><h4><strong>What breaking looks like in fuel dispatch</strong></h4><p>It did not happen all at once.</p><p>That is the thing about losing dispatch knowledge. <strong>It rarely shows up as one dramatic failure. It shows up as friction across the day.</strong></p><p>A driver called from a customer site with a question about the tank setup. Jenny would have known the answer immediately. The new dispatcher searched the system, found nothing useful, called the customer&#8217;s main office, and waited.</p><p>The driver sat for twenty minutes.</p><p>That twenty minutes did not stay isolated. It pushed the next stop. It changed the route. It created another customer call. It made the driver irritated. By the end of the day, <strong>one missing site note had become a dispatch problem, a customer service problem, and a driver morale problem.</strong></p><p>Another customer complained that the truck arrived too late. The new dispatcher had scheduled the delivery at 9am because, on the route board, that made the most sense.</p><p>But Jenny had always known this customer needed delivery before 6am. Their yard became too busy after that. The truck blocked movement. The customer&#8217;s team got frustrated.</p><p>It was not a written rule. It was a dispatch rule Jenny had carried in her head for years.</p><div class="callout-block" data-callout="true"><p><strong>The system showed an address. Jenny knew the operation behind the address. That is the difference.</strong></p></div><p>The third week, a pricing exception that had been applied manually every month for three years was missed. Not because anyone was careless. Because the exception lived in Jenny&#8217;s head, attached to no record anyone else could find, applied correctly every single month for years by a person who was no longer there.</p><p><strong>The fourth week, the operations manager sat down and tried to write down everything Jenny knew. He got through about a third of it before he realized he did not actually know what he did not know.</strong></p><h4><strong>Dispatch is where hidden rules live</strong></h4><p>In fuel distribution, dispatch is not just a calendar.</p><p>Real dispatch is full of hidden rules.</p><p>Customer delivery windows. Tank access instructions. Driver-site fit. Terminal preferences. Branded supplier constraints. Weather-related route judgment. Product availability. Runout risk. Equipment limitations. Truck compartment planning. Split-load decisions. Customer communication preferences. Site safety issues. Special instructions that never make it into the order.</p><p><strong>This is why dispatch is one of the most knowledge-heavy parts of a fuel operation.</strong> The dispatcher is constantly answering questions the system does not fully understand:</p><p>Can this customer wait until tomorrow? Can this driver handle that site? Will that terminal be too slow by the time the truck gets there? Can this order be combined with another stop? Is this actually urgent, or does the customer always say it is urgent? Will this delivery create a billing exception? Will the driver have enough product left after the first drop?</p><p>Jenny knew these answers because she had lived through them.</p><blockquote><p><strong>The software had records. Jenny had context.</strong></p></blockquote><h4><strong>Why dispatch knowledge disappears</strong></h4><p>Most companies do not intentionally lose dispatch knowledge. They just never capture it.</p><p>The dispatcher is too busy moving trucks. The driver calls. The customer calls. A terminal delay changes the plan. A load gets rejected. A truck breaks down. A customer needs an emergency delivery. The dispatcher solves the issue and moves on.</p><p>That is the job.</p><p>But <strong>every time a dispatcher solves something manually and the reason is not captured, the company loses an opportunity to turn experience into process.</strong> The knowledge stays in the person. Not in the customer record. Not in the site profile. Not in the route plan. Not in the next dispatcher&#8217;s hands.</p><p>As long as Jenny was there, nobody felt the pain.</p><blockquote><p>Why document what you can just ask? That is the trap. The <strong>best dispatcher makes the system feel better than it actually is.</strong></p></blockquote><p></p><h4><strong>Software training is not dispatch handover</strong></h4><p>When companies train a new dispatcher, they usually focus on the visible workflow.</p><p>Here is how to create an order. Here is how to assign a driver. Here is how to move a delivery. Here is how to update a route. Here is how to close out the day.</p><p>That matters. But <strong>that is not the hard part of fuel dispatch.</strong></p><p>The hard part is knowing why the route should be built a certain way. Why one driver should go to a certain customer. Why one site must be delivered before sunrise. Why one terminal should be avoided after 10am. Why one customer needs a phone call before the truck leaves. Why a simple dispatch change may create a billing issue later.</p><p>A new dispatcher can learn the software in a few weeks. <strong>They cannot absorb fourteen years of customer behavior, driver preferences, terminal quirks, site constraints, and operational judgment in a short handover.</strong></p><blockquote><p>The company thinks it transferred the job. But it only transferred the screens.</p></blockquote><h4><strong><br>The cost of weak dispatch knowledge</strong></h4><p>When dispatch knowledge is missing, the cost does not always show up as a failed delivery. It shows up in smaller ways first.</p><p>Drivers wait. Routes get rebuilt. Customers call for updates. Dispatchers make extra phone calls. Managers get pulled in. Invoices need corrections. Customer service has to explain what happened. Drivers lose confidence in the plan.</p><p>And then the dangerous one.</p><p><strong>Customers start feeling like the company no longer knows their operation.</strong></p><p>Fuel customers often do not judge you only by whether the fuel arrived. They judge you by whether the delivery fit their operation. Did the driver know where to go? Did dispatch understand the delivery window? Did the company remember the site constraint? Did they have to explain the same thing again?</p><p>When Jenny was there, the customer felt known.</p><p>After Jenny left, <strong>the customer started feeling like a new account again.</strong></p><blockquote><p><strong>That is how dispatch knowledge becomes customer retention.</strong></p></blockquote><h4><strong>What fuel marketers should actually capture</strong></h4><p>The answer is not to ask dispatchers to write long manuals. That will not happen consistently.</p><p><strong>The answer is to capture dispatch knowledge inside the normal workflow.</strong> At minimum, every fuel marketer should be capturing:</p><ul><li><p><strong>Customer delivery windows</strong></p></li><li><p><strong>Site access instructions</strong></p></li><li><p><strong>Tank and asset notes</strong></p></li><li><p><strong>Preferred driver or driver restrictions</strong></p></li><li><p><strong>Terminal and supplier preferences</strong></p></li><li><p><strong>Product-specific handling notes</strong></p></li><li><p><strong>Emergency delivery rules</strong></p></li><li><p><strong>Recurring route logic</strong></p></li><li><p><strong>Customer communication preferences</strong></p></li><li><p><strong>Weather or seasonal route issues</strong></p></li><li><p><strong>Special billing or pricing flags dispatch needs to know before delivery</strong></p></li><li><p><strong>Driver feedback after difficult deliveries</strong></p></li></ul><p>These should not live in notebooks, text messages, or one person&#8217;s memory<strong>. They should be attached to the customer, site, order, route, asset, and delivery record.</strong></p><blockquote><p><strong>Dispatch should not have to remember everything. The system should help dispatch remember.</strong></p></blockquote><h4><strong>The dispatch test every operator should run</strong></h4><p>Pick your most experienced dispatcher. Then ask:</p><p><em>If this person could not work for the next three weeks, what would break?</em></p><p>Would another dispatcher know which customers need early deliveries? Would drivers know the site instructions? Would someone know which routes are easy on paper but painful in reality? Would terminal-specific issues be visible before the truck is sent? Would customer communication preferences be clear? Would dispatch know which customers are sensitive, which ones are flexible, and which ones require careful handling?</p><p><strong>If the answer is no, the operation is not fully running on a dispatch system. It is running on dispatch memory.</strong></p><p>That may work for years.</p><p>Until Jenny retires.</p><h4><strong>The question worth asking this week</strong></h4><p>The operations manager in Eastern Washington eventually got most of it sorted. It took longer than it should have and cost more than anyone planned. Two customer relationships required active repair work. One took a credit note and a personal call from the owner.</p><p>None of that cost appeared on any report. It was absorbed quietly, across dozens of small decisions and extra hours and conversations that should not have been necessary.</p><p><strong>When she does retire, the problem will not be that the new dispatcher does not know the software. The problem will be that the software does not know what Jenny knew.</strong></p><p>The next Jenny is already somewhere in your fuel operation. She is moving trucks, calming drivers, protecting customer relationships, avoiding terminal delays, remembering site rules, and preventing billing problems before anyone else sees them.</p><p><strong>The question is whether that knowledge becomes part of the dispatch system, or walks out the door with her.</strong></p><p>Next issue: Why fuel marketers lose customers in silence. Not because of bad fuel or missed deliveries. Because billing friction slowly erodes trust until the customer stops calling.</p><div class="callout-block" data-callout="true"><p><strong>About the author<br></strong><em>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Gir</a>i, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Driver App Everyone Opens But Nobody Trusts]]></title><description><![CDATA[Buying the app was the easy part. Getting drivers to trust it more than paper is where most fuel distributors quietly stall.]]></description><link>https://www.readthefuelstack.com/p/the-driver-app-everyone-opens-but</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-driver-app-everyone-opens-but</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Wed, 24 Jun 2026 13:04:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!hzG_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Six-thirty in the morning, and the first thing Danny does after climbing into the cab is check his phone signal.</p><p><strong>One bar. Maybe two, depending on where the truck is parked.</strong> It is not going to get better once he is on the route, not in the stretches between stops where the cell towers thin out and the app spins on a loading screen that never quite finishes.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>He has been driving for a fuel distributor in the Southeast for six years. The company rolled out a driver app eighteen months ago. Real-time delivery confirmation, signed delivery tickets, rack BOL photos, GPS-stamped timestamps, all of it flowing straight into billing. On paper, exactly what billing needed to stop waiting three days for a paper ticket to make its way back to the office.</p><p><strong>Danny still carries a paper ticket book in the truck door.</strong></p><p>Not because anyone told him to. Because by his second week with the app, he had already learned the things nobody mentioned in training.</p><h4><strong>What the app actually requires of him</strong></h4><p>A delivery for Danny looks like this. Pull into the site. Find the right tank, because not every customer labels them clearly and not every drop is a single tank, sometimes it&#8217;s a split drop across two or three tanks from the same compartment. Connect the hose. Start the pump. Watch the meter while it runs, because customers notice if you are looking at your phone instead of the tank.</p><p>Somewhere in there, the app wants him to confirm the customer, the product, the tank, the compartment, the starting meter reading, the ending meter reading, the gallons delivered, and whether the drop matched what dispatch actually sent him out for, because sometimes a stop changes mid-route and the order on his phone doesn&#8217;t match what the customer is asking for when he pulls in.</p><blockquote><p>He is wearing gloves most months of the year. The touchscreen does not reliably register a gloved finger, so the gloves come off, which means cold hands in winter and the gloves get set down somewhere, usually on top of the tank or the truck step, where they sometimes get forgotten.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hzG_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hzG_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 424w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 848w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 1272w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hzG_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:191199,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/203194224?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hzG_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 424w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 848w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 1272w, https://substackcdn.com/image/fetch/$s_!hzG_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F831dfda7-2350-4c13-8f6f-e2d1c8050791_1024x768.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong><span> </span></strong><em><strong><span>A fuel driver managing a wet hose delivery on a Texas job site. This is where the app has to work.</span></strong></em></figcaption></figure></div><p>The screen is hard to read in direct sun, which is most of his working day. He has learned to angle his body to throw a shadow over the phone just to see what he is tapping.</p><p>And if the signal drops mid-entry, which happens at a meaningful number of his stops, the app does not always save what he has entered. Sometimes it does. Sometimes he gets to the next stop and finds the previous delivery sitting in a queue, unsynced, with no clear indication of whether it actually went through.</p><p><strong>None of this is a single dramatic failure. It is friction. Thirty seconds here. A minute there. Multiplied across eight to twelve stops a day, it adds up to real time, and more importantly, it adds up to real doubt about whether the app actually captured what happened.</strong></p><h4><strong>Why the paper ticket survives</strong></h4><p>The paper ticket does not require a signal. It does not care about gloves. It does not have a loading screen.</p><p>Danny writes the numbers down because he trusts what he can see with his own hand on a piece of paper more than he trusts an app that has eaten an entry before. If the app captures the delivery cleanly, great, that is one less thing he has to think about. If it does not, the paper ticket is the backup that makes sure the customer gets billed correctly and he does not get a call from dispatch asking where a load went.</p><blockquote><p><strong>Paper survives because it is reliable, not because drivers are nostalgic.</strong></p></blockquote><p>Over time, the backup became the primary, and the app became the thing he updates when he remembers and has signal.</p><p>He is not being defiant. He is doing what any reasonable person would do when a tool fails them often enough: he stopped trusting it as the only system of record and built a workaround that he controls.</p><p>In one of my conversations with <strong><a href="https://www.linkedin.com/in/stephanie-mcanally-5b873196/">Stephanie McAnally</a></strong>, a seasoned C-suite leader in the fuel industry, she said something that reframed how I think about this.</p><p><em>&#8220;My drivers do their work diligently. They do the paperwork before and after delivery. They make sure it is correct. So if they are resisting a driver app, I don&#8217;t see that as a driver problem. I see it as an adoption problem.&#8221;</em></p><p>That distinction matters.</p><p>A driver who has spent years doing paperwork correctly, loading accurately, delivering cleanly, and making sure the numbers match before handing in the ticket at the end of the shift is not someone who doesn&#8217;t care about getting it right. That driver has already proven they care about getting it right. The paper process earned their trust over years of consistent, reliable use.</p><p>When that same driver resists an app, the question worth asking is not &#8220;why won&#8217;t they change&#8221; but &#8220;what did the implementation process miss?&#8221;</p><p><strong>Drivers resist when the new workflow creates doubt where the old one created confidence. That is not a driver failure. That is a signal that the technology wasn&#8217;t introduced in a way that earned the same trust the paper process had already built.</strong></p><p>The only way to close that gap is for the technology to be developed and implemented with every stakeholder involved. Not handed down. Not rolled out in a training session. Built around the actual workflow the driver lives in, tested in the field, and refined until the driver&#8217;s natural instinct is to reach for the app the way they used to reach for the ticket book.</p><blockquote><p><strong>Technology changes workflows. Trust drives adoption.</strong></p></blockquote><p>This is the part that almost never gets surfaced back to the people who bought the app. Nobody in the back office sees Danny&#8217;s paper ticket book. They see the app&#8217;s adoption dashboard, which shows him logging deliveries most days, just with gaps, just with timestamps that sometimes don&#8217;t match when the delivery actually happened, just with entries that were backfilled from memory at the end of a long shift using the paper numbers as reference.</p><p>The dashboard says adoption is around 70%. <strong>What it does not show is that 70% adoption with frequent backfilling is not the same thing as 70% of deliveries being captured accurately at the point of delivery, which was the entire reason the app got bought.</strong></p><h4><strong>Where this actually costs money</strong></h4><p>This is not just a story about a frustrated driver and a clunky app.</p><p>The cost is delayed invoicing. Disputed gallons because the meter reading entered into the app doesn&#8217;t match what&#8217;s on the paper ticket, and now someone in billing has to figure out which number is correct before the invoice can go out. Billing staff calling drivers to confirm a delivery that should have already been confirmed automatically. Dispatchers reconstructing what happened on a route because the app shows a gap and nobody remembers the details three days later.</p><blockquote><p>In fuel, bad field data does not stay in the field. It moves downstream into billing, margin, inventory, and customer trust.</p></blockquote><p>The natural fix to the driver-as-data-entry-clerk problem is a driver app. But that fix only works if drivers actually trust and use it the way it was designed. If the app gets used inconsistently, with paper as a silent backup, the original problem has not been solved. <strong>It has been relocated, and now there are two records to reconcile instead of one.</strong></p><h4><strong>Where driver apps actually fail</strong></h4><p>This is not a story about drivers resisting technology. Most drivers, including Danny, would genuinely prefer a tool that worked reliably over a paper ticket book that gets soggy in the rain and has to be physically transported back to the office.</p><p>The failure is almost always in the gap between how the app was designed and how a delivery actually happens in the field.</p><p><strong>Screens designed for office fingers, not diesel gloves.</strong> Most fuel distribution driver apps were not purpose-built for the conditions drivers actually work in. They were adapted from generic field service or delivery software, with input methods that assume a controlled environment.</p><p><strong>Connectivity assumptions that don&#8217;t match rural and industrial delivery routes.</strong> A meaningful share of fuel deliveries happen at sites with poor cellular coverage. Industrial yards, rural agricultural operations, wet hose jobs where the driver is moving asset to asset, not tank to tank. An app that requires a live connection to confirm a delivery is an app that will fail at exactly the locations where reliable data capture matters most.</p><p><strong>Forms that ask for ten fields while the driver is watching a meter, managing a hose, and trying not to block the customer&#8217;s yard.</strong> Every additional required field is an additional point where the driver either slows down significantly or starts entering placeholder data just to get past it.</p><p><strong>No clear signal of what happened to an entry.</strong> When a driver submits a delivery and the app does not clearly confirm it was received and synced, the driver has no way to know whether the data made it anywhere. That uncertainty is what brings the paper ticket back as a hedge.</p><h4><strong>What actually changes adoption</strong></h4><p>The fuel distributors who get real adoption, not dashboard adoption, but drivers genuinely trusting the app as the system of record, tend to have solved a narrower set of problems than the feature list on most driver app sales decks would suggest.</p><p><strong>The app works offline and syncs when signal returns, without losing data or creating ambiguity about whether an entry went through.</strong> This single fix addresses the root cause of most paper-ticket-as-backup behavior. If a driver can trust that an entry made with no signal will sync correctly later, the entire reason for keeping a parallel paper system disappears.</p><p><strong>The interface is built for the conditions, not adapted to them.</strong> Larger touch targets that work with gloves. High contrast displays readable in direct sunlight. Minimal required fields for a standard delivery.</p><p><strong>Confirmation is immediate and unambiguous.</strong> The driver sees, clearly, that the delivery was captured. Not a spinning icon. A confirmation that removes the doubt that drives backup behavior.</p><p><strong>The data the driver enters is the data billing uses, with no second transcription step.</strong> If drivers know their entry goes directly into billing and inventory with nobody re-keying it later, the app feels like it matters. If they sense someone in the back office will double check their entry against a paper record anyway, the incentive to be careful erodes.</p><blockquote><p>Adoption is not a training problem. It is a trust problem. Drivers will use a tool reliably the moment they trust it more than the alternative they already know works.</p></blockquote><h4><strong>The metric that actually matters</strong></h4><p>Most fuel distributors measure driver app success by login frequency or entries per day. Those numbers can look healthy while the underlying problem, accurate data capture at the point of delivery, remains unsolved.</p><p><strong>A better metric is delivery-to-sync time: the time between the actual delivery completion and when clean delivery data is available for billing, inventory, and customer documentation.</strong></p><p>If a stop was completed at 10:15am but entered at 4:40pm, that is not real-time capture. <strong>That is end-of-day reconstruction wearing a digital costume.</strong></p><p>Another honest metric is the rate of manual correction. How often does someone in billing or dispatch have to adjust, override, or cross-reference an app entry against some other source. A high correction rate, even alongside high login frequency, means the app&#8217;s data is not trusted internally either, which mirrors exactly what is happening with the driver in the field.</p><h4><strong>Four questions worth asking about your own driver app</strong></h4><p>A driver app that actually replaces paper has to answer four questions clearly.</p><ol><li><p>Can the driver complete the stop with no signal?</p></li><li><p>Can the driver see exactly what is saved, synced, and still pending?</p></li><li><p>Can billing invoice from that entry without re-keying anything?</p></li><li><p>Can exceptions be separated out without holding up the clean tickets behind them?</p></li></ol><p><strong>If the answer to any of these is no, the paper ticket is still doing the real work, no matter what the adoption dashboard says.</strong></p><p>Danny still keeps the paper ticket book in the truck door. He still puts gloves on and off a dozen times a day. He still loses signal in the same three spots on his route, every single day.</p><p>Nobody designed the app to fail him specifically. The people who built it had never stood at a tank with cold hands trying to read a phone screen in direct sun, managing a hose, watching a meter, all while a customer waited.</p><p>What Stephanie said is the right frame for all of it. Danny&#8217;s drivers do their work diligently. They always have. The paper process earned their trust over years. The app hasn&#8217;t earned it yet.</p><p><strong>That is not a driver problem. That is an implementation problem. And the only way to fix it is to build and roll out the technology the way trust is actually built, with the people who have to use it, around the workflow they actually live in, until reaching for the app feels as natural as reaching for the ticket book.</strong></p><blockquote><p>Technology changes workflows. Trust drives adoption.</p></blockquote><h4><strong>The question worth asking this week</strong></h4><p>Pull the adoption dashboard for your driver app. Then pull a sample of delivery timestamps and compare them to when the deliveries actually happened, if you have any way to verify that independently.</p><p>If there&#8217;s a meaningful gap, you don&#8217;t have an adoption problem. You have a trust problem, and the dashboard is hiding it.</p><p><strong>Ask one driver, off the record, whether they still carry a paper backup. The answer will tell you more than any usage report</strong></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m <strong><a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Giri,</a></strong> founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Load That Doesn't Show Up on the BOL]]></title><description><![CDATA[On the operators who showed up when they wanted to be somewhere else.]]></description><link>https://www.readthefuelstack.com/p/the-load-that-doesnt-show-up-on-the</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-load-that-doesnt-show-up-on-the</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Mon, 22 Jun 2026 05:41:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Hzun!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Father&#8217;s Day was yesterday.</p><p>I spent it on a plane.</p><p>And somewhere between wheels up and landing, I kept thinking about the fuel operators I&#8217;ve gotten to know. The ones running dispatch at 5am. The ones on the phone with a driver at 9pm because a delivery went sideways. The ones who haven&#8217;t taken a full weekend off since summer 2019.</p><p>This industry doesn&#8217;t pause for Father&#8217;s Day.</p><p>Rack prices don&#8217;t care. Customers with low tanks don&#8217;t care. The driver who called out sick definitely doesn&#8217;t care.</p><p>So the operator picks up the phone. Again.</p><p>Not because they don&#8217;t love their family. Because they built something that depends on them showing up. A business that employs people. That keeps hospitals warm. That keeps fleets moving. That keeps towns running through February.</p><p>That&#8217;s not workaholism. That&#8217;s responsibility at a scale most people don&#8217;t understand.</p><p>I&#8217;ve sat across from enough fuel marketers to know: the guilt is real. Missing the game. Missing the recital. Explaining to a kid why a parent has to go check on a terminal issue on a Sunday.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hzun!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hzun!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 424w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 848w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 1272w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hzun!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic" width="1180" height="1572" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1572,&quot;width&quot;:1180,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:178198,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/203044697?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hzun!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 424w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 848w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 1272w, https://substackcdn.com/image/fetch/$s_!Hzun!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08f14e52-6567-4ffb-b538-ba4604ec531e_1180x1572.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><span data-color="#e69138" style="color: rgb(230, 145, 56);">&#8220;Yesterday, while I was on a plane, my son earned his Taekwondo belt. I wasn&#8217;t there. But he knew I was proud. That&#8217;s the quiet bargain every working parent carries.&#8221;</span></em></p><p>But I&#8217;ve also seen what they&#8217;re building. The pride in knowing their routes cold. The satisfaction when the month closes clean. The quiet confidence of someone who has kept the lights on for their customers through every shortage, every price spike, every snowstorm.</p><blockquote><p><em><span data-color="rgb(15, 34, 67)" style="color: rgb(15, 34, 67);">To every fueler who showed up this weekend when they wanted to be somewhere else: your kids will know what you built. Not today, maybe. But they will.</span></em></p></blockquote><p>Happy belated Father&#8217;s Day. And to every parent in this industry, happy belated to you too.</p><p>Go home early this week. You&#8217;ve earned it.</p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh G</a>., founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The System Can Invoice Same Day. Your Process Won't Let It.]]></title><description><![CDATA[The capability has been there for years. The workflow hasn't caught up.]]></description><link>https://www.readthefuelstack.com/p/same-day-invoicing-isnt-a-technology</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/same-day-invoicing-isnt-a-technology</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Wed, 17 Jun 2026 14:06:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!SDwH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SDwH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SDwH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 424w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 848w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 1272w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SDwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png" width="724" height="478.27878787878785" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/49abe2ec-e1b5-4113-a069-15142caad724_990x654.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:654,&quot;width&quot;:990,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:845695,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/202398980?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SDwH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 424w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 848w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 1272w, https://substackcdn.com/image/fetch/$s_!SDwH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F49abe2ec-e1b5-4113-a069-15142caad724_990x654.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A truck delivers 4,200 gallons in the morning.</p><p>The driver has the ticket. Dispatch knows the load is done. The customer expects the invoice.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>But billing is still waiting.</p><p>Waiting for dispatch to close the load. Waiting for the ticket to come in. Waiting for pricing to be checked. Waiting for someone to confirm that the invoice will not create a problem downstream.</p><p>That is how same-day invoicing dies.</p><p>Not in the software.</p><h4><strong>In the handoff.</strong></h4><p>Every fuel distributor I have talked to wants to invoice faster. Most of them cite the same barriers. The driver&#8217;s ticket comes in late. Dispatch hasn&#8217;t closed the load yet. Pricing needs to be verified before billing can run. The system doesn&#8217;t always sync cleanly with accounting.</p><p>All of those things are real. None of them are the actual reason same-day invoicing doesn&#8217;t happen.</p><p>The actual reason is simpler and harder to fix than any of them.</p><p><strong>The process was never designed around same-day invoicing as a non-negotiable standard. It was designed around getting invoices out eventually, and eventually became the culture.</strong></p><p>Same-day invoicing does not mean every invoice goes out blindly. It means standard deliveries move without unnecessary human delay, and true exceptions are separated from the normal flow.</p><h4><strong>What &#8220;eventually&#8221; actually costs</strong></h4><p>I wrote about this in the first issue of The Fuel Stack.</p><p>A mid-market distributor running 250 deliveries a month with a 3-day billing lag has roughly $95,000 in delivered-but-unbilled revenue sitting in limbo at any given moment. Across the year, $11.4M in revenue passes through a delayed billing workflow.</p><p>The exact number will vary by gallons, customer mix, fuel price, and delivery size. But the point does not change.</p><p><strong>Delivered fuel that has not been invoiced is completed work still waiting to become collectible revenue.</strong></p><p>That number is not an argument for faster software. It is an argument for a different commitment.</p><p>It is not sitting there because the software is slow. It is sitting there because the process was designed to let it sit there. Dispatch closes loads when they get to it. Billing waits for dispatch. Pricing gets verified after the fact. Every one of those steps has slack built into it, because nobody ever made same-day invoicing the standard that the entire process was built around.</p><blockquote><p>When you build a process around &#8220;get it out as soon as we can,&#8221; same-day invoicing is a goal. When you build it around &#8220;the delivery is not complete until the invoice goes out,&#8221; same-day invoicing is an outcome.</p></blockquote><p>Those are two different processes. Not two different software products.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vX81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vX81!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vX81!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vX81!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vX81!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vX81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1338460,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/202398980?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vX81!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!vX81!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!vX81!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!vX81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5947e544-b9a8-4e7f-98cf-7abb38bbe796_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>The commitment question</strong></h4><p>The most useful question to ask about same-day invoicing is not &#8220;does our software support it?&#8221;</p><p>In many cases, the system is capable of producing the invoice faster than the organization is capable of trusting the workflow.</p><p>The useful question is: </p><p><strong>Has the organization actually committed to same-day invoicing as a non-negotiable standard, and has the process been rebuilt around that commitment?</strong></p><p>Those are two different things.</p><p>A lot of fuel distributors have expressed a preference for same-day invoicing. They would like it to happen. They have talked about it in operations meetings. Some have tried to push billing to move faster.</p><p>Very few have made it a standard in the way that changes how every upstream decision gets made.</p><blockquote><p><strong>A preference changes the goal. A commitment changes the process.</strong></p></blockquote><h4><strong>What a commitment to same-day invoicing actually requires</strong></h4><p>When same-day invoicing is a real standard, not an aspiration, it forces three upstream decisions that most fuel operations have never made cleanly.</p><h4><strong>Decision one: when does billing start?</strong></h4><p>In most operations, billing starts when dispatch closes the load. Dispatch closes the load when they get around to it, usually at the end of a busy dispatch window, or when someone reminds them, or when billing asks.</p><p>If billing starts when dispatch closes the load, <strong>same-day invoicing is hostage to dispatch&#8217;s schedule.</strong></p><p>The real question is not whether dispatch has closed the load. The real question is: what event in the operation creates billing readiness?</p><p>In a same-day invoicing operation, billing readiness is not a mood, a reminder, or an end-of-day task. It is triggered by an operational event.</p><h4><strong>Delivery confirmation.</strong></h4><p>The decision that changes this: billing starts when the driver confirms the delivery. Not when dispatch closes the load. The delivery confirmation is the trigger. Dispatch close-out is a separate administrative step that happens in parallel, not in sequence before billing can move.</p><p>That one decision eliminates the most common single-point delay in the billing workflow.</p><h4><strong>Decision two: when is pricing finalized?</strong></h4><p>In most operations, the answer is: before the invoice goes out. Which means someone in billing is verifying pricing, checking contract terms, confirming rates, after the delivery has already happened.</p><p>That feels safe. <strong>It is also a workflow design choice that makes same-day invoicing structurally difficult.</strong></p><p>In fuel, pricing is not a single number. It may include rack, margin, freight, surcharge, contract terms, product type, tax treatment, and customer-specific rules. If all of that is being reconstructed after delivery, billing is not invoicing. <strong>Billing is reverse-engineering the order.</strong></p><p>The decision that changes this: pricing is finalized at dispatch, not at billing. The rate that goes on the load ticket is the rate that appears on the invoice. Billing does not rebuild the commercial agreement from scratch. It inherits a price that was already validated before the truck rolled.</p><p>If the price is wrong, you want to know before the driver leaves the terminal. Not after the delivery. Not when the customer calls. <strong>Before the truck rolls.</strong></p><h4><strong>Decision three: what is an exception and what is a policy?</strong></h4><p>Every fuel operation has exceptions. Loads that get split mid-route. Customers who change delivery instructions after dispatch. BOL volumes that don&#8217;t match what was scheduled. Contract terms that are under review. Missing common carrier tickets. Freight discrepancies. Tax questions.</p><p>The question is whether those exceptions are genuinely rare, or whether they happen often enough that billing holds every invoice pending review just in case.</p><p>If billing reviews every invoice before it goes out because exceptions are frequent, the review step is not exception handling. <strong>It is the process.</strong> And a process that reviews every invoice before it goes out cannot invoice same day at volume.</p><p>The decision that changes this: trust the process for standard deliveries, and create a specific exception queue for the deliveries that genuinely need review.</p><p>A real exception queue should be specific: missing ticket, BOL mismatch, price conflict, gallons variance, tax issue, customer dispute, common carrier document missing, freight discrepancy.</p><p><strong>If the reason cannot be named, it should not be allowed to hold the invoice.</strong></p><p>Most invoices should clear without human review. The ones that don&#8217;t should be flagged automatically and handled as a small subset, not as the default.</p><blockquote><p>If your exceptions are common enough that reviewing every invoice feels necessary, the exceptions are not the problem. The process that creates them is.</p></blockquote><h4><strong>Same-day invoicing is a trust test</strong></h4><p>Same-day invoicing is ultimately a trust test.</p><p>Does billing trust the delivery data? Does billing trust the price? Does accounting trust the sync? Does the customer trust the invoice?</p><p>If the answer is no, the invoice waits.</p><p>The solution is not to tell people to move faster. <strong>The solution is to make the upstream workflow trustworthy enough that waiting is no longer necessary.</strong></p><p>That is why same-day invoicing is such a useful operating standard. It exposes every weak handoff before billing.</p><p>If tickets are late, it shows up. If pricing is unclear, it shows up. If contract terms live in someone&#8217;s head or in a spreadsheet nobody fully trusts, it shows up. If accounting sync issues create duplicate invoices, it shows up.</p><blockquote><p>Same-day invoicing does not create those problems. It reveals them.</p></blockquote><h3><strong>Why technology keeps getting blamed</strong></h3><p>When same-day invoicing doesn&#8217;t happen, the instinct is usually to look at the software.</p><p>The dispatch system doesn&#8217;t integrate well enough with billing. The driver app doesn&#8217;t push data in real time. The accounting sync creates duplicates. The pricing module can&#8217;t handle the contract complexity cleanly enough to be trusted without a manual check.</p><p>All of those things can be true. Better software helps. Integration reduces friction. A driver app that confirms deliveries in real time and pushes data directly to billing eliminates a whole category of delay. A pricing system that handles rack, margin, freight, surcharge, contract terms, tax rules, and customer-specific logic reduces the need for manual review.</p><p>But here is what software cannot do.</p><p><strong>Software cannot make same-day invoicing a standard if the organization has not committed to it as one.</strong></p><p>A better dispatch integration speeds up the handoff between dispatch and billing. But if dispatch&#8217;s culture is still to close loads at the end of the day when things settle down, a faster integration just moves slow data faster.</p><p>A driver app that confirms deliveries in real time eliminates the ticket-comes-in-late problem. But if billing is still waiting for someone to manually verify pricing before the invoice runs, real-time delivery confirmation doesn&#8217;t change when the invoice goes out.</p><p>The technology upgrades are real. The efficiency gains are real. But they are downstream of the commitment.</p><blockquote><p>The commitment has to come first. The technology serves the commitment. It cannot substitute for it.</p></blockquote><p><strong>The operators who have figured this out</strong></p><p>The fuel distributors invoicing same day consistently are not all running the same software.</p><p>Some are running QuickBooks. Some are running mid-market ERPs. Some are using purpose-built fuel distribution platforms. The software varies. <strong>What doesn&#8217;t vary is the operating model.</strong></p><p><strong>Most operations move through three stages.</strong></p><div class="callout-block" data-callout="true"><p><strong>Stage one:</strong> invoices go out when billing catches up.</p><p><strong>Stage two:</strong> invoices go out faster because people push harder.</p><p><strong>Stage three:</strong> invoices go out same day because the workflow was designed that way.</p></div><p>The mistake is thinking stage two is transformation. It is not. It is pressure. <strong>Stage three is the operating model.</strong></p><p>And critically, the operators who have figured this out measure it. Not anecdotally. Not by feel. They know their same-day invoice rate. They know their dispute rate. They know which customers, which drivers, which product types, and which delivery workflows create billing delays or errors.</p><blockquote><p>What gets measured gets managed. What gets managed gets done consistently.</p></blockquote><p><strong>The question that actually matters</strong></p><p>Before the next conversation about invoicing software, billing systems, or dispatch integrations, one question is worth asking internally.</p><p>Has the organization actually committed to same-day invoicing as a non-negotiable standard?</p><p>Not &#8220;do we want to invoice faster.&#8221; Not &#8220;can our software support it.&#8221; Has the commitment been made, and has the process been rebuilt around it?</p><p><strong>If the answer is no, the software conversation is premature.</strong></p><p>Better software on top of a process designed around &#8220;eventually&#8221; produces faster &#8220;eventually.&#8221; It does not produce same-day.</p><p>Same-day invoicing is not proof that the billing team worked harder. <strong>It is proof that dispatch, pricing, delivery, billing, and accounting were designed to work as one flow.</strong></p><p>The commitment has to come first. Once it does, the process questions become clear, the technology decisions become obvious, and same-day invoicing stops being a goal that keeps getting pushed back and starts being the way the operation actually runs.</p><blockquote><p>It is not a technology problem. It is a commitment problem. And commitment problems do not get solved in a software demo.</p></blockquote><p></p><p><em><strong>Next issue: The Garrett Daley conversation. American Petroleum&#8217;s owner on customer obsession, the fleet account he lost on the invoice, and what same-day invoicing looks like as a living operating standard.</strong></em></p><p></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m<strong> <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh G.</a></strong>, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Why Fuel Marketers Need Simpler Systems, Not More Software Noise]]></title><description><![CDATA[Every new tool promises control. But if pricing, dispatch, delivery, billing, and accounting still depend on manual handoffs, the operation is not getting simpler.]]></description><link>https://www.readthefuelstack.com/p/why-fuel-marketers-need-simpler-systems</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/why-fuel-marketers-need-simpler-systems</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Mon, 15 Jun 2026 14:22:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!lJJi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lJJi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lJJi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lJJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1194397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/201810811?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lJJi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!lJJi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd573c9c7-3405-4380-957a-648aa98ab86e_1774x887.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Walk into the back office of almost any mid-market fuel distributor and you will find the same thing.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Five, six, sometimes seven systems open at once. <strong>QuickBooks or an ERP for accounting</strong>. A separate dispatch tool, maybe a whiteboard. A <strong>pricing spreadsheet</strong> someone maintains by hand. A driver app that captures deliveries but doesn&#8217;t talk to billing. A CRM nobody updates consistently. A separate tool for AP matching. <strong>And</strong><em> <strong>the spreadsheet that ties it all together, because nothing else does.</strong></em></p><p>Each one of those systems was purchased to solve a specific problem. Each one, on its own, probably does what it was bought to do.</p><p><strong>The problem isn&#8217;t any individual system. The problem is that nobody owns the space between them.</strong></p><h2>What that looks like for one delivery</h2><p>A dispatcher sends a load using today&#8217;s rack price. The driver delivers <strong>4,200 gallons.</strong> Billing receives the ticket the next morning. Someone checks the pricing spreadsheet to confirm the rate that should have applied. Someone confirms the customer&#8217;s contract terms. Someone enters the invoice and hopes the accounting sync doesn&#8217;t create a duplicate.</p><p>That is not one workflow anymore. That is <strong>five systems asking a person to hold the process together.</strong></p><p>The dispatch tool dispatched correctly. The driver app captured the delivery correctly. The pricing spreadsheet had the right rate, if someone updated it. The accounting system will record the invoice correctly, once someone enters it. Every system did its job.</p><p><strong>Nobody owns the space between them. So a person has to.</strong></p><h2><strong>How the stack gets built</strong></h2><p>Nobody sets out to build a <strong>seven-system back office</strong>. It happens one decision at a time, each one reasonable on its own.</p><p>The accounting system was already there when the company reached a certain size. Then dispatch got too complex for a whiteboard, so a dispatch tool got added. Then the driver app got purchased because paper tickets were creating billing delays. Then a CRM got added because sales wanted better visibility into the customer pipeline. Then an AP tool got added because the spreadsheet-based 3-way match was taking too long.</p><p>Each addition solved the problem it was bought for. Each addition also added a boundary, a place where data has to move from one system to another, and where it usually doesn&#8217;t move cleanly.</p><blockquote><p>Every system boundary is a place where someone has to do the work the systems should be doing for each other.</p></blockquote><h2><strong>Feature-level versus workflow-level</strong></h2><p>There is a common piece of advice in software buying: choose the best tool for each function. Best dispatch tool. Best accounting system. Best CRM. Best driver app. Stitch them together with integrations.</p><p>In theory this gives you the best of everything. In practice, the best tool for each individual function can still produce the worst outcome for the workflow that runs across all of them.</p><p>The dispatch tool might be the best dispatch tool on the market. The accounting system might be the best accounting system for a business your size. The driver app might have the cleanest interface in the industry. Each one, evaluated on its own, earns a high score.</p><p><strong>But the delivery doesn&#8217;t happen inside any one of those systems. It happens across all of them, in sequence, with a person at every handoff making sure the baton gets passed correctly.</strong></p><blockquote><p><strong>Best in class at the function level can still be worst in class at the workflow level</strong>. And in fuel distribution, the workflow is where the money is made or lost.</p></blockquote><p>This is not an argument against specialized tools in general. A dedicated telematics platform for tracking truck location and driver behavior is genuinely best served by a specialized vendor. That is a <strong>complementary function</strong>, not part of the core operational chain. The distinction is between systems that handle the <strong>core chain, pricing through to cash</strong>, and systems that handle adjacent functions that can reasonably plug into that chain from the outside.</p><p>The core chain is where the <strong>feature-level versus workflow-level gap</strong> matters most. Because that is the chain where a broken handoff produces a late invoice, a pricing error, an <strong>inventory variance</strong>, or a <strong>duplicate payment</strong>. We have written about all of those in this newsletter. Every one of them traces back to a handoff between systems that didn&#8217;t talk to each other cleanly.</p><h2><strong>Why fuel is uniquely exposed to this</strong></h2><p>We have spent this entire newsletter establishing why fuel distribution workflows are harder than generic business workflows. Pricing that changes intraday based on rack postings. Volumes measured in gross and net gallons with temperature corrections. Inventory that exists in multiple states across terminals, trucks, and in-transit product. Dispatch that changes mid-route based on real-time customer needs.</p><p>Every one of those complexities becomes a boundary problem the moment two different systems are involved in the same workflow. The rack price needs to flow from a pricing system into a dispatch system into a billing system, and if those are three different systems, that price has to survive three handoffs without drift, delay, or manual re-entry.</p><p>A retail business with simple SKU-based pricing can tolerate a boundary between its POS system and its accounting system because the data crossing that boundary is simple and stable. <strong>A fuel distributor cannot tolerate the same boundary between dispatch and billing, because the data crossing that boundary, price, volume, timing, is exactly the data most likely to be wrong if it has to be re-entered or reconciled manually.</strong></p><h2><strong>What &#8220;more software&#8221; actually buys you</strong></h2><p>When a workflow breaks down across system boundaries, the instinct is usually to add another tool. A middleware product to connect the systems. An integration platform. A reporting tool that pulls data from everywhere into one dashboard so at least someone can see the whole picture.</p><p>Each of these additions is reasonable. Each of them also adds a new system to the stack, a new place where something can break, and a new subscription to the monthly software spend.</p><p><strong>The stack grows. The core problem, that the workflow crosses boundaries nobody designed for, does not get smaller. It gets more systems wrapped around it.</strong></p><p>Complexity has a cost that doesn&#8217;t show up on any single vendor&#8217;s invoice. It shows up in the time someone spends reconciling data between systems. In the errors that happen at the boundaries. In the new hire who needs to learn seven systems instead of two before they can do their job independently.</p><h2><strong>The questions worth asking instead</strong></h2><p>Most software evaluations start with a feature list. Does it do pricing. Does it do dispatch. Does it do billing. Does it integrate with QuickBooks.</p><p><em><strong>The more useful questions are about the boundaries, not the features.</strong></em></p><p><strong>When a load is dispatched, does the price get set automatically from the rack and contract terms that apply at that moment, or does someone need to check a spreadsheet?</strong></p><p><strong>When a driver confirms delivery, does that confirmation create the invoice, or does someone need to wait for the ticket to come back and re-enter the data?</strong></p><p><strong>When the invoice is created, does it sync to accounting cleanly, or does someone need to reconcile sync errors and duplicate entries?</strong></p><p><strong>When a supplier invoice arrives, is it automatically matched against the PO and BOL, or does someone need to find both documents and compare them manually?</strong></p><p>If the answer to any of these is &#8220;someone needs to,&#8221; that is a boundary. And every boundary is a place where the workflow depends on a person remembering to do something, doing it correctly, and doing it on time.</p><blockquote><p>The fewer of those boundaries exist in your core operational chain, the simpler your operation actually is, regardless of how many individual features any single piece of software has.</p></blockquote><h2><strong>The question worth asking this week</strong></h2><p>Map your core operational chain. Pricing, dispatch, delivery confirmation, billing, accounting, purchasing, BOL matching, AP.</p><p>For each handoff in that chain, ask whether it happens automatically inside one connected system, or whether it requires someone to manually move information from one place to another.</p><p><strong>Count the manual handoffs.</strong></p><p>The software count does not matter nearly as much as the handoff count. In fuel operations, that is where complexity actually lives.</p><p><em><strong>Next issue: Why fuel marketers need a single source of truth, not five versions of it.</strong></em></p><p></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m Dibyesh G., founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Inventory Variance Is Not Always a Loss. But It Is Always a Signal.]]></title><description><![CDATA[It is not the variance you catch that costs you. It is the one you stopped looking for.]]></description><link>https://www.readthefuelstack.com/p/inventory-variance-is-not-always</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/inventory-variance-is-not-always</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Thu, 11 Jun 2026 22:40:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6mrI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6mrI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6mrI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 424w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 848w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 1272w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6mrI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic" width="1456" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:207678,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/201667505?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6mrI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 424w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 848w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 1272w, https://substackcdn.com/image/fetch/$s_!6mrI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1734cbdb-105c-450a-9bd0-5458f4ec95c6_1818x1214.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Mark has been running fuel operations for eleven years.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>He manages a petroleum distribution company in the Southeast. Around $90M in annual volume. Twenty-two trucks. Four terminals. A dispatch team that runs tight and a billing team that rarely misses an invoice.</p><p>Mark is good at his job. His customers don&#8217;t leave. His drivers don&#8217;t quit. His DSO is the lowest it has been in three years.</p><p>And every single month, his inventory reconciliation comes in slightly off.</p><p>Not dramatically off. Not enough to trigger a formal investigation. Just off. A few hundred gallons here. A couple thousand dollars there. Within what the operation loosely calls acceptable tolerance.</p><p>For the first two years he dug into it. Chased variances back to specific loads. Called terminals. Questioned drivers. Ran the numbers three different ways.</p><p>He never found a clean answer.</p><p>So at some point, without making a formal decision about it, he stopped looking.</p><p>The variance became a line item. Then it became background noise. Then it stopped being something anyone on his team asked about.</p><p>Mark is a composite of several operators I have spoken with. But the pattern is real.</p><blockquote><p>That quiet decision is one of the most expensive ones a fuel distributor makes. Not because the individual variance is large. Because it compounds every single month while nobody is looking for it.</p></blockquote><h2>What acceptable variance actually means</h2><p>Regulatory and internal tolerance thresholds vary widely by state, storage type, product, and operating model. But in most fuel operations, variance that falls inside an accepted monthly tolerance does not trigger serious investigation.</p><p>That is the dangerous part.</p><p><strong>Acceptable often becomes ignored.</strong></p><p>A mid-market distributor moving 10 million gallons a year is operating on roughly $35M in product value at $3.50 per gallon. At 1% variance that is 100,000 gallons a year. At $3.50 per gallon that is $350,000 in product value moving through a variance line annually.</p><p>That does not automatically mean $350,000 was lost. Some variance is measurement-related. Some is timing. Some is temperature. Some is product in transit. Some is real operational loss.</p><p><strong>But if the operator cannot explain the variance, the business is carrying a blind spot worth hundreds of thousands of dollars.</strong></p><p>Mark&#8217;s operation moves around 8 million gallons annually. His variance has been running at roughly 0.4% for the past eighteen months. On 8 million gallons that is 32,000 gallons a year. At $3.50 per gallon that is $112,000 in product value moving through his books without a clean operational explanation.</p><p>He knew the percentage. He had never translated it into dollars.</p><p>Most mid-market distributors haven&#8217;t.</p><p>They know whether last month&#8217;s reconciliation was better or worse than the month before. They do not have a rolling twelve-month variance view by terminal, product, driver, truck, compartment, and customer.</p><blockquote><p>Without that visibility, the slow leak is invisible.</p></blockquote><h2>Where inventory variance actually comes from</h2><p>Inventory variance in fuel distribution is not random. It comes from consistent, repeatable, traceable places. You just need the system to show you where to look.</p><ol><li><p><strong>Meter calibration drift.</strong> </p><p>Truck meters are certified and recalibrated on a schedule. Between calibrations, meters can drift. A meter reading 0.2% high on every delivery creates a small mismatch on every load. The customer received 998 gallons. The system says 1,000. The invoice reflects 1,000. The money may have been collected but the inventory record is now wrong.</p><p></p><p>Mark had a truck running a meter 0.3% high for four months before recalibration surfaced the issue. By the time anyone connected the meter to the reconciliation variance, the accumulated discrepancy was 6,200 gallons. At $3.50 per gallon that was $21,700 in product value recorded incorrectly. The money wasn&#8217;t necessarily lost. But the inventory record was wrong for four months and nobody knew why.</p><p></p><p>Bad inventory records create bad decisions.</p></li></ol><ol start="3"><li><p><strong>Temperature correction inconsistencies.</strong> </p><p>Fuel volume changes with temperature. Terminal BOLs may show both gross and net gallons. Customer billing may use gross, net, or contract-specific rules depending on product, state, and operating practice. If those rules are not applied consistently across dispatch, BOL, delivery, invoice, and accounting, variance accumulates quietly.</p><p><br>This is especially true when one system holds the BOL, another creates the invoice, the driver app captures delivered gallons, and accounting only sees the final number.</p><p><br>The variance is not always in the fuel. Sometimes it is in the handoff.</p></li></ol><ol start="3"><li><p><strong>Compartment heel.</strong> </p><p>When a truck delivers a partial load, product remains in the compartment. That heel gets carried to the next delivery. If it is not tracked and reconciled against the next load, it creates a floating inventory discrepancy that moves around the fleet until someone finds it or writes it off. In operations running split loads across multiple product types, heel tracking is where a lot of variance lives.</p><p><br>The product is not gone. The system just does not know where it is.<br></p></li><li><p><strong>Load splitting that does not reconcile cleanly.</strong></p><p>A driver is dispatched with 8,500 gallons for three customers. One customer takes less than ordered. The driver splits the remaining product to a fourth customer added mid-route. The original dispatch record, terminal BOL, driver delivery confirmation, and invoice no longer tell the same story.</p><p><br>Somewhere in that handoff, gallons start to drift. Not because someone made a huge mistake. Because the system was not built to reconcile the operational reality of the route.</p></li><li><p><strong>Shrinkage and spillage.</strong> </p><p>Product is lost during loading, unloading, equipment maintenance, spills, and normal field operations. Some of it is unavoidable. All of it should be categorized. When shrinkage gets buried inside a catch-all variance entry, the underlying cause stays hidden and the loss repeats.</p></li></ol><blockquote><p>None of these are dramatic in isolation. Each one looks like measurement error, rounding, or normal operational noise. Together, across a fleet and a full year of deliveries, they become a real number.</p></blockquote><h2><br>Not all variance is a loss</h2><p>This is where the conversation gets more interesting than most variance articles let it.</p><p>Most people talk about inventory variance like it is always bad. It is not.</p><p><strong><mark data-color="#ff9900" style="background-color: rgb(255, 153, 0); color: rgb(0, 0, 0);">Variance can be negative. Variance can also be positive.</mark></strong></p><p>An owner of a large Texas-based fuel marketer shared his numbers when I asked about variance thresholds.</p><p>His operation runs a 1.4% tolerance in either direction. Last month they wrote on 50,000 gallons against 6.3 million gallons purchased. Not a loss. A gain. Roughly 0.8% positive variance.</p><p>In Texas, summer heat changes the equation. Fuel expands. Depending on how the operation buys, stores, delivers, meters, and bills fuel, expansion can create a positive inventory impact. In his case, after accounting for shrinkage and operating reality, the estimated annual impact was around <strong>$750,000.</strong></p><p>That number surprised him when he calculated it. He had never looked at variance that way before.</p><blockquote><p>The point is not that variance is always good or always bad. The point is that most fuel distributors don&#8217;t know which direction their variance runs or what it is worth in dollars.</p></blockquote><p>Climate matters. A distributor in Texas is playing a different variance game than one in Minnesota. Summer heat can create expansion gains. Cold climates can create contraction losses. The direction changes. The principle does not.</p><div class="callout-block" data-callout="true"><h3 style="text-align: center;"><strong>Variance is not the problem. Unexplained variance is the problem.</strong></h3><p></p></div><h2>The reconciliation that happens too late</h2><p>Most mid-market fuel distributors reconcile inventory monthly. Some do it weekly. Very few do it close to real time.</p><p>Monthly reconciliation means variance accumulates for 30 days before anyone looks at it. By the time the numbers are reviewed, the loads that created the variance have been delivered, invoiced, and closed. The driver who split the load mid-route doesn&#8217;t remember the exact details. The dispatch record may not reflect what actually happened in the field. The BOL has been scanned, uploaded, and filed. The invoice has already gone out.</p><p><strong>Monthly reconciliation doesn&#8217;t catch variance. It counts it after the fact.</strong></p><p>A distributor moving 800,000 gallons a month with a 0.4% variance rate is carrying 3,200 gallons a month in unexplained variance. At $3.50 per gallon that is $11,200 a month. Over a year that is $134,400. Caught in real time, some of that variance is explainable or recoverable. Caught thirty days later, most of it becomes a note in the monthly report.</p><p>Mark&#8217;s team runs reconciliation on the last business day of the month. It takes two people most of the day. The output is a number that goes into a variance line and a note that says inventory was within acceptable range.</p><blockquote><p>Nobody on his team had asked what acceptable range was actually worth in dollars. Until now, neither had Mark.</p></blockquote><h2>The variance nobody talks about: product in transit</h2><p>There is one category of inventory variance that rarely shows up cleanly in reconciliation reports.</p><h4><strong>Product in transit.</strong></h4><p>At any given moment, a fuel distributor has product sitting inside truck compartments between the terminal and the customer. That product has left terminal inventory. It has not yet been confirmed as delivered. It exists in a state that most systems do not track cleanly.</p><p>If a driver ends his shift with product still in the compartment, that product needs to carry forward to the next day&#8217;s inventory. In operations where end-of-shift inventory is manual, inconsistent, or skipped entirely, that product disappears from the books until the next delivery creates a record.</p><p>Mark runs twenty-two trucks. If each truck carries an average heel of 200 gallons at end of shift, that is 4,400 gallons floating in transit inventory on any given night.</p><p><strong>At $3.50 per gallon that is $15,400 in product value the system cannot account for.</strong></p><p>The product exists. The question is whether the system knows where it is.</p><h2>What clean fuel operators do differently</h2><p>The best operators have not eliminated variance. That is not the goal. They have made variance visible at the right level of detail. They know which variances to investigate, which ones to explain, and which ones to accept.</p><p>Three things separate them from the operations still writing off monthly variance as background noise.</p><ol><li><p><strong>They reconcile by transaction, not just by period.</strong> </p><p><br>Every load is reconciled at the point of delivery. Dispatched gallons. Loaded gallons. BOL gallons. Delivered gallons. Invoiced gallons. Truck inventory movement. The variance on that specific load is visible before the next load moves.</p><p><br>Patterns emerge quickly. A specific truck compartment running consistently high. A specific terminal where BOL and invoice volumes don&#8217;t match. A specific driver whose delivery confirmations consistently show variance above fleet average. A specific customer where ordered gallons and delivered gallons are constantly misaligned.</p><p><br>The key is not only seeing the monthly number. <strong>The key is knowing which transaction created it.</strong></p></li><li><p><strong>They track product state continuously.</strong> </p><p>Terminal inventory. Truck inventory. In-transit inventory. Delivered but not yet confirmed inventory. Each state is tracked separately and each movement is recorded when it happens. Monthly reconciliation becomes a validation step, not a discovery process.</p></li><li><p><strong>They separate measurement variance from operational variance.</strong> A 150-gallon variance on a 10,000-gallon load explained by temperature correction is different from a 150-gallon variance with no explanation. The first may be normal. The second needs investigation. Operations that lump both into the same write-off line never build the pattern recognition needed to manage inventory well.</p></li></ol><blockquote><p>The goal is not zero variance. The goal is knowing where every gallon went and having a defensible explanation for every variance above your threshold.</p></blockquote><h2><strong>The question worth asking this week</strong></h2><p>Pull your last twelve months of inventory reconciliation reports. Then calculate five numbers:</p><ul><li><p>Total monthly purchased gallons</p></li><li><p>Total delivered gallons</p></li><li><p>Net inventory variance by product</p></li><li><p>Variance by truck or compartment</p></li><li><p>Variance by terminal or supply source</p></li></ul><p>Then ask three questions:</p><p>How much of the variance was investigated? How much was traced to a specific source? How much was written off as a catch-all entry?</p><p>If the answer to the last question is &#8220;most of it,&#8221; you do not have a variance problem. <strong>You have a visibility problem.</strong></p><p>The gallons are not random. They went somewhere. And in some climates, they came back with friends.</p><p>Mark did the math after our conversation. His 0.4% variance rate on 8 million gallons at $3.50 per gallon represented $112,000 a year in unexplained product value.</p><p>He had never run that number before.</p><p>He is running it now.</p><h2><strong>Next issue: Why fuel marketers need simpler systems, not more software noise.</strong></h2><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m Dibyesh G., founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, inventory, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Email Inbox Running Your AP Department. And the AI Agent Watching It.]]></title><description><![CDATA[Most fuel distributor AP processes start in the same place. An email inbox nobody fully owns.]]></description><link>https://www.readthefuelstack.com/p/the-email-inbox-running-your-ap-department</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-email-inbox-running-your-ap-department</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Wed, 10 Jun 2026 16:32:44 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!fmEz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fmEz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fmEz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fmEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1994590,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/201466990?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fmEz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!fmEz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b4e50fa-cbe2-4301-957b-aa511db5a79f_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>There is an email inbox at almost every mid-market fuel distributor that does more operational work than any software the company has purchased.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>It receives supplier rack quotes every afternoon. BOLs from three terminals arrive as PDF attachments before noon. Carrier freight invoices come in from four different carriers in four different formats. Supplier invoices land two to five days after the lift, sometimes with credits attached, sometimes without, sometimes with line items that don&#8217;t match what was agreed on the phone.</p><p>Someone processes all of it. Every day. Manually.</p><p>They open the email. They read the document. They key the relevant numbers into QuickBooks or the ERP or the spreadsheet that sits alongside both. They cross-reference the BOL against the purchase record. They flag the ones that don&#8217;t match. They forward the ones that need someone else&#8217;s attention.</p><p>That person is your AP department. And that inbox is your procure-to-pay process.</p><p><strong>It works until it doesn&#8217;t. And when it doesn&#8217;t, the problem is already three days old.</strong></p><h2><strong>Why traditional automation never solved this</strong></h2><p>The obvious answer to an inbox full of documents is automation. Build a rule. Parse the PDF. Extract the fields. Push the data into the system.</p><p>Fuel distribution broke that answer before it got started.</p><p>Supplier rack quotes don&#8217;t arrive in a standard format. Every supplier has their own template. Some come as structured PDFs. Some come as Excel attachments. Some come as the body of an email that someone formatted differently six months ago and never changed back. Some come from DTN or OPIS feeds. Some still come from a terminal website someone checks manually every afternoon.</p><p>BOLs from different terminals have different field layouts, different column headers, different ways of presenting gross versus net gallons, different ways of handling temperature corrections and product codes.</p><p>Carrier freight invoices have their own logic entirely. Flat rates, mileage-based rates, fuel surcharges calculated on different base indexes, detention charges that require cross-referencing dispatch records to validate.</p><p><strong>Rule-based automation breaks the moment a document arrives outside the expected format. And in fuel distribution, outside the expected format is not an edge case. It is Tuesday.</strong></p><blockquote><p>The problem was never that automation was unavailable. The problem was that document variation in fuel operations made rule-based automation fragile at exactly the moments it mattered most.</p></blockquote><h2>The real issue: document variation plus operational context</h2><p>This is worth stating precisely because it explains why every previous attempt at AP automation in fuel distribution produced the same outcome. A system that worked on 80% of documents and required manual intervention on the other 20%. And the 20% that required manual intervention was always the 20% that mattered most.</p><p>The AP problem in fuel distribution is not just data entry. <strong>It is context: which load, which BOL, which supplier price, which freight rule, which variance, and who needs to review it.</strong></p><p>A BOL that arrives with a field labeled &#8220;Net Gals&#8221; instead of &#8220;Net Gallons&#8221; is not an error. It is a formatting variation from a specific terminal. A system that flags it as unreadable is creating work, not eliminating it. A system that understands it belongs to a fuel terminal BOL and maps it correctly is doing what the AP person was doing manually.</p><p>Traditional automation follows rules. <strong>Leo follows the workflow.</strong></p><p>That distinction is what makes the difference in an environment where every supplier, every terminal, and every carrier arrives with their own document format and their own operational logic.</p><h2>Introducing Leo</h2><p>At Fueleo, we spent the first six issues of The Fuel Stack writing about the problems in this industry without mentioning what we were building. The invoicing delays. The pricing errors. The AP processes running on spreadsheets one person maintains. The ERP implementations that didn&#8217;t deliver.</p><p>All of it pointed to the same root cause. <strong>The documents that run fuel distribution operations arrive in too many formats, from too many sources, with too much variation for any manual process to handle cleanly at scale.</strong></p><p><strong><mark data-color="#ff9900" style="background-color: rgb(255, 153, 0); color: rgb(0, 0, 0);">So we built Leo.</mark></strong></p><div class="callout-block" data-callout="true"><p><strong>Leo is Fueleo&#8217;s AI workflow assistant for the procure-to-pay process.</strong> He <strong>watches the inboxes and document streams where fuel distribution operational documents arrive and he prepares the work that used to require a person opening emails and keying numbers into systems.</strong></p></div><p>The name came from Sudarshan, our youngest engineer on the team. Sudarshan has the most energy, the least patience for manual processes, and an alarming ability to ship things before anyone has finished writing the requirements document. He named the agent Leo. We did not ask why. Some things you just accept.</p><p>Leo lives inside the procure-to-pay workflow. He reads the room, runs the calculations, cross-references the things that haven't been flagged yet, and quietly finds the problem before it becomes someone's bad Tuesday.</p><p>One thing to say clearly before the capabilities: <strong>Leo does not approve payments on her own. he prepares the work, links the evidence, checks the match, and routes the right exceptions to the right person.</strong> The human stays in control. What changes is what lands on the human&#8217;s desk.</p><p>Here is where Leo is already helping.</p><h2><strong>What Leo reads</strong></h2><p>Leo monitors the email inboxes and document feeds where fuel distribution operational documents arrive. Supplier rack quotes. Supplier invoices. BOLs from terminals and drivers. Carrier freight invoices.</p><p>He can monitor the inbox continuously so AP does not have to wait for a daily batch or month-end cleanup. When a document arrives, he processes it against the workflow it belongs to.</p><p>A BOL from Terminal A has different field names than a BOL from Terminal B. Leo maps both to the same data structure. A supplier invoice with a temperature-corrected net gallon figure gets normalized against the gross gallon BOL. A rack quote that arrives as a structured PDF gets processed the same way as one that arrives as an unstructured email body.</p><p>When a field arrives in an unexpected format, Leo flags the variation instead of silently failing. The output is clean, structured data. Not the document. <strong>The data inside the document, extracted consistently regardless of source format.</strong></p><h2>What Leo creates</h2><p>Based on the normalized data, Leo creates the operational records that used to be created manually.</p><p>When a supplier rack quote arrives, Leo ingests the pricing, normalizes it against the relevant terminals and products, and updates the pricing data that flows into dispatch and billing. No manual entry step. No lag between when the rack quote arrives and when the pricing reflects it.</p><p>When a fuel purchase or lift is confirmed, Leo creates or updates the purchase record. In some operations that is a formal PO. In others it is the load order or purchase transaction that functions as the PO equivalent for reconciliation purposes. Either way, <strong>the record is linked to the load, the terminal, the supplier, the product, the volume, and the pricing that applied at the time of the lift.</strong> It exists before the invoice arrives, not after.</p><p>When a BOL arrives, Leo links it to the corresponding purchase record and load. The delivery confirmation, the BOL, and the purchase record are connected at the time of delivery, not reconstructed later.</p><h2><strong>Before Leo. After Leo.</strong></h2><p>This is what the supplier invoice workflow looked like before:</p><p>Supplier invoice arrives by email. AP opens the email. Downloads the PDF. Finds the BOL in the shared drive. Finds the PO or load record in the ERP. Checks the volume. Checks the price against the rack posting. Investigates the variance. Keys the data into QuickBooks or the ERP. Routes for approval. Repeats for every invoice in the batch.</p><p><strong>This is what it looks like with Leo:</strong></p><p>Supplier invoice arrives. Leo reads it. Links it to the BOL and purchase record. Checks volume, price, rack basis, and open credits. Prepares a payment-ready record if everything matches within tolerance. Surfaces a specific exception with full context if it doesn&#8217;t. AP reviews what needs judgment. Everything else moves to the payment queue.</p><blockquote><p>No one had to manually open the email, read the PDF, and key the data. That work happened before the AP manager opened her laptop.</p></blockquote><p></p><h2><strong>What Leo matches</strong></h2><p>When a supplier invoice arrives, Leo runs the match automatically. He compares the invoice against the BOL and the purchase record. he checks volume. he checks pricing. He validates the rack basis against the posting that applied at the time of the lift. He checks for open credits tied to that supplier or that load.</p><p>If everything matches within defined tolerance, the invoice moves to the payment queue with the right approval controls and payment timing.</p><p>If something doesn&#8217;t match,  he surfaces a specific exception with full context. Not &#8220;invoice flagged.&#8221; He surfaces:</p><p><strong>Supplier invoice shows 8,000 gallons at $3.2140 per gallon for Load #TX-10482. The purchase record expected $3.1890 per gallon based on the rack posting at the time of lift. The $0.0250 per gallon variance creates a $200.00 overbill. No open credit or pricing adjustment is on file. Myra flags the invoice as an exception, links the invoice to the BOL and purchase record, and routes it to AP for review before payment.</strong></p><p><strong>The AP person reviews one exception with full context, makes a judgment call, and moves on.</strong></p><blockquote><p>The AP manager who used to spend three days at month-end reconstructing transactions from scattered documents now spends three hours reviewing the exceptions that actually require human judgment.</p></blockquote><h2>Carrier freight: the hard case</h2><p>Carrier freight is where most AP automation tools stop. The variation in carrier invoice formats, rate structures, fuel surcharge calculations, and detention charges makes it one of the hardest document types to process reliably.</p><p>Leo can process the freight invoice, validate the logic, and surface the discrepancy.</p><p>When a carrier freight invoice arrives, Leo identifies the carrier, the loads covered, the rate structure that applies, and the fuel surcharge basis. He validates the invoice against the dispatch record. He checks whether detention charges are supported by the delivery timestamps. He checks the fuel surcharge calculation against the index the carrier contract references.</p><p>If the invoice matches the dispatch record and the contract terms, it moves toward payment. If it doesn&#8217;t, <strong>Leo surfaces the specific discrepancy with the supporting data the AP person needs to resolve it with the carrier.</strong></p><h2><strong>What changes for the AP manager</strong></h2><p>Leo  does not replace the AP manager. He changes what the AP manager does.</p><p>The work that required opening emails, reading documents, keying numbers, cross-referencing records, and chasing down discrepancies is now done before the AP manager opens her laptop. What remains is the judgment work. The exceptions that require context a human has and a system doesn&#8217;t. The supplier relationship calls. The credit negotiations. The decisions about which variances to accept and which ones to pursue.</p><blockquote><p>That is a better use of an experienced AP person than reading PDFs and keying numbers into a system that was never designed to receive them that way.</p></blockquote><p>The inbox is still there. The documents still arrive the same way they always have. <strong>What changed is what happens to them next.</strong></p><h2><strong>Why we are telling you this now</strong></h2><p>We spent six issues writing about the problems in this industry without mentioning Fueleo once. The invoice that goes out three days late. The driver who is your most expensive data-entry clerk. The rack price that was wrong when the customer called. The ERP that almost worked. The AP process running on a spreadsheet one person built and nobody else understands.</p><p>We wrote about those problems because we needed to understand them before we built anything to address them.</p><p>Leo is one of those answers. Not a complete one. Not a finished one. <strong>But a real one, doing the work that used to require a person opening emails and maintaining the spreadsheet nobody else understands.</strong></p><p>We are building more. We will write about it here as it develops.</p><p>If any of this sounds like your operation, reply to this email. That conversation is how Leo got built in the first place.</p><p><em><strong>Next issue: Inventory variance. The slow leak most fuel ops managers stop looking for.</strong></em></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p><em>I&#8217;m Dibyesh G., founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</em></p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The ERP That Was Supposed to Fix Everything and Didn't]]></title><description><![CDATA[The most expensive software decision a fuel distributor makes is rarely the one that goes wrong. It's the one that almost works.]]></description><link>https://www.readthefuelstack.com/p/the-erp-that-was-supposed-to-fix</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-erp-that-was-supposed-to-fix</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Tue, 09 Jun 2026 12:01:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!wtw0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wtw0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wtw0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wtw0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2411509,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/201113620?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wtw0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!wtw0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ac63ce7-a8b4-4648-b78c-2de2c10fe3ed_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Lisa didn&#8217;t set out to spend nine months of her life in implementation meetings.</p><p>She runs operations for a petroleum distributor in the Midwest. Around $120M in annual fuel volume. Eighteen trucks. Customers across three states. She has been in fuel distribution for fourteen years and there is not much about the business she hasn&#8217;t seen.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Three years ago she made the biggest technology decision of her career.</p><p>She bought an ERP.</p><h2>The demo that started everything</h2><p>The vendor flew in on a Tuesday. Two people. A sales rep who knew the right vocabulary and a solutions engineer who ran the demo.</p><p>They had done their homework. They knew the pain before Lisa said it out loud. Invoices going out late because dispatch and billing ran on different systems. Inventory that never reconciled cleanly at month-end. AP matching that lived in a spreadsheet nobody fully understood except the person who built it.</p><p>The demo showed all of it working. Dispatch closing a load and billing triggering automatically. Inventory updating in real time as the driver confirmed delivery. AP matching running against the BOL without anyone touching a keyboard.</p><p>Lisa asked about rack-based pricing. The solutions engineer pulled up a configuration screen. It looked right.</p><p>She asked about gross to net gallon conversion. He said the system handled it.</p><p>She asked if they had other fuel distributor customers. The sales rep named three.</p><p>Six weeks later she signed the contract. Five months. $180,000. The budget covered licensing, implementation, data migration, and three months of consultant time. For a $120M distributor it was aggressive but not unusual.</p><p>She felt good about it.</p><h2>Month one: the first gap</h2><p>The implementation kicked off with an onsite visit. Two consultants, three days, a conference room full of whiteboards.</p><p>Day one went well. System architecture. Data migration planning. User roles and permissions. The consultants were organized and Lisa&#8217;s team was engaged.</p><p>Day two is when the first gap showed up.</p><p>The pricing configuration session. Lisa&#8217;s team walked through their pricing structures. Rack plus margin. Contract basis with monthly resets. Tiered volume pricing for their largest fleet accounts. Split billing for customers with multiple delivery sites.</p><p>The consultants got through rack plus margin cleanly. Then they hit contract basis.</p><p><strong>The system assumed pricing was set when the order was entered.</strong></p><p><strong>In Lisa&#8217;s operation, pricing wasn&#8217;t finalized until dispatch.</strong></p><p>A load scheduled at 8:00 AM might lift from a different terminal than originally planned. The rack posting might have changed since the order was entered. A contract customer might be priced off OPIS plus basis, while another customer on the same truck was priced rack plus margin.</p><p>The system wanted one price decision.</p><p>Fuel operations required several.</p><p>The consultant looked at his laptop for a long moment.</p><p><em>&#8220;We can handle that with a workaround.&#8221;</em></p><p>Lisa wrote it down. <strong>First workaround. Day two of the implementation.</strong></p><h2>The moment Lisa knew</h2><p>The moment Lisa realized the project was in trouble wasn&#8217;t when the timeline slipped.</p><p>It wasn&#8217;t when the budget started growing.</p><p>It was when her team began maintaining the old spreadsheets and the new ERP at the same time.</p><p>The pricing spreadsheet stayed open.<br>The inventory spreadsheet stayed open.<br>The AP reconciliation spreadsheet stayed open.</p><blockquote><p>Every ERP implementation has a moment like this.The moment the business quietly admits it does not trust the new system enough to let go of the old process.</p></blockquote><h2>Month two: the list grows</h2><p>By the end of the second month Lisa had a document on her laptop titled &#8220;Open Items.&#8221; It had twenty-three line items.</p><p>The BOL workflow required a manual step because the system assumed deliveries were confirmed by the back office, not by the driver at the point of delivery. Workaround.</p><p>The inventory reconciliation still ran nightly instead of in real time.</p><p>A transport truck could pull 8,500 gallons from one terminal before breakfast and another 7,000 gallons from a different terminal before lunch. The operation knew those gallons had moved. <strong>The system wouldn&#8217;t know until overnight processing completed.</strong> Workaround.</p><p>The AP matching module imported supplier invoices correctly but treated nearly every terminal invoice as an exception.</p><p>The supplier billed net gallons. The BOL captured gross gallons. Temperature correction created a variance on almost every load. The software saw a mismatch. The AP team saw normal fuel operations.</p><p>Every invoice had to be reviewed manually before payment could be approved. Workaround.</p><p>The implementation team was responsive. They showed up to every call. They documented everything Lisa raised. They found creative configurations for problems the system was never designed to solve.</p><p>But every workaround created friction somewhere else.</p><p>Fixing the BOL confirmation step broke the automatic billing trigger. Fixing the billing trigger required a manual approval step that slowed invoicing down. Fixing the invoicing speed required removing an audit control Lisa&#8217;s CFO wanted kept.</p><blockquote><p>The implementation team wasn&#8217;t cutting corners. They were building a house of cards, one workaround at a time, on a foundation that was never designed for fuel distribution.</p></blockquote><h2>Month four: the budget conversation</h2><p>The original five-month timeline had slipped to eight. <strong>The original $180,000 budget had grown to $240,000.</strong> A 33% overrun. Painful but, as Lisa would later find out, not unusual for an implementation of this complexity.</p><p>Lisa had to walk into her CFO&#8217;s office and explain why.</p><p>That was the hardest conversation of the implementation.</p><p>She had championed this decision. She had sold it to leadership with a business case that showed the system paying for itself in eighteen months through reduced billing errors, faster invoicing, and cleaner inventory reconciliation. Now she was asking for more time and more money with a system that still wasn&#8217;t live.</p><p>Her CFO approved it. But the question he asked at the end of the meeting stayed with her.</p><p><em>&#8220;Is this going to work, or are we throwing good money after bad?&#8221;</em></p><p>Lisa said it was going to work. She believed it when she said it.</p><blockquote><p>She was also aware, for the first time, that she might be wrong.</p></blockquote><h2>Month seven: go-live</h2><p>The system went live seven months after the implementation started. <strong>Three months late. Sixty thousand dollars over budget.</strong></p><p>The go-live weekend was rough. Three critical workflows broke within the first 24 hours. Lisa&#8217;s team worked through Saturday night. The implementation consultants were on a call from 11pm to 3am walking through fixes.</p><p>By Monday morning the system was stable enough to run the operation. </p><p>Not clean. Stable.</p><p>Lisa sent an all-staff email saying the implementation was complete and thanking her team for their patience. She meant every word. Her team had absorbed seven months of disruption on top of their regular jobs without complaint.</p><p>What she didn&#8217;t say in the email was that <strong>fourteen of the twenty-three open items were still open.</strong></p><p>The AP matching module still required manual clearing for every BOL with a gross to net variance. The inventory reconciliation still ran nightly instead of in real time. The spreadsheet her predecessor had built was still open on the AP manager&#8217;s second monitor because the system couldn&#8217;t handle three of their largest supplier invoices without manual intervention.</p><blockquote><p>The system was live. The operation looked almost exactly like it did before. Just with a new interface on top of it.</p></blockquote><h2>Eighteen months later</h2><p>I talked to Lisa eighteen months after go-live.</p><p>The system had settled into the operation. Her team used it for order entry, customer invoicing, and basic financial reporting. Those parts worked and genuinely saved time.</p><p>The dispatch-to-billing automation that was the centerpiece of the original business case still required a manual step. The inventory reconciliation still ran nightly. The AP matching still had a spreadsheet running alongside it.</p><p>She had stopped counting the open items. At some point during the first year she had closed the document on her laptop and accepted that this was what the implementation had delivered.</p><p><strong>I asked her what she would do differently.</strong></p><p>She thought about it for a moment.</p><p><em><strong>&#8220;I would have asked them to show me rack pricing working in a live environment with real data before I signed anything. Not a demo environment. Their actual system, configured for a distributor like us, running real loads.&#8221;</strong></em></p><p>She paused.</p><p><em><strong>&#8220;And I would have asked the implementation team what the system couldn&#8217;t do. Not the sales rep. The people who were actually going to build it.&#8221;</strong></em></p><blockquote><p><strong>Two questions. Asked before the contract was signed. </strong>That is the distance between the implementation she got and the one she needed.</p></blockquote><h2>Why this keeps happening</h2><p>Lisa&#8217;s story is not unusual. It is the pattern.</p><p>Software vendors sell to the optimistic version of what their system can do. Implementation teams inherit the gap between that optimism and reality. Operators absorb the cost of that gap in internal time, parallel workflows, and organizational exhaustion that never shows up on any report.</p><p><strong>According to Gartner, more than 70% of ERP implementations will fail to meet their original business case goals. As many as 25% will fail catastrophically.</strong></p><p>In fuel distribution that number feels low. Because the workflow complexity here is higher than almost any other industry the generic ERP was built for. And the cost of getting it wrong shows up directly. In your DSO. In your inventory variance. In your AP leakage. In the spreadsheet still running on your AP manager&#8217;s second monitor eighteen months after go-live.</p><h2>What due diligence actually looks like</h2><p>Before the next software evaluation, three things are worth doing that most operators skip.</p><p><strong>Talk to a current customer who runs the same operation.</strong> Not a reference the vendor provides. A customer you find independently, who runs a similar operation at a similar scale, and who will tell you honestly what the system handles natively and what they work around.</p><p><strong>Run a pilot on your actual workflow.</strong> Not a demo. Not a sandbox. Your loads, your pricing structures, your BOL workflow, your AP matching. If the vendor won&#8217;t support a real pilot before contract signature, that is the answer.</p><p><strong>Ask the implementation team, not the sales team, what the system cannot do.</strong> Implementation teams are closer to the reality of what gets configured versus what works out of the box. They will tell you things the sales rep won&#8217;t.</p><p>Lisa wishes she had done all three before she signed. She didn&#8217;t because the demo was convincing, the timeline felt urgent, and the sales rep said yes.</p><p><strong>Two years later the spreadsheet is still open on the AP manager&#8217;s monitor.</strong></p><h2>The question worth asking before the next contract</h2><p>Find the workflow most specific to your operation. For a fuel distributor running rack-based pricing, that is price-at-dispatch. For a common carrier, that is carrier settlements. For a wet hose operator, that is delivery reconciliation.</p><p>Ask the vendor to demo that workflow specifically. In a live environment. With data that looks like yours. Before you sign anything.</p><div class="pullquote"><p><em><strong>&#8220;We can handle that with a workaround&#8221;</strong></em> is not yes.</p></div><p><strong>It is the first line item on an Open Items document that is going to have twenty-three entries by month two.</strong></p><p><em><strong>Next issue: Inventory variance. The slow leak most fuel ops managers stop looking for.</strong></em></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Gir</a>i, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading The Fuel Stack ! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What 3-Way Match Looks Like at a $100M Fuel Distributor. Spoiler: It's a Spreadsheet.]]></title><description><![CDATA[The most important financial control in your AP process is probably running on a tab nobody has documented.]]></description><link>https://www.readthefuelstack.com/p/what-3-way-match-looks-like-at-a</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/what-3-way-match-looks-like-at-a</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Sun, 07 Jun 2026 09:13:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_lcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_lcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_lcs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_lcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1981500,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/200981155?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_lcs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!_lcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89e5b7d8-d78f-4482-a3f6-436a025f9511_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I talked to an AP manager at a mid-size petroleum distributor last year. She handles supplier invoices for a company doing around $80M in annual fuel purchase.</p><p>I asked her how she matches vendor invoices to BOLs and purchase orders.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>She pulled up her screen and showed me a spreadsheet. Seventeen columns. Color-coded by status. A notes column with entries like &#8220;credit pending,&#8221; &#8220;called terminal, waiting on revised invoice,&#8221; and <strong>&#8220;ask Mike.&#8221;</strong></p><p>She built it herself three years ago. Nobody else on the team fully understands how it works. She has not taken a full week off since.</p><blockquote><p>That spreadsheet was not a tracker. It was the 3-way match process at an $80M fuel distributor.</p></blockquote><h2>What the textbook says versus what actually happens</h2><p>Three-way match is straightforward in theory. Before paying a supplier invoice, AP confirms that the purchase order, the BOL, and the supplier invoice all agree. The supplier, terminal, product, BOL number, lift date, gallons, price, taxes, freight, and payment terms should all line up.</p><p><strong>In fuel distribution</strong>, <strong>those three records almost never arrive together, in the same system, at the same time.</strong></p><p>The PO, if it exists before the load moves, may live in QuickBooks, the ERP, or a purchasing worksheet. Many mid-market fuel purchases still start as a phone call, text, or email to a supplier. The PO is often created after the fact because the operational priority was getting product loaded before the customer called again, the weather changed, or the tank ran low.</p><p>The BOL may come back with the driver, get faxed from the terminal, arrive as a PDF, come through a terminal or DTN portal, or get uploaded from a mobile device. It often ends up in an email folder, shared drive, paper packet, or scanned batch that everyone can access and nobody truly owns.</p><p>The supplier invoice arrives by email, portal, mail, EDI, or PDF attachment two to five days after the lift. By then, AP has to reconstruct the transaction.</p><blockquote><p>That someone is usually one person. And she built the spreadsheet because nothing else connected those three things.</p></blockquote><p>Without integration across systems, matching becomes a manual scavenger hunt. In fuel distribution, that scavenger hunt happens dozens of times a week, across multiple suppliers, multiple terminals, and multiple product types, all with different payment terms moving toward due dates simultaneously.</p><h2>Why fuel makes this harder than most industries</h2><p>This is not a people problem. <strong>Fuel AP is structurally harder than generic AP</strong> because the transaction is not just vendor, item, quantity, and price. It includes terminal, lift date and time, product code, gross gallons, net gallons, rack basis, freight, fees, taxes, credits, and payment terms.</p><p><strong>Rack price moves daily, sometimes intraday.</strong> The price on a supplier invoice may reflect the rack posting at the time of lift. That may not match what the buyer expected from a morning call, a contract basis, or an internal pricing sheet. A $0.015 per gallon discrepancy on a 40,000 gallon load is $600. It is easy to miss on a manual review when you are looking at a number that is close but not identical and you are not sure which one is right.</p><p><strong>Volumes are measured in gross gallons and net gallons. </strong> The BOL may show both. The supplier invoice may show one. The difference is not automatically an error; it may be the result of temperature correction. But if AP does not know which basis the supplier used, a valid invoice can look wrong, or a wrong invoice can look valid.</p><p><strong>Payment terms create real pressure.</strong> A distributor buying tens of millions of dollars of fuel annually may be managing millions in supplier payables at any given time. If matching takes too long, the company risks late fees, strained supplier relationships, missed early-pay discounts, or avoidable cash planning issues.</p><blockquote><p>The spreadsheet is not a sign that the AP team is behind. It is a sign that nobody built a system that matches how fuel purchasing actually works.</p></blockquote><h2>What the data says about manual AP processes</h2><p>The AP leakage problem in fuel distribution is not unique to the industry. But the commodity nature of the business amplifies every failure point.</p><p>Manual processing for an invoice can cost $12 to $30 per item. A mid-market fuel distributor processing 3,000 supplier invoices a year could spend $36,000 to $90,000 annually on manual invoice handling before accounting for payment errors, missed credits, duplicate invoices, and delayed approvals</p><p>The larger issue is not that AP people miss obvious errors. <strong>It is that manual review is inconsistent</strong>. When an invoice is close to expected, when the BOL is hard to find, or when the credit is buried in a note column, the process depends too much on individual judgment and memory.</p><p>According to data from the American Productivity and Quality Center, an average of <strong>0.8% to 2% of companies&#8217; annual disbursements are duplicate or erroneous</strong>. A SAP Concur study reported that 1.29% of invoices businesses process are duplicates, each valued at an average of $2,034. </p><p>Put that in fuel distribution terms. Even a small error rate on $50M of annual supplier payments can become a six-figure exposure. Not every error is recoverable. Some credits age out. Some duplicates are found late. Some pricing variances are never identified because they were close enough to pass manual review.</p><p>More than 25% of AP teams&#8217; time is spent identifying and correcting payment errors, time that could otherwise be used for strategic work. At a lean mid-market distributor where the AP function might be one or two people, that is a significant portion of someone&#8217;s entire working week spent on error correction rather than financial oversight.</p><h2>Where the money quietly leaves</h2><p>The financial exposure from manual 3-way match in fuel distribution usually falls into a few repeatable categories.</p><p><strong>Pricing variances that slip through.</strong> A supplier invoices at a rack basis, contract basis, or terminal posting that does not match what the buyer expected. The difference is $0.02 per gallon on a 35,000-gallon load. That is $700. On a manual review, with fifteen other invoices waiting and payment terms approaching, it gets marked close enough and paid.</p><p><strong>Credits get promised but never closed. </strong>A short delivery, pricing correction, freight issue, or tax adjustment gets discussed by phone or email. The supplier agrees to apply a credit on the next invoice. AP writes &#8220;credit pending&#8221; in the spreadsheet. The next invoice arrives. The credit is missing. Someone means to follow up. Month-end hits. The issue gets buried.</p><p><strong>Duplicate payments.</strong> The same invoice enters through multiple paths. It arrives by email, then again through a vendor portal, then again in a scanned packet. If invoice number, supplier, amount, BOL, and lift date are not matched systematically, both versions can move forward.</p><blockquote><p>None of these are dramatic in isolation. Together, at volume, across a full year of fuel purchasing, they are a real number sitting inside your AP line that nobody is measuring.</p></blockquote><h2>The spreadsheet holding it together</h2><p>Every mid-market fuel distributor has some version of this spreadsheet.</p><p>Columns for supplier, terminal, invoice number, BOL number, lift date, product, gross gallons, net gallons, invoice gallons, expected price, invoice price, variance, credit status, payment terms, and notes column with entries like &#8220;within tolerance,&#8221; &#8220;credit pending,&#8221; or &#8220;<strong>ask Mike</strong>.&#8221;</p><p>It was built by someone who understood the exceptions. It works because that person knows what the colors mean, which variances matter, which supplier needs a phone call, and when &#8220;ask Mike&#8221; is the fastest path to the truth.</p><p>The person who maintains it goes on leave. A formula breaks. The transaction volume grows and a new tab gets started for the current month without fully closing out the previous one.</p><p><strong>At that point, your most important AP control is running on something one person understands and nobody has documented.</strong></p><blockquote><p> The spreadsheet does not just track invoices. It stores the company&#8217;s unwritten rules: which terminal is always off by a few gallons, which supplier tends to miss credits, which product code maps incorrectly, and which variance is safe to clear.</p></blockquote><p>That is exactly what the spreadsheet represents. Not a system. <strong>Tribal knowledge in column format.</strong></p><h2>What clean AP actually requires</h2><p>The fix is not a better spreadsheet. It is a transaction record that starts before or at the time product moves and follows the load through BOL, invoice, approval, credit, and payment.</p><p>It means capturing the BOL as close to the lift or delivery event as possible, not days later when paperwork is scanned. It means connecting the PO or purchase intent to the load, even if the formal PO is created later. It means receiving the supplier invoice in a structure that can be matched against the BOL and purchase record <strong>without AP re-keying every field.</strong></p><p>When those three documents are linked to the same transaction before AP touches it, <strong>matching becomes exception review instead of a document hunter..</strong> The system flags the 150-gallon variance. AP determines it is within terminal tolerance and clears it in two minutes.Everything that matches cleanly moves to the payment queue with the right controls, approval rules, and payment timing.</p><blockquote><p>The AP person who spent days at month-end reconstructing transactions from scattered documents now spends time on the discrepancies that actually require judgment.</p></blockquote><p>That is not a software pitch. It is what happens when the document workflow is designed before the matching step, instead of the spreadsheet being built to compensate for the fact that it wasn&#8217;t.</p><h2>The question worth asking this week</h2><p>Find the last vendor invoice your AP team flagged as a discrepancy. Trace it back.</p><p>Then ask:</p><ul><li><p>Where was the BOL when the invoice arrived?</p></li><li><p>Was the PO or purchase record already tied to the load?</p></li><li><p>Was the invoice matched against gross gallons or net gallons?</p></li><li><p>Was the rack price checked against the right terminal and lift date?</p></li><li><p>Was there an open credit tied to that supplier, BOL, or invoice?</p></li><li><p>How long did it take AP to resolve the exception?</p></li></ul><p>Then ask how many invoices went through last month without that level of scrutiny. <strong>And whether the ones that didn&#8217;t get flagged were actually correct, or just close enough.</strong></p><p>The spreadsheet is holding it together. Until the person holding the spreadsheet is unavailable.</p><p><em><strong>Next issue: The ERP that was supposed to fix everything and didn&#8217;t.</strong></em></p><div class="callout-block" data-callout="true"><p><strong>About the author</strong></p><p>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Gir</a>i, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</p></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Fuel Distributors Don't Have a Software Problem. They Have a Workflow Problem.]]></title><description><![CDATA[Why fuel software often fails after go-live, why the spreadsheets come back, and what clean operators do differently.]]></description><link>https://www.readthefuelstack.com/p/fuel-distributors-dont-have-a-software</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/fuel-distributors-dont-have-a-software</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Thu, 04 Jun 2026 19:30:47 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yNmB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yNmB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yNmB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yNmB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e83234c4-947c-49ed-8671-618a01ce5191_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1932928,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/200621724?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yNmB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!yNmB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe83234c4-947c-49ed-8671-618a01ce5191_1672x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>I&#8217;ve heard some version of this story more times than I can count.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A fuel distributor hits a wall. Invoices going out late. Dispatch running on a whiteboard and three group texts. Inventory that hasn&#8217;t reconciled cleanly in two quarters. Leadership decides to fix it. A software vendor gets selected. A contract gets signed.</p><p>Twelve months later, the system is live. It does some things better. But the billing clerk is still waiting for dispatch to close loads before she can run invoices. The dispatcher is still calling drivers to confirm deliveries. The spreadsheet that tracks AP exceptions is still open on someone&#8217;s second monitor.</p><blockquote><p>The software got implemented. The workflow didn&#8217;t change. And in fuel distribution, unchanged workflow almost always means the same bottlenecks return under a new login screen.</p></blockquote><p>That&#8217;s not bad luck. It&#8217;s a pattern.</p><h2>This is not just a fuel industry problem</h2><p>Before blaming the distributor or the software, it&#8217;s worth being honest about the broader context.</p><p><a href="https://www.gartner.com/en/information-technology/topics/enterprise-resource-planning">Gartner</a> predicts that <em><strong>by 2027, more than 70% of recently implemented ERP initiatives will fail</strong></em> to fully meet their original business case goals. <strong>As many as 25% of those will fail catastrophically.</strong> </p><p>That's not a fuel industry number. That's across all industries, all company sizes, all software vendors.</p><p>But it matters especially in fuel distribution because most operators are not implementing software with unlimited budget, unlimited internal staff, or a full-time transformation office. They are doing it while trucks still have to roll, drivers still need routes, customers still need fuel, and invoices still need to go out.</p><p>Those numbers should reframe how you think about your own history with software. If you tried a system and it didn&#8217;t deliver what was promised, you were not in the minority. <strong>You were in the majority.</strong></p><p>The question worth asking is not <strong>&#8220;why did the software fail?&#8221;</strong> </p><p>It&#8217;s this:</p><p><strong><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">&#8220;why does software keep failing at the same point?&#8221;</mark></strong></p><h2>What actually happens during a fuel software implementation</h2><p>Most implementations in fuel distribution follow the same arc.</p><p>A vendor gets selected based on a demo that shows the system doing everything cleanly. The implementation starts. And here is where the pattern sets in.</p><p>The natural inclination is to configure the new software to match existing workflows as closely as possible. This feels safe. It minimizes disruption. Everyone already knows how things work.</p><blockquote><p>So the software gets bent around old handoffs, old approvals, and old exception paths instead of forcing the company to agree on a cleaner operating sequence.</p></blockquote><p>The dispatcher has been closing loads the same way for nine years. The billing clerk knows which accounts need special handling and why. The ops manager has a spreadsheet tracking exceptions the system can&#8217;t handle. Rather than redesign those workflows, the implementation team builds workarounds to preserve them.</p><p>Six months after go-live, the system is live.</p><p><strong> The spreadsheets came back. </strong></p><p>Not because people resisted change. Because <strong>the system was configured around gaps it was never asked to close.</strong></p><p>Research on mid-market ERP implementations puts it plainly: failures rarely occur because the software cannot perform required functions. They occur because the organization did not align on how it wanted to operate, how decisions would be made, or how much internal effort the change would require.</p><p>That sentence is the whole article, really.</p><h2>Why fuel workflows are harder to automate than most</h2><p>This is worth saying clearly because the failure of software in fuel distribution is not entirely the software&#8217;s fault.</p><p>Fuel distribution workflows are operationally specific in ways that generic software doesn&#8217;t anticipate and industry software often underestimates.</p><p><strong>Pricing changes intraday.</strong> The rack for next day starts coming in late afternoon. Mid-day changes can take up to 24 hours to propagate. That means a delivery at 10am and a delivery at 3pm on the same day can legitimately carry different rack-based prices. Your billing system needs to know which rack applied to which delivery at which time. Most systems don&#8217;t handle that automatically. A human fills the gap.</p><p><strong>Inventory exists in multiple states simultaneously.</strong> Product in a terminal. Product in a truck compartment. Product dispatched but not yet delivered. Product delivered but not yet confirmed in the system. Each state needs to be tracked and reconciled against physical counts that happen on a different schedule. Manual processes in this environment compound errors at every handoff.</p><p><strong>Customer pricing is not simple.</strong> Contract rates, volume tiers, seasonal adjustments, promotional rates, split billing for fleet accounts, tax exemptions by delivery site. A mid-market distributor with 200 active accounts might be managing 40 distinct pricing configurations across that book. A generic ERP handles none of that out of the box.</p><p><strong>Dispatch is dynamic in ways that break linear workflow assumptions.</strong> Routes change mid-day. Loads get split. A driver scheduled for three stops ends up doing five because a customer called in a same-day order. As one Texas fuel distributor put it: <em><strong><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">&#8220;Manual worked for us when we did 20 deliveries a day. Now we do hundreds and need a real solution.&#8221;</mark></strong></em></p><blockquote><p>A generic system may support order entry and inventory balances, yet fail completely at the workflows where fuel operations actually live and die.</p></blockquote><p><strong>Take one simple delivery.</strong></p><p>A customer places an order in the morning. The price depends on the correct rack, the correct product, the correct customer agreement, and sometimes the correct delivery site. Dispatch assigns the order. The driver pulls from the terminal. A BOL is generated. The product moves into the truck, then to the customer site. The driver captures the delivery ticket. Billing waits for the load to be closed. AP later receives the supplier invoice. Someone eventually has to match the supplier cost, the BOL, the delivered gallons, and the customer invoice.</p><p><em><strong>If any one of those steps lives outside the system, the workflow is no longer automated. It is just partially digitized.</strong></em></p><p><strong><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">That is where spreadsheets come back.</mark></strong></p><h2>The implementation trauma is real and rational</h2><p>There&#8217;s a layer to this that doesn&#8217;t get discussed enough in vendor conversations.</p><p>Most mid-market fuel distributors have been through at least one software implementation that didn&#8217;t deliver what was promised. Some have been through two or three. <strong>That history creates a specific kind of skepticism that is completely rational given the evidence.</strong></p><p>The ops director who says &#8220;we tried that before and it didn&#8217;t work&#8221; isn&#8217;t being difficult. She&#8217;s pattern-matching on real experience. The last system required six months of implementation, two outside consultants, and a data migration that scrambled three years of customer pricing history. It went live and immediately created more exceptions than it handled. Her team spent the following year working around it.</p><p><strong>That skepticism is not irrational. It is earned.</strong></p><p>When the next vendor shows up promising to fix everything, her default position is disbelief. Not because she doesn&#8217;t want things to improve. Because she&#8217;s been promised better before and she&#8217;s still cleaning up the aftermath.</p><blockquote><p>The most expensive mistake isn&#8217;t technical. It&#8217;s treating a workflow transformation like a software purchase.</p></blockquote><p>That cuts both ways. The buyer who treats it like a software purchase gets the outcome they paid for. The vendor who sells it like a software purchase deserves the outcome they delivered.</p><h2>The workflow problem underneath the software problem</h2><p>Here is the thesis, stated plainly.</p><p><strong>Most fuel distribution software fails not because it&#8217;s bad software, but because it gets implemented on top of a broken workflow instead of replacing the broken workflow.</strong></p><p>The billing delay problem is not solved by giving the billing clerk a faster interface. It&#8217;s solved by eliminating the handoffs between delivery confirmation and invoice generation. The ticket becomes the delivery record. The delivery record becomes the invoice. That sequence has to be automated, not accelerated.</p><p>The inventory variance problem is not solved by a better reporting dashboard. It&#8217;s solved by capturing inventory state at every point of movement in real time, so the variance is visible before it becomes a month-end reconciliation problem.</p><p>The pricing error problem is not solved by a more flexible contract management module. It&#8217;s solved by making rack price flow automatically into billing at the correct timestamp, and making contract rates live in one authoritative place that billing pulls from directly. <strong>No manual update step. No spreadsheet maintained by one person.</strong></p><p>In each case, the fix is a workflow change that software enables. Not software layered on top of a workflow that doesn&#8217;t change.</p><blockquote><p>The single biggest factor separating successful implementations from disappointing ones is the willingness to change processes, not just the tools sitting on top of them.</p></blockquote><p></p><h2>What a workflow-first implementation actually looks like</h2><p>The distributors running clean operations didn&#8217;t just buy better software. They redesigned the sequence first.</p><p>They started with one question: <strong>what is the right workflow, and what does software need to do to make that workflow possible?</strong></p><p>Not: how do we configure this software to match what we&#8217;re already doing?</p><p>That reframe changes everything. It means the dispatcher has to change how she closes loads, because the new sequence requires it. It means the driver has to confirm deliveries at the truck, because billing can&#8217;t wait for end of shift. It means contract rates have to be fully migrated into the system before go-live, because the system is going to own that data from day one.</p><p>It&#8217;s harder. It takes longer. It requires the organization to actually change behavior, not just adopt a new interface.</p><p>But it&#8217;s the only implementation that sticks.</p><blockquote><p>Because it changes the workflow, not just the tool sitting on top of it.</p></blockquote><h2>The question worth asking before the next implementation</h2><p>If you&#8217;re evaluating software right now, one question cuts through most of the vendor noise:</p><p><em>Does this system change my workflow, or does it adapt to my existing one?</em></p><p>If the answer is "we'll configure it to match how you work today," listen carefully. That may sound comforting, but it often means the old workflow is being preserved with a new interface.</p><p>The right answer is harder to hear: </p><p><strong>&#8220;Here&#8217;s the workflow this system requires, here&#8217;s why it&#8217;s better than what you&#8217;re doing today, and here&#8217;s what your team will need to change to make it work.&#8221;</strong></p><p>That conversation is uncomfortable. </p><p>It&#8217;s also the only one that leads somewhere different from where you&#8217;ve already been.</p><p><em><strong>Next issue: What 3-way match looks like at a $100M fuel distributor. Spoiler: it&#8217;s a spreadsheet.</strong></em></p><p><strong>About the author</strong></p><p>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Gir</a>i, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Rack Price Was Wrong. You Didn't Find Out Until the Customer Called. ]]></title><description><![CDATA[Pricing errors in fuel distribution don't announce themselves. They wait.]]></description><link>https://www.readthefuelstack.com/p/the-rack-price-was-wrong-you-didnt</link><guid isPermaLink="false">https://www.readthefuelstack.com/p/the-rack-price-was-wrong-you-didnt</guid><dc:creator><![CDATA[Dibyesh Giri]]></dc:creator><pubDate>Sun, 31 May 2026 18:38:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!T2jK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T2jK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T2jK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 424w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 848w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 1272w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T2jK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png" width="1005" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:1005,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1042707,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://dibyesh.substack.com/i/199695789?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T2jK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 424w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 848w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 1272w, https://substackcdn.com/image/fetch/$s_!T2jK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faa1eca3f-e889-4807-beb8-2e96eeb77590_1005x664.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p><p><strong>Pricing disputes are not rare in fuel distribution.</strong> </p><p>Ask any Ops Director how often a customer calls about an invoice and the answer is usually some version of &#8220;more than it should be.&#8221; Ask how often the customer is right and the answer gets quieter.</p><p><strong>The problem isn&#8217;t that fuel distributors are careless about pricing. Most are meticulous</strong>. They have contract rates, tier structures, rack-based formulas, seasonal adjustments. The people managing pricing know what they&#8217;re doing.</p><blockquote><p>The problem is that p<strong>ricing in fuel distribution is a moving target</strong>.  And the systems most distributors use weren&#8217;t built to hit a moving target reliably.</p></blockquote><h2>How fuel pricing actually works at a mid-market distributor</h2><p>Most customers aren&#8217;t on a flat rate. <br><br>They&#8217;re on a formula. </p><blockquote><p>Rack plus a margin. <br>Cost plus a markup. <br>A tiered structure based on volume. <br>A contract rate that resets monthly.</p></blockquote><p>Rack price is not a simple once-a-morning update. Supplier postings, rack reports, and effective pricing windows do not always line up cleanly with how dispatch, delivery, and billing teams close the day.<strong> </strong></p><p><strong>Rack data may already exist in a feed, report, email, API, or pricing platform. The breakdown usually happens after that, when the rate has to move through customer-specific rules, delivery timing, contract terms, and billing.</strong></p><blockquote><p>If your system only refreshes once a day, your billing team may be working with a price that is current for one delivery, pending for another, and stale for the next.</p></blockquote><p>A driver makes a delivery at 2pm. Later that afternoon, a new rack posting comes in for the next pricing cycle. Your billing system has not refreshed yet, and nobody is completely sure whether the delivery should be priced against the prior rack, the new posting, or a customer-specific rule tied to the invoice date. The invoice goes out at the wrong price. Not because anyone made a mistake. Because the timing of how rack price moves in this industry doesn&#8217;t match the timing of how most billing systems consume it.</p><p>That&#8217;s the structural problem. It&#8217;s not a human error. It&#8217;s a workflow that was never designed around how rack actually works.</p><h2>The three places pricing breaks down</h2><p>Every pricing failure usually has a missing control field behind it: effective date, expiration date, pricing basis, tier threshold, contract ID, rack source, or override rule.</p><p><strong>Rack timing is one failure point. It's not the only one.</strong></p><p>The contract rate that wasn't updated. A customer negotiated a new rate in January. Someone updated the contract file. Nobody updated the billing system. For six weeks, invoices went out at the old rate. The customer paid without saying anything because the new rate was lower and they assumed it was right. You found out during a quarterly review. You issued credits. You never calculated the total cost of that six-week gap.</p><p><strong>The tier that tripped at the wrong volume</strong></p><p>A customer is on a tiered structure. Under 5,000 gallons a month they pay one rate. Over 5,000 they pay another. They crossed the threshold mid-month. The system didn't catch it. The invoice went out at the higher rate. The customer called on day 31, three days after payment was due, to say they weren't paying until it was corrected.</p><p><strong>The special price that expired.</strong></p><p>You ran a promotional rate for a customer during a slow season. The promotion ended. Someone forgot to revert the pricing. Three months later a new billing clerk notices the account is still on the promotional rate. You&#8217;ve undercharged by $4,200. You write it off because going back to the customer feels worse than absorbing the loss.</p><p>None of these are catastrophic in isolation. Together, across a book of 200 accounts with varying contract structures, they represent a quiet and continuous margin bleed that almost nobody is measuring.</p><h2>Why it's hard to catch</h2><p>Pricing errors in fuel distribution have a structural camouflage problem.</p><p><strong><mark data-color="#ffff00" style="background-color: rgb(255, 255, 0); color: rgb(0, 0, 0);">Customers who are overcharged call. Customers who are undercharged usually don&#8217;t.</mark> </strong>So your error detection system is asymmetric. <em><strong>You catch the errors that cost you customer relationships. You miss the errors that cost you margin.</strong></em></p><p>Your billing team is processing volume. They&#8217;re not auditing every invoice against every contract on every delivery. That&#8217;s not a criticism of your billing team. That&#8217;s just the reality of running billing at scale with manual processes. You can&#8217;t catch what you&#8217;re not set up to look for.</p><p>And the errors that do surface often get resolved individually without anyone asking why they happened or how many similar errors are sitting undetected in the rest of the book.</p><p>A customer calls about a pricing dispute. Your AR team investigates, finds the error, issues a credit, and closes the ticket. That resolution takes 45 minutes. Nobody looks at whether the same pricing logic produced errors on 12 other accounts that haven&#8217;t called yet.</p><h2>What the margin bleed actually looks like over a year</h2><p>This is harder to put a precise number on because it varies by contract complexity and volume. But here&#8217;s a conservative frame. This is not an industry benchmark. It is a simple model to size the problem.</p><p>A mid-market distributor with 200 active accounts, averaging 15 deliveries per account per month, is running 3,000 invoices a month. If pricing errors affect 2% of invoices, that&#8217;s 60 errors a month. At an average error value of $40 per invoice, that&#8217;s $2,400 a month in pricing variance. Some in your favor, some against you, and the ones against you are often harder to see until a customer calls.</p><p>$28,800 a year. Conservative. At a distributor running tighter margins on commodity product, that&#8217;s not noise. That&#8217;s a line item.</p><p>And that&#8217;s before you factor in the customer relationship cost of the disputes you did catch. The accounts that went slow on payment because of a billing dispute. The customer who switched suppliers after the third pricing error in two months. That math is harder to run, but the number is big</p><h2>What clean pricing actually requires</h2><p>The distributors who run tight on pricing have solved two things that most haven&#8217;t.</p><p><strong>First, rack price flows into billing automatically</strong>. There&#8217;s no manual update step. The formula runs against the correct rack based on the pricing rule, effective date, delivery timing, and customer agreement. When rack moves, pricing moves with it. The human is out of the loop on that specific step.</p><p><strong>Second, contract rates live in one place.</strong> Not in a spreadsheet that someone maintains separately from the billing system. Not in a filing cabinet with a note taped to the monitor. The contract rate is in the system, it has an effective date and an expiration date, and billing pulls from it directly. When a rate changes, it changes once, in one place, and every subsequent invoice reflects it.</p><p>Neither of these is technically complex. Both require discipline about where pricing data lives and how it flows into the billing process. Most distributors haven&#8217;t done it because the current process mostly works, most of the time, and the errors that slip through are handled one at a time as they surface.</p><p>The problem with that approach is that you&#8217;re only seeing the errors that announce themselves. The rest are sitting quietly in your margin.</p><h2>The question to ask this week</h2><p>Pull five invoices from last month at random. For each one, trace the pricing back to its source. </p><blockquote><p>Where did that rate come from?<br>Which rack or contract was used?<br>What date controlled the price?<br>When was it last updated? <br>Is it the rate that should have applied on that delivery date?</p></blockquote><p><strong>If you can&#8217;t answer that question cleanly for all five, you have a pricing integrity problem</strong>. And the cost of it is somewhere in your margin right now, waiting for a customer to call.</p><p><strong>Next issue: What 3-way match looks like at a $100M fuel distributor. Spoiler: it&#8217;s a spreadsheet.</strong></p><p><strong>About the author</strong></p><p>I&#8217;m <a href="https://www.linkedin.com/in/dibyesh/">Dibyesh Gir</a>i, founder of Fueleo. I spend my time working with fuel marketers on the messy handoffs between pricing, dispatch, delivery, BOLs, invoicing, and accounting. This newsletter is where I write about the operational problems hiding inside everyday fuel workflows.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.readthefuelstack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Dibyesh&#8217;s Substack! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>