1099-MISC

Form 1099-MISC Overview

The IRS requires payments for rent, royalties, prizes and awards, substitute payments in lieu of dividends and other items to be reported on Form 1099-MISC.

Issuing a 1099-MISC Form

To issue a 1099-MISC form and initiate the filing process use an existing userId and payerId and call the POST /users/{userId}/documents API endpoint.

Below is the request:

curl \
  --request POST \
  --url https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents \
  --header 'Authorization: Bearer <<apiKey>>' \
  --header 'Content-Type: application/json' \
  --data '{
    "documents": [
      {
        "type": "1099misc",
        "year": 2021,
        "payerId": "<<testPayerId>>",
        "accountNumber": "1234567890",
        "hasFatcaFilingRequirement": false,
        "rents": 23323.23,
        "royalties": 23323.23,
        "otherIncome": 23323.23,
        "federalIncomeTaxWithheld": 23323.23,
        "fishingBoatProceeds": 23323.23,
        "medicalPayments": 23323.23,
        "hasDirectSalesOver5000": false,
        "substitutePayments": 23323.23,
        "cropInsuranceProceeds": 23323.23,
        "grossProceedsAttorney": 23323.23,
        "fishPurchasedForResale": 23323.23,
        "section409ADeferrals": 23323.23,
        "excessGoldenParachutePayments": 23323.23,
        "nqdc": 23323.23,
        "stateTaxInfo": [
          {
            "stateTaxWithheld": 323.23,
            "filingState": "CA",
            "payersStateNumber": "1234567891",
            "stateIncome": 3455.43
          },
          {
            "stateTaxWithheld": 323.23,
            "filingState": "AZ",
            "payersStateNumber": "1234567892",
            "stateIncome": 3455.43
          }
        ]
      }
    ]
  }'
const fetch = require('node-fetch');

const url = 'https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
    Authorization: 'Bearer <<apiKey>>'
  },
  body: JSON.stringify({
    documents: [
      {
        type: '1099misc',
        year: 2021,
        payerId: '<<testPayerId>>',
        accountNumber: '1234567890',
        hasFatcaFilingRequirement: false,
        rents: 23323.23,
        royalties: 23323.23,
        otherIncome: 23323.23,
        federalIncomeTaxWithheld: 23323.23,
        fishingBoatProceeds: 23323.23,
        medicalPayments: 23323.23,
        hasDirectSalesOver5000: false,
        substitutePayments: 23323.23,
        cropInsuranceProceeds: 23323.23,
        grossProceedsAttorney: 23323.23,
        fishPurchasedForResale: 23323.23,
        section409ADeferrals: 23323.23,
        excessGoldenParachutePayments: 23323.23,
        nqdc: 23323.23,
        stateTaxInfo: [
          {
            stateTaxWithheld: 323.23,
            filingState: 'CA',
            payersStateNumber: '1234567891',
            stateIncome: 3455.43
          },
          {
            stateTaxWithheld: 323.23,
            filingState: 'AZ',
            payersStateNumber: '1234567892',
            stateIncome: 3455.43
          }
        ]
      }
    ]
  })
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error('error:' + err));
import requests

url = "https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents"

payload = {"documents": [
        {
            "type": "1099misc",
            "year": "2021",
            "payerId": "<<testPayerId>>",
            "accountNumber": "1234567890",
            "hasFatcaFilingRequirement": False,
            "rents": 23323.23,
            "royalties": 23323.23,
            "otherIncome": 23323.23,
            "federalIncomeTaxWithheld": 23323.23,
            "fishingBoatProceeds": 23323.23,
            "medicalPayments": 23323.23,
            "hasDirectSalesOver5000": False,
            "substitutePayments": 23323.23,
            "cropInsuranceProceeds": 23323.23,
            "grossProceedsAttorney": 23323.23,
            "fishPurchasedForResale": 23323.23,
            "section409ADeferrals": 23323.23,
            "excessGoldenParachutePayments": 23323.23,
            "nqdc": 23323.23,
            "stateTaxInfo": [
                {
                    "stateTaxWithheld": 323.23,
                    "filingState": "CA",
                    "payersStateNumber": "1234567891",
                    "stateIncome": 3455.43
                },
                {
                    "stateTaxWithheld": 323.23,
                    "filingState": "AZ",
                    "payersStateNumber": "1234567892",
                    "stateIncome": 3455.43
                }
            ]
        }
    ]}
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer <<apiKey>>"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
// import com.squareup.okhttp.*;
// import com.google.gson.JsonObject;
// import com.google.gson.JsonArray;

