Prerequisites for Issuing 1099 Forms

There are two prerequisites before one can issue 1099 forms for an Individual.

  1. You must ensure the recipient's information is up to date and contains all the information needed for each 1099 form.
  2. You must collect the payer's information.

Below we outline how to do this with the Users and Payer API resources for the Recipient (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.) and 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)., respectively.

Collecting Recipient Information

For the Form 1099 Recipient (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.), be sure to update their information to their userId.

curl \
  --request PUT \
  --url https://sandbox-api.withabound.com/v2/users/<<testUserId>> \
  --header 'Authorization: Bearer <<apiKey>>' \
  --header 'Content-Type: application/json' \
  --data '{
    "user": {
      "email": "[email protected]",
      "profile": {
        "firstName": "Sam",
        "lastName": "Wilson",
        "address": "1500 Pennsylvania Ave NW",
        "address2": "Suite 1776",
        "city": "Washington",
        "state": "DC",
        "zipcode": "20220",
        "phoneNumber": "2026229979",
        "dateOfBirth": "1776-07-04",
        "socialSecurityNumber": "123456789"
      }
    }
  }'
const { default: Abound, Environment } = require("@withabound/node-sdk");

const abound = new Abound({
  appId: "<<sandbox_app_id>>",
  appSecret: "<<sandbox_app_secret>>",
  environment: Environment.SANDBOX,
  apiVersion: "v2",
});

(async () => {
  const response = await abound.users.update(
    "<<testUserId>>",
    {
      email: "[email protected]",
      profile: {
        firstName: "Sam",
        lastName: "Wilson",
        address: "1500 Pennsylvania Ave NW",
        address2: "Suite 1776",
        city: "Washington",
        state: "DC",
        zipcode: "20220",
        phoneNumber: "2026229979",
        dateOfBirth: "1776-07-04",
        socialSecurityNumber: "123456789",
      },
    }
  );

  console.log(response);
})();
import requests

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

payload = {"user": {
        "profile": {
            "firstName": "Sam",
            "lastName": "Wilson",
            "address": "1500 Pennsylvania Ave NW",
            "address2": "Suite 1776",
            "city": "Washington",
            "state": "DC",
            "zipcode": "20220",
            "phoneNumber": "2026229979",
            "dateOfBirth": "1776-07-04",
            "socialSecurityNumber": "123456789"
        },
        "email": "[email protected]"
    }}
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer <<apiKey>>"
}

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

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

OkHttpClient client = new OkHttpClient();

JsonObject requestBody = new JsonObject();
JsonObject user = new JsonObject();
JsonObject profile = new JsonObject();

user.addProperty("email", "[email protected]");

profile.addProperty("firstName", "Sam");
profile.addProperty("lastName", "Wilson");
profile.addProperty("addPropertyress", "1500 Pennsylvania Ave NW");
profile.addProperty("addPropertyress2", "Suite 1776");
profile.addProperty("city", "Washington");
profile.addProperty("state", "DC");
profile.addProperty("zipcode", "20220");
profile.addProperty("phoneNumber", "2026229979");
profile.addProperty("dateOfBirth", "1776-07-04");
profile.addProperty("socialSecurityNumber", "123456789");

user.add("profile", profile);

requestBody.add("user", user);

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>>")
  .put(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"

    var requestBody = []byte(`{
        "user": {
            "email": "[email protected]",
            "profile": {
                "firstName": "Sam",
                "lastName": "Wilson",
                "address": "1500 Pennsylvania Ave NW",
                "address2": "Suite 1776",
                "city": "Washington",
                "state": "DC",
                "zipcode": "20220",
                "phoneNumber": "2026229979",
                "dateOfBirth": "1776-07-04",
                "socialSecurityNumber": "123456789"
            }
        }
    }`)

    req, _ := http.NewRequest("PUT", 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");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer <<apiKey>>");
request.AddJsonBody(new {
  user = new {
    email = "[email protected]",
    profile = new {
      firstName =  "Sam",
      lastName = "Wilson",
      address = "1500 Pennsylvania Ave NW",
      address2 = "Suite 1776",
      city = "Washington",
      state = "DC",
      zipcode = "20220",
      phoneNumber = "2026229979",
      dateOfBirth = "1776-07-04",
      socialSecurityNumber = "123456789"
    }
  }
});
IRestResponse response = client.Execute(request);
require 'uri'
require 'net/http'
require 'openssl'
require 'json'

url = URI("https://sandbox-api.withabound.com/v2/users")
requestBody = {
  user: {
    email: '[email protected]',
    profile: {
      firstName: 'Sam',
      lastName: 'Wilson',
      address: '1500 Pennsylvania Ave NW',
      address2: 'Suite 1776',
      city: 'Washington',
      state: 'DC',
      zipcode: '20220',
      phoneNumber: '2026229979',
      dateOfBirth: '1776-07-04',
      socialSecurityNumber: '123456789'
    }
  }
}

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

request = Net::HTTP::Put.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 are 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. fields and descriptions.

Field

Description

email

Your user's email address. Abound assume's you have taken the proper steps to verify the ownership of this email address.

firstName

The user's legal first name.

lastName

The user's legal last name.

address

The user's legal street address. This CANNOT be a P.O. Box.

address2

The second part of the user's legal street address like an apartment or suite number.

city

The user's city, associated with a street address.

state

The two letter character code for this user's state ("ca" for California, "me" for Maine).

country

The user's country, either abbreviated or in long form.

zipcode

The user's zipcode, associated with street address.

phoneNumber

The user's phone number. No country code. Numerical digits only.

dateOfBirth

The user's date of birth in the following format: YYYY-MM-DD

socialSecurityNumber

The user's social security number (SSN). No hyphens. Numerical digits only.

Collecting Payer Information

If this your first time registering 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)., you can do this by using the POST /payers API endpoint and passing in the relevant information. If you have already done this, just make sure you have the resulting payerId handy when issuing the 1099 form.

