Fill in the VEXA CSV template
Type your trades into VEXA's own spreadsheet template when your broker has no parser and no clean export. One row per fill, and delete the examples.
What this does
The VEXA CSV template is a spreadsheet with fixed column headers. Fill it in, upload it, and VEXA reads it the same way it reads a broker export. It is broker-agnostic, so it works for a broker VEXA has no parser for, for a prop firm that only gives you a PDF, and for trades you kept in a notebook.
The template is the answer when your broker export is unusable. If your broker gives you a CSV of any shape, try the AI import on the same page first, because reading your own file is less work than retyping it.
Before you start
- The template is on the web only. Neither mobile app can download it or upload it.
- You need the Edge tier or above.
- The download has 12 example rows in it. They are there to show the format for each asset type, and they import as real trades if you leave them. Deleting them is a real step, not housekeeping.
- Work in Google Sheets, Excel or Numbers. All three are fine as long as you save back to CSV.
The columns
The template has 19 columns. Eight are required, eleven are optional. Keep the header row exactly as shipped: do not rename a column, do not reorder them, and do not delete an optional column you are not using. Leave it blank instead.
| # | Column | Required |
|---|---|---|
| 1 | Date | Required |
| 2 | Time | Required |
| 3 | Symbol | Required |
| 4 | Side | Required |
| 5 | Quantity | Required |
| 6 | Price | Required |
| 7 | AssetType | Required |
| 8 | BrokerAccount | Required |
| 9 | Commission | Optional |
| 10 | Fees | Optional |
| 11 | Expiration | Optional |
| 12 | Strike | Optional |
| 13 | CallPut | Optional |
| 14 | Underlying | Optional |
| 15 | Multiplier | Optional |
| 16 | Exchange | Optional |
| 17 | Currency | Optional |
| 18 | Strategy | Optional |
| 19 | Notes | Optional |
- Keep the header row exactly as shipped. Do not rename or reorder the columns.
- One row per fill, not per trade. A round trip is at least two rows.
AssetType has to be one of STK, OPT, FUT, CRYPTO, FOREX or CFD. Anything else is
rejected with the row telling you which values are allowed.
Steps
Web only
- Open Profile from the sidebar card that shows your name with View Profile under it.
- Open the VEXA AI Import / Manual CSV Template card.
- Switch the mode control to Manual CSV Template.
- Press Download Template. You get
vexa-trade-template.csv. - Open it in your spreadsheet app, keeping the header row on row 1.
- Enter one row per fill, not per trade. A round trip is at least two rows, one for the entry and one for the exit. Every partial fill gets its own row with its own quantity.
- Write dates as
YYYY-MM-DD. See the note below on slash dates. - Write times as 24-hour
HH:MMorHH:MM:SS, or 12-hour with AM or PM. - Delete all 12 example rows.
- Save as CSV with UTF-8 encoding. Spreadsheet apps often default to
.xlsx, which is not accepted. - Back on the import page, drop the file into the upload zone.
- Set the timezone your trade times are recorded in, and set the display timezone you want to see trades in. The display timezone is required before you can confirm.
- Check the preview, then press Confirm Import.
Rules that catch people out
One row per fill. This is the single most common mistake. A trade in VEXA is reconstructed from fills, so a row that describes a whole round trip gives VEXA an opening execution with nothing to close it, and you end up with an open position instead of a closed trade.
Write dates as YYYY-MM-DD. Slash dates are accepted, but 05/06/2026 is genuinely ambiguous
and VEXA reads it as US month-first unless the first number is above 12. 13/06/2026 is read as
13 June because no month is 13. 05/06/2026 is read as 5 June. If your trades are European, ISO
dates remove the guesswork.
Avoid commas inside Notes and Strategy. The template is split on commas, and quoted fields
containing commas are not handled. A comma in a note breaks the row it sits on.
Delete the examples. Rows that still match the shipped sample data are rejected on sight, and the check looks at the date, time and price rather than the symbol, so find-and-replacing the ticker does not get an example row past it. An example row that imported would show up as a real position you never took.
What you should see
A preview of the first 10 rows with tiles counting Total, Parsed, Rejected and Symbols. Rejected rows name their reason rather than disappearing quietly. The messages you are most likely to see:
| Message | Fix |
|---|---|
| Symbol is required | The Symbol cell is empty. |
| Invalid date/time | The Date or Time cell is empty or unreadable. Use YYYY-MM-DD and HH:MM:SS. |
| Quantity must be a non-zero number | Quantity is blank, zero, or has text in it. |
| Price must be a non-negative number | Price is blank or negative. Direction comes from Side, not from a negative price. |
| Unknown asset type | AssetType is not one of the six accepted codes. |
| The row looks like an example row from the template | You left a shipped sample row in the file. |
After confirming, an import summary reports trades created, open positions updated and duplicates skipped. Uploading a corrected version of the same file afterwards is safe, because the rows you already imported are recognised and skipped.
If it doesn’t work
- “Uploaded file does not match the Vexa manual CSV template.” The header row was renamed, reordered, or lost when the file was saved. Download a fresh template and paste your data under the original headers.
- Everything parsed but no trades appeared. Your rows are probably all entries with no exits, so they became open positions. See Positions show as open that I already closed.
- The upload succeeded and the account is empty. See My import said success but nothing appeared.
Related
Related
Still stuck? Email support@vexatrade.ai.