Form 1099-INT Overview

Financial institutions use Form 1099-INT to report interest income to investors and to the IRS. Form 1099-INT includes a breakdown of different types of interest income and related expenses. A PayerPayer - An entity that makes payments for: services performed by independent contractors (1099-NEC), interest on a business debt (1099-INT), and payment card transactions settled on behalf of merchants (1099-K). must issue a 1099-INT to any individual or party (UserUser - A single end-user of your application. Each user has a unique userId, which should be stored in your database and used to make API requests on behalf of this individual.) to whom it paid at least $10 of interest during the tax year.

Issuing a 1099-INT

To issue a 1099-INT 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": "1099int",
        "year": 2021,
        "payerId": "<<testPayerId>>",
        "hasFatcaFilingRequirement": true,
        "accountNumber": "1234567890",
        "payersRoutingNumber": "054000030",
        "interestIncome": 832.32,
        "earlyWithdrawalPenalty": 232.23,
        "usSavingsBondsInterest": 194.23,
        "federalIncomeTaxWithheld": 194.23,
        "investmentExpenses": 194.23,
        "foreignTaxPaid": 194.23,
        "foreignTaxPaidCountry": "fr",
        "taxExemptInterest": 194.23,
        "specifiedPrivateActivityBondInterest": 194.23,
        "marketDiscount": 194.23,
        "bondPremium": 194.23,
        "bondPremiumTreasury": 194.23,
        "bondPremiumTaxExemptBond": 194.23,
        "taxExemptTaxCreditBondCusipNumbers": ["037833100"],
        "stateTaxInfo": [
          {
            "filingState": "CA",
            "stateId": "1234567891",
            "stateTaxWithheld": 194.23
          },
          {
            "filingState": "AZ",
            "stateId": "1234567892",
            "stateTaxWithheld": 194.23
          }
        ]
      }
    ]
  }'
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: '1099int',
        year: 2021,
        payerId: '<<testPayerId>>',
        hasFatcaFilingRequirement: true,
        accountNumber: '1234567890',
        payersRoutingNumber: '054000030',
        interestIncome: 832.32,
        earlyWithdrawalPenalty: 232.23,
        usSavingsBondsInterest: 194.23,
        federalIncomeTaxWithheld: 194.23,
        investmentExpenses: 194.23,
        foreignTaxPaid: 194.23,
        foreignTaxPaidCountry: 'fr',
        taxExemptInterest: 194.23,
        specifiedPrivateActivityBondInterest: 194.23,
        marketDiscount: 194.23,
        bondPremium: 194.23,
        bondPremiumTreasury: 194.23,
        bondPremiumTaxExemptBond: 194.23,
        taxExemptTaxCreditBondCusipNumbers: ['037833100'],
        stateTaxInfo: [
          {
            filingState: 'CA',
            stateId: '1234567891',
            stateTaxWithheld: 194.23
          },
          {
            filingState: 'AZ',
            stateId: '1234567892',
            stateTaxWithheld: 194.23
          }
        ]
      }
    ]
  })
};

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": "1099int",
            "year": "2021",
            "payerId": "<<testPayerId>>",
            "hasFatcaFilingRequirement": True,
            "accountNumber": "1234567890",
            "payersRoutingNumber": "054000030",
            "interestIncome": 832.32,
            "earlyWithdrawalPenalty": 232.23,
            "usSavingsBondsInterest": 194.23,
            "federalIncomeTaxWithheld": 194.23,
            "investmentExpenses": 194.23,
            "foreignTaxPaid": 194.23,
            "foreignTaxPaidCountry": "fr",
            "taxExemptInterest": 194.23,
            "specifiedPrivateActivityBondInterest": 194.23,
            "marketDiscount": 194.23,
            "bondPremium": 194.23,
            "bondPremiumTreasury": 194.23,
            "bondPremiumTaxExemptBond": 194.23,
            "taxExemptTaxCreditBondCusipNumbers": ["037833100"],
            "stateTaxInfo": [
                {
                    "filingState": "CA",
                    "stateId": "1234567891",
                    "stateTaxWithheld": 194.23
                },
                {
                    "filingState": "AZ",
                    "stateId": "1234567892",
                    "stateTaxWithheld": 194.23
                }
            ]
        }
    ]}
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 ten99INT = new JsonObject();
JsonArray ten99INTTaxExemptTaxCreditBondCusipNumbers = new JsonArray();
JsonArray ten99INTStateTaxInfos = new JsonArray();
JsonObject ten99INTStateTaxInfoOne = new JsonObject();
JsonObject ten99INTStateTaxInfoTwo = new JsonObject();

