Some bank statements print a transaction date as 12/30, with no year, and the year has to come from somewhere before a QBO, OFX or CSV file can hold the row. Evidilo takes it from the statement period printed on the same page, never from today’s date. On a statement that runs from December into January, that is the difference between 30 December last year and 30 December this year. Excel’s DATEVALUE fills a missing year from the computer’s clock instead, so whichever converter or spreadsheet you use, check the year on the first rows of a statement that crosses New Year.

Where the year on a 12/30 row comes from

A statement that leaves the year off its rows prints it once, in the header: a line such as “Statement Period 12/16/2025 through 01/15/2026”. Evidilo reads that period off the page before it reads a single row, and every yearless date is then placed in the one year that puts it inside the period. Where two years would fit, which only happens on a period longer than a year, it takes the later one.

A date printed with a two-digit year, such as 12/30/25 or 05Jan26, already states the year apart from its century, so it is placed even on a statement that prints no period. A date with a four-digit year is read as printed.

A statement that runs from December into January

On 25 October 2026 we read printed dates with the same date reader the converter runs, under the period and date order each row names, and the same yearless text with Node’s built-in date parser, which has no statement period to go on.

Measured 25 October 2026
Printed on the rowStatement periodEvidilo reads it asNode’s Date reads it as
12/302025-12-16 to 2026-01-152025-12-302001-12-30
01/022025-12-16 to 2026-01-152026-01-022001-01-02
Dec 302025-12-16 to 2026-01-152025-12-302001-12-30
12/102025-12-16 to 2026-01-15left unreadnot tested
02/292024-02-01 to 2024-02-292024-02-29not tested
02/292025-02-01 to 2025-02-28left unreadnot tested
12/30none printedleft unread2001-12-30

The two rows of one statement land in two different years, which is what the bank meant. We then read a whole one-page statement with that period line in its header, a deposit on 12/30 and a check on 01/02, the way an upload is read. The period came off the page as 16 December 2025 to 15 January 2026, and the two rows came out on 2025-12-30 and 2026-01-02.

Node put all three in 2001, and that is within its rules. MDN’s Date.parse() reference says formats outside the standard one “are implementation-defined and may not work across all browsers.” A script that converts statements with a general date parser inherits whatever year that parser picks.

A date the period cannot hold

12/10 on a statement that starts on 16 December is not a date that statement covers, and neither is 29 February in a year that has none. Evidilo leaves such a cell without a date and keeps the text the page printed, rather than moving the row into a year where it would fit. A misread digit can produce one, such as a 16 read as 10, and so can a line carried over from the previous statement.

A statement whose pages print no date of any kind cannot be placed at all. A text PDF like that is turned away at upload with the sentence “This statement prints no date we can read, so we cannot tell which period it covers.” A scan or photo is different: its period is read from the picture along with its rows. A date printed once for a whole day, with blank cells under it, is a separate problem, covered in when a bank statement prints the date once a day.

What a spreadsheet does with a date that has no year

Excel uses the clock. Microsoft’s own DATEVALUE page says that when the year is omitted, the function “uses the current year from your computer’s built-in clock.” Turn the December rows of a December-to-January statement into dates that way in March, and they take the year of March, not the year of the statement.

That is one more reason to have the converter write the year into the file rather than leave it to whatever opens it. Which file to open, CSV or Excel covers the other choices a spreadsheet makes on a CSV that an Excel file settles in advance.

03/04: day first or month first

03/04 is 4 March on a statement that prints the month first and 3 April on one that prints the day first, and nothing in the four digits says which. Evidilo settles the order once for the whole statement, not row by row. Any date on the page with a part above 12, such as 03/14 or 14/03, decides it. Where none does, the order that keeps the dates inside the printed period wins, and a statement that settles nothing is read month first. Under a March-to-April period, our 03/04 read as 2026-03-04 month first and as 2026-04-03 day first.

What to check before you import

  1. Find the statement period in the header and note whether it crosses 31 December. If it does not, a yearless date has only one year it can be in.
  2. If it does, open the converted file and look at the first and last rows. December rows belong to the earlier year and January rows to the later one.
  3. Count the rows on the statement against the file for the month you are checking. A row a reader left without a date, because its date fell outside the period, is the one to look up on the paper statement.
  4. On a statement printed outside the US, check one date with a day above 12 to confirm the order was read the right way round.
  5. Import once the years match. A row a year out can land in a period you have already closed or reconciled, and importing a PDF statement into QuickBooks covers what a second import of the same month does.

What Evidilo is

Evidilo is a bank statement to accounting import file converter that takes a missing year from the period the statement prints, so the file it writes carries a full date where the page printed only a day and a month. It turns a PDF, a scan or a photo of a paper statement into QBO, IIF, OFX, QFX, QIF, CSV or Excel, and adds up every row against the opening, closing and daily balances the bank printed, marking the first day that does not tie out. Three statements a day convert free, up to 10 pages each, without an account.

How was this checked?

On 25 October 2026 we read 13 printed dates with Evidilo’s production date reader, three yearless ones with Node v22.23.4’s Date, and one synthetic statement page with and without its period line through the same steps an upload takes, all through vitest 3.2.7. Excel was not run; its behaviour is Microsoft’s own statement. The results are in dataset.csv, and check.py repeats every reading and re-reads the Microsoft and MDN pages.

Questions about statement dates without a year

Why does my bank statement show dates without a year?

The statement prints the year once, in its period line, and leaves it off each row to save width. Evidilo reads that period first and gives every row the year that puts it inside it. A tool that reads the rows without the header has to find the year somewhere else.

Why are my December transactions in the wrong year after converting?

Usually because the year came from the clock rather than the statement. Evidilo placed 12/30 on a December-to-January statement in 2025 and 01/02 in 2026 in our test. Excel’s DATEVALUE, by Microsoft’s own page, uses the current year when the year is missing, and DocuClipper or any other converter is worth the same check on its December rows.

What happens to a date that falls outside the statement period?

Evidilo leaves it without a date and keeps the printed text, so it is not written on a day the statement does not cover. Look that row up on the statement. MoneyThumb, DocuClipper or a script may handle the same row differently, so on any of them compare the first and last dates of the file with the period printed in the header.

Can Evidilo read a statement with no period printed anywhere?

If its rows print a two-digit or four-digit year, yes, because those dates carry their own year. If nothing on a text PDF dates it, Evidilo turns it away at upload rather than guess. A scan or photo has its period read from the picture.

How does Evidilo tell 03/04 as March from 03/04 as April?

It decides once per statement, from any date on the page with a part above 12, then from the order that keeps the dates inside the printed period, and month first when neither settles it. In our test the same 03/04 read as 4 March or 3 April depending on that one setting. On a statement from outside the US, check one date with a day above 12.