MerchantFlowMerchantFlow Docs
Dashboard

E-Commerce Expense Tracking

Track OPEX, CAPEX, and recurring costs in MerchantFlow. Spread costs across their real period, amortise capital purchases, and export data for tax prep.

E-Commerce Expense Tracking

Expense tracking in MerchantFlow is the process of recording, categorizing, and analyzing all business costs beyond product COGS and ad spend, giving Shopify and WooCommerce merchants a complete view of profitability. Track operational costs, capital investments, and recurring subscriptions, and control exactly how each cost lands on your daily P&L.

What Are Business Expenses in E-Commerce?

Business expenses are the costs of running your e-commerce operation beyond product costs:

  • Software subscriptions (Shopify, email marketing, analytics tools)
  • Marketing spend (ads, influencers, content creation)
  • Office and supplies
  • Equipment purchases
  • Website development
  • Professional services (accounting, legal)
  • Shipping and fulfillment costs
  • Team salaries and contractors

Why Track Expenses?

  • Complete profit picture - Revenue minus all costs = true profit
  • Accurate daily P&L - spread costs land on the days they actually apply to
  • Budget management - Stay within spending limits
  • Tax preparation - Organized records for deductions
  • Cash reconciliation - untracked expenses are the usual cause of a bank balance variance

How to Access Expense Tracking

Navigate to Profit > Expenses (/dashboard/expenses).

The page shows:

  • Nine KPI cards: Total OpEx (manual expenses), Ad Spend, Fulfillment, Warranty Fulfilment, Payment Fees, COGS, Sales Tax, Recurring Costs, and Pending Receipts. All except Warranty Fulfilment and Pending Receipts are clickable and apply the matching filter to the table below
  • An OPEX Breakdown panel, subtitled Where your costs go, with a category donut and ranked list
  • The expense table, filterable by category, type (OPEX/CAPEX), source, and recurring status
  • Header actions: export, Manage Manual Expenses, Import CSV, and Add Expense

Filters persist in your browser between visits, and the table pages at 50 rows.

Access: viewing requires the expenses:view permission and adding or importing requires expenses:manage. Owners, admins, and analysts have both. Agency viewers can view but not edit. The viewer role has neither, so viewers cannot open expense data at all. There is no plan gating - only your plan's history window (90 days on Starter, 12 months on Pro, unlimited on Plus) limits how far back you can look.

What Is OPEX vs CAPEX?

Operating Expenses (OPEX)

Operating expenses are the day-to-day costs of running your business:

Marketing & Advertising:

  • Google Ads (auto-synced if connected)
  • Meta Ads (auto-synced if connected)
  • Influencer partnerships
  • Content creation
  • Email marketing tools
  • SEO services

Software & Subscriptions:

  • Shopify/WooCommerce subscription
  • Email marketing (Klaviyo, Mailchimp)
  • Analytics tools
  • Customer service platforms
  • Accounting software
  • Project management tools

Operations:

  • Office rent
  • Utilities
  • Shipping materials
  • Fulfillment fees
  • Payment processing fees
  • Bank fees

People:

  • Salaries
  • Contractor fees
  • Freelancer payments
  • Employee benefits (if applicable)

Professional Services:

  • Accounting and bookkeeping
  • Legal fees
  • Consulting

Capital Expenses (CAPEX)

Capital expenses are long-term investments that provide value over time:

Equipment:

  • Computers and hardware
  • Photography equipment
  • Warehouse equipment
  • Office furniture

Development:

  • Website redesign
  • Custom app development
  • Brand identity development
  • Major platform migrations

Infrastructure:

  • Warehouse lease deposit
  • Major software licenses (multi-year)
  • Domain purchases

Marketing Assets:

  • Professional product photography
  • Video production
  • Trademark registration

Key difference from OPEX:

  • OPEX: Ongoing, recurring, immediate benefit
  • CAPEX: One-time, long-term, lasting value

How to Add Expenses in MerchantFlow

Method 1: Manual Entry (Single Expense)

For individual expense records:

  1. Go to Profit > Expenses
  2. Click "Add Expense"
  3. Fill in the form. Required fields are marked with an asterisk:
    • Description* - e.g., "Annual insurance premium"
    • Category* - one of the 15 categories (see below)
    • Amount* and Currency
    • Date*
    • Expense type* - OPEX ("Running cost - rent, software, salaries, insurance") or CAPEX ("Asset you own and write down over time - equipment, vehicles, fit-out")
    • Amortisation period (months)* - CAPEX only
    • Vendor - optional, e.g., "Shopify"
    • Notes - optional
    • Repeats automatically - turn on for a recurring series, then set Frequency*, Start date*, and an optional End date
    • How it hits your P&L - single-day or spread (see below)
  4. Click "Add Expense"