OkHttpClient client = new OkHttpClient();

JsonObject requestBody = new JsonObject();
JsonArray documents = new JsonArray();
JsonObject ten99MISC = new JsonObject();
JsonArray ten99MISCStateTaxInfos = new JsonArray();
JsonObject ten99MISCStateTaxInfoOne = new JsonObject();
JsonObject ten99MISCStateTaxInfoTwo = new JsonObject();

ten99MISC.addProperty("type", "1099misc");
ten99MISC.addProperty("year", 2021);
ten99MISC.addProperty("payerId", "<<testPayerId>>");
ten99MISC.addProperty("accountNumber", "1234567890");
ten99MISC.addProperty("hasFatcaFilingRequirement", false);
ten99MISC.addProperty("rents", 23323.23);
ten99MISC.addProperty("royalties", 23323.23);
ten99MISC.addProperty("otherIncome", 23323.23);
ten99MISC.addProperty("federalIncomeTaxWithheld", 23323.23);
ten99MISC.addProperty("fishingBoatProceeds", 23323.23);
ten99MISC.addProperty("medicalPayments", 23323.23);
ten99MISC.addProperty("hasDirectSalesOver5000", false);
ten99MISC.addProperty("substitutePayments", 23323.23);
ten99MISC.addProperty("cropInsuranceProceeds", 23323.23);
ten99MISC.addProperty("grossProceedsAttorney", 23323.23);
ten99MISC.addProperty("fishPurchasedForResale", 23323.23);
ten99MISC.addProperty("section409ADeferrals", 23323.23);
ten99MISC.addProperty("excessGoldenParachutePayments", 23323.23);
ten99MISC.addProperty("nqdc", 23323.23);

ten99MISCStateTaxInfoOne.addProperty("stateTaxWithheld", 323.23);
ten99MISCStateTaxInfoOne.addProperty("filingState", "CA");
ten99MISCStateTaxInfoOne.addProperty("payersStateNumber", "1234567891");
ten99MISCStateTaxInfoOne.addProperty("stateIncome", 3455.43);

ten99MISCStateTaxInfoTwo.addProperty("stateTaxWithheld", 323.23);
ten99MISCStateTaxInfoTwo.addProperty("filingState", "AZ");
ten99MISCStateTaxInfoTwo.addProperty("payersStateNumber", "1234567892");
ten99MISCStateTaxInfoTwo.addProperty("stateIncome", 3455.43);

ten99MISCStateTaxInfos.add(ten99MISCStateTaxInfoOne);
ten99MISCStateTaxInfos.add(ten99MISCStateTaxInfoTwo);

ten99MISC.add("stateTaxInfo", ten99MISCStateTaxInfos);

documents.add(ten99MISC);

requestBody.add("documents", documents);

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, requestBody.toString());
Request request = new Request.Builder()
  .url("https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents")
  .post(body)
  .addHeader("Accept", "application/json")
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer <<apiKey>>")
  .build();

Response response = client.newCall(request).execute();
package main

