LedgerDrop

Bank statement layouts LedgerDrop is tested on

LedgerDrop does not look up your bank. It reads the layout of the PDF — where the dates, descriptions and amounts sit, and which way each amount points — so it is not limited to the banks below, and it can also get an unusual statement wrong. What is below is the set it is held to: 15 fictional statements, laid out like statements from the United States, Canada, Australia and Singapore, three published by another developer for testing parsers, and one in Spanish. A change that loses one row or gets one amount wrong on any of them does not ship.

The quickest way to know whether it reads yours is to try it. The converter shows the whole table and checks it against the balances the statement prints, free, on a statement of any length; nothing is uploaded. Each layout below is named by its type rather than by a bank, because a bank's name is its trademark and because the layout is what the converter actually reads.

How each layout is tested

Every statement has an answer file: each transaction's date, amount and sign. The test converts the PDF and fails on one missed row, one extra row, or one amount, date or sign that differs from the answer. It then converts the same statement again with each of these changes that applies to it — things a bank could equally print — and the answer has to stay the same: page numbers and footers with numbers in them, amounts grouped with spaces or with dots (1.234,56), a typographic minus or brackets for a negative amount, no balance column, a page break inside the table, the year printed only at the end of the period, and stray years elsewhere on the page. The pictures below are drawn for this page with a fictional bank and invented rows, in the layout described.

Jump to: United States · Canada · Australia · Singapore · third-party test statements · other languages

United States

US bank, checking: sections set the sign

Country
United States
Account
Personal checking
Columns
Date | Description | Amount, repeated under each section heading
Dates
MM/DD with no year; the statement period runs from December into January
Signs
No signs on the amounts. The section heading says which way the money went: deposits and additions, card withdrawals, electronic withdrawals, fees
Totals
A "Total …" line closes each section; a block of daily ending balances follows the transactions
A fictional personal checking statement in this layout. Columns: DATE, DESCRIPTION, AMOUNT.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • each row takes its sign from the section it sits under
  • December rows get the earlier year and January rows the later one
  • the section totals and the daily-balance block give no rows

US bank, checking: minus printed on withdrawals

Country
United States
Account
Personal checking
Columns
Date | Description | Amount, under section headings
Dates
MM/DD/YY, and the description starts with the same MM/DD again
Signs
Withdrawals carry a printed minus ("-176.44"); deposits have none
Totals
"Total deposits and other additions" and "Total withdrawals and other subtractions"; headings repeat with "- continued" after a page break
A fictional personal checking statement in this layout. Columns: Date, Description, Amount.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the MM/DD repeated at the start of a description is not taken for the row's date
  • the printed minus is the sign
  • the totals and the "- continued" headings give no rows

US bank, checking: deposits and withdrawals in two columns

Country
United States
Account
Personal checking
Columns
Date | Check Number | Description | Deposits/Credits | Withdrawals/Debits | Ending daily balance
Dates
M/D with no year
Signs
No signs; the column an amount sits in says which way it went
Totals
The balance is printed only on the last row of each day, so most balance cells are empty; an ending balance and totals row at the end
A fictional personal checking statement in this layout. Columns: Date, Check, Description, Deposits/ Credits, Withdrawals/ Debits, Ending daily balance.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • a cheque number in its own column is not taken for an amount
  • an amount next to an empty balance cell keeps its column, and so its sign
  • the totals row gives no row

US bank, checking: one signed amount and a balance

Country
United States
Account
Personal checking
Columns
Date | Description | Amount | Balance
Dates
Month name, day and year ("Feb 3, 2026")
Signs
One amount column, with "-$" on money going out and "$" on money coming in
Totals
None in the table; an account summary above it; "Transactions (continued)" on the next page
A fictional personal checking statement in this layout. Columns: Date, Description, Amount, Balance.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • dates written with the month's name
  • the "-$" sign

US credit card: charges and payments, no balance column

Country
United States
Account
Credit card
Columns
Date | Description | Amount, under "Payments and Credits" and "New Charges"
Dates
MM/DD/YY
Signs
Printed from the card's side: payments and refunds as "-$", charges as "$". LedgerDrop turns them round so that money leaving you is negative
Totals
A total under each section; no running balance, only the previous and new balance in the summary
A fictional credit card statement in this layout. Columns: Date, Description, Amount.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the card's signs are reversed, so a charge comes out negative and a payment positive
  • the two detail lines under each charge and the cardholder line give no rows

Canada

Canadian bank, personal chequing

