Updated June 2026 · Tradovate web client + mobile

How to Export Your Trades from Tradovate (2026)

Every Tradovate account ships with a CSV export of fills and account performance — but the menu path, the column layout, and three quiet pitfalls (timezone, partial fills, multi-leg orders) sit between you and a clean import into any trading journal. This guide walks the whole path.

Independent reference, not Tradovate documentation. Aurafy is not affiliated with Tradovate. Tradovate's UI is updated periodically — the exact menu labels and column names may shift between versions. Always verify against your current account before scripting against an export. We import Tradovate's standard CSV export and nothing more; no API credentials are required.
Why export trades Export from the web client Export from mobile CSV column reference 3 common pitfalls Cleaning the CSV for any journal Importing into Aurafy FAQ

Why you should export your trades (even if Tradovate already shows them)

Tradovate's built-in Performance and Orders views are designed for monitoring open positions and recent fills — not for analyzing your edge over time. A few things you only get from an exported CSV:

Bottom line: Tradovate is an execution platform. The CSV is what makes the data a record you can actually learn from.

How to export trades from the Tradovate web client

Trader the web client (trader.tradovate.com) is the most reliable place to pull a full export. The exact menu labels may shift between Tradovate versions, but the pattern is consistent:

1
Open the Performance or History panel.

From the main navigation, look for the panel that lists your closed positions and fills. In recent versions it sits under a "Performance" or "Account" section; on older builds it's labeled "Orders" or "History".

2
Select the account and date range.

If you trade multiple accounts (Combine, XFA, sim, live), pick the one you want first — exports are per-account by default. Then set the date range. For prop-firm review, monthly is the safest cadence; for backtesting and journaling, the full account lifetime is fine.

3
Choose the export type: Fills, Orders, or Positions.

These three views show very different data — choose carefully. Most journals (Aurafy included) want the Fills view, which is one row per executed price (so a 4-contract order that fills in two pieces shows as two rows). The Positions view is one row per round-trip — useful for high-level review, but you lose the entry/exit detail.

4
Click Export → CSV.

The download button is usually in the top-right of the panel, sometimes hidden in a "⋯" overflow menu. The file lands in your browser's default Downloads folder.

5
Open the CSV and confirm row count.

Open the file (Excel, Numbers, or any text editor) and compare the row count against the number of fills the web UI showed. If the totals don't match, you may have hit a date-range issue or a hidden pagination cap.

Exporting from the Tradovate mobile app

The mobile app's export is more limited than the web client's. As of mid-2026:

CSV column reference

Column names and order have varied slightly between Tradovate versions. These are the fields that consistently appear in the Fills export — verify yours and map them to whatever tool you import into.

Column (typical name)What it meansWhy it matters
TimestampThe fill time, usually in your account's configured timezoneMatch this to the chart timezone in your journal or you'll see trades shift hours
Symbol / ContractThe futures contract (ESZ5, NQU6, MES, etc.) — includes the contract month codeIf you trade rollovers, the symbol changes — make sure your journal groups by root (ES) not contract month (ESZ5)
Side / B/SBuy or Sell — for the fill itself, not the position directionA Sell after a Buy closes a long; a Sell on its own opens a short. The CSV usually doesn't label this — your journal has to infer it
Qty / QuantityContracts executed at this priceIf your single order filled in pieces, you'll see multiple rows summing to your order size
PriceThe execution price of this fillFor multi-leg fills, your effective average is qty-weighted across the rows
Order IDAn identifier tying fills back to the original orderThis is what lets a journal group partial fills into one "trade"
AccountAccount name — Combine, XFA, sim, live, etc.If you export across multiple accounts in one CSV, this is how to filter
P&L / RealizedRealized profit for the round-trip — only populated on the closing fill of a positionRows mid-trade often show blank or zero; total P&L is the sum across closing fills only
Commissions / FeesPer-side commissions and exchange feesTradovate's plans split these differently — make sure your journal subtracts the right column
Quick test: open the CSV and sum the Realized P&L column. It should equal the total P&L shown in the Tradovate web UI for the same date range. If it doesn't, you're either missing rows, double-counting fills, or pulling the wrong export type.

The three quiet pitfalls

Most "my journal numbers don't match Tradovate" tickets trace back to one of these three.

1. Timezone

Tradovate timestamps export in your account's configured timezone, which may not be the timezone your chart software uses. A trade entered at 09:30 ET could appear in your journal as 14:30 UTC or 08:30 CT — same trade, different label, broken session-time analysis.

Fix: in your journal's import step, explicitly tell the tool what timezone the CSV's timestamps are in. Aurafy and most journals support this on import. If your CSV has no timezone offset in the timestamps, default to your Tradovate account's profile timezone, not your local OS clock.

2. Partial fills

A market order for 4 contracts can fill in 1+3, 2+2, or 1+1+1+1 — the CSV records each piece as its own row, with the same Order ID. If your journal treats each row as an independent trade, your trade count balloons and your win rate breaks.