import (
    "bytes"
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents"

    var requestBody = []byte(`{
        "documents": [
            {
                "type": "1099misc",
                "year": 2021,
                "payerId": "<<testPayerId>>",
                "accountNumber": "1234567890",
                "hasFatcaFilingRequirement": false,
                "rents": 23323.23,
                "royalties": 23323.23,
                "otherIncome": 23323.23,
                "federalIncomeTaxWithheld": 23323.23,
                "fishingBoatProceeds": 23323.23,
                "medicalPayments": 23323.23,
                "hasDirectSalesOver5000": false,
                "substitutePayments": 23323.23,
                "cropInsuranceProceeds": 23323.23,
                "grossProceedsAttorney": 23323.23,
                "fishPurchasedForResale": 23323.23,
                "section409ADeferrals": 23323.23,
                "excessGoldenParachutePayments": 23323.23,
                "nqdc": 23323.23,
                "stateTaxInfo": [
                    {
                        "stateTaxWithheld": 323.23,
                        "filingState": "CA",
                        "payersStateNumber": "1234567891",
                        "stateIncome": 3455.43
                    },
                    {
                        "stateTaxWithheld": 323.23,
                        "filingState": "AZ",
                        "payersStateNumber": "1234567892",
                        "stateIncome": 3455.43
                    }
                ]
            }
        ]
    }`)

    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))

    req.Header.Add("Accept", "application/json")
    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("Authorization", "Bearer <<apiKey>>")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
// using RestSharp;

var client = new RestClient("https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents");
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer <<apiKey>>");
request.AddJsonBody(new {
  documents = new[] {
    new {
      type = "1099misc",
      year = 2021,
      payerId = "<<testPayerId>>",
      accountNumber = "1234567890",
      hasFatcaFilingRequirement = false,
      rents = 23323.23,
      royalties = 23323.23,
      otherIncome = 23323.23,
      federalIncomeTaxWithheld = 23323.23,
      fishingBoatProceeds = 23323.23,
      medicalPayments = 23323.23,
      hasDirectSalesOver5000 = false,
      substitutePayments = 23323.23,
      cropInsuranceProceeds = 23323.23,
      grossProceedsAttorney = 23323.23,
      fishPurchasedForResale = 23323.23,
      section409ADeferrals = 23323.23,
      excessGoldenParachutePayments = 23323.23,
      nqdc = 23323.23,
      stateTaxInfo = new[] {
        new {
          stateTaxWithheld = 323.23,
          filingState = "CA",
          payersStateNumber = "1234567891",
          stateIncome = 3455.43
        },
        new {
          stateTaxWithheld = 323.23,
          filingState = "AZ",
          payersStateNumber = "1234567892",
          stateIncome = 3455.43
        }
      }
    }
  }
});
IRestResponse response = client.Execute(request);
require 'uri'
require 'net/http'
require 'openssl'
require 'json'

url = URI("https://sandbox-api.withabound.com/v2/users/<<testUserId>>/documents")
requestBody = {
  documents: [
    {
      type: '1099misc',
      year: 2021,
      payerId: '<<testPayerId>>',
      accountNumber: '1234567890',
      hasFatcaFilingRequirement: false,
      rents: 23323.23,
      royalties: 23323.23,
      otherIncome: 23323.23,
      federalIncomeTaxWithheld: 23323.23,
      fishingBoatProceeds: 23323.23,
      medicalPayments: 23323.23,
      hasDirectSalesOver5000: false,
      substitutePayments: 23323.23,
      cropInsuranceProceeds: 23323.23,
      grossProceedsAttorney: 23323.23,
      fishPurchasedForResale: 23323.23,
      section409ADeferrals: 23323.23,
      excessGoldenParachutePayments: 23323.23,
      nqdc: 23323.23,
      stateTaxInfo: [
        {
          stateTaxWithheld: 323.23,
          filingState: 'CA',
          payersStateNumber: '1234567891',
          stateIncome: 3455.43
        },
        {
          stateTaxWithheld: 323.23,
          filingState: 'AZ',
          payersStateNumber: '1234567892',
          stateIncome: 3455.43
        }
      ]
    }
  ]
}

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request["Authorization"] = 'Bearer <<apiKey>>'
request.body = requestBody.to_json

response = http.request(request)
puts response.read_body

Below is the response:

{
  "data": [
    {
      "documentId": "documentId_testefbd5d3d9ee9526ef9ff89a7c6b879174170",
      "documentURL": "https://tax-documents-sandbox.s3.us-west-2.amazonaws.com/test62ae93bafa6310aa9952e8b3bf5796443111/2021_Form_1099-MISC.pdf?AWSAccessKeyId=AKIA6C6AUYYBZMXK74XQ&Expires=1630591905&Signature=3OZkCooEEIem10Bh%2FCJ5XYophxY%3D",
      "documentName": "2021 Form 1099-MISC",
      "type": "1099misc",
      "year": "2021",
      "status": "pending",
      "createdTimestamp": 1628275165630
    }
  ]
}

