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.

šŸ“˜

Form 1099-K Guidelines

  • Only one (1) Form 1099-K is allowed per userId per payerId per year
  • To make changes to an existing Form 1099-K, delete it, and recreate it with your changes
  • Once the filing process has started, your Form 1099-K 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": "1099k",
        "year": 2022,
        "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",
            "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: '1099k',
        year: 2022,
        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',
            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": "1099k",
            "year": "2022",
            "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",
                    "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>>";

GrossAmountsByMonth grossAmountsByMonth = GrossAmountsByMonth.builder()
  .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)
  .build();

Form1099KDocumentRequest form1099KDocumentRequest = Form1099KDocumentRequest.builder()
  .payerId(payerId)
  .payerClassification(PayerClassification.PAYMENT_SETTLEMENT_ENTITY)
  .pseName("Payment Entity")
  .psePhoneNumber("5555555555")
  .transactionsReportedClassification(TransactionsReportedClassification.PAYMENT_CARD)
  .accountNumber("1234567890")
  .merchantCategoryCode("4582")
  .aggregateGrossAmount(23323.23)
  .aggregateGrossAmountCardNotPresent(23323.23)
  .numberOfPaymentTransactions(767)
  .grossAmountsByMonth(grossAmountsByMonth)
  .federalIncomeTaxWithheld(23323.23)
  .year(2022)
  .build();

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

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": "1099k",
                "year": 2022,
                "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",
                        "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 = "1099k",
      year = 2022,
      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",
          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: '1099k',
      year: 2022,
      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',
          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-K.pdf?AWSAccessKeyId=AKIA6C6AUYYBZMXK74XQ&Expires=1630612016&Signature=%2BYaWwX3GPId1QAzDrVPY3Meeycs%3D",
      "documentName": "2022 Form 1099-K",
      "type": "1099k",
      "year": "2022",
      "status": "created",
      "createdTimestamp": 1628275165630
    }
  ]
}

Form 1099-K Fields

Below is the Form 1099-K with our fields overlaid. Note that some fields have been shortened to fit.

Form 1099-K Definitions

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.

isCorrected

Corrected box

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

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.

payerStateId

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?