IRS filings

Check the status of 1099 filings

Reads back where the company's 1099 filings stand with the IRS for one tax year and a given set of vendors and owners. Reads only; it files nothing.

POST
https://api.portal.magicdoor.com/company-app/irs/submissions/status

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Body

application/json

taxYearintegerrequired

The tax year to look at, for example 2025.

vendorIdsinteger[]

Vendors to look up, as JSON numbers. Supply this, ownerIds, or both.

ownerIdsinteger[]

Owners to look up, as JSON numbers. Supply this, vendorIds, or both.

Response

200 · One status entry per recipient asked about.

statusesobject[]

One entry per vendor or owner in the request.

400 · Neither `vendorIds` nor `ownerIds` held anything.

401 · The access token is missing, expired, or not valid for this company.

It is a POST because of the body, not because it changes anything

This endpoint reads only. It takes a POST so the list of recipients can be sent as JSON rather than crammed into a query string.

Ids here are JSON numbers, not strings

Everywhere else in this API a Snowflake id travels as a decimal string, because a 64-bit integer loses precision in JavaScript. On these three endpoints vendorIds, ownerIds and accountId are plain JSON numbers around nineteen digits long. In JavaScript, parse the response with a JSON reviver or a big-integer-aware parser, or the last digits will be silently rounded and you will act on the wrong vendor.

These enums are PascalCase

accountType, status and filingType are turned into strings by hand rather than by the JSON serializer, so they come back PascalCase: Vendor, Accepted, Correction. Most enums elsewhere in this API are camelCase.

A recipient MagicDoor has never filed for comes back with status of NotFound. A recipient who does not need a 1099 comes back as NotRequired.

Request
{
  "taxYear": 2025,
  "vendorIds": [1830472847398408008],
  "ownerIds": [1830472847398413013]
}
Response
{
  "statuses": [
    {
      "accountId": 1830472847398408008,
      "accountType": "Vendor",
      "status": "Accepted",
      "irisSubmissionId": "1830472847398427027",
      "filingType": "Original",
      "receiptId": "1-000000-00000-000"
    },
    {
      "accountId": 1830472847398413013,
      "accountType": "Owner",
      "status": "ValidationFailed",
      "errorMessage": "Recipient TIN is missing"
    }
  ]
}