Form 1099-MISC Fields

Below is the Form 1099-MISC with fields overlaid.

Form 1099-MISC Definitions

Below are Abound's fields and descriptions as they relate to the Form 1099-MISC.

Field

1099-MISC

Description

documentId

--

The unique id generated by Abound API to designate this form. Store this value in your database.

status

--

The status generated by Abound API. Possible statuses include: "created", "pending", "cancelled", "error" and "done".

type

--

This specifies the Form 1099 type, in this case, enter 1099misc.

payerId

--

Unique ID associated with the Payer. Store this value in your database.

year

--

This is the tax year associated with the Form 1099-NEC.

hasFatcaFilingRequirement

FATCA filing requirement (checkbox)

Satisfying a requirement to report with respect to a U.S. account for chapter 4 purposes

accountNumber

Account number

Required if the “FATCA filing requirement” box is checked

rents

Box 1 -- Rents

($) Report rents from real estate on Schedule E (Form 1040). However, report rents on Schedule C (Form 1040) if you provided significant services to the tenant, sold real estate as a business, or rented personal property as a business.

royalties

Box 2 -- Royalties

($) Report royalties from oil, gas, or mineral properties; copyrights; and patents on Schedule E (Form 1040).

otherIncome

Box 3 -- Other Income

($) The amount shown may be payments received as the beneficiary of a deceased employee, prizes, awards, taxable damages, Indian gaming profits, or other taxable income.

federalIncomeTaxWithheld

Box 4 -- Federal Income Tax Withheld

($) Shows backup withholding or withholding on Indian gaming profits. Generally, a payer must backup withhold if Recipient did not furnish a TIN.

fishingBoatProceeds

Box 5 -- Fishing boat proceeds

($) Shows the amount paid to a fishing boat crew member who is considered by the operator to be self-employed.

medicalPayments

Box 6 -- Medical and health care payments

($) For individuals

hasDirectSalesOver5000

Box 7 -- Payer made direct sales totaling $5,000 or more of consumer products recipient for resale (checkbox)

If checked (true), consumer products totaling $5,000 or more were sold for resale, on a buy-sell, a deposit-commission, or other basis.

substitutePayments

Box 8 -- Substitute payments in lieu of dividends or interest

($) Shows substitute payments in lieu of dividends or tax-exempt interest received by your broker on your behalf as a result of a loan of your securities.

cropInsuranceProceeds

Box 9 -- Crop insurance proceeds

($)

grossProceedsAttorney

Box 10 -- Gross proceeds paid to an attorney

($) Shows gross proceeds paid to an attorney in connection with legal services.

fishPurchasedForResale

Box 11 -- Fish purchased for resale

($) Shows the amount paid for the purchase of fish for resale from any person engaged in the trade or business of catching fish.

section409ADeferrals

Box 12. Section 409A deferrals

($) May show current year deferrals as a nonemployee under a nonqualified deferred compensation (NQDC) plan that is subject to the requirements of section 409A plus any earnings on current and prior year
deferrals.

excessGoldenParachutePayments

Box 13. Excess golden parachute payments

($) Shows your total compensation of excess golden parachute payments subject to a 20% excise tax.

nqdc

Box 14. Nonqualified deferred compensation

($) Shows income as a nonemployee under an NQDC plan that does not meet the requirements of section 409A. Any amount included in box 12 that is currently taxable is also included in this box.

stateTaxWithheld

Box 15 State tax withheld

($) Up to two (2) states per Form 1099-MISC.

filingState

Box 16 State/ Payer's state no.

Up to two (2) states per Form 1099-MISC.

payersStateNumber

Box 16 State/ Payer's state no.

Up to two (2) states per Form 1099-MISC.

stateIncome

Box 17 State income

($) Up to two (2) states per Form 1099-MISC.


Did this page help you?