Skip to main content Stan Consulting LLC · Marketing Atlas · Case File · Attribution · The CFO Who Asked Why the Numbers Did Not Match the Bank

Stan Consulting · Marketing Atlas · Case File · Attribution Mismatch

The CFO Who Asked Why the Numbers Did Not Match the Bank.

Updated May 2026 · Case-file route · written marketing audit

case_type: composite
cluster: attribution-mismatch
published: 2026-05-07

Marketing Audit bridge

Business implication.

Reference use: Numbers, tracking, or dashboards do not match what the business sees in revenue. The owner may fund the wrong move because the numbers path does not match the money path. Keep this as an authority reference, then use the route table to decide the next check.

Concept signalBusiness problemNext checksNext route
Symptom matchNumbers, tracking, or dashboards do not match what the business sees in revenue.Compare the concept to the visible business symptom before changing the channel, page, or budget.Open the problem
Proof needThe idea needs evidence before it becomes a work order.Review the closest proof file for the same failure pattern.Review proof
Execution laneThe failing layer appears specific enough to scope work.Use the service route only when the constraint is named.See service
Unknown layerThe account, site, offer, tracking, or follow-up path may still be the leak.Get the written marketing audit before another rebuild, retainer, or budget increase.Get marketing audit
01 Section 01 · The setup The setup.

A Shopify Plus DTC home goods brand. Four-point-one million annualized. Ninety-five thousand monthly paid spend. The marketing dashboard checks two-point-one million in trailing-ninety-day revenue. Shopify numbers one-point-nine-five. The bank shows one-point-seven-eight deposited. The CFO points at the three-hundred-twenty thousand spread and asks the marketing director which one of these is the company.

That is the composite. The names change. The shape does not.

The brand had been on Shopify Plus for four years. The product line was a mix of owned-inventory home goods and a small marketplace presence on Amazon and Faire. Paid traffic ran roughly fifty-fifty between Google Shopping and Meta. The marketing director had been in the role for six months and had inherited a tracking stack assembled by the prior head of growth.

The marketing dashboard was a Looker Studio document refreshed nightly from GA4 and the ad platforms. The Shopify summary was the order-export view inside the admin. The bank balance was the operating account at the brand's bank. Three surfaces, three numbers, one trailing ninety-day window.

The CFO was new. He had joined three months prior and was working through his first quarter-close. He assess the marketing dashboard, then the Shopify summary, then the bank statement. He asked the marketing director for an explanation of the spread. He had no theory; he had three numbers that did not agree and an open question.

The marketing director said she would reconcile the numbers. She had not realized until that moment that nobody on the team had decided which surface was the financial source of truth. The dashboard had been shipped to the board for a year. Nobody had tied it to the bank. The CFO's question was the first time the spread had been named.

The audit was scoped at this point. Seventy-two-hour written verdict. The brief was one sentence: tell us which of the three numbers is the company, and tell us what each leak between them is for.

Stage
Shopify Plus · DTC home goods plus marketplace
Annualized revenue
$4.1M
Monthly paid spend
$95K
Trailing-90-day spread
$2.1M dashboard / $1.95M Shopify / $1.78M bank
Spread · total
$320K across three checks
Leak conventions identified
7 active
Source-of-truth decision
Never made
Engagement
Conversion Audit · written verdict
02 Section 02 · The visible problem The visible problem.

Three checks, one company, three-hundred-twenty thousand of spread. The numbers are below in the order the CFO assess them. The marketing director had no language for the gap because the gap had never been decomposed.

Marketing dashboard

$2.10M

Trailing-90-day revenue per Looker Studio (GA4 plus ad-platform feeds)

Shopify summary

$1.95M

Trailing-90-day gross sales per Shopify admin orders export

Operating bank account

$1.78M

Trailing-90-day deposits net of refunds, chargebacks, and platform fees

None of the three numbers is wrong. Each is internally consistent against a different definition. The marketing dashboard checks gross attributed revenue including marketplace orders pulled in from Faire and Amazon feeds and including in-progress checkouts that had not yet completed when the summary ran. Shopify checks gross sales of completed orders inside the Shopify-native channel only. The bank checks deposited cash net of all the deductions the prior two surfaces did not see.

The marketing director's instinct was to defend the dashboard because the dashboard was what the team had built. The CFO's instinct was to anchor on the bank because the bank was what funded payroll. Neither was wrong. Both were applying a different definition of "the company" without a written rule that picked between them.

03 Section 03 · The wrong explanation The wrong explanation.

Four explanations were on the table when the audit started. Each one was almost-right and pointed away from the layer that mattered.

