How to track gross margin by channel and sku as CPG Founders

Finance & FP&AFor CPG Founders3 apps12 steps~24 min to set up

You know your overall gross margin from QuickBooks or your 3PL's reporting, but you have no clean view of which channels and SKUs are actually making money. Your DTC Shopify orders look profitable until you factor in FBA fees, co-packer batch costs, and freight-per-unit. Your wholesale channel looks fine until you back out distributor deductions and spoilage allowances. Right now you're reconciling this across a Shopify export, an Amazon Seller Central report, your co-packer invoices in QuickBooks, and a Google Sheet someone built six months ago. It takes 4-6 hours at month-end and the numbers are stale by the time you have them.

Finance & FP&AFor CPG Founders3 apps12 steps~24 min to set up
Outcome

What you'll set up

A live gross margin view broken down by channel (DTC, Amazon FBA, wholesale) and SKU — updated daily from your actual transaction and expense data, not last month's spreadsheet
Automated flagging when a SKU's margin drops below your floor — because your co-packer raised batch minimums or Amazon fee tiers shifted — before it silently bleeds for another quarter
A scenario model that shows you what happens to runway if you shift 20% of volume from wholesale to DTC, or if your co-packer raises COGS by $0.40/unit on your top SKU
The Starch recipe

Apps, data, and prompts

The combination of Starch apps, the data sources they pull from, and the prompts you use to drive them.

Data sources & config

Starch syncs your Stripe data on a schedule for DTC revenue by transaction. Starch syncs your QuickBooks data on a schedule for COGS line items, co-packer invoices, freight bills, and vendor payments — covering all entity-level data including bills, invoices, and journal entries. For Amazon FBA fees and Amazon Seller Central payout data, Starch connects to Amazon through your browser — no separate API setup needed. Shopify is connected from Starch's integration catalog; the agent queries it live when your margin app runs.

Prompts to copy
Build me a gross margin dashboard broken down by sales channel — DTC Shopify, Amazon FBA, and wholesale — and by SKU. Pull revenue from Stripe for DTC transactions. Pull COGS, co-packer invoices, and freight bills from my QuickBooks expense categories. Show me margin per unit and margin as a percentage for each SKU × channel combination. Flag any SKU where gross margin drops below 40% this month.
Show me my last 6 months of spending on co-packer invoices, 3PL fulfillment, inbound freight, and FBA fees by month. Flag any month where those four categories combined exceeded 55% of revenue.
Model two scenarios: one where I grow DTC 30% next quarter while holding wholesale flat, and one where I hold DTC flat but add a second wholesale account that does $15K/month. Show me how gross margin and runway change under each scenario given my current Plaid burn rate and Stripe revenue.
Run these in Starch → or paste them into your favorite agent
Walkthrough

Step-by-step

1 Connect Stripe in Starch (scheduled sync) — this becomes your DTC revenue source, with charges and payouts broken down by product metadata if you've tagged SKUs in your Stripe product catalog.
2 Connect QuickBooks in Starch (scheduled sync) — Starch pulls invoices, bills, vendor payments, and journal entries. Make sure your co-packer invoices and freight bills are categorized consistently in QBO; Starch will use those category names when building your margin view.
3 Connect Shopify from Starch's integration catalog — the agent queries it live to pull order-level data including discount codes, refunds, and shipping costs that don't always surface cleanly in Stripe.
4 Connect Amazon Seller Central through browser automation — Starch logs into your Seller Central account and pulls FBA fee reports and payout summaries. No Amazon API credentials required.
5 Start with the Transaction Insights app and prompt it to surface your last 6 months of co-packer, 3PL, and freight spend by vendor and month. This becomes your COGS baseline and will immediately show you if any vendor's charges have crept up.
6 Build your gross margin dashboard using Runway Analysis as a starting point — prompt Starch to fork it into a channel × SKU margin view rather than a single burn rate number. Tell Starch which QuickBooks expense categories map to COGS for each SKU.
7 Add a margin floor alert — tell Starch: 'Alert me on Slack if any SKU's gross margin in the current month falls below 40% based on the latest QuickBooks and Stripe data.'
8 Open Scenario Analysis and set your current Stripe + Plaid baseline. Build your first scenario: shift 20% of unit volume from wholesale (lower ASP, higher deductions) to DTC (higher ASP, higher fulfillment cost). Starch calculates the net margin and runway impact.
9 Build a second scenario modeling a co-packer COGS increase — tell Starch: 'Assume my top 3 SKUs see a $0.35/unit COGS increase starting next month. Show me how that affects gross margin by channel and total runway.'
10 Set a weekly automation: every Monday morning, Starch pulls the latest Stripe revenue and QuickBooks bills from the prior week, recalculates margin by SKU and channel, and posts a summary to your Slack with any SKUs that moved more than 5 percentage points from the prior week.
11 Each month when your bookkeeper closes QBO, re-run the margin dashboard — the scheduled sync picks up any reclassifications automatically, so your view stays accurate without a manual refresh.
12 Use the published margin data to inform your next production run decision: if your hero SKU is 52% gross margin on DTC but only 31% through wholesale after deductions, that changes how you allocate your next co-packer batch.

See this running on Starch

Connect your tools, describe what you want, and the agent builds it. Closed beta is free.

Try it on Starch →
Worked example

Q1 2026 Margin Close — 3-SKU CPG Brand

