You exported a CSV from your spreadsheet, opened TaxAct, clicked Import from CSV in Stock Assistant, selected the file, and got one of the most unhelpful error messages in tax software: "Invalid format." No explanation of which row is wrong. No hint about which column. Just a vague rejection and a suggestion to "check your file."
TaxAct's CSV importer is genuinely picky, and most of its requirements are undocumented. This post reverse-engineers what it actually wants: the exact 8-column layout, the date format that's the single biggest cause of rejections, how wash sales have to be encoded, and the five most common error messages with their real fixes.
By the end, you'll either know exactly how to build a TaxAct-ready CSV from scratch — or you'll know why it's faster to use a converter that outputs the right format automatically.
What Is TaxAct's Stock Assistant CSV Import?
TaxAct offers two different ways to load 1099-B data: the direct broker import (which connects to your brokerage and pulls data automatically) and Stock Assistant CSV import (which lets you upload a spreadsheet). The direct import is more famous, but for anyone whose broker isn't on TaxAct's supported list — or whose import keeps failing — CSV import is the fallback.
To get there in TaxAct:
- Open your return
- Go to Federal → Investment Income → Gain or Loss on Sale of Investments
- Click Stock Assistant
- Choose Import from CSV
Stock Assistant populates Form 8949 and Schedule D directly from your CSV rows. Each row becomes one transaction. TaxAct classifies each one into the right Form 8949 box (A, B, C, D, E, or F) based on the short/long-term flag and whether cost basis is reported.
The feature is designed for people importing hundreds or thousands of transactions. It's the only practical way to handle an active trading year without buying TurboTax Premier for the TXF import.
The Exact Column Layout TaxAct Accepts
This is the part TaxAct's documentation glosses over. Here's the 8-column layout Stock Assistant expects, based on reverse-engineering successful imports:
| # | Column | Example | Notes |
|---|---|---|---|
| 1 | Description | 100 sh AAPL |
Free text. Max ~80 chars. Include share count if you have it. |
| 2 | Date Acquired | 01/15/2024 |
Must be MM/DD/YYYY. Accepts VARIOUS for lots with multiple purchase dates. |
| 3 | Date Sold | 06/30/2024 |
Must be MM/DD/YYYY. VARIOUS generally not accepted here. |
| 4 | Proceeds | 18500.00 |
Plain number. No $, no commas, no parentheses for negatives — use a minus sign. |
| 5 | Cost Basis | 15000.00 |
Same formatting rules as proceeds. |
| 6 | Wash Sale Loss Disallowed | 0.00 |
Required column even when zero. Blank usually accepted; zero is safer. |
| 7 | Gain/Loss | 3500.00 |
Optional — TaxAct recomputes from proceeds minus cost basis. Include it if you have it for verification. |
| 8 | Short/Long-Term | S or L |
S = short-term, L = long-term. Anything else rejects the row. |
Header row: TaxAct auto-detects whether the first row is a header or a data row. Including a header row is recommended because it gives clearer import errors — and because TaxAct uses header names as hints when mapping columns.
File encoding: UTF-8 without BOM. If you save from Excel as "CSV UTF-8," you sometimes get a byte-order mark that TaxAct interprets as garbage in the first field. Save as "CSV (Comma delimited)" or use Google Sheets → File → Download → Comma-separated values.
Delimiter: Comma only. Semicolon-separated files (common in European locales) fail silently — TaxAct reads the whole row as a single column.
Date Format: The #1 Cause of Import Errors
Date formatting causes more TaxAct CSV rejections than everything else combined. Here's what TaxAct accepts and rejects:
| Format | Example | Accepted? |
|---|---|---|
| MM/DD/YYYY | 06/30/2024 |
Yes |
| M/D/YYYY | 6/30/2024 |
Sometimes — unreliable |
| MM/DD/YY | 06/30/24 |
No |
| YYYY-MM-DD (ISO) | 2024-06-30 |
No |
| DD/MM/YYYY (European) | 30/06/2024 |
No |
| 30-Jun-2024 | 30-Jun-2024 |
No |
| VARIOUS | VARIOUS |
Accepted in Date Acquired only |
If you export from Excel or Google Sheets, watch out — both applications aggressively "help" by reformatting dates on save. A date that looks like 06/30/2024 in the cell can become 6/30/2024 or 2024-06-30 in the actual CSV. Open the CSV in a plain text editor (VS Code, Notepad, TextEdit) before uploading to verify what's really in the file.
The VARIOUS trick: If you held a lot across multiple purchase dates (common with fractional shares, dividend reinvestment, and DCA), enter VARIOUS in the Date Acquired column. TaxAct accepts this for lot-level aggregation. It's the only string that works — MULTIPLE, N/A, and blank all reject.
How to Handle Wash Sales in the CSV
Wash sales are the second most common cause of bad imports. Column 6 (Wash Sale Loss Disallowed) is required for every row, even rows with no wash sale. Here's how to encode them correctly:
- No wash sale on this lot:
0.00or blank (0.00is safer) - Wash sale applies: Enter the disallowed loss amount as a positive number. Example: if you sold at a $500 loss and $300 of that loss is disallowed under the wash sale rule, column 6 is
300.00. - The gain/loss column should show the pre-adjustment number. TaxAct applies the wash sale adjustment itself — don't pre-adjust column 7.
Why this matters: If your broker (Robinhood, Schwab, etc.) reported wash sale adjustments on your 1099-B and your CSV omits them, TaxAct will report larger losses than the IRS has on file. The IRS receives the same 1099-B data your broker gave you, and any discrepancy in wash sale amounts triggers a CP2000 notice months later.
If you're building the CSV from a PDF 1099-B, the wash sale column on the PDF is usually labeled "Wash Sale Loss Disallowed" or "Wash Sale Adj" or just "WS". Map that directly to column 6.
Short-Term vs Long-Term: One File or Two?
Older TaxAct documentation suggested splitting short-term and long-term transactions into two separate CSV files. This is no longer necessary. Stock Assistant handles both in a single file as long as column 8 has a valid S or L flag on every row.
The import will still correctly place each transaction into the right Form 8949 box (A/B for short-term, D/E for long-term) based on both the S/L flag and whether the cost basis was reported to the IRS.
One exception: If you have noncovered securities (cost basis not reported to the IRS — this is common for older positions bought before 2011), you may want to split those into a separate batch so you can manually verify they land in Box B or Box E. TaxAct sometimes defaults noncovered rows to the covered boxes, which causes issues if you later get audited.
Common TaxAct CSV Import Errors and Fixes
These are the five error messages you'll actually see, with the real fix for each:
1. "Invalid date format"
- Cause: ISO date (2024-06-30), single-digit month (6/30/2024), two-digit year (06/30/24), or European format
- Fix: Convert every date to zero-padded MM/DD/YYYY. Check the raw CSV in a text editor, not in Excel (which hides the real format).
2. "Row not recognized" or "Column count mismatch"
- Cause: Extra or missing columns, or a description field containing an unescaped comma
- Fix: Make sure every row has exactly 8 columns. If your description contains a comma (e.g., ACME Corp, Inc.), wrap the field in double quotes: "ACME Corp, Inc."
3. "Numeric field error" or "Invalid number"
- Cause: Dollar signs, thousand-separator commas, or parentheses in proceeds/cost basis/wash sale columns
- Fix: Strip all formatting. $1,234.56 becomes 1234.56. Negative amounts use a minus sign: -500.00, not (500.00).
4. "Import returned 0 rows" with no error
- Cause: UTF-16 encoding or a byte-order mark at the start of the file
- Fix: Save the CSV as UTF-8 (not UTF-16, not UTF-8 with BOM). In Excel, this means "CSV (Comma delimited)" not "CSV UTF-8." In Google Sheets, File → Download → CSV works correctly.
5. "Wash sale mismatch" or unexpected gain/loss totals after import
- Cause: Wash sale adjustment encoded in the wrong column, or a row with a wash sale but no loss in the gain/loss column
- Fix: Wash sale loss disallowed goes in column 6 as a positive number. The gain/loss column (7) should reflect the pre-wash-sale gain or loss. TaxAct applies the adjustment automatically.
Getting a Robinhood CSV in This Format
Here's the frustrating reality for Robinhood users: Robinhood doesn't provide a CSV 1099-B. They only issue a PDF. So if you want to use TaxAct's CSV import, you have to generate the CSV yourself from the PDF.
Your three options:
- Manual entry into Google Sheets. Open the Robinhood PDF, copy each transaction row into a spreadsheet, format the columns to match the 8-column layout above, and download as CSV. Works for 20-50 transactions. Painful beyond that.
- Python or AWK script. If you're technical, you can parse the PDF text with
pdfplumberor similar and write a script to produce the CSV. Brittle — Robinhood changes their PDF layout every year or two. - Use a converter. Upload the Robinhood PDF to 1099-B Converter and download a CSV that's already in TaxAct's required format — correct date format, wash sales in the right column, UTF-8 encoding, no surprises. Takes 2 minutes for any size file.
The converter approach exists precisely because manually reformatting a 50-page PDF into a column-perfect CSV is the kind of task software is good at and humans are bad at. It's also the approach that avoids every single error in the list above — by design.
For the full walkthrough of the Robinhood → TaxAct flow end-to-end, we have a companion guide on how to import your Robinhood 1099-B into TaxAct.
Skipping the CSV Format Problem Entirely
If you read through this post and thought "wait, this is way too much fiddling for what should be a five-minute task" — you're right. TaxAct's CSV format is a standard that was designed in the mid-2000s and hasn't meaningfully evolved since. The rules are strict, the error messages are unhelpful, and the documentation is thin.
The alternative is to skip the CSV format problem entirely: upload your PDF 1099-B to a converter, get a CSV that's guaranteed to work with TaxAct on the first try, and spend your time verifying the numbers instead of fighting with date formats.
For anyone importing more than a handful of transactions, this is the pragmatic choice. Tax software reliability > tax software ideology.
For a side-by-side on when to use CSV versus other formats like TXF and Excel, see our CSV vs TXF vs Excel format comparison. And for a deeper walkthrough of the PDF-to-CSV workflow generally, we have a complete PDF to CSV guide.
FAQ
Does TaxAct accept CSV files from any broker?
TaxAct accepts CSVs from any source as long as the format matches the 8-column Stock Assistant layout described above. Brokerage-specific exports (from Schwab, Fidelity, etc.) usually need reformatting before TaxAct will accept them — the columns and date formats rarely line up out of the box.
What's TaxAct's transaction limit for CSV import?
TaxAct doesn't publish a hard limit, and we've seen successful imports of 5,000+ rows. The practical limit is file size (keep it under ~10 MB) and the browser timeout during upload. If you have 10,000+ transactions, split into two or three smaller files and import them sequentially.
Can I import crypto transactions via CSV into TaxAct?
Yes, but they belong in Form 8949 Box C (short-term) or Box F (long-term) since crypto cost basis is not typically reported to the IRS. Use the same 8-column format with S or L in column 8, and verify after import that TaxAct placed the rows in the noncovered boxes.
Does the CSV need a header row?
Technically no, but including one is recommended. TaxAct auto-detects headers, and having them makes error messages clearer when something's wrong. Use column names like Description,Date Acquired,Date Sold,Proceeds,Cost Basis,Wash Sale,Gain/Loss,Short/Long.
What if my wash sale loss is reported differently on my 1099-B?
Some brokers report wash sales as negative adjustments, some as positive amounts to add back, and some embed them in the cost basis column. For TaxAct's CSV format, wash sale loss disallowed should always be a positive number in column 6, and the gain/loss in column 7 should be the pre-adjustment value. TaxAct handles the math from there.
Bottom Line
TaxAct's CSV format is rigid, undocumented, and punishes small mistakes with vague error messages. Building a compliant CSV by hand is possible — but only worth the effort if you have under 30 transactions and enjoy debugging date formats.
For everyone else, the fastest path is to generate the CSV from your PDF 1099-B using a converter that already knows the format. You skip every error in this post by never having to encode the format yourself.
Get a TaxAct-ready CSV in two minutes. Upload your 1099-B PDF free — the output is already in the exact format TaxAct's Stock Assistant expects. No date format debugging, no wash sale column guessing, no encoding issues. Import and move on.