Wrong reason 01

"GA4 over-numbers; rebuild the dashboard against Shopify only." The technical-sounding assess. The argument is that GA4 inflates revenue because of session-duplication, bot traffic, and the Faire-and-Amazon feed pulling marketplace orders the Shopify admin does not show. Some of that is true. The dashboard does over-assess. But Shopify under-checks against the bank by another one-hundred-seventy thousand, and that gap has nothing to do with GA4. Rebuilding the dashboard against Shopify only would fix the smaller of the two gaps and leave the larger one untouched.

Wrong reason 02

"The bank is the truth; the rest is noise." The CFO-sympathetic assess. The argument is that deposited cash is what funds the business and the tracking data are a proxy. There is a strong case for the bank as the financial source of truth. There is a weak case for treating the other two checks as noise, because the other two checks are how the team actually steers the channels. Promoting the bank to source of truth without a documented reconciliation framework leaves the marketing team with no assess at all on the days when the bank is two weeks out of date.

Wrong reason 03

"This is a Shopify Payments lag; it will resolve next month." The temporal-sounding assess. The argument is that Shopify Payments deposits run on a two-business-day lag, so the trailing-ninety-day deposit number is always lower than the trailing-ninety-day gross sales by roughly two days of revenue. True. The two-day lag accounts for roughly fifty thousand of the spread. It does not account for the other two-hundred-seventy thousand. Pointing at the lag was a way to defer the larger conversation.

Wrong reason 04

"Marketing is responsible for revenue, finance is responsible for cash; the two will never tie." The political assess. The argument is that tracking data against revenue and finance numbers against cash and the two checks are fundamentally different and should remain so. Half-true. The checks are different. The fact that they are different does not absolve the operator of writing down which is the business assess. Without the document, every internal conversation about budget and performance defaults to whichever assess favors the speaker. The political assess is the same failure mode as having no assess at all.

All four explanations let the team avoid writing the rule. The structural defect was the missing rule. None of the explanations went there.

04 Section 04 · The structural cause The structural cause.

No source-of-truth decision, plus seven leak conventions running between the three surfaces unmediated. Each leak was small. Together they produced a three-hundred-twenty thousand spread that nobody on the operating side could explain on demand.

The audit decomposed the spread into seven named conventions. Each is a place where revenue can leak between surfaces. Each is internally honest. None of them was wrong on its own. The absence of the rule that names which surface is the company is what made the seven into a problem instead of a footnote.

01

Gross versus net of refunds

The marketing dashboard assess gross sales at the moment of order. Shopify's "gross sales" line on the summary includes refunds-issued as a separate column the dashboard had not pulled. The bank checks net of refunds because the refund hit the bank when issued. Refunds in the trailing-ninety-day window were roughly forty-eight thousand. The dashboard saw none of it; Shopify saw it but in a column the dashboard ignored; the bank reflected the full impact.

Impact · ~$48K dashboard vs bank

02

Attributed versus unattributed orders

The dashboard claimed attributed revenue: orders the GA4 model could route to a source. Roughly seven percent of orders in the window had no attributable source because the user had cleared cookies, arrived through a non-tagged email link, or come through a marketplace surface where the UTM was lost. The dashboard claimed the attributed share as if it were the total. Shopify claimed all orders regardless of attribution. The mismatch was structural and had been live for the full year.

Impact · ~$70K dashboard vs Shopify

03

In-period versus cash-basis recognition

Marketing assess revenue at the moment of order placement. The bank assess revenue when the deposit cleared. Shopify Payments runs a two-business-day lag plus an additional one-day on weekend orders. The trailing-ninety-day window had roughly fifty thousand of orders that had been counted by Shopify and the dashboard but had not yet hit the bank. The same number existed at the front of every quarter; nobody had named it.

Impact · ~$50K Shopify vs bank

04

Refund and chargeback handling

The Shopify gross-sales summary does not net out chargebacks because Shopify treats chargebacks as a separate line. Chargebacks in the window were roughly twelve thousand. The bank reflects the full chargeback hit including the per-instance fee. The dashboard saw zero chargebacks because the GA4 feed has no concept of a chargeback. Three surfaces, three different treatments of the same dispute.

Impact · ~$15K Shopify vs bank

05

Marketplace deductions

Faire and Amazon orders were pulled into the dashboard via a third-party connector that claimed gross marketplace revenue at order placement. Faire takes a fifteen-to-twenty-five percent commission and Amazon takes referral fees plus FBA fees plus storage. The dashboard saw gross. Shopify did not see marketplace orders at all because they did not flow through the Shopify channel. The bank saw deposits net of all marketplace fees, settled on a separate cadence per platform.

