1099-K Overview

Payments made with a credit card or payment card and certain other types of payments, including third-party network transactions, must be reported on Form 1099-K.

1099-K Issuance

To issue a 1099-K 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": "1099k",
        "year": 2021,
        "payerId": "<<testPayerId>>",
        "payerClassification": "PSE",
        "transactionsReportedClassification": "paymentCard",
        "pseName": "Payment Entity",
        "psePhoneNumber": "5555555555",
        "accountNumber": "1234567890",
        "aggregateGrossAmount": 23323.23,
        "aggregateGrossAmountCardNotPresent": 23323.23,
        "merchantCategoryCode": "4582",
        "numberOfPaymentTransactions": 767,
        "federalIncomeTaxWithheld": 23323.23,
        "grossAmountsByMonth": {
          "january": 23323.23,
          "february": 23323.23,
          "march": 23323.23,
          "april": 23323.23,
          "may": 23323.23,
          "june": 23323.23,
          "july": 23323.23,
          "august": 23323.23,
          "september": 23323.23,
          "october": 23323.23,
          "november": 23323.23,
          "december": 23323.23
        },
        "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: '1099k',
        year: 2021,
        payerId: '<<testPayerId>>',
        payerClassification: 'PSE',
        transactionsReportedClassification: 'paymentCard',
        pseName: 'Payment Entity',
        psePhoneNumber: '55555555555',
        accountNumber: '1234567890',
        aggregateGrossAmount: 23323.23,
        aggregateGrossAmountCardNotPresent: 23323.23,
        merchantCategoryCode: '4582',
        numberOfPaymentTransactions: 767,
        federalIncomeTaxWithheld: 23323.23,
        grossAmountsByMonth: {
          january: 23323.23,
          february: 23323.23,
          march: 23323.23,
          april: 23323.23,
          may: 23323.23,
          june: 23323.23,
          july: 23323.23,
          august: 23323.23,
          september: 23323.23,
          october: 23323.23,
          november: 23323.23,
          december: 23323.23
        },
        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": "1099k",
            "year": "2021",
            "payerId": "<<testPayerId>>",
            "payerClassification": "PSE",
            "transactionsReportedClassification": "paymentCard",
            "pseName": "Payment Entity",
            "psePhoneNumber": "55555555555",
            "accountNumber": "1234567890",
            "aggregateGrossAmount": 23323.23,
            "aggregateGrossAmountCardNotPresent": 23323.23,
            "merchantCategoryCode": "4582",
            "numberOfPaymentTransactions": 767,
            "federalIncomeTaxWithheld": 23323.23,
            "grossAmountsByMonth": {
                "january": 23323.23,
                "february": 23323.23,
                "march": 23323.23,
                "april": 23323.23,
                "may": 23323.23,
                "june": 23323.23,
                "july": 23323.23,
                "august": 23323.23,
                "september": 23323.23,
                "october": 23323.23,
                "november": 23323.23,
                "december": 23323.23
            },
            "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 ten99K = new JsonObject();
JsonObject ten99KGrossAmountsByMonth = new JsonObject();
JsonArray ten99KStateTaxInfos = new JsonArray();
JsonObject ten99KStateTaxInfoOne = new JsonObject();
JsonObject ten99KStateTaxInfoTwo = new JsonObject();

ten99K.addProperty("type", "1099k");
ten99K.addProperty("year", 2021);
ten99K.addProperty("payerId", "<<testPayerId>>");
ten99K.addProperty("payerClassification", "PSE");
ten99K.addProperty("transactionsReportedClassification", "paymentCard");
ten99K.addProperty("pseName", "Payment Entity");
ten99K.addProperty("psePhoneNumber", "5555555555");
ten99K.addProperty("accountNumber", "1234567890");
ten99K.addProperty("aggregateGrossAmount", 23323.23);
ten99K.addProperty("aggregateGrossAmountCardNotPresent", 23323.23);
ten99K.addProperty("merchantCategoryCode", "4582");
ten99K.addProperty("numberOfPaymentTransactions", 767);
ten99K.addProperty("federalIncomeTaxWithheld", 23323.23);

ten99KGrossAmountsByMonth.addProperty("january", 23323.23);
ten99KGrossAmountsByMonth.addProperty("february", 23323.23);
ten99KGrossAmountsByMonth.addProperty("march", 23323.23);
ten99KGrossAmountsByMonth.addProperty("april", 23323.23);
ten99KGrossAmountsByMonth.addProperty("may", 23323.23);
ten99KGrossAmountsByMonth.addProperty("june", 23323.23);
ten99KGrossAmountsByMonth.addProperty("july", 23323.23);
ten99KGrossAmountsByMonth.addProperty("august", 23323.23);
ten99KGrossAmountsByMonth.addProperty("september", 23323.23);
ten99KGrossAmountsByMonth.addProperty("october", 23323.23);
ten99KGrossAmountsByMonth.addProperty("november", 23323.23);
ten99KGrossAmountsByMonth.addProperty("december", 23323.23);

ten99K.add("grossAmountsByMonth", ten99KGrossAmountsByMonth);

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

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

ten99KStateTaxInfos.add(ten99KStateTaxInfoOne);
ten99KStateTaxInfos.add(ten99KStateTaxInfoTwo);

ten99K.add("stateTaxInfos", ten99KStateTaxInfos);

