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 Payer must issue a 1099-INT to any individual or party (User) 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.

📘

Form 1099-INT Guidelines

  • Only one (1) Form 1099-INT is allowed per userId per payerId per year
  • To make changes to an existing Form 1099-INT, delete it, and recreate it with your changes
  • Once the filing process has started, your Form 1099-INT cannot be deleted
curl \
  --request POST \
  --url https://sandbox-api.withabound.com/<<apiVersion>>/users/<<testUserId>>/documents \
  --header 'Authorization: Bearer <<apiKey>>' \
  --header 'Content-Type: application/json' \
  --data '{
    "documents": [
      {
        "type": "1099int",
        "year": 2022,
        "payerId": "<<testPayerId>>",
        "hasFatcaFilingRequirement": true,
        "accountNumber": "1234567890",
        "payersRoutingNumber": "054000030",
        "interestIncome": 832.32,
        "earlyWithdrawalPenalty": 232.23,
        "usSavingsBondsInterest": 194.23,
        "federalIncomeTaxWithheld": 0,
        "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,
        "stateTaxInfo": [
          {
            "filingState": "CA",
            "userStateId": "1234567891",
            "stateTaxWithheld": 0
          }
        ]
      }
    ]
  }'
const fetch = require('node-fetch');

const url = 'https://sandbox-api.withabound.com/<<apiVersion>>/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: 2022,
        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',
            payerStateId: '1234567891',
            stateTaxWithheld: 194.23
          },
          {
            filingState: 'AZ',
            payerStateId: '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/<<apiVersion>>/users/<<testUserId>>/documents"

payload = {"documents": [
        {
            "type": "1099int",
            "year": "2022",
            "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",
                    "payerStateId": "1234567891",
                    "stateTaxWithheld": 194.23
                },
                {
                    "filingState": "AZ",
                    "payerStateId": "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;
// import com.withabound.AboundConfig;
// import com.withabound.models.*;
// import com.withabound.resources.base*;

AboundConfig aboundConfig = new AboundConfig(
  "<<sandbox_app_id>>",
  "<<sandbox_app_secret>>",
  AboundEnvironment.SANDBOX,
  AboundApiVersion.<<apiVersionUppercase>>
);

Abound abound = new Abound(aboundConfig);


String userId = "<<testUserId>>";
String payerId = "<<testPayerId>>";
String accountNumber = "1234567890";

StateTaxInfo stateTaxInfo_CA = StateTaxInfo.builder()
  .filingState("ca")
  .payerStateId("1234567891")
  .stateTaxWithheld(194.23)
   .build();

StateTaxInfo stateTaxInfo_AZ = StateTaxInfo.builder()
  .filingState("az")
  .payerStateId("1234567892")
  .stateTaxWithheld(194.23)
  .build();

Form1099INTDocumentRequest form1099INTDocumentRequest = Form1099INTDocumentRequest.builder()
  .payerId(payerId)
  .year(2022)
  .hasFatcaFilingRequirement(true)
  .accountNumber(accountNumber)
  .payersRoutingNumber("054000030")
  .interestIncome(832.32)
  .earlyWithdrawalPenalty(232.23)
  .usSavingsBondsInterest(194.23)
  .federalIncomeTaxWithheld(194.23)
  .investmentExpenses(194.23)
  .foreignTaxPaid(194.23)
  .foreignTaxPaidCountry("France")
  .taxExemptInterest(194.23)
  .specifiedPrivateActivityBondInterest(194.23)
  .marketDiscount(194.23)
  .bondPremium(194.23)
  .bondPremiumTreasury(194.23)
  .bondPremiumTaxExemptBond(194.23)
  .stateTaxInfo(Arrays.asList(stateTaxInfo_CA, stateTaxInfo_AZ))
  .build();

AboundBulkResponse<Document> response = abound.documents()
  .create(userId, Collections.singletonList(form1099INTDocumentRequest));

System.out.println(response.getData());
package main

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

func main() {

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

    var requestBody = []byte(`{
        "documents": [
            {
                "type": "1099int",
                "year": 2022,
                "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",
                        "payerStateId": "1234567891",
                        "stateTaxWithheld": 194.23
                    },
                    {
                        "filingState": "AZ",
                        "payerStateId": "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/<<apiVersion>>/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 = 2022,
      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",
          payerStateId = "1234567891",
          stateTaxWithheld = 194.23
        },
        new {
          filingState = "AZ",
          payerStateId = "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/<<apiVersion>>/users/<<testUserId>>/documents")
requestBody = {
  documents: [
    {
      type: '1099int',
      year: 2022,
      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',
          payerStateId: '1234567891',
          stateTaxWithheld: 194.23
        },
        {
          filingState: 'AZ',
          payerStateId: '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

Response

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

Form 1099-INT Fields

Below is the Form 1099-INT with fields overlaid. Note that to fit this is presented with a payee of individual, business information would populate for user fields if available.

Form 1099-INT Definitions

FieldForm 1099-INTDescription
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, verifying, pending, 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.
isCorrectedCorrected box(Optional) If true, the corrected checkbox will be marked on the document. Defaults to false.
hasFatcaFilingRequirementFATCA filing requirement (checkbox)Satisfying a requirement to report with respect to a U.S. account for chapter 4 purposes
accountNumberAccount numberThe 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.
payersRoutingNumberPayer'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.
interestIncomeBox 1 -- Interest Income($)
earlyWithdrawalPenaltyBox 2 -- Early Withdrawal Penalty($)
usSavingsBondsInterestBox 3 -- Interest on U.S. Savings Bonds and Treasury Obligations($)
federalIncomeTaxWithheldBox 4 -- Federal Income Tax WithheldAbound currently does not support non-zero values in this field. Please contact us for more information.
investmentExpensesBox 5 -- Investment Expenses($)
foreignTaxPaidBox 6 -- Foreign Tax Paid($) Foreign tax paid on interest
foreignTaxPaidCountryBox 7 -- Foreign Country or U.S. Possession
taxExemptInterestBox 8 -- Tax-Exempt Interest($)
specifiedPrivateActivityBondInterestBox 9 -- Specified Private Activity Bond Interest($)
marketDiscountBox 10 -- Market Discount($)
bondPremiumBox 11 -- Bond Premium($ or blank) Taxable covered security acquired at a premium (other than a U.S. Treasury obligation)
bondPremiumTreasuryBox 12. Bond Premium on U.S. Treasury Obligations($ or blank)
bondPremiumTaxExemptBondBox 13. Bond Premium on Tax-Exempt Bond($ or blank)
taxExemptTaxCreditBondCusipNumbersBox 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.
filingStateNot displayed on form.Abbreviation for the state to which the 1099 will be reported.
userStateIdBox 16 State identification no.Up to two (2) states per Form 1099-INT. State tax withheld reporting boxes.
stateTaxWithheldBox 17 State tax withheldAbound currently does not support non-zero values in this field. Please contact us for more information.