Country
Canada
Account
Personal chequing
Columns
Date | Description | Withdrawals ($) | Deposits ($) | Balance ($)
Dates
D Mon ("15 Mar"), with no year, printed on the first row of a day only
Signs
No signs; separate withdrawal and deposit columns. An amount under a dollar can be written ".15"
Totals
An "Opening balance" row with no date; the balance printed on the last row of a day only; a summary with "+", "-" and "=" before the amounts
A fictional personal chequing statement in this layout. Columns: Date, Description, Withdrawals ($), Deposits ($), Balance ($).
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • a row without a date takes the date of the row above
  • an amount written ".15" is read as 0.15
  • the opening balance row is not a transaction

Canadian bank, credit card with a side panel

Country
Canada
Account
Credit card
Columns
DATE | ACTIVITY DESCRIPTION | AMOUNT ($), with a panel of rewards, payment and interest figures on the same lines to the right
Dates
D-Mon ("10-Jul"), one date per row; the year only in "STATEMENT FROM … TO …"
Signs
"$" on every amount; a payment or credit is negative, per the bank's guide to reading the statement
Totals
"PREVIOUS STATEMENT BALANCE" as the first line of the table and "NEW BALANCE" as the last; an interest rate chart below
A fictional credit card statement in this layout. Columns: DATE, ACTIVITY DESCRIPTION, AMOUNT ($).
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the figures in the side panel are not read as amounts
  • the year taken from the statement period
  • a payment comes out positive and a purchase negative
  • the previous and new balance lines give no rows

Australia

Australian bank, personal transaction account

Country
Australia
Account
Personal transaction account
Columns
Date | Transaction Details | Withdrawals ($) | Deposits ($) | Balance ($)
Dates
DD MON in capitals ("05 AUG") with the year on a line of its own above the opening row
Signs
No signs; withdrawals and deposits in separate columns, a balance on every row
Totals
"TOTALS AT END OF PAGE" and "TOTALS AT END OF PERIOD", written with "$"; a summary box on the first page
A fictional personal transaction account statement in this layout. Columns: Date, Transaction Details, Withdrawals ($), Deposits ($), Balance ($).
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the year taken from its own line above the table
  • neither totals line gives a row

Australian bank, business transaction account

Country
Australia
Account
Business transaction account
Columns
Date | Transaction Details | Withdrawals ($) | Deposits ($) | Balance ($)
Dates
DD MON, the year on its own line above the opening row
Signs
No signs; separate withdrawal and deposit columns, a balance on every row
Totals
The same "TOTALS AT END OF PAGE / PERIOD" lines as the personal account; the summary is in title case ("Opening Balance:")
A fictional business transaction account statement in this layout. Columns: Date, Transaction Details, Withdrawals ($), Deposits ($), Balance ($).
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the year line above the opening row
  • the title-case summary and both totals lines give no rows

Australian bank, business card with GST columns

Country
Australia
Account
Business card facility
Columns
Date | Description | Amount | Default GST* | Actual GST, one table per cardholder
Dates
DD/MM/YYYY on every row
Signs
Every row in the sample is a purchase or interest, printed without a sign
Totals
"Sub-total" after each cardholder's group, the headings again for the next group, and the closing account balance outside the table
A fictional business card facility statement in this layout. Columns: Date, Description, Amount, Default GST*, Actual GST.
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • the GST figure beside an amount is not taken for the amount
  • the sub-totals give no rows
  • the rows under the second set of headings are read as well as the first

Singapore

Singapore bank, consolidated statement

Country
Singapore
Account
Deposit account inside a consolidated statement
Columns
Date | Description | Withdrawal (-) | Deposit (+) | Balance (SGD)
Dates
DD/MM/YYYY on every row
Signs
No signs in the table; withdrawal and deposit columns. In the account summary an overdrawn balance is written with the minus after it ("5,100.00-")
Totals
"Balance Brought Forward" with no date, "Total Balance Carried Forward" with both totals, and interest messages under the table that are not rows
A fictional deposit account inside a consolidated statement statement in this layout. Columns: Date, Description, Withdrawal (-), Deposit (+), Balance (SGD).
Laid out like the sample statement the bank publishes. The rows are invented.

Checked, besides every row’s date, amount and sign:

  • a description line printed above the date line gives no row of its own
  • a row with no balance is still read
  • the brought-forward and carried-forward lines and the interest messages give no rows

Third-party test statements

Rupee checking statement, reference lines under each row

Country
India-style (INR), third-party test statement
Account
Checking
Columns
DATE | DESCRIPTION | DEPOSIT | WITHDRAWAL | BALANCE
Dates
DD-MM-YYYY on every row
Signs
No signs; deposit and withdrawal columns, and "CR" printed with the balance
Totals
Opening and closing balance in a banner above the table; no total lines
A fictional checking statement in this layout. Columns: DATE, DESCRIPTION, DEPOSIT, WITHDRAWAL, BALANCE.
A synthetic statement published by another developer for testing parsers, under the MIT licence.