Sample numbers from a real run
DTC Stripe revenue (SKU A — 12oz pouch)38,400
DTC Stripe revenue (SKU B — 6oz pouch)21,600
Amazon FBA revenue (SKU A)19,200
Wholesale revenue (SKU A, distributor)14,400
Co-packer invoices (QuickBooks — all SKUs)-28,500
Inbound freight to 3PL (QuickBooks)-4,200
Amazon FBA fees (Seller Central, browser pull)-5,760
Wholesale deductions logged in QBO-2,880
3PL pick/pack/ship — DTC (QuickBooks)-8,640

SKU A looks like your best performer at $72K total revenue across three channels — until Starch breaks it out. DTC gross margin comes in at 54% after co-packer allocation and pick/pack. Amazon FBA margin is 41% once FBA fees ($5,760 pulled from Seller Central via browser automation) and inbound freight are applied. Wholesale margin drops to 28% after the distributor's deductions ($2,880 in chargebacks and off-invoice allowances logged in QuickBooks) are backed out. SKU B, which you've been treating as secondary, is actually 61% gross margin on DTC because it uses the same co-packer batch as SKU A but ships in a smaller box that cuts fulfillment cost by $1.20/unit. Without the channel × SKU breakdown, you'd have kept over-allocating co-packer capacity to wholesale SKU A. With it, you shift the next production run 15% toward SKU B DTC and recover roughly $3,400 in margin next quarter.

Measurement

How you'll know it's working

Gross margin % by SKU × channel (DTC vs. Amazon FBA vs. wholesale)
COGS as % of revenue broken down by co-packer batch cost, inbound freight, and fulfillment/FBA fees
Net revenue per unit after channel deductions and returns — not just gross sales
Distributor deduction rate (chargebacks + off-invoice allowances as % of wholesale revenue)
Months of runway sensitivity to a $0.25/unit COGS increase on top-3 SKUs
Comparison

What this replaces

The other ways teams handle this today, and how the Starch version compares.

Google Sheets + manual exports
Gets you the same view once a month if you have 4-6 hours to spend pulling Shopify, Amazon, and QuickBooks exports and reconciling them — but breaks the moment a co-packer invoice is reclassified in QBO after you've already built the sheet.
QuickBooks reports (P&L by class)
Gives you expense categorization but doesn't break margin down by sales channel or SKU natively, and QBO's P&L report views are currently unavailable in Starch's sync — though all entity-level data (bills, invoices, payments) syncs normally and Starch builds the margin view from those.
Cin7 or Katana (inventory + COGS)
Purpose-built for COGS tracking against production runs, but costs $500-$1,500/month, requires a dedicated implementation, and doesn't connect your margin view to cash runway or scenario planning in the same surface.
Looker or Tableau (BI layer)
Highly flexible once set up, but requires a data engineer to build and maintain the pipeline — not realistic for a CPG founder running a team of 3-5 who needs an answer this week, not next quarter.
On Starch RECOMMENDED

One platform — transaction insights, runway analysis, scenario planning all running on connected data. Setup in plain English; numbers stay current via scheduled syncs and live agent queries.

Try it on Starch →
FAQ

Frequently asked questions

Does Starch sync Amazon Seller Central data, or is it just a one-time pull?
Starch automates Amazon Seller Central through your browser — no scheduled sync like Stripe or QuickBooks. That means you can set an automation to pull FBA fee reports and payout summaries on a schedule (say, every Monday), but it's browser automation rather than a direct data pipeline. For most weekly or monthly margin reviews, that's more than sufficient. If you need real-time Amazon data updating every hour, that's a limitation worth knowing.
My co-packer bills aren't cleanly categorized in QuickBooks — will Starch still work?
Starch syncs all your QuickBooks bills, invoices, and vendor payments as entity-level data, so even if the categories are inconsistent, you can tell Starch which vendors map to COGS for each SKU. The first time you build the margin app, you'll spend 10-15 minutes telling Starch 'vendor X is my co-packer for SKU A, vendor Y is inbound freight' — after that it's automatic. Cleaning up QBO categories in parallel is still a good idea, but it's not a prerequisite.
Can Starch pull Shopify order data including refunds and discount codes?
Yes — connect Shopify from Starch's integration catalog and the agent queries it live when your margin app runs. You can pull order-level data including refunds, discount code usage, and net revenue per order. This is particularly useful for DTC brands where promo codes meaningfully affect realized ASP.
QuickBooks P&L reports — can Starch pull those directly?
Not right now. QuickBooks report views (P&L, Transaction List, Vendor Expenses) are temporarily unavailable in Starch's sync pending a connector fix. The entity-level data — bills, invoices, vendors, payments, journal entries — all sync normally, and Starch builds the margin view from those. In practice this means you get the same numbers, assembled by Starch rather than pulled from a pre-formatted QBO report.
How does Starch handle distributor deductions — those aren't always in QuickBooks on time?
Deductions that have been logged in QuickBooks as bill credits or vendor adjustments will sync automatically. For deductions that haven't been entered yet — because your distributor is slow with the paperwork — you can tell Starch to flag any wholesale payout where actual deposit (from Plaid) is more than 8% below the invoiced amount, which gives you an early signal to chase the deduction backup before month-end close.
Is Starch SOC 2 certified? We share financial data including bank transactions.
Starch is not SOC 2 Type II certified today. If your investors or board have a hard requirement for SOC 2 before you connect bank or accounting data, that's a real limitation to weigh. Most early-stage CPG founders find the workflow value outweighs the certification gap, but it's an honest trade-off.

Ready to run track gross margin by channel and sku on Starch?

Request closed-beta access. Everything is free during beta.

You're on the list! We'll be in touch soon.