OSHA 300A CSV upload for multiple establishments

Prepare Form 300A data for every establishment and catch ITA errors before OSHA does. We automate the roll-up and checks. A safety lead approves the numbers, and a company executive certifies the 300A.

ITA batch: 2025 Form 300A (sample)
3 to fix
Pre-submission checks
EstablishmentHours workedITA check
Sample Yard 04128000Ready
Sample Plant 11295360Ready
Example DC 072900000Hours/avg > 8760
Test Shop 0215200Hours/avg < 500
Sample Depot 09104000M1-M6 not G-J

Size codes and validations from OSHA's ITA specifications.

ITA API: submit after a person approves
POST /oshaApi/v1/submissions
{
"establishment_id": "0000001",
"year_filing_for": "2025"
}
GET /oshaApi/v1/establishments/0000001
"submission_status": "3"

Status 3 means Submitted.

Sample data. Every name and number here is made up.

How it runs.

Dozens of sites mean dozens of totals kept in different places. A CSV can upload and still fail, and without OSHA's second email the data did not load.

  1. Site data

    Hours, headcount, and case totals by establishment, from HR and incident logs.

    Your data
  2. ITA rule checks

    Whole numbers, size codes, hours per employee, and case totals.

    Automated
  3. A person approves

    A safety lead confirms recordability. A company executive certifies the 300A.

    A person
  4. Submit and confirm

    Sent by API, or a person uploads the CSV. Status recorded per site.

    Automated

OSHA ITA API / ITA CSV upload / Login.gov / OSHA Form 300A / HR and incident logs

The rules and limits.

Who submits
300A: 250 or more employees, or 20 to 249 in an Appendix A industry. 300 and 301 data: 100 or more in Appendix B. Due March 2.
CSV limits
No cap on establishments, but OSHA recommends 1,000 records or fewer per file. Queued files process every three hours. No decimals in number fields.
Proof it loaded
OSHA sends two emails. The second lists what processed and any errors. With no second email, OSHA says your data did not load.
API order
Create the establishment, add the 300A, then submit. Status reads 1 Not Added, 2 In Progress, 3 Submitted. The bearer token belongs to one ITA account.
State Plan states
The rule applies there too, and most plans match for private employers. Minnesota requires more private establishments to submit. Check your own State Plan.

What a person does.

  • A safety lead decides what is recordable.
  • A company executive certifies the 300A under 29 CFR 1904.32.
  • Someone reviews each warning before anything is submitted.

Where we stand: we have not shipped this. It uses the same pattern as our data sync and reporting work.

Common questions.

Does this make us compliant?+

No. It prepares and checks the data. The employer stays responsible for complete, accurate records, and a company executive still certifies the 300A.

Can a consultant or third party submit for us?+

OSHA allows a third party to submit. Responsibility for complete and accurate data stays with the employer. A firm with many establishments can use one ITA account.

Can we test before the real filing?+

Yes. OSHA has a preview environment for CSV and API testing. Data sent there does not meet the requirement and is purged periodically.

Sources

General information, not legal, tax, or compliance advice. Rules change; confirm against the current source and your own advisers.

Bring us your version of this.

Intro calls are 30 minutes, free, and useful even if we never work together. We'll be honest about whether this is the right fit for your operations team.