The file has forty-seven pages. A Form 1040 with a Schedule 1 attached, one Schedule C for a design practice, a Schedule E, and two Schedules K-1 from two partnerships the borrower holds a stake in. Everything is signed, everything reconciles, and the tax was paid. The underwriter opens it looking for one number and there is no page that prints it.
That is not a defect of the documents. A tax return is a computation of what is owed, assembled from schedules written by different parties, each of which exists to justify a figure on the line above it. None of it was written to describe what a household can pay every month. A paystub was — approximately, and for a salaried person — and that difference is why self-employed income files take an hour and salaried ones take five minutes.
The work an extraction system can honestly do here is smaller than “read the income” and more useful than OCR. It can identify each schedule, attribute every figure to the business or entity it belongs to, carry the tax year the form itself states, and hand back the lines that the credit decision will have to reason about — without collapsing them into a single field the return never contained.
What each form is a record of
Four documents carry most of the weight, and they are records of four different things.
Schedule C (Form 1040) is titled Profit or Loss From Business (Sole Proprietorship). It is the filer describing their own business: box F states the accounting method as cash, accrual or other, and box G asks whether the filer materially participated in the operation. Its bottom line, line 31, is net profit or loss, and the form itself says where that figure goes next — “enter on both Schedule 1 (Form 1040), line 3, and on Schedule SE, line 2.”
Schedule 1 (Form 1040) line 3 is where the business result joins the personal return: Business income or (loss). Attach Schedule C. It is a destination, not a source. Reading line 3 alone tells you a number with none of the structure that produced it.
Schedule K-1 (Form 1065) is a different kind of document altogether: it is issued by a partnership about a partner. The filer did not write it, and cannot change it. Its header prints “For calendar year 2025, or tax year beginning … ending …”, so the period it describes is a field on the page rather than an assumption.
Schedule E (Form 1040), Part II, is where those K-1 amounts land on the individual return, under the heading Income or Loss From Partnerships and S Corporations. It is an aggregation layer, and like Schedule 1 line 3 it hides the structure it summed.
The lines were computed to settle a tax bill
Line 31 is net profit after every deduction the filer was entitled to take, and several of those deductions are not a description of money that left the household in the period.
Line 13 is Depreciation and section 179 expense deduction (not included in Part III). Depreciation spreads the cost of an asset bought in an earlier year across this one; a section 179 election does the opposite, expensing an asset bought this year in full. Both sit on the same line, which means the line mixes a non-cash allocation of an old purchase with the immediate write-off of a new one — and the new one may well have been financed, so there is a loan payment somewhere that the deduction does not describe.
Line 30 is expenses for business use of the home, computed either on Form 8829 or by the simplified method from square footage. Line 9, car and truck expenses, may be actual cost or a statutory rate per mile. Line 24b, deductible meals, is a limited share of what was actually spent, so the figure on the return is smaller than the money that moved.
Whether any of those lines is added back, in whole or in part, is a credit policy decision. This article does not make it, and neither should an extraction system. What the extraction owes the decision is the line itself — identified as line 13 of a particular Schedule C, for a named business, in a stated tax year — so that whoever holds the policy can apply it to something specific.
Schedule C, line by line, and the question each one forces
| Line or box | What it records | The question it forces |
|---|---|---|
| Box F — accounting method | Cash, accrual, or other. | On accrual, line 1 counts invoices raised, not money received. The timing question comes before any arithmetic. |
| Box G — material participation | Whether the filer worked the business during the year. | Whether this is a job or a holding, which changes how a loss on line 31 behaves. |
| Line 1 / line 7 — gross receipts, gross income | Top line, before and after cost of goods sold. | Says nothing about capacity on its own, and everything about direction once you have three years of it. |
| Line 9 — car and truck | A deduction at a statutory rate per mile, or actual cost. | Whether a cash outflow of that size happened at all. |
| Line 13 — depreciation and section 179 | Allocation of an old purchase and full expensing of a new one, on one line. | Which of the two it is, and whether the asset behind it carries a note. |
| Line 30 — business use of home | A share of housing cost, from Form 8829 or square footage. | Whether the same housing cost is already counted as an obligation elsewhere in the file. |
| Lines 32a / 32b — at-risk boxes | Whether all investment in the activity is at risk. | A financing structure the profit-and-loss never shows, recorded as a single checkbox. |
Note what the last row is. It is not an amount. Three of the seven rows above are boxes, not figures, and each one changes how the numbers beside it should be read. An extraction schema built only from currency fields discards them, and the discard is silent.
The K-1 says three different numbers about one partner
Schedule K-1 is where the single-number instinct fails most clearly, because the form prints several numbers about the same partner and they are not variants of one another.
| Line or item | What it records | Why it is not income received |
|---|---|---|
| Part III, line 1 — ordinary business income (loss) | The partner’s allocated share of what the entity earned. | Allocated. The partner is taxed on it whether or not a dollar was ever sent. |
| Part III, line 19 — distributions | What the entity actually paid out to the partner. | Received, but it may be a distribution of an earlier year’s earnings, or of capital. |
| Part III, lines 4a / 4b / 4c — guaranteed payments | Paid for services or for capital, regardless of profit. | The closest thing on this form to a wage, and it is reported separately from line 1 for that reason. |
| Part III, line 14 — self-employment earnings (loss) | The portion subject to self-employment tax. | A third denominator, which need not equal line 1. |
| Part II, item J — share of profit, loss and capital | Three percentages, each with a beginning and an ending value. | Six numbers where a schema usually has one field called “ownership”. |
| Part II, item L — capital account analysis | Beginning capital, contributions during the year, current-year net income. | The direction of the stake, which no single line of Part III shows. |
Take a partner with a 40% profit share, $120,000 on line 1 and $30,000 on line 19. They owe tax on a hundred and twenty thousand dollars and they received thirty. Both figures are true, neither is disposable income, and an extraction that returns one of them under the label income has made an editorial decision it was not asked to make.
Item J deserves its own warning. It prints profit, loss and capital as three separate percentages, and each one twice — beginning and ending — because a partner’s share can change during the year. A schema with a single ownership_pct field cannot hold that document. It will store one of six numbers and lose the fact that the other five existed.
One return, many schedules
A filer may run two businesses and attach two Schedules C. A filer may hold four partnership interests and attach four K-1s. Schedule E Part II anticipates exactly this: line 28 has lettered rows A, B, C and D, each with its own name, its own employer identification number in column (d), and two checkboxes — column (e) for whether a basis computation is required and column (f) for whether any amount is not at risk.
So the top-level shape of a tax return extraction is a list, not a record. Every figure has to travel with the entity it belongs to: the EIN in Part I of a K-1, or the business name and code in boxes B, C and D of a Schedule C. A schema that exposes schedule_c.net_profit as a scalar is correct until the second business arrives, and then it is confidently wrong — which is worse than empty, because nothing in the output signals that a page was dropped.
The same discipline applies to the year. The K-1 header carries a beginning and an ending date because a partnership need not use the calendar year, so two K-1s in one envelope can describe two different periods. The tax year belongs in the extraction output as a field read from the form, never inferred from the filing date or the file name.
What the extraction has to deliver
Everything above reduces to a short contract between the document and whatever reads it next.
- Form identity before field identity — “line 13” is meaningless until the page is known to be a Schedule C (Form 1040) for a named business in a stated year. The same number on another schedule is a different fact.
- A list, not a record — schedules repeat, so every value carries its entity, by EIN wherever the form prints one.
- The checkboxes, not only the currency — material participation, the two at-risk boxes, the basis-computation flag. One bit each, and each one reframes the amounts around it.
- Empty distinguished from unread — a blank line 13 says the filer claimed no depreciation. A line the extractor could not read says nothing at all, and the two must not arrive as the same zero.
- A citable origin for every value — the page and the region it came from, so a reviewer can land on the line rather than search the return. That is the same coordinate contract any reviewable extraction owes.
Not the paystub, and not the company spread
Two neighbouring problems are easy to confuse with this one, and both are genuinely different.
For a salaried borrower, the file is a paystub, a W-2 and a deposit, and the interesting property is that the three should not match: gross, taxable and net are distinct identities, and the reconciliation is between independent records of one employment. A self-employed file has no employer and no third witness. The Schedule C was written by the filer, and the only document in the stack produced by someone else is the K-1 — which is why the K-1 carries more weight here than its size suggests.
When the borrower is a company rather than a person, the exercise is spreading a credit packet: financial statements, a return, bank statements and payroll records normalized into one comparable view of one entity. Here the borrower is a person, and the business is a channel through which some of their income arrives. The company’s statement gets spread; the person’s return gets decomposed. One is normalization across documents, the other is attribution within one.
The number nobody printed
A tax return does not contain the figure an underwriter is looking for, and no amount of extraction quality will put it there. Every line on it was computed for a different purpose, by a filer or a preparer or a partnership, under rules that answer a question about tax rather than about capacity.
What a document system can do is hand over each of those lines intact — attributed to a schedule, a business and a year, with the checkboxes beside them and a coordinate behind each one — and stop there. The decision about which lines matter belongs to a credit policy that someone owns and can version. The extraction’s job is to make that policy applicable to this borrower’s documents, not to guess its conclusion.