documents.add(ten99K);

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": "1099k",
                "year": 2021,
                "payerId": "<<testPayerId>>",
                "payerClassification": "PSE",
                "transactionsReportedClassification": "paymentCard",
                "pseName": "Payment Entity",
                "psePhoneNumber": "5555555555",
                "accountNumber": "1234567890",
                "aggregateGrossAmount": 23323.23,
                "aggregateGrossAmountCardNotPresent": 23323.23,
                "merchantCategoryCode": "4582",
                "numberOfPaymentTransactions": 767,
                "federalIncomeTaxWithheld": 23323.23,
                "grossAmountsByMonth": {
                    "january": 23323.23,
                    "february": 23323.23,
                    "march": 23323.23,
                    "april": 23323.23,
                    "may": 23323.23,
                    "june": 23323.23,
                    "july": 23323.23,
                    "august": 23323.23,
                    "september": 23323.23,
                    "october": 23323.23,
                    "november": 23323.23,
                    "december": 23323.23
                },
                "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 = "1099k",
      year = 2021,
      payerId = "<<testPayerId>>",
      payerClassification = "PSE",
      transactionsReportedClassification = "paymentCard",
      pseName = "Payment Entity",
      psePhoneNumber = "55555555555",
      accountNumber = "1234567890",
      aggregateGrossAmount = 23323.23,
      aggregateGrossAmountCardNotPresent = 23323.23,
      merchantCategoryCode = "4582",
      numberOfPaymentTransactions = 767,
      federalIncomeTaxWithheld = 23323.23,
      grossAmountsByMonth = new {
        january = 23323.23,
        february = 23323.23,
        march = 23323.23,
        april = 23323.23,
        may = 23323.23,
        june = 23323.23,
        july = 23323.23,
        august = 23323.23,
        september = 23323.23,
        october = 23323.23,
        november = 23323.23,
        december = 23323.23
      },
      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: '1099k',
      year: 2021,
      payerId: '<<testPayerId>>',
      payerClassification: 'PSE',
      transactionsReportedClassification: 'paymentCard',
      pseName: 'Payment Entity',
      psePhoneNumber: '55555555555',
      accountNumber: '1234567890',
      aggregateGrossAmount: 23323.23,
      aggregateGrossAmountCardNotPresent: 23323.23,
      merchantCategoryCode: '4582',
      numberOfPaymentTransactions: 767,
      federalIncomeTaxWithheld: 23323.23,
      grossAmountsByMonth: {
        january: 23323.23,
        february: 23323.23,
        march: 23323.23,
        april: 23323.23,
        may: 23323.23,
        june: 23323.23,
        july: 23323.23,
        august: 23323.23,
        september: 23323.23,
        october: 23323.23,
        november: 23323.23,
        december: 23323.23
      },
      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

Here is the response:

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

Form 1099-K Fields

Below is the Form 1099-K with Abound's fields overlaid.

Form 1099-K Definitions

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

Field

Form 1099-K

Description

documentId

--

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

status

--

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

type

--

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

payerId

--

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

year

--

This is the tax year associated with the Form 1099-K issued.

accountNumber

Account number

May show an account number or other unique number the PSE assigned to distinguish a account.

payerClassification

Check to indicate the payer's classification type:

Checkbox to mark either:

  • Payment settlement entity (PSE)
  • Electronic Payment Facilitator
    (EPF)/Other third party

transactionsReportedClassification

Check to indicate transactions reported are:

Checkbox to mark either:

  • Payment card
  • Third party network

pseName

PSE'S name and telephone number

Required if paymentSettlementEntity is checked.

psePhoneNumber

PSE'S name and telephone number

Required if paymentSettlementEntity is checked

aggregateGrossAmount

Box 1a -- Gross amount of payment card/third party network transactions

($) aggregate gross amount of payment card/third party network transactions made to you through the PSE during the calendar year.

aggregateGrossAmountCardNotPresent

Box 1b -- Card Not Present transactions

($) Shows the aggregate gross amount of all reportable payment transactions made to you through the PSE during the calendar year where the card was not present at the time of the transaction or the card number was keyed into the terminal. Typically, this relates to online sales, phone sales, or catalogue sales. If the box for third party network is checked, or if these are third party network transactions, Card Not Present transactions will not be reported.

merchantCategoryCode

Box 2 -- Merchant category code

Payment brands use merchant category codes (MCCs) to
classify merchants and businesses by the type of goods or services provided. It is a four (4) digit code. This may be left blank.

numberOfPaymentTransactions

Box 3 -- Number of payment transactions

Shows the number of payment transactions (not including refund transactions) processed through the payment card/ third party network.

federalIncomeTaxWithheld

Box 4 -- Federal income tax withheld

($) Shows backup withholding. Generally, a payer must backup withhold if you did not furnish your TIN or you did not furnish the correct TIN to the payer.

grossAmountsByMonth.january

Box 5a -- January

($) Show the gross amount of payment card/third party network transactions made to you for each month of the calendar year

grossAmountsByMonth.february

Box 5a -- February

($)

grossAmountsByMonth.march

Box 5a -- March

($)

grossAmountsByMonth.april

Box 5a -- April

($)

grossAmountsByMonth.may

Box 5a -- May

($)

grossAmountsByMonth.june

Box 5a -- June

($)

grossAmountsByMonth.july

Box 5a -- July

($)

grossAmountsByMonth.august

Box 5a -- August

($)

grossAmountsByMonth.september

Box 5a -- September

($)

grossAmountsByMonth.october

Box 5a -- October

($)

grossAmountsByMonth.november

Box 5a -- November

($)

grossAmountsByMonth.december

Box 5a -- December

($)

filingState

Box 6 State

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

stateId

Box 7 State identification no.

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

stateTaxWithheld

Box 8 State income tax withheld

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


Did this page help you?