irs-fire

Overview

irs-fire helps you e-file Form 1099 DIV according to Internal Revenue Service (IRS) Publication 1220 for Tax Year 2021.

It's an open-source console application written in Rust that takes two arguments: an input filename and an output filename. It reads the input file into a string and parses that string as JSON. Then, if the output file doesn't exist, it creates it. Otherwise, it truncates it. Finally, according to the input data, it makes and writes records to the output file.

You can then manually upload the output file to the Filing Information Returns Electronically (FIRE) Production or Test System.

License

This project is licensed under CC0.

Disclaimers

WARNING! Use irs-fire at your own risk. While it may help your in-house programmer/s, I, Matthew Mario Di Pasquale, made it mainly for my own needs. I don't intend to maintain it or update it for future tax years. I'm not a software provider, software vendor, or service provider.

I made up the tax identification numbers (TINs), transmitter control code (TCC), names, addresses, phone numbers, email address, and payment amounts in test/file.json and test/file.txt. Any resemblance to actual information is entirely coincidental.

See CC0, especially paragraph 4(b), for more disclaimers.

Features

Here're some of irs-fire's features:

  • It verifies that the output file will have a maximum of 99,000 A Records
  • It converts certain field values to uppercase
  • It automatically makes C, K, and F Records
  • It verifies that each record is 750 bytes

Limitations

Here're some of irs-fire's known limitations:

  • It only supports tax years 2011 through 2021
  • It only supports Form 1099-DIV
  • It only supports one CF/SF state per file
  • It doesn't check that the input file is correct
    • It doesn't validate field values
    • It doesn't verify that the output file will have a maximum of 1,000,000 records
    • Etc
  • It doesn't provide helpful error messages
  • It doesn't compress the output file if it has more than 10,000 records

See also to-do.txt.

It may have unknown limitations.

Issues

Besides the limitations listed above, irs-fire has no known issues.

It may have unknown issues.

Instructions

Installation

  1. Install Rust
  2. Download or clone this repository

Usage

cargo run input_file output_file

Input data

The input file must be a JSON array of objects, each representing a T, A, or B Record.

See test/file.json for an example of a valid input file.

See also src/main.rs for which fields irs-fire looks for in the input file.

To set vendor-related fields, hard-code them in src/main.rs.

Make a test file

  1. Copy the test input file test/file.json to any location, eg, ~/taxes/test/2021-file.json

  2. Update the first object in the copy (your test input file) with your information

  3. Make a test file at any location, eg, ~/taxes/test/2021-file.txt, by running from this project's root directory:

    cargo run ~/taxes/test/2021-file.json ~/taxes/test/2021-file.txt

Make a production file

  1. Copy your test input file to any location, eg, ~/taxes/2021-form-1099-div.json

  2. Delete line 10 from the copy (your production input file) and update the copy with your information

  3. Make a production file at any location, eg, ~/taxes/2021-form-1099-div.txt, by running from this project's root directory:

    cargo run ~/taxes/2021-form-1099-div.json ~/taxes/2021-form-1099-div.txt

Testing

To integration test irs-fire, run:

cargo run test/file.json test/file.txt

and then confirm that test/file.txt hasn't changed, eg, by running:

git diff test/file.txt

Related projects

I found these related projects by googling open source irs fire: