*** September 2026 Major Release ***Read and watch
Document type

Extracting data from Form 1065 returns

Partnerships file more than four million Form 1065 returns a year, each printed by its preparer's tax software on that year's IRS layout. Mortgage lenders collect two years of them from every borrower who owns 25% or more of a partnership, uploaded to a borrower portal as PDFs and scans.

An underwriter needs the partnership's EIN and tax year, its ordinary business income, and the depreciation and depletion it deducted. A cash flow analysis such as Fannie Mae Form 1084 adds those non-cash deductions back to arrive at the income a borrower qualifies on.

Page 1 of a sample Form 1065 - Partnership Income, with extracted values outlined
7,036Markdown characters
167parse blocks
75fields extracted
The problem

What makes Form 1065 returns hard

Lines change between tax years

The IRS revises the form each year, and line 20 has carried both other deductions and the energy efficient commercial buildings deduction.

Checkbox rows in the header

Rows G to K set return type, accounting method and partnership elections with checkboxes, several to a printed line.

Page 1 opens a long filing

The balance sheet on Schedule L and a Schedule K-1 for every partner follow page 1, all in one filing.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One Form 1065, end to end

About this document: Page 1 of a Form 1065, filled with placeholder data and published by a document AI vendor as its sample. One portrait page: the partnership's header, checkbox rows G to K, 32 numbered amount lines, and the signature and paid preparer blocks. Page 1 is featured. The data is invented and shown unredacted.

Processing objective: The objective is to capture who filed the return and where it ended up, along with the state of one checkbox. The checkbox comes back as a boolean, and the ordinary business loss comes back as a negative number read from the printed minus sign.

Demonstration fields: Partnership name, EIN, Schedules C and M-3 attached (row J), Total income (line 8), Ordinary business income (line 23)

The document

1 page
  • Page 1 of the sample Form 1065 - Partnership IncomePage 1shown below

Where each value came from

Page 1 of the sample Form 1065 - Partnership Income, with every featured field outlined
Partnership namepartnership.name
Sample Software Service
The region of the sample Form 1065 - Partnership Income containing Partnership name, with the extracted value outlined
extraction_metadata["partnership.name"]
{
  "value": "Sample Software Service",
  "page": 1,
  "range": {
    "end": 494,
    "start": 448
  },
  "box": {
    "xmin": 0.24714,
    "ymin": 0.10588,
    "xmax": 0.8003,
    "ymax": 0.13611
  }
}
EINpartnership.ein
12-3456789
The region of the sample Form 1065 - Partnership Income containing EIN, with the extracted value outlined
extraction_metadata["partnership.ein"]
{
  "value": "12-3456789",
  "page": 1,
  "range": {
    "end": 804,
    "start": 761
  },
  "box": {
    "xmin": 0.80123,
    "ymin": 0.10609,
    "xmax": 0.94312,
    "ymax": 0.13403
  }
}
Schedules C and M-3 attached (row J)schedules_c_and_m3_attached
true
The region of the sample Form 1065 - Partnership Income containing Schedules C and M-3 attached (row J), with the extracted value outlined
extraction_metadata["schedules_c_and_m3_attached"]
{
  "value": true,
  "page": 1,
  "range": {
    "end": 1270,
    "start": 1218
  },
  "box": {
    "xmin": 0.05646,
    "ymin": 0.25953,
    "xmax": 0.93916,
    "ymax": 0.27264
  }
}
Total income (line 8)income.total_income
15,000
The region of the sample Form 1065 - Partnership Income containing Total income (line 8), with the extracted value outlined
extraction_metadata["income.total_income"]
{
  "value": 15000,
  "page": 1,
  "range": {
    "end": 2653,
    "start": 2644
  },
  "box": {
    "xmin": 0.82376,
    "ymin": 0.4092,
    "xmax": 0.94309,
    "ymax": 0.42416
  }
}
Ordinary business income (line 23)deductions.ordinary_business_income
-76,000
The region of the sample Form 1065 - Partnership Income containing Ordinary business income (line 23), with the extracted value outlined
extraction_metadata["deductions.ordinary_business_income"]
{
  "value": -76000,
  "page": 1,
  "range": {
    "end": 4561,
    "start": 4551
  },
  "box": {
    "xmin": 0.82365,
    "ymin": 0.65121,
    "xmax": 0.94319,
    "ymax": 0.66649
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans.

Compare plans
Capabilities

Form 1065 processing highlights

Every numbered amount line
Lettered sub-lines like 16a
Checked and unchecked boxes
Losses as negative numbers
EIN and business code
Initial, final and amended flags
Accounting method selection
Paid preparer block
Signature detection
Native PDFs and scans
Labels that change by year
Bounding box for every value
FAQs

Questions, answered

Yes. Parsing writes every checkbox into the Markdown in one standard form, marked checked or unchecked beside its label. Define each box as a boolean in your schema and it comes back true or false.

A loss printed with a minus sign comes back as a negative number when the field is typed as a number, with the thousands separators removed. Grounding still points at the figure as the preparer's software printed it.

Yes. Describe each field by what it means, and use x-alternativeNames to list the other labels it may appear under. That helps extraction locate a value whose wording or line number changed in a later revision.

Every extracted value carries the character range it was quoted from in the parsed Markdown. The Ground API maps that range to a page and a bounding box, so a reviewer sees each amount on the line it came from.

A Form 1065 carries the partnership's EIN and address, and the paid preparer's name and PTIN. A schema can ask for the figures alone. Accounts are available with zero data retention, alongside SOC 2 Type II, GDPR and HIPAA compliance.

Start extracting Form 1065 data

Reliable, structured outputs with full traceability in minutes