Bank statement periods often run mid-month to mid-month, so they do not line up with a January to December tax year. To get correct yearly totals, use the row dates, not the statements. Take the statement that crosses December 31, split its rows at that date, and add each half to the right year.
Why do bank statement periods rarely match the tax year?
Each account has its own statement cycle, and its closing date is often not the last day of the month. A checking account might close its statements on the 14th of every month, and a credit card on the 22nd. The tax year, for most individuals, is the calendar year from January 1 to December 31.
So a typical year of statements does not cover the tax year cleanly. Twelve statements from mid-January to mid-January leave out the first two weeks of the year and include two weeks of the next one. Hold three or four accounts and each one is offset by a different number of days.
Two shortcuts both give wrong totals:
- Taking the twelve statements dated in the year. You miss early January rows and include late December rows from the prior year.
- Taking the thirteen statements that touch the year. You count two half-months twice across two returns.
The calendar year definition is formal, not just a convention. IRS Publication 538 on accounting periods and methods defines a calendar year as 12 consecutive months starting January 1 and ending December 31.
Which tax year gets a row from a statement that crosses December 31?
Under the cash method, which most individuals and many small businesses use, a row belongs to the year it happened. Publication 538 says you include income in the year you actually or constructively receive it, and income is constructively received when it is credited to your account. Expenses are generally deducted in the year you pay them.
That means the date printed on the row decides the year, not the statement's closing date. A client payment credited on December 29 is income for that year, even if it appears on a statement dated January 14. A payment you made on January 2 counts in the new year, even if you meant it to settle a December bill.
This rule is what makes the split possible. Each row carries its own date, so it can be sent to the right year without guessing.
Splitting the December to January statement by row date
Splitting the crossing statement takes five minutes in a spreadsheet. Put all of the statement's rows in one sheet with their dates. Add a Tax year column that reads the year from each date. Then total each year separately. The same column works on every other statement too, so the whole year sorts itself.
The steps:
- Collect every statement that touches the year, including the one that starts in December of the prior year and the one that ends in January of the next.
- Put the rows in one sheet with columns for date, description and amount.
- Add a Tax year column with
=YEAR(A2)and fill it down. - Total by year with
=SUMIFS(C:C, D:D, 2026)for the year you are filing, and a second formula for each category you need. - Keep the out-of-year rows. Leave them in the sheet with their year, so you can show where they went.
If you already keep a monthly spending sheet with a Month column, you can add the year beside it. The layout in the free budget spreadsheet template for statement data already has a month label column you can adapt.
Worked example: a December 15 to January 14 statement period
This worked example splits one invented checking statement that runs from December 15, 2026 to January 14, 2027. Every row and amount is made up. Seven rows land in two tax years, and each total goes to a different return.
| Date | Description | Amount | Tax year |
|---|---|---|---|
| 2026-12-16 | CLIENT PAYMENT NORTHWIND | 1,200.00 | 2026 |
| 2026-12-20 | ADOBE CREATIVE CLOUD | -59.99 | 2026 |
| 2026-12-29 | CLIENT PAYMENT LAKESIDE | 850.00 | 2026 |
| 2026-12-31 | HEALTH PLAN PREMIUM | -412.00 | 2026 |
| 2027-01-02 | HEALTH PLAN PREMIUM | -412.00 | 2027 |
| 2027-01-06 | CLIENT PAYMENT NORTHWIND | 900.00 | 2027 |
| 2027-01-11 | ADOBE CREATIVE CLOUD | -59.99 | 2027 |
The 2026 part holds $2,050.00 of client income and $471.99 of costs. The 2027 part holds $900.00 of income and $471.99 of costs. Counting the whole statement as 2026 would overstate that year's income by $900 and its costs by $471.99.
The premium rows show why the split matters for specific deductions. The deduction for health premiums paid by a self-employed person has its own rules, set out in records for the self-employed health insurance deduction. A premium paid January 2 does not count toward the earlier year, whatever month of coverage it buys. The software rows matter the same way; whether those subscriptions count as a business cost is covered in whether software is tax deductible.
Statement period edge case: transaction date versus posting date
Some statements print two dates per row: the transaction date, when you bought something, and the posting date, when the bank recorded it. Near December 31 they can fall in different years. A purchase on December 30 may post on January 2, and the year you assign depends on which date you use.
Pick one rule and apply it consistently. For deposits, Publication 538 points to the date an amount is credited to your account, which is the posting date. For a card purchase made in one year and posted in the next, ask your preparer which year to use, and note the answer in your sheet for next time.
Watch for these other cross-year cases:
- Pending rows. A pending charge on the last statement of the year may not appear at all until the next statement. Look for it there.
- Checks. A check written in December and cashed in January shows the cash date on the statement. Keep your check record to show when it was written and mailed.
- Interest. Interest credited on December 31 is a December row, even when the statement prints it last.
When your statements arrive as PDFs, the split needs the rows in a sheet first. CheapBankConvert is being built to convert a statement to CSV or Excel for a single payment per document, with the first 2 pages previewed free. It has not opened yet; get started to hear when it does.