Impact · ~$95K dashboard vs bank

06

Currency settlement and FX

Approximately eight percent of orders in the window were billed in non-USD currencies and settled to USD on the deposit cadence. The dashboard claimed the order in the listed USD price at order time. The bank claimed the deposited USD after currency conversion and Shopify Payments' currency-conversion fee. The fee plus the FX drift was small per order and meaningful in aggregate.

Impact · ~$22K Shopify vs bank

07

Channel-specific processing fees

Shopify Payments takes a per-transaction processing fee of roughly two-point-nine percent plus thirty cents. PayPal, where used, takes a different fee structure. Klarna, where used, takes a flat-rate fee that the bank reflects but neither Shopify gross-sales nor the dashboard accounts for. Total processing fees in the window were roughly twenty thousand. Dashboard sees zero, Shopify gross-sales sees zero, bank sees the full deduction.

Impact · ~$20K Shopify vs bank

Seven conventions, one missing rule. Each leak was honest. Each was visible to one surface and invisible to another. The decision the operator had been avoiding was which surface to name as the company, and how to reconcile the rest as variances.

05 Section 05 · The decomposition The decomposition.

The decomposition checks in three layers, the same shape as the platform-level case file in the same cluster. Tracking integrity, conventions, judgment. The checks disagreed because the third layer was empty. The other two were doing what they were configured to do.

Tracking integrity. The data-capture layer was largely intact. GA4 was firing purchase events. The Shopify orders export was complete. The bank statement was authoritative on the cash side. The three surfaces had access to roughly the data they needed. Two specific defects were named: the dashboard was not pulling Shopify's refund column, and the marketplace connector was tracking gross instead of net. Neither defect alone produced the spread.

Conventions. Seven counting conventions were live between the three surfaces, listed in the previous section. Each was internally defensible. Each was incompatible with the conventions on the other surfaces. Without a written rule, the conventions could only produce disagreement.

Judgment. The operator layer was empty. There was no document on the account that named which surface is the financial source of truth, which leaks are reconciled and how, what variance threshold triggers an investigation, and what cadence the reconciliation runs on. The CFO's question was the first time the absence had surfaced.

The shape repeats across the cluster. The technical layer is roughly intact in most operating brands. The conventional layer is full of incompatible definitions. The judgment layer is empty. The disagreement is not a tracking problem; the tracking is fine. The disagreement is a missing rule.

06 Section 06 · The fix or better move The fix, in install order.

The audit's written verdict named the install order. Order matters. Picking a source of truth before mapping the seven conventions is the difference between an arbitrary policy and a decision that holds up at the next quarter-close.

The reconciliation framework below is what was installed.

  1. Day one · Declare Shopify-net the source of truth for revenue

    The decision is written and signed. Shopify gross sales minus refunds minus discounts is the financial source of truth for revenue recognition inside the marketing tracking. Marketplace revenue (Faire, Amazon) is claimed as a separate line item, net of platform fees, sourced from the platform statements. The bank is the source of truth for cash. Each surface has a defined role; the dashboard numbers each surface honestly rather than blending them.

  2. Week one · Rebuild the dashboard against the source-of-truth definition

    Looker Studio rebuild: trailing-ninety-day revenue line is now Shopify-net plus marketplace-net, with the two lines visible separately. The GA4 attributed-revenue line is moved into a "Channel Attribution" subsection labeled as a directional assess for budget steering, not a revenue assess. The dashboard now reconciles to Shopify-net within two percent on any given day; it reconciles to bank with a documented set of variances against the seven conventions.

  3. Week two · Install the variance schedule

    One artifact, one page: the seven leak conventions named, the variance each contributes between Shopify-net and the bank in a typical month, and the threshold past which the variance is investigated. Refunds run roughly two-point-three percent in this category; chargebacks roughly point-six percent; processing fees roughly two-point-five percent. The variance schedule is the document the CFO and the marketing director viewed together at the monthly close.

  4. Week three · Rewire the marketplace feeds

    The third-party connector pulling Faire and Amazon revenue is rewired to pull net-of-fees revenue using each platform's settlement statements rather than gross-of-fees from the order export. Marketplace revenue now checks against the bank within the same two-percent tolerance Shopify-native does. The dashboard line that previously over-claimed by ninety-five thousand is now within five thousand of the bank-reflected truth.

  5. Week four · Build the close-process runbook

    Monthly-close runbook documented end to end: pull Shopify-net, pull marketplace-net, pull bank-deposited, run the variance schedule, investigate any deviation past threshold, sign off. The runbook is owned by the marketing director on the operating side and the CFO on the finance side. Either party can run the close in roughly two hours. The CFO's quarterly question now has an answer in writing before the question is asked.

  6. Month two onward · The board assess

    The board pack now leads with the Shopify-net plus marketplace-net revenue line, with the bank-deposited line listed alongside and the seven-convention variance schedule attached as an appendix. The CFO has the answer to the question he asked at the operating review. The decision is reproducible, owned, and defensible. The next channel-level decision the marketing director makes is sized against the Shopify-net assess, not the over-scanning dashboard assess it replaced.