There are no project or channel fields on the expense form.

Method 2: Recurring Expenses

For monthly subscriptions or regular costs:

  1. Add expense as described above
  2. Toggle "Repeats automatically" to ON
  3. Set recurrence:
    • Frequency - Weekly, Monthly, Quarterly, or Yearly
    • Start date - When it began
    • End date - Optional (leave empty for ongoing)
  4. Save

Effect: MerchantFlow creates each charge for you on schedule. You do not need to manually enter it every period.

Examples:

  • Shopify subscription: $79/month, recurring monthly
  • Annual software license: $1,200/year, recurring yearly
  • Quarterly accounting fees: $500/quarter, recurring quarterly

Editing a recurring expense edits the whole series. MerchantFlow regenerates every occurrence from the template, so any per-occurrence edits you made are replaced. To stop a series, set an end date rather than deleting it.

How Costs Hit Your P&L

Every expense has a How it hits your P&L setting that controls whether the cost lands as a single-day spike or is spread evenly:

OptionEffect
All on the expense dateThe full amount posts on one day
Spread across the monthDivided evenly across that calendar month
Spread across 3 monthsDivided evenly across a 3-month window
Spread across 6 monthsDivided evenly across a 6-month window
Spread across 12 monthsDivided evenly across a 12-month window
Spread across a custom periodAny number of months, up to 60

The daily rate is the amount divided by the inclusive number of days in the whole window, which starts at the beginning of the expense's month. A live preview shows the resulting per-day figure and date range before you save.

Two rules override the setting:

  • Monthly recurring expenses are always spread across their month. The control has no effect on them.
  • Weekly recurring expenses are never spread - they already recur roughly four times a month, so they post on each charge date.

CAPEX never uses spreading. It is written down through amortisation instead (see below).

Method 3: Auto-Synced Advertising

Google Ads and Meta Ads sync automatically:

  • Connect Google Ads or Meta Ads integration
  • Ad spend imports automatically during syncs
  • Appears in Expenses under "Advertising"
  • Already attributed to campaigns/channels

Manual override:

If automatic sync is not working:

  1. Add expense manually
  2. Category: "Advertising"
  3. Add campaign name in description
  4. Attribute to channel

Connect integrations

Auto-Synced 3PL Warehousing

If Fulfilment Plus is connected, its storage and inbound receiving charges sync automatically as 3PL Warehousing expenses - one per charge, marked as synced and read-only. They are kept out of per-order costs on purpose, so they show as their own line in your P&L rather than being spread across orders.

Method 4: Bulk Import

For importing many expenses at once:

  1. Go to Profit > Expenses
  2. Click "Import CSV"
  3. Follow the four steps: Instructions, Upload, Map & Review, Done

The expected header is:

Date,Description,Amount,Category,Type
ColumnRequiredExample
DateYes2025-08-01
DescriptionYesShopify
AmountYes4.84
CategoryOptional - mapped to the closest match, unknown values become Othersubscriptions
TypeOptional - defaults to OPEXOPEX

Column headers are auto-detected, so common variants (Expense Date, Label, Cost, Expense Category) are recognised without manual mapping, and a wide range of date formats is accepted beyond ISO.

Two options on the review step, both on by default:

  • Consolidate daily charges into one monthly entry per expense - useful for platforms that bill daily
  • Skip rows already in your expenses - matches on date, description, and amount

Limits: up to 5,000 rows per import. Only OPEX rows are imported - CAPEX rows are rejected, and any Ad Spend category is remapped to Marketing (Non-Ad) because ad spend syncs automatically. The result reports how many rows were imported, skipped, and failed.

Use cases:

  • Importing historical expenses from accounting software
  • Uploading monthly credit card statements
  • Bulk entry of contractor payments

Expense Categories

MerchantFlow ships a fixed list of 15 categories. There is no interface for creating your own - use Other plus a descriptive Description and Vendor for anything that does not fit.

CategoryTypical use
Ad SpendSynced automatically from connected ad platforms
Marketing (Non-Ad)Influencers, content, creative, SEO services
Software & SubscriptionsShopify, Klaviyo, analytics, helpdesk tools
Shipping & Fulfillment3PL fees, postage, packaging
3PL WarehousingA 3PL's storage, inbound receiving and account management fees. Synced automatically from Fulfilment Plus, or added by hand
Payment FeesProcessor and gateway fees
Cost of GoodsProduct cost outside the COGS system
Sales TaxTax remitted
Salaries & WagesPayroll
EmployeesBenefits and other people costs
Office & SuppliesRent-adjacent day-to-day supplies
EquipmentHardware and equipment purchases
Rent & UtilitiesPremises costs
Funding RepaymentRepayments on external funding
OtherAnything else

