River
Y CombinatorBacked by Y Combinator

Finance & AccountingFree

K-1 and 1099 Data Intake

Every box off every form, with the ones the form itself says are not yet numbers kept out of the totals.

Start here

River's K-1 and 1099 intake reads a stack of tax forms into one schedule, box by box, and keeps two columns nobody else keeps. One says where each figure came from, down to the page. The other says why a figure is not there: the form pointed at an attachment nobody scanned, the payer declared the taxable amount undetermined, or the scan itself was not legible. Those three are different problems and they get different flags.

Extraction products compete on accuracy, and accuracy is the wrong measure. A tax form is designed to tell you when a number is not available. The partnership writes a marker instead of a dollar amount. The payer ticks a box saying the taxable amount was never determined. Copy the boxes and you inherit a schedule that looks finished while missing the figures the return actually turns on. The trial balance normalizer takes the same view of a chart of accounts nobody documented.

Written for the preparer or bookkeeper facing a March stack, and for the family office assembling the same forms across several returns. Run it as the forms arrive rather than in one sitting, because the flags tell you which sponsors to chase in February instead of April. It pairs with the client filing calendar pack for the deadlines, the books diagnostic on a first-season client, and the payroll filing reconciliation for the W-2s in the stack. A prior-year 1099 stack read here seeds the contractor 1099 filing pack's vendor list instead of a blank one.

A form that says STMT is telling you something

Schedule K-1 has a convention for this and it is in the instructions. Where an item cannot be reported as a single dollar amount, the partnership puts an asterisk in the code column and writes STMT in the dollar box, because the figure lives on an attached page. Boxes 22 and 23 have no dollar box at all, only a checkbox and a footnote pointing at the same attachment. Read the face alone and those items are silently zero.

One return group, 74 forms, 994 populated boxes. Nine could not be read confidently, a 99.1 percent read rate, and that number is not the story. Twenty-two figures were declared unusable by the forms themselves. Fourteen were starred K-1 items whose statement was not in the file. Three were distributions where the payer ticked taxable amount not determined. Five were composites reporting basis as unvouched. Six of those 14 were section 199A information, and the deduction riding on them is up to 97,460.

Two more traps have nothing to do with reading quality. Six K-1s had the Schedule K-3 box checked and four of those K-3s had not arrived, so those returns are blocked whatever the boxes say. And the code list moves annually: the 2025 instructions added a farmland installment election under box 20, expanded box 13 code X, and recoded box 19 by category. A mapping built last season is already wrong, and the reserved codes say more are coming.

How it works

  1. Drop in the stack

    Every K-1, 1099 and W-2 in whatever shape it arrived, including photographs of paper.

  2. Say what it feeds

    Which return or returns these belong to, and any layout your tax software needs.

  3. River reads and flags

    Every box extracted, with declared-missing, undetermined and unreadable tracked as three separate things.

  4. Chase, then finalize

    The exception list names which sponsor owes which attachment, so nothing gets guessed at.

What you get

  • Every populated box off every form, with the page and the form it came from
  • A missing figure distinguished from an unreadable one, since only one of them is chaseable
  • Starred K-1 items matched to their attached statement, or flagged when no statement exists
  • Forms awaiting a Schedule K-3 held out of the totals rather than treated as complete
  • Nested boxes kept out of column sums, so a subtotal is never added to its parent
  • A chase list per sponsor, so February asks for what April will otherwise stop for

Common questions

Why not just tell me the extraction accuracy?

Because accuracy measures the wrong failure. In the worked stack nine boxes of 994 were hard to read, and 22 figures were declared unusable by the forms themselves. A tool scored only on legibility reports 99.1 percent and still hands you 22 numbers that were never numbers.

What does STMT in a K-1 box actually mean?

That the item could not be expressed as one dollar amount, so the partnership put the detail on an attached page and an asterisk beside the code. Section 199A information is the common case. If the attachment is not in your PDF, the figure does not exist yet and no amount of scanning will find it.

Can it handle a K-1 whose Schedule K-3 has not arrived?

It flags the form rather than pretending. A checked box 16 means the K-3 is part of the same delivery, and those often lag the K-1 by months. The row is held out of the totals, the sponsor goes on the chase list, and the return is marked as blocked on a document rather than on a number.

Does it total the columns for me?

Yes, and it refuses to add a box that lives inside another one. A retirement distribution reports capital gain as a figure already included in the taxable amount, so a naive column sum counts it twice. Every nested box is marked, and any total that excludes a flagged row says so on its face. The same discipline applies when the totals go into the year-end package.

The forms change every year. Does the mapping go stale?

That is exactly why it does not use a fixed mapping. The 2025 K-1 instructions added a farmland installment election under box 20, expanded a box 13 code and recoded box 19 by category, with further codes reserved. Boxes are read from the form in front of it, not from last season's column list.

What about brokerage lots where basis was not reported?

Those get their own flag, because the basis printed on the form is informational rather than authoritative and has to come from the taxpayer's own records. The worked stack had 214 such lots across five composites. Each is listed separately so nobody files a gain computed off a number the broker never vouched for.

A notice came about a K-1 we keyed wrong. Where do I start?

Re-read the original form here first, because the flags usually show that the disputed figure came off an attachment nobody had. Then the tax notice response drafts the reply with the source page cited, which is the difference between a corrected figure and an argument.

K-1 and 1099 Data Intake

Fill in the form and your workspace opens with the work already underway.