ten99INT.addProperty("type", "1099int");
ten99INT.addProperty("year", 2021);
ten99INT.addProperty("payerId", "<<testPayerId>>");
ten99INT.addProperty("hasFatcaFilingRequirement", true);
ten99INT.addProperty("accountNumber", "1234567890");
ten99INT.addProperty("payersRoutingNumber", "054000030");
ten99INT.addProperty("interestIncome", 832.32);
ten99INT.addProperty("earlyWithdrawalPenalty", 232.23);
ten99INT.addProperty("usSavingsBondsInterest", 194.23);
ten99INT.addProperty("federalIncomeTaxWithheld", 194.23);
ten99INT.addProperty("investmentExpenses", 194.23);
ten99INT.addProperty("foreignTaxPaid", 194.23);
ten99INT.addProperty("foreignTaxPaidCountry", "fr");
ten99INT.addProperty("taxExemptInterest", 194.23);
ten99INT.addProperty("specifiedPrivateActivityBondInterest", 194.23);
ten99INT.addProperty("marketDiscount", 194.23);
ten99INT.addProperty("bondPremium", 194.23);
ten99INT.addProperty("bondPremiumTreasury", 194.23);
ten99INT.addProperty("bondPremiumTaxExemptBond", 194.23);

ten99INTTaxExemptTaxCreditBondCusipNumbers.add("037833100");
ten99INT.add("taxExemptTaxCreditBondCusipNumbers", ten99INTTaxExemptTaxCreditBondCusipNumbers);

ten99INTStateTaxInfoOne.addProperty("filingState", "CA");
ten99INTStateTaxInfoOne.addProperty("stateId", "1234567891");
ten99INTStateTaxInfoOne.addProperty("stateTaxWithheld", 194.23);

ten99INTStateTaxInfoTwo.addProperty("filingState", "AZ");
ten99INTStateTaxInfoTwo.addProperty("stateId", "1234567892");
ten99INTStateTaxInfoTwo.addProperty("stateTaxWithheld", 194.23);

ten99INTStateTaxInfos.add(ten99INTStateTaxInfoOne);
ten99INTStateTaxInfos.add(ten99INTStateTaxInfoTwo);

ten99INT.add("stateTaxInfo", ten99INTStateTaxInfos);