07 Section 07 · The lesson The lesson.

The CFO's question was the first time the spread had been forced into the open. The question itself was simple. Why do the numbers not match. The answer was complicated only because the operator had been running for a year without a written rule about which surface was the company. The seven conventions had been live the entire time. Nobody had been hiding anything. The tracking had been running honestly against incompatible definitions, and the incompatibility had compounded into a three-hundred-twenty thousand spread that the marketing director could not explain on demand.

The lesson is that revenue checks are conventional, not natural. There is no platonic "revenue" sitting somewhere waiting to be measured. Every surface measures a defensible quantity against a defensible definition. The operator who has not picked which definition is the company is operating on three or more checks that will not agree, and the disagreement is not the surfaces' fault. It is the operator's, for not having written down the rule.

The second lesson is the speed at which the spread compounds. None of the seven conventions on this account looked, on its own, like a structural defect. Each one was a small-percentage leak hidden in plain sight. The dashboard over-scanning by a few percent. The two-day Shopify Payments lag. The marketplace connector pulling gross instead of net. None of them seemed worth the audit on a Tuesday afternoon. Compounded, they produced the question the CFO asked at the next quarter-close. The cost of the absent rule is the slow accumulation of small defensible inaccuracies into a number large enough to make the operating team look careless.

Five Cents · Stan's note

Five Cents

What strikes me about this case file every time I assess it back is how recently the marketing director and the CFO had been on the same side of the table. Three months earlier, when the CFO joined, they were aligned on the strategy and scanning the same dashboard. Three months later they were on opposite sides of a quarter-close with a three-hundred-twenty thousand spread between them. Nothing in their working relationship had broken. The numbers had broken, slowly, while neither of them was looking. The defect had been live the whole time and was only visible the first time someone with a finance instinct opened the bank and the dashboard side by side.

The thing I want operators to take from this is that the reconciliation document is a piece of finance hygiene that lives on the marketing side of the wall. The CFO does not write it. The marketing director writes it, ships it to the CFO, and the two parties sign off on the conventions and the variances. The document protects the marketing director from the version of the question the CFO asks two quarters later, when the dashboard has drifted again and the bank has drifted again and the new spread is bigger and the explanation is harder. Writing it once costs an afternoon. Not writing it costs the marketing director the kind of credibility you cannot rebuild on a single quarter.

What this case file is for: if your marketing dashboard, your Shopify summary, and your bank statement have never been reconciled in writing, you have this case file. The Conversion Audit runs the seven-convention marketing audit in seventy-two hours and produces the variance schedule the team can sign off against.

Stan Tscherenkow · Marketing Atlas · 2026-05-07
09 Section 09 · Related Atlas entries Related Atlas entries.

Each link below points at a related Atlas page that handles a piece of the case file in more depth. Reference pages give the definition. Position pages give the firm's defended doctrine. The hub gives the map.

If this is the pattern in your account

Reconcile the surfaces. Then close the quarter.

If the case file maps to your account · multiple surfaces, contradictory revenue checks, the CFO question still open · the engagement that runs this marketing audit is the Conversion Audit. A written verdict against the seven-convention reconciliation framework, delivered in seventy-two hours. If the verdict says install, the Sprint engagement runs the close-process build. If the verdict says hold, you keep the assessment.

Marketing path

Turn the idea into a service path.

Marketing issue Buyer friction Next move

Marketing issue. The useful question is where this topic touches spend, visibility, conversion, trust, or buyer action.

Buyer friction. Most weak marketing paths fail because the buyer lacks proof, context, urgency, or a clear next step.

Next move. Match the issue to the service lane before adding traffic, tools, or another campaign.

When to use SC. Use SC when the marketing system has traffic, calls, carts, or leads, but the buyer path still leaks.

Signal What it usually means Next path
Channel issue Ads, SEO, AI visibility, email, or local search may need a tighter service path. Match service
Page issue The page may need clearer proof, offer context, and a stronger action path. Fix pages
Budget issue The next step should be context before more spend. Send context