Ad Spend cannot be chosen when importing a CSV - those rows are remapped to Marketing (Non-Ad) so they do not double-count against the automatic ad platform sync.

CAPEX Amortisation

A CAPEX expense requires an Amortisation period (months). MerchantFlow divides the total by that number of months and recognises one slice per month, starting at the beginning of the expense's month. The form shows the resulting monthly figure as you type.

OPEX expenses must not carry an amortisation period - the form rejects it.

System-Managed Expenses

Your MerchantFlow subscription is tracked for you and appears as MerchantFlow Subscription (Auto) with an Auto badge. These rows cannot be edited or deleted; the tooltip explains they are tracked automatically from your billing.

Several other rows in the expense table are read-only views of data from elsewhere, not stored expenses: ad spend from connected platforms, 3PL fulfillment cost, payment fees, cost of goods, and sales tax. You can filter them out with the source filter to see only what you entered by hand.

How to View Expense Reports

Expenses Overview

Profit > Expenses shows the KPI cards for the selected period, including Total OpEx and Recurring Costs, plus the OPEX Breakdown panel (Where your costs go) with its category donut and ranked list.

Filtering the Table

Four filter groups combine:

  • Category - any of the 15 categories
  • Type - OPEX or CAPEX
  • Source - manual, ad spend, fulfillment, payment fees, COGS, or tax
  • Recurring - recurring or one-time

Your filter selection is remembered between visits. The KPI cards double as shortcuts - clicking one applies the matching filter.

Manage Manual Expenses

The Manage Manual Expenses button opens a list of every expense you added by hand, listed once - recurring parents appear as a single template rather than one row per generated occurrence. This is the fastest way to audit subscriptions and find costs worth cutting.

How to Edit and Delete Expenses

Update Expense Details

  1. Find expense in Expenses list
  2. Click pencil icon to edit
  3. Modify fields
  4. Click "Save"

Can change: every field on the form - description, category, amount, currency, date, vendor, notes, type, amortisation period, recurrence, and the spread setting.

Editing a recurring expense edits the whole series and regenerates its occurrences.

Delete Expenses

  1. Find expense in list
  2. Click trash icon
  3. Confirm deletion

Warning: Deletion is permanent and triggers a P&L recompute over every period the expense touched. System-managed rows with an Auto badge cannot be deleted.

Pause Recurring Expenses

To temporarily stop a recurring expense:

  1. Edit recurring expense
  2. Set "End date" to today
  3. Save

To resume later:

  1. Edit expense
  2. Remove end date or set future end date
  3. Save

How to Export Expense Data

  1. Navigate to Profit > Expenses
  2. Set the date range and any filters you want
  3. Click the export icon in the page header

The download is a CSV named for the range you selected -- expenses_2026-08-01_to_2026-08-31.csv, or expenses_2026-08-01.csv for a single day. It contains every expense in the range, not just the page you are looking at, with your filters and the search box applied. The columns are:

ColumnWhat it holds
DateThe date the expense is booked against
DescriptionThe expense label, e.g. Klaviyo
CategoryThe category label as shown in the table
TypeOPEX or CAPEX
AmountThe full charge on the row
Amount in RangeThe part of that charge that falls inside the selected range
RecurringYes for a generated occurrence of a recurring series
SourceManual, or which sync produced the row

Amount and Amount in Range differ for spread and amortised costs. A 900 annual licence spread across three months contributes only its overlapping slice to a one-month range. Amount in Range is the figure your P&L and the KPI cards use, so it is the column to reconcile against; Amount is what you were actually charged.

The file opens with a UTF-8 byte order mark so Excel renders accented vendor names correctly. A range holding more than 50,000 expenses is refused rather than silently shortened -- narrow the dates or add a filter.

There is no PDF or QuickBooks export format on this page. For a formatted, shareable document, build an Expense Breakdown report under Reports (Pro and Plus) and export it as CSV or PDF -- that report lists each expense individually under its category totals.

Best Practices for Expense Tracking

1. Record Expenses Promptly

Do not wait until month-end:

  • Add expenses when they occur
  • Set up recurring expenses once
  • Import monthly credit card statements

Why: Real-time data helps you make informed decisions now, not after the fact.

2. Use Consistent Categories

Standardize expense categorization:

  • Always categorize Shopify under "Software"
  • All ad spend under "Marketing & Advertising"
  • Keep categories consistent month-to-month

