Merge debit and credit columns into one signed amount
Some bank exports put payments in one column and receipts in another, while most accounting imports want a single amount column where negative means money out. The merge itself is simple. The work is in the rows around it: account lines above the header, currency symbols, rows with both columns empty or both filled, and a closing balance line. Choose the file below: the page merges the columns in your browser, shows the first 20 cleaned rows and lists every line it left out, with the reason.
Merge the two columns of your bank CSV
The cleaner looks for a header row with a date column and a pair of columns named Debit and Credit, Money Out and Money In, Paid Out and Paid In, or Withdrawals and Deposits, and writes eight fixed columns: date, description, amount, currency, fee, net, reference and source. The header row does not have to be the first line of the file.
Your file is read in your browser and is never uploaded, stored or logged. It is held in the memory of this tab only, and closing or reloading the page discards it. Operator: Augeo. See the privacy notice.
Banks do not share one layout, and this page makes no promise about your bank's: the free preview shows what it does to your file. The report names the two columns it merged, so you can see whether it picked the right ones.
The cleaning logic is checked by an automated test script that runs the engine file of this site over six synthetic sample files and a set of checks of the parsing rules; it ran in a sandbox before this site was published and finished with no failed check. The script does not open this page in a browser, does not test the licence key step, and nothing was tested against a real export from any provider. Use the free preview to check your own file.
Report
Warnings
Lines not parsed
Lines dropped
Preview of the cleaned rows
| line | date | description | amount | currency | fee | net | reference | source |
|---|
Download the full cleaned file
- Price: 6 USD, paid once on Gumroad. No subscription. You receive a licence key.
- What the key unlocks: the download of every cleaned row of the file you chose, as one CSV named after your file with -cleaned.csv at the end, instead of the first 20 rows on screen. The report and the way files are read stay the same.
- The key is for one buyer. Runs are not counted and no number of runs is promised. The key is kept in the memory of this page only, so you enter it again after closing or reloading the page.
- Refunds are requested through your Gumroad receipt and follow Gumroad's refund policy.
- Try the free preview first. If the preview cannot read your file, the full download cannot either.
Get a licence key on Gumroad for 6 USD
What the cleaner changes in a debit and credit export
- Two columns become one signed amount. The amount is money in minus money out: a payment of
123.45becomes-123.45, and a receipt stays positive. - A row with both columns filled is netted. 5.00 out and 12.00 in on one line becomes
7.00. If your books need the two movements separately, split that row yourself. - A row with both columns empty is left out and listed. Subtracting two blanks would give a zero that passes for a real amount, so the row appears under "Lines not parsed" instead.
- Lines above the header are dropped and listed. Account name, period and similar lines before the real header row are not read as data.
- Currency symbols and thousands separators leave the numbers. A receipt written with a pound sign and a thousands comma comes out as
2500.00, and when the file has no currency column the currency code is taken from the symbol (GBPfor the pound sign). - Dates with a month name become year-month-day.
02 Apr 2024becomes2024-04-02. A date that does not exist, such as31 Apr 2024, is not moved to the nearest valid day; the row is left out and listed, and you correct it against the bank's own record. - Blank lines are skipped, and a closing balance line is dropped and listed as a footer line, not read as a transaction.
A bank export has no fee column, so fee stays empty and net equals the amount. The running balance column is not carried over. Because rows that cannot be read are left out and not guessed, compare the sum of the amount column with the change in your balance: a gap is usually the amount of a listed row that you still have to add back.
How to do the same by hand in a spreadsheet
These steps work in Excel, Google Sheets and LibreOffice Calc. The formulas below use placeholder column letters: Date in A, Money Out in D and Money In in E. Read your own header row and change the letters to match. If your spreadsheet uses a decimal comma, write the formulas with semicolons between arguments instead of commas.
- Work on a copy and keep the downloaded file untouched.
- Remove the lines above the header so the header is in row 1, then delete blank rows and the closing balance line, after writing its balance down.
- Strip the currency symbol from the amount columns only. If the amounts stay left-aligned afterwards they are still text; remove the thousands separator in the same columns. Record the currency in its own column as the three-letter code.
- Merge the two columns with a guard.
=IF(AND(D2="",E2=""),"CHECK",N(E2)-N(D2))gives a positive number for receipts and a negative one for payments, and writesCHECKwhen both cells are empty. - Deal with every CHECK by finding the amount in the bank's own record, and look at rows where both columns are filled with
=AND(D2<>"",E2<>""). - Find dates that are not dates.
=ISNUMBER(A2)returnsFALSEfor anything the spreadsheet did not understand. Correct those against the bank's record; do not guess the nearest valid day. Then apply the custom number formatyyyy-mm-dd. - Compare with the balance. The sum of the merged column should equal the closing balance minus the opening balance. Then paste the formula column back as values, delete the two original columns and save as CSV UTF-8.
Notices
- Privacy: files are read in your browser and never uploaded, stored or logged. Operator: Augeo.
- Independent tool, not affiliated with or endorsed by Etsy, PayPal, QuickBooks or any bank.
- Check the output before you use it. This is not accounting, tax or financial advice.
- Price of the full download: 6 USD one-time. The key is for one buyer. Refunds are requested through the Gumroad receipt.
- Only upload data you have the right to process. Choosing a file here does not send it anywhere, but you remain responsible for the data in it.
Other exports
- Fix date and decimal format in a bank CSV
- Clean a PayPal activity CSV
- Clean an Etsy sold orders CSV
- Clean an Etsy monthly statement CSV
- Remove the lines above the header of a CSV
- Convert a semicolon CSV to a comma CSV
- Convert CSV dates to YYYY-MM-DD
- Remove duplicate rows from a CSV export
- Negative amounts in parentheses in a CSV
- Any other CSV export of transactions