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/v2/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": 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
          }
        ]
      }
    ]
  }'
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: 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/v2/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.V2
);

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/v2/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/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 = 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/v2/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 some fields have been shortened to fit.

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 Withheld($) Shows backup withholding. A Payer must backup withhold on certain payments if Recipient did not provide a TIN to the Payer.
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.
filingStateBox 15 StateUp to two (2) states per Form 1099-INT.State tax withheld reporting boxes.
payerStateIdBox 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.