Fix: import the CSV at the order level, not the fill level — group by Order ID, sum the quantities, qty-weight the price. Aurafy does this automatically. If you're using a journal that doesn't, you'll want to pre-aggregate in Excel or a script before upload.

3. Multi-leg / bracketed orders

If you use Tradovate's bracket orders (entry + stop + target submitted as one), each leg fires as a separate Order ID — but they're conceptually one trade. The CSV shows them as up to three orders + two-or-more fills, and naive aggregation will count them as two or three trades instead of one.

Fix: import at the position level for analysis (one trade = entry to flat) and at the order level for execution review (how close the bracket targets came to filling). Aurafy stores both layers; if your tool only has one, position-level is the safer default.

Cleaning the CSV before import

Most CSVs go in clean if you trust the journal's importer. But if you're scripting, exporting into Notion / Sheets, or moving between journals, these are the cleanup steps that pay off:

  1. Strip header/footer summary rows. Some Tradovate exports include a totals row at the top or bottom — kill it before parsing.
  2. Normalize the timestamp. Convert everything to ISO 8601 with an explicit timezone offset (2026-06-02T14:30:00-05:00). This is the format almost every downstream tool reads cleanly.
  3. Map symbol to root. Add a root column derived from the contract symbol (ESZ5ES). Most analysis groups by root, not by contract month.
  4. Group fills into orders. Use Order ID as the grouping key; sum Qty; qty-weight the Price.
  5. Compute side at the position level. Track running quantity per symbol per account; flag the row that takes net quantity back to zero as the "closing fill" of that trade.
  6. Don't lose the raw rows. Keep the original fill-level data archived. You will eventually need it for a slippage analysis or a "which broker filled me better" comparison.

Or skip all of that — drop the CSV into Aurafy

Aurafy's Tradovate importer handles fill aggregation, bracket grouping, timezone normalization, and root-symbol mapping automatically. Drag the CSV into your account, pick the timezone if asked, and your trades land grouped by order with R-multiples, prop-firm rule tracking, and chart context already overlaid. Free tier — 1 account, 30 days of history, no card required.

Start importing free More on Aurafy + Tradovate

While you're cleaning up the data — track the rules too

Once your CSV is in a journal, a few free Aurafy tools layer prop-firm rule math on top of any trade history — no signup required:

FAQ

Does Tradovate have a built-in journal so I don't need an export?

It has a Performance dashboard and order history, but neither tags setups, computes R-multiples, overlays trades on charts, or tracks prop-firm rules. For execution monitoring, it's enough. For learning your edge, you'll outgrow it within a few weeks.

Can I export trades via API instead of the CSV?

Tradovate offers a developer API, but for journaling purposes the CSV is simpler and doesn't require API credential management. Aurafy and most journals import the CSV, not the API.

Why does my exported P&L not match what TopstepX or another prop-firm dashboard shows?

Prop-firm dashboards usually compute P&L net of commissions and the firm's specific exchange-fee schedule. The Tradovate CSV may show pre-commission realized P&L in one column and commissions separately. Subtract commissions explicitly before comparing.

What about Combine vs XFA — do they export the same way?

If your prop firm exposes both accounts inside Tradovate, the export is per-account. Pick the Combine account for eval data and the XFA account for funded-phase data. They're separate ledgers — never mix them in one journal view if you're analyzing rule-survival rates.

Does the export include cancelled or rejected orders?

The Fills view does not (only executed prices), but the Orders view does. If you want to audit how often your stops or limits got cancelled before filling, pull the Orders view too — and never mix the two CSVs.

Can I automate the weekly export?

Not via the web UI directly. Either schedule a weekly calendar reminder to pull it manually, or use the developer API for full automation. Aurafy's roadmap includes scheduled Tradovate imports — not yet in the current release.

Will the CSV change if I'm on a TopstepX account routed through Tradovate?

TopstepX uses Project X infrastructure, not Tradovate, for its core platform after August 2024 — so a TopstepX account doesn't necessarily export through Tradovate at all. If you're a Topstep trader on a NinjaTrader-via-Rithmic setup, your export path is different. See our NinjaTrader journal guide for that flow.

What if my CSV has columns I don't recognize?

Tradovate occasionally adds fields (regulatory flags, routing venue, exchange order IDs). Most journals ignore unknown columns safely. If you're scripting, treat any unknown column as opaque metadata and don't fail the import on it.

Free trading journal that actually reads Tradovate CSVs cleanly

Aurafy imports the standard Tradovate export, groups fills into orders and orders into positions, normalizes timezones, computes R-multiples per trade, and overlays everything on the chart at the time of the fill. Topstep / Apex / MFFU / TPT / Tradeify / Bulenox / Earn2Trade rule tracking included. Free tier — 1 account, 30 days history, no card.

Start free — no card See pricing