Checked, besides every row’s date, amount and sign:

  • the reference lines under each row and the "CR" by the balance give no rows or amounts

Rupee salary account, description above the date

Country
India-style (INR), third-party test statement
Account
Salary savings account
Columns
DATE | DESCRIPTION | DEPOSIT | WITHDRAWAL | BALANCE
Dates
DD-MM-YYYY, printed on the second line of each entry: the first line of the description sits above it
Signs
No signs; deposit and withdrawal columns
Totals
No totals; the account banner is printed again on the next page with "CONTINUED"
A fictional salary savings account statement in this layout. Columns: DATE, DESCRIPTION, DEPOSIT, WITHDRAWAL, BALANCE.
A synthetic statement published by another developer for testing parsers, under the MIT licence.

Checked, besides every row’s date, amount and sign:

  • a description line above the date line gives no row of its own
  • the banner repeated on the second page gives no rows

Rupee business current account over three months

Country
India-style (INR), third-party test statement
Account
Business current account
Columns
DATE | DESCRIPTION | DEPOSIT | WITHDRAWAL | BALANCE
Dates
DD-MM-YYYY on the first line of each entry; the period spans March to May
Signs
No signs; deposit and withdrawal columns
Totals
No totals; the opening and closing balance banner repeats on each page
A fictional business current account statement in this layout. Columns: DATE, DESCRIPTION, DEPOSIT, WITHDRAWAL, BALANCE.
A synthetic statement published by another developer for testing parsers, under the MIT licence.

Checked, besides every row’s date, amount and sign:

  • every row over three pages, with the account banner on each, read as one statement

Other languages

Spanish-language current account: you name the columns

Country
Spanish-language statement
Account
Current account (cuenta corriente)
Columns
Fecha | Concepto | Importe | Saldo
Dates
DD/MM/YYYY
Signs
One signed amount column ("-128.44"), a balance on every row
Totals
Opening and closing balance (Saldo inicial, Saldo final) above the table
A fictional current account (cuenta corriente) statement in this layout. Columns: Fecha, Concepto, Importe, Saldo.
A statement written for these tests; no bank's sample was copied.

Checked, besides every row’s date, amount and sign:

  • nothing is guessed: the headings are not ones LedgerDrop knows, so it finds no rows until you say which column is the date, the description, the amount and the balance
  • once named, every row comes out

Try your own statement → The table and the balance check are free at any length, and the PDF stays in your browser.

What it does not read

A scanned statement: a picture of a page has no text in it, and LedgerDrop does not do OCR. Is your bank statement PDF scanned or text? shows three ways to tell. A statement whose headings are in a language it does not know comes out empty until you name the columns, as the Spanish one above does. And a layout unlike any of these can be misread; the balance check is there to say so when it happens, and how to check a converted CSV for errors covers what to do next.

Questions

Does LedgerDrop support my bank?

Probably, if your bank's statement is a text PDF with one row per transaction — but LedgerDrop has no list of banks to check against, because it never reads the bank's name. It finds the table by its layout. The layouts on this page are the ones it is tested on; a statement laid out like one of them is the likeliest to convert cleanly. Converting yours shows the full table and the balance check free, so you can see the answer before deciding anything.

My bank's layout is not on this list. Will it work?

It may well. The test set covers the things that vary between banks — one signed amount column or separate debit and credit columns, dates with or without a year, a running balance or none, totals and section headings inside the table — rather than particular banks. If the result is wrong, the balance check will usually not reconcile, and the column controls in the converter let you say which column is which.

Can I convert a bank statement to CSV from my country?

The tested layouts come from the United States, Canada, Australia and Singapore, with a set of rupee statements made by another developer and one in Spanish. Amounts in other currencies are read the same way; LedgerDrop writes the numbers and does not convert currency. Dates written day first (31/08/2026) and month first (08/31/26) are both in the set.

Does it read credit card statements?

Yes; three of the layouts are cards. A card statement prints charges as positive and payments as negative, the reverse of a bank account, and LedgerDrop turns them round so that in the CSV money leaving you is negative, the same as on a current account.

What if the column headings are in another language?

LedgerDrop recognises the headings it knows, which are English. On a statement headed Fecha, Concepto, Importe and Saldo it finds no columns at all rather than guessing. You then pick which column is the date, the description, the amount and the balance in the converter, and every row comes out. Naming the columns is free.

More on getting the CSV right: should debits be negative in a bank CSV?, why a converted CSV shows the wrong year, and all the guides.