How Margn works
Margn turns your financial transaction data into benchmarked insights — showing you how your margins, cost mix, and unit-level profitability compare to other businesses in your industry.
Three steps to insights
Export your data
Pull a transaction-level export from your accounting system (QuickBooks, Xero, FreshBooks, Wave, etc.). Margn auto-detects common column names so you rarely need to rename anything.
Upload your CSV
Drop your file on the Upload page. Margn validates every row, maps categories to the standard taxonomy, and loads it in seconds.
Read your dashboard
See gross and net margins, cost mix, per-unit profitability, and how you stack up against the portfolio benchmark — all in one view.
Exporting from your accounting tool
Margn works alongside QuickBooks, Xero, FreshBooks, Wave, and similar tools. Export a transaction report as a CSV — Margn will auto-detect most column names so you rarely need to rename anything.
| Margn field | Auto-detected column names |
|---|---|
| operating_unit | Job, Project, Site, Customer, Client, Class, Location, Property, Department, Contract, Store, Route |
| transaction_date | Date, Invoice Date, Bill Date, Payment Date, Posting Date |
| transaction_amount | Amount, Net Amount, Total, Value, Net, Subtotal |
| transaction_type | Type, Txn Type — or auto-derived from amount sign |
| transaction_id | Num, Reference, Invoice Number, Check Number — or auto-generated |
| category | Account, Account Name, Expense Category — must match your industry template |
The one thing you always need to check
Your accounting tool's account or category names won't automatically match Margn's industry categories. Before uploading, replace your account names in the category column with the exact category names for your industry (see the Industry templates section below). Download a sample file to see working examples.
CSV format reference
Every upload must be a .csv file with the following columns in any order:
| Column | Description |
|---|---|
| transaction_id | A unique identifier for each row (e.g. TXN001) — auto-generated if missing |
| operating_unit | The name of the project, site, contract, or store |
| transaction_date | Date in YYYY-MM-DD format (e.g. 2026-01-15) |
| category | Must match your industry template exactly (see below) |
| transaction_amount | Positive for revenue, negative for costs (e.g. -4500) |
| transaction_type | "revenue" or "cost" — auto-detected from amount sign if missing |
Amount rules
- Revenue amounts must be positive
- Cost amounts must be negative
- Zero amounts are rejected
- If
transaction_typeis missing, it is auto-derived from the amount sign
Industry templates
The category column must exactly match one of the values for your industry. Download a sample file to see a working example.
General Contractor
Operating unit = Project
Janitorial
Operating unit = Contract
Landscaping
Operating unit = Site
Restaurant
Operating unit = Location
Retail
Operating unit = Store
Transportation & Logistics
Operating unit = Route
IT & Technology Consulting
Operating unit = Project
Other
Operating unit = Unit
Tips for clean data
Use one row per line item
Each transaction should be its own row. Do not summarize multiple invoices into a single row — the more granular, the better.
Be consistent with operating unit names
Use the exact same name each time you reference a project, site, or contract. "Main St." and "Main Street" will be treated as two different units.
Map your account names to Margn categories
Your accounting tool uses its own account names (e.g. "Payroll Expense", "Cost of Goods Sold"). Before uploading, replace those with the exact Margn category names for your industry. This is the most common cause of rejected rows.
Include a date range, not just snapshots
Uploading a full period (e.g. one quarter) gives you the most meaningful benchmark comparisons.
Importing from your CRM
Step-by-step guides for exporting from common field service and accounting tools.
Ready to get started?
Create your account and upload your first file in minutes.
Get started free