IRS filings

Correct or void a filed 1099

Files a correction or a void against 1099 forms already sent to the IRS, optionally overriding the recipient details or amounts that were wrong.

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

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 the original filing was for, for example 2025.

vendorIdsinteger[]

Vendors to correct or void, as JSON numbers. Supply this, ownerIds, or both.

ownerIdsinteger[]

Owners to correct or void, as JSON numbers. Supply this, vendorIds, or both.

filingTypeenum<string>required

Whether this is a correction or a void. Original is refused here; use the transmission endpoint for a first filing.

CorrectionVoid
overridesobject[]

Per-recipient replacement values. Anything you leave out keeps whatever MagicDoor has on file.

Response

200 · One status entry per recipient.

statusesobject[]

One entry per vendor or owner in the request.

400 · Neither `vendorIds` nor `ownerIds` held anything, or `filingType` was `Original`.

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

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 validation failure is a 200, not a 4xx

When the recipients do not pass validation the call still returns 200. Every failing recipient comes back with status of ValidationFailed and an errorMessage saying why. Check the entries, not just the HTTP status.

A correction replaces a filed form with new details, and the entry that comes back names the filing it corrects in originalIrisSubmissionId. A void withdraws a form that should never have been filed at all. Which one you need is a tax question, not an API question.

Request
{
  "taxYear": 2025,
  "vendorIds": [1830472847398408008],
  "filingType": "Correction",
  "overrides": [
    {
      "accountType": "Vendor",
      "accountId": 1830472847398408008,
      "recipientName": "Pine Ridge HOA Inc",
      "amount": 12400.00
    }
  ]
}
Response
{
  "statuses": [
    {
      "accountId": 1830472847398408008,
      "accountType": "Vendor",
      "status": "Pending",
      "irisSubmissionId": "1830472847398428028",
      "filingType": "Correction",
      "originalIrisSubmissionId": "1830472847398427027"
    }
  ]
}