Not yet tested in QuickBooks. The QuickBooks CSV follows Intuit's published upload instructions. Nobody on our team has run the import in a QuickBooks Online company yet. Until we have, try one small month first and check it before importing more.
PaperRows is independent and is not connected with Intuit or QuickBooks. We name QuickBooks only so you know which format the file is written for.
The format
Date,Description,Amount
11/06/2026,Online Transfer From Synthetic Savings Ref #IB05450282229 xxxxxx0000,2418.59
11/08/2026,Purchase authorized on 11/07 COFFEE HOUSE LAKEVIEW ST S910842556178181 Card 9628,-4.46
(The first two rows of the sample below.)
- Three columns, with this header row:
Date,Description,Amount. - Date is
MM/DD/YYYY, with the year filled in from the statement period even when the statement prints dates without one. - Amount is one signed column. Money in is positive, money out has a minus sign. Two decimals, no dollar sign, no thousands separator, so
2,418.59on the statement is2418.59in the file. - Description is the statement text as printed, with wrapped lines joined by a space. A description with a comma in it is wrapped in double quotes, as CSV requires.
- One row per transaction, in the order the statement prints them.
Three columns, not four
QuickBooks Online's upload accepts amounts in one column or in two (money in and money out apart). PaperRows only writes the one-column form. With one signed column, a deposit cannot land as a withdrawal because the two columns were mapped the wrong way round. When QuickBooks asks how your amounts are shown, choose the one column option and map it to Amount.
The plain CSV PaperRows also gives you has page, line and balance columns as well. Those are for checking rows against the PDF. Upload the QuickBooks CSV, not the plain one.
A worked example: negative amounts
Many statements, like the sample below, print every amount without a sign and put it under a money in or a money out column instead. The column decides the sign:
| On the statement | In the QuickBooks CSV |
|---|---|
2,418.59 under Deposits/Additions |
2418.59 |
4.46 under Withdrawals/Subtractions |
-4.46 |
122.99 under Withdrawals/Subtractions |
-122.99 |
So in the sample, the two transfers in are the only positive amounts, and the ten card purchases and payments are all negative. Add up the negatives and you get -422.87, the Withdrawals/Subtractions total the statement prints. The positives add up to 4496.01, the Deposits/Additions total.
In this layout, if an amount sits between the two columns, or a row has an amount in both, PaperRows does not guess a sign. The check "Every transaction line read" fails and the preview shows no rows, so these ambiguous rows block export.
A minus sign that is not an amount
Look at these two rows of the sample:
11/28/2026,'=Formula Test Payment,-20.37
12/01/2026,'+Formula Test Payment,-5.55
The statement prints those descriptions as =Formula Test Payment and +Formula Test Payment. A spreadsheet would read a cell that starts with =, +, - or @ as a formula, so PaperRows puts an apostrophe in front of the description. QuickBooks may show that apostrophe, and you can delete it when you review the row. The amount never gets one: PaperRows writes the amount itself, so its minus sign is just a sign.
If every amount shows as money in, or every one as money out
The amount was probably mapped as two columns, or the wrong sign option was chosen when mapping. Undo the import and map it again as one column. The QuickBooks Online import guide has the usual import steps and a table of other import problems.
The sample statement
Every name, number and transaction in the sample is invented. Our test generator made it. It is not a real bank statement. It is a plain four-page document laid out like the Wells Fargo Transaction history layout PaperRows reads, which prints money in and money out in separate columns, and every page says SYNTHETIC TEST DATA at the top.
The statement covers November 6 to December 5, 2026: beginning balance $6,807.34, deposits and additions $4,496.01, withdrawals and subtractions $422.87, ending balance $10,880.48. The transactions are on page 2. Page 1 is a cover page, page 3 is a notice and page 4 is a balance worksheet.
The QuickBooks CSV it makes
This is the QuickBooks CSV PaperRows wrote for the sample, unchanged:
Date,Description,Amount
11/06/2026,Online Transfer From Synthetic Savings Ref #IB05450282229 xxxxxx0000,2418.59
11/08/2026,Purchase authorized on 11/07 COFFEE HOUSE LAKEVIEW ST S910842556178181 Card 9628,-4.46
11/08/2026,Purchase authorized on 11/06 SAME MERCHANT SPRINGFIELD ST S000000000000001 Card 9628,-24.75
11/08/2026,Purchase authorized on 11/06 SAME MERCHANT SPRINGFIELD ST S000000000000001 Card 9628,-24.75
11/11/2026,Purchase authorized on 11/09 HARDWARE STORE SPRINGFIELD ST S331197155405328 Card 9628,-122.99
11/13/2026,SYNTHETIC INSURANCE CO PREMIUM PPD ID 0000123456 REF 99887766554433 POLICY 0000123456789 SYNTHETIC CUSTOMER ONE,-117.39
11/16/2026,Purchase authorized on 11/13 GROCERY MARKET MILLBROOK ST S541982265409107 Card 9628,-83.54
11/23/2026,Online Transfer From Synthetic Savings Ref #IB06977712747 xxxxxx0000,2077.42
11/26/2026,Purchase authorized on 11/24 HARDWARE STORE RIVERTON ST S543429993971539 Card 9628,-7.54
11/28/2026,'=Formula Test Payment,-20.37
12/01/2026,'+Formula Test Payment,-5.55
12/03/2026,Recurring Payment authorized on 12/02 STREAMING SERVICE 800-555-0100 ST S945120942252754 Card 9628,-11.53
- The date is the posting date in the Date column. A date inside a description, such as
authorized on 11/07, stays part of the description. - Two rows on November 8 look the same. The statement prints both, so both are rows. PaperRows does not merge rows that look alike.
- No balance column. The QuickBooks CSV has no balance. The plain CSV keeps the balances the statement prints.
- Not rows: the activity summary, the totals line, the fee summary, the dated line in the notice on page 3 and the worksheet.
How we checked the sample
The generator wrote down the expected rows while it drew the PDF, from the same made-up records and without running PaperRows. The converter then reads the PDF on its own. Its rows match those expected rows, and every check that applies to the sample passes: the totals, the beginning and ending balances, the daily balances and the dates. Our test suite holds the CSV above to the converter's output for the sample, byte for byte.
What that does not tell you: that QuickBooks will import the file without a problem (we have not run the import yet, as the note at the top says), or that every statement will read this cleanly. Matching totals are a strong sign, not proof, so look over the preview before you pay.
Which statements this applies to
The format above is the same for every bank and layout PaperRows reads. The banks page lists them and says which are in beta. The sample is the Wells Fargo Transaction history layout, which is in beta: no real Wells Fargo statement has been through our full review yet. A Wells Fargo statement that also shows a savings account or a second account number is refused with "This Wells Fargo statement layout is new to us".
What the file is not:
- Not a QBO, OFX or Web Connect file. It is a CSV for the upload from file option.
- Not a categorised import. There is no category, payee or memo column. You categorise the rows in QuickBooks after the upload.
- Not tested with QuickBooks Desktop or other tools.
- Not a connection. PaperRows never connects to your bank or to QuickBooks. You upload the file yourself.
Make one from your own statement
Open the converter and drop in your statement PDF. The file is read in your browser and never uploaded. The preview is free and shows every row with its page and line, and the checks against the statement. If PaperRows cannot read the file, it tells you why before you pay anything. Downloading the plain CSV and the QuickBooks CSV for a statement costs $5. No subscription.