Why: Enables accurate trend analysis and comparisons.

3. Add Detailed Descriptions

Be specific in descriptions:

  • "January 2026 Shopify subscription" (good)
  • "Facebook Ads - Holiday Campaign" (good)
  • "Software" (too vague)
  • "Ads" (too vague)

Why: Easier to review during tax prep or when analyzing specific campaigns.

4. Choose the Right Spread

Match how the cost is consumed:

  • An annual insurance premium spread across 12 months, not dumped on one day
  • A one-off agency invoice for a quarter's work spread across 3 months
  • A genuine one-day cost left on its date

Why: A single-day spike distorts that day's margin and every daily-granularity chart that reads it.

5. Review Recurring Expenses Quarterly

Audit subscriptions every 3 months:

  • Which subscriptions are not used?
  • Can you downgrade plans?
  • Are there cheaper alternatives?

Tip: Regular audits help identify unused subscriptions and redundant costs.

6. Separate OPEX and CAPEX

Properly classify expenses:

  • OPEX: Ongoing, recurring, operational
  • CAPEX: One-time, long-term investments

Why: Different tax treatment. Important for accurate financial reporting.

7. Reconcile Against Your Bank Balance

Check the variance monthly:

  • Record your real balance on Bank Balance
  • Compare it against the tracked balance
  • A widening gap is almost always an expense you have not entered

Why: Untracked costs make your profit look better than it is.

Troubleshooting Expense Tracking

Expense Not Showing in Reports

Check:

  • Date range includes expense date
  • Category filters not excluding expense
  • Expense was saved (not just drafted)

Recurring Expense Not Auto-Creating

Verify:

  • Repeats automatically is ON
  • Start date is in the past
  • End date has not passed (if set)
  • Frequency is correct

Fix: Edit the recurring expense, verify settings, and save. Saving regenerates the whole series.

Ad Spend Not Syncing

If Google/Meta Ads not auto-importing:

  1. Check integration is connected (Settings > Integrations)
  2. Trigger a manual sync from the Manual Sync Runner at the bottom of Settings > Integrations
  3. Verify campaigns were active during period
  4. Check date range

Ad spend troubleshooting

An Expense Is Missing From a Day You Expected

Verify:

  • Whether the expense is spread - a spread cost posts a fraction per day across its window, not the full amount on its date
  • Whether it is a recurring parent template, which never posts on its own; only its generated occurrences do
  • Whether it is CAPEX, which posts through monthly amortisation instead

Cannot Find or Edit an Expense

Try:

  • Filter by category, type, or source
  • Check a different date range
  • Open Manage Manual Expenses to see every hand-entered expense in one list

If the row shows an Auto badge it is system-managed and cannot be edited or deleted.

Frequently Asked Questions

What is the difference between OPEX and CAPEX in e-commerce?

OPEX (operating expenses) are ongoing, recurring costs like software subscriptions, ad spend, and salaries. CAPEX (capital expenses) are one-time investments with lasting value like equipment purchases, website redesigns, and major software licenses. The distinction matters for tax treatment and financial reporting.

How does MerchantFlow automatically track ad spend?

When you connect your Google Ads or Meta Ads integrations, MerchantFlow automatically imports ad spend during each sync. It appears in the expense table under the Ad Spend category as a read-only row per platform per day - Google Ads, Meta Ads, TikTok Ads, Snapchat Ads, and so on. Because it syncs automatically, Ad Spend cannot be chosen when importing a CSV.

Can I import expenses from QuickBooks or other accounting software?

Yes, as CSV. Use Import CSV on the Expenses page. There is no direct QuickBooks connector and no QuickBooks-specific file format - export to CSV with Date, Description, Amount, and Category columns and MerchantFlow will auto-detect the headers. Only OPEX rows import; CAPEX must be entered by hand.

How often should I review recurring expenses?

Audit your recurring expenses quarterly. Use the recurring filter, or the Manage Manual Expenses list, to see active subscriptions and their total. Many businesses find unused or underutilized subscriptions that can be cancelled.

Where do expenses land in the P&L?

OPEX and amortised CAPEX are deducted below contribution margin:

Contribution margin - OPEX - Amortised expenses - Variable costs = EBITDA
EBITDA - Interest expense - Sales tax (only when treated as a cost) = Net profit

Every expense change triggers a P&L recompute over the whole range it affects, so a 12-month spread invalidates and rebuilds all twelve months, not just the day you edited.


Need help? Contact support at [email protected] or visit our Expense FAQ.

Last updated: September 22, 2026

Last updated on

On this page