Skip to content

Financials

Reading your Profit & Loss

The auto-generated P&L: revenue, COGS, ad spend, operating expenses, net profit. Plus the % of Revenue column and how to read it.

6 min read

The P&L is the financial backbone of your business. Ecom Forward generates it automatically from connected Shopify + ad platforms + COGS + expenses — updated nightly and live on edit. No accountant. No month-end wait.

Top-to-bottom structure

  1. Gross Revenue — from Shopify gross_revenue_ex_tax (when available) or total_price (legacy).
  2. – Discounts — Shopify discounts applied.
  3. – Gift cards used — gift-card redemptions.
  4. – Refunds — Shopify refunds.
  5. = Net Revenue
  6. – COGS — computed from product sales × per-product tier-1 COGS.
  7. = Gross Profit
  8. – Transaction Fees — your payment processor cut.
  9. – Ad Spend — from all connected ad platforms (collapsible, per-platform).
  10. – Operating Expenses — per custom category (Content, Tools, Team, etc.).
  11. – Business Expenses — one-off expenses (entered manually).
  12. = Net Profit

Note

If you track fulfilment shipping separately from product cost (a per-store option — see Managing your Catalog), a Shipping line appears in the variable-cost block and is folded into contribution margin and net profit. By default, shipping stays inside COGS and no separate line shows.

The % of Revenue column

Every row shows its size as a percentage of net revenue. This is how you benchmark against other DTC brands and see where your money is going:

  • COGS typically 30-45%.
  • Ad spend typically 15-30%.
  • Transaction fees typically 2-4%.
  • Operating expenses typically 10-20%.
  • Net margin typically 10-25% for healthy DTC.

Key metrics at the top

Six summary cards above the P&L table:

  • Net Revenue
  • Contribution Margin — Net Rev − COGS − tx fees − ad spend.
  • CM%
  • Net Profit
  • Net Margin
  • MER — Marketing Efficiency Ratio = gross rev / ad spend.

Marketing efficiency section

Below the P&L table, a dedicated Marketing Efficiency panel shows:

  • ROAS — attributed ad revenue / ad spend (per-platform).
  • MER — total revenue / total ad spend. The CFO's number.
  • POAS — net profit / ad spend. The real efficiency metric.
  • Break-even ROAS — gross revenue ÷ (gross revenue − COGS − transaction fees). The minimum ROAS your ads need to break even on the sales they drive. If your products and fees leave you ~50% to work with, break-even ROAS is about 2×.

Per-order unit economics

Below Marketing Efficiency: Revenue/order (AOV), COGS/order, Ad Spend/order (CAC proxy), Profit/order. Use these to know your unit economics inside-out.

Per-store breakdown

If you run multiple stores, the P&L has a per-store summary so you can see which brand is actually profitable and which one is dragging.

The “Report ex-tax” mode

EU/UK stores often bake VAT into Shopify prices. For accurate P&L, you want to display revenue excluding tax. Toggle Report ex-tax in Store Settings. The underlying data is unchanged — only display flips.

CSV export

Click Export CSV in the toolbar to download the P&L for your accountant. The filename includes the reporting currency (pl-EUR-2026-04-22.csv).

Backfilling historical data

If you joined Ecom Forward mid-year and want your January P&L to match reality, click Backfill financialsin the P&L toolbar (specific store only). This re-fetches Shopify orders for the store and date range and updates only the revenue-breakdown columns — your cost columns stay as you entered them.

Entering expenses

Two panels at the bottom of the P&L:

  • Operating Expenses — recurring per-category costs (Content, Tools, Team, Other). Entered per store + category + date. Saving a second entry for the same combo overwrites.
  • Business Expenses — one-off line items with their own currency. Good for things like professional services, trademark fees, inventory prepayments.

Both panels have a Manage entries link that opens a drawer with the full list and per-row delete buttons.

See also

Still need help?

Send us a note at info@ecomforward.ioand we'll get back within 24 hours.