documents.add(ten99INT);

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": "1099int",
                "year": 2021,
                "payerId": "<<testPayerId>>",
                "hasFatcaFilingRequirement": true,
                "accountNumber": "1234567890",
                "payersRoutingNumber": "054000030",
                "interestIncome": 832.32,
                "earlyWithdrawalPenalty": 232.23,
                "usSavingsBondsInterest": 194.23,
                "federalIncomeTaxWithheld": 194.23,
                "investmentExpenses": 194.23,
                "foreignTaxPaid": 194.23,
                "foreignTaxPaidCountry": "fr",
                "taxExemptInterest": 194.23,
                "specifiedPrivateActivityBondInterest": 194.23,
                "marketDiscount": 194.23,
                "bondPremium": 194.23,
                "bondPremiumTreasury": 194.23,
                "bondPremiumTaxExemptBond": 194.23,
                "taxExemptTaxCreditBondCusipNumbers": ["037833100"],
                "stateTaxInfo": [
                    {
                        "filingState": "CA",
                        "stateId": "1234567891",
                        "stateTaxWithheld": 194.23
                    },
                    {
                        "filingState": "AZ",
                        "stateId": "1234567892",
                        "stateTaxWithheld": 194.23
                    }
                ]
            }
        ]
    }`)

    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 = "1099int",
      year = 2021,
      payerId = "<<testPayerId>>",
      hasFatcaFilingRequirement = true,
      accountNumber = "1234567890",
      payersRoutingNumber = "054000030",
      interestIncome = 832.32,
      earlyWithdrawalPenalty = 232.23,
      usSavingsBondsInterest = 194.23,
      federalIncomeTaxWithheld = 194.23,
      investmentExpenses = 194.23,
      foreignTaxPaid = 194.23,
      foreignTaxPaidCountry = "fr",
      taxExemptInterest = 194.23,
      specifiedPrivateActivityBondInterest = 194.23,
      marketDiscount = 194.23,
      bondPremium = 194.23,
      bondPremiumTreasury = 194.23,
      bondPremiumTaxExemptBond = 194.23,
      taxExemptTaxCreditBondCusipNumbers = new[] {"037833100"},
      stateTaxInfo = new[] {
        new {
          filingState = "CA",
          stateId = "1234567891",
          stateTaxWithheld = 194.23
        },
        new {
          filingState = "AZ",
          stateId = "1234567892",
          stateTaxWithheld = 194.23
        }
      }
    }
  }
});
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: '1099int',
      year: 2021,
      payerId: '<<testPayerId>>',
      hasFatcaFilingRequirement: true,
      accountNumber: '1234567890',
      payersRoutingNumber: '054000030',
      interestIncome: 832.32,
      earlyWithdrawalPenalty: 232.23,
      usSavingsBondsInterest: 194.23,
      federalIncomeTaxWithheld: 194.23,
      investmentExpenses: 194.23,
      foreignTaxPaid: 194.23,
      foreignTaxPaidCountry: 'fr',
      taxExemptInterest: 194.23,
      specifiedPrivateActivityBondInterest: 194.23,
      marketDiscount: 194.23,
      bondPremium: 194.23,
      bondPremiumTreasury: 194.23,
      bondPremiumTaxExemptBond: 194.23,
      taxExemptTaxCreditBondCusipNumbers: ['037833100'],
      stateTaxInfo: [
        {
          filingState: 'CA',
          stateId: '1234567891',
          stateTaxWithheld: 194.23
        },
        {
          filingState: 'AZ',
          stateId: '1234567892',
          stateTaxWithheld: 194.23
        }
      ]
    }
  ]
}

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

The response:

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

Form 1099-INT Fields

Below is the Form 1099-INT with fields overlaid:

Form 1099-INT Definitions

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

Field

Form 1099-INT

Description

documentId

--

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

type

--

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

status

--

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

payerId

--

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

year

--

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

accountNumber

Account number

The IRS “encourages” a payer to designate an account number for all Forms 1099-INT filed.
This field is required if Payer has multiple accounts for a Recipient for whom it is filing more than one Form 1099-INT.
This field is also required if the “FATCA filing requirement” box is checked.

payersRoutingNumber

Payer's RTN (optional)

A routing and transit number (RTN) is a unique nine-digit number used to identify a bank for purposes of directing financial flows. This is essentially bank's bank account -- their account with the Federal Reserve.

interestIncome

Box 1 -- Interest Income

($)

earlyWithdrawalPenalty

Box 2 -- Early Withdrawal Penalty

($)

usSavingsBondsInterest

Box 3 -- Interest on U.S. Savings Bonds and Treasury Obligations

($)

federalIncomeTaxWithheld

Box 4 -- Federal Income Tax Withheld

($) Shows backup withholding. A Payer must backup withhold on certain payments if Recipient did not provide a TIN to the Payer.

investmentExpenses

Box 5 -- Investment Expenses

($)

foreignTaxPaid

Box 6 -- Foreign Tax Paid

($) Foreign tax paid on interest

foreignTaxPaidCountry

Box 7 -- Foreign Country or U.S. Possession

taxExemptInterest

Box 8 -- Tax-Exempt Interest

($)

specifiedPrivateActivityBondInterest

Box 9 -- Specified Private Activity Bond Interest

($)

marketDiscount

Box 10 -- Market Discount

($)

bondPremium

Box 11 -- Bond Premium

($ or blank) Taxable covered security acquired at a premium (other than a U.S. Treasury obligation)

bondPremiumTreasury

Box 12. Bond Premium on U.S. Treasury Obligations

($ or blank)

bondPremiumTaxExemptBond

Box 13. Bond Premium on Tax-Exempt Bond

($ or blank)

taxExemptTaxCreditBondCusipNumbers

Box 14. Tax-Exempt and Tax Credit Bond CUSIP No.

(# or “various”) CUSIP number of the tax-exempt bond for which tax-exempt interest is reported in box 8 or tax credit bond is reported in box 1. If is reported in the aggregate for multiple bonds or accounts, enter “various.”
A CUSIP number is a unique identification number assigned to registered bonds in the United States. It comprises nine letters and includes letters and numbers.

filingState

Box 15 State

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

stateId

Box 16 State identification no.

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

stateTaxWithheld

Box 17 State tax withheld

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


Did this page help you?