Below is a sample request:

curl \
  --request POST \
  --url https://sandbox-api.withabound.com/v2/payers \
  --header 'Authorization: Bearer <<apiKey>>' \
  --header 'Content-Type: application/json' \
  --data '{
    "payers": [
      {
        "name": "Acme Inc",
        "address": "123 Main St.",
        "address2": "Suite 124",
        "city": "Smallville",
        "state": "CA",
        "country": "USA",
        "zipcode": "10001",
        "phoneNumber": "5555555555",
        "taxIdNumber": "123456789"
      }
    ]
  }'
const fetch = require('node-fetch');

const url = 'https://sandbox-api.withabound.com/v2/payers';
const options = {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
    Authorization: 'Bearer <<apiKey>>'
  },
  body: JSON.stringify({
    payers: [
      {
        name: "Acme Inc",
        address: "123 Main St.",
        address2: "Suite 124",
        city: "Smallville",
        state: "CA",
        country: "USA",
        zipcode: "10001",
        phoneNumber: "5555555555",
        taxIdNumber: "123456789"
      }
    ]
  })
};

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/payers"

payload = {"payers": [
        {
            "name": "Acme Inc",
            "address": "123 Main St.",
            "address2": "Suite 124",
            "city": "Smallville",
            "state": "CA",
            "country": "USA",
            "zipcode": "10001",
            "phoneNumber": "5555555555",
            "taxIdNumber": "123456789"
        }
    ]}
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 payers = new JsonArray();
JsonObject payerOne = new JsonObject();

payerOne.addProperty("name", "Acme Inc");
payerOne.addProperty("address", "123 Main St.");
payerOne.addProperty("address2", "Suite 124");
payerOne.addProperty("city", "Smallville");
payerOne.addProperty("state", "CA");
payerOne.addProperty("country", "USA");
payerOne.addProperty("zipcode", "10001");
payerOne.addProperty("phoneNumber", "5555555555");
payerOne.addProperty("taxIdNumber", "123456789");

payers.add(payerOne);

requestBody.add("payers", payers);

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/payers")
  .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/payers"

    var requestBody = []byte(`{
        "payers": [
            {
                "name": "Acme Inc",
                "address": "123 Main St.",
                "address2": "Suite 124",
                "city": "Smallville",
                "state": "CA",
                "country": "USA",
                "zipcode": "10001",
                "phoneNumber": "5555555555",
                "taxIdNumber": "123456789"
            }
        ]
    }`)

    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/payers");
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 {
  payers = new[] {
    new {
      name = "Acme Inc",
      address = "123 Main St.",
      address2 = "Suite 124",
      city = "Smallville",
      state = "CA",
      country = "USA",
      zipcode = "10001",
      phoneNumber = "5555555555",
      taxIdNumber = "123456789"
    }
  }
});
IRestResponse response = client.Execute(request);
require 'uri'
require 'net/http'
require 'openssl'
require 'json'

url = URI("https://sandbox-api.withabound.com/v2/payers")
requestBody = {
  payers: [
    {
      name: 'Acme Inc',
      address: '123 Main St.',
      address2: 'Suite 124',
      city: 'Smallville',
      state: 'CA',
      country: 'USA',
      zipcode: '10001',
      phoneNumber: '5555555555',
      taxIdNumber: '123456789'
    }
  ]
}

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

Here is a response:

{
  "data": {
    "payerId": "<<testPayerId>>",
    "name": "Acme Inc",
    "address": "123 Main St.",
    "address2": "Suite 124",
    "city": "Smallville",
    "state": "CA",
    "country": "USA",
    "zipcode": "10001",
    "phoneNumber": "5555555555"
  }
}

Below are 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). fields and descriptions.

Field

Description

payerId

The payer's unique identifier.

name

The payer's legal business name.

address

The payer's legal address.

address2

The second part of the payer's legal address, like an apartment or suite number.

city

The payer's city, associated with a street address.

state

The two letter character code for this payer's state ("ca" for California, "me" for Maine). If foreign, use payer's province.

country

The payer's country, either abbreviated or in long form.

zipcode

The payer's zipcode, associated with street address. If foreign, use payer's foreign postal code.

phoneNumber

The payer's phone number. No country code. Numerical digits only.

taxIdNumber

The payer's tax identification number, commonly referred to as a TIN (or an EIN). No hyphens. Numerical digits only.


Did this page help you?