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

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.

isCorrected

Corrected box

(Optional) If true, the corrected checkbox will be marked on the document. Defaults to false.

hasFatcaFilingRequirement

FATCA filing requirement (checkbox)

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

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.State tax withheld reporting boxes.

payerStateId

Box 16 State identification no.

Up to two (2) states per Form 1099-INT. State tax withheld reporting boxes.

stateTaxWithheld

Box 17 State tax withheld

Up to two (2) states per Form 1099-INT. State tax withheld reporting boxes.


Did this page help you?