UploadAttachment
UploadAttachment
This endpoint is used to attach supporting PDF documents, such as yearly transaction details, to a recipient's 1099 form copy before it is shared with them.
How it works
- Create Form - Generate a 1099 form for the recipient.
- Upload Transaction Documents – Use the UploadAttachment endpoint against each form to upload additional PDFs for that recipient.
- Transmit & Distribute – After uploading, call the Transmit endpoint. TaxBandits will deliver the 1099 along with the attached documents through Postal Mailing and/or Online Access, whichever is enabled.
Key points
- Enable Postal Mailing or Online Access for each recipient under the distribution details.
- Mask TIN details in the attachment before uploading.
- Provide either PDFByte or FilePath for each RecordID, not both.
- Attachments must be uploaded before transmitting; they cannot be added afterward.
- If multiple PDFs are uploaded for the same RecordID, the latest one replaces the earlier upload.
- Limits: up to 100 PDFs or 100 MB total per submission, with each byte array capped at 2 MB.
POST Attachment/Upload Request Body
| Field | Type | Description |
|---|---|---|
| SummaryAttachment | Object[] | Object to get the attachment details |
| RecordID | Guid | A Unique identifier of the records given by TaxBandits |
| PDFByte | ByteArray | Byte array of the PDF document |
| FilePath | String | File path of the PDF document |
Response Body
| Field | Type | Description |
|---|---|---|
| SuccessRecords | Object[] | Object contains the success records |
| RecordID | Guid | A unique Identifier of the records generated by TaxBandits |
| Info | String | Success records information |
| ErrorRecords | Object[] | Object contains the error records. |
| RecordID | Guid | A unique Identifier of the records generated by TaxBandits |
| Errors | object[] | Shows detailed error information. |
| Id | string | Returns the validation error ID. |
| Name | string | Name of the validation error. |
| Message | string | Description of the validation error. |
Payload

Go Lang
Node.js
Python
.NET C#

Ruby
Java

cURL
Request Json
| Sample | Description | Action |
|---|---|---|
| Sample 1 | Attach supporting PDF documents |
Sample 1
{
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
}
Response JSON
| Response | Description | Action |
|---|---|---|
| 200 | Success Response - You'll get the below response when the request is processed successfully. |
Response: 200
{
"SuccessRecords": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"Info": "Attachment Uploaded Successfully"
},
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"Info": "Attachment Uploaded Successfully"
}
],
"ErrorRecords": null
}
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
url := "<APIURL>/v2.0.0/Attachment/Upload"
method := "POST"
payload := strings.NewReader(`{
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1U8REM0RkJBMERBQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAgbiAKMDAwMDAwMDA2OCAwMDAwMCBuIAowMDAwMDAwMTAyIDAwMDAwIG4gCjAwMDAwMDAxODYgMDAwMDAgbiAKdHJhaWxlcgo8PC9TaXplIDUKL1Jvb3QgMSAwIFIKL0luZm8gMyAwIFIKL0lEIFs8NTUxRDBFMjgwOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
}`)
client := &http.Client{}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Authorization", "<ACCESS_TOKEN>")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
const axios = require('axios');
let data = JSON.stringify({
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
});
let config = {
method: 'post',
maxBodyLength: Infinity,
url: '<APIURL>/v2.0.0/Attachment/Upload',
headers: {
'Authorization': '<ACCESS_TOKEN>',
'Content-Type': 'application/json'
},
data : data
};
axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});
import http.client
import json
conn = http.client.HTTPSConnection("<APIURL>")
payload = json.dumps({
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": None
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": None,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
})
headers = {
'Authorization': '<ACCESS_TOKEN>',
'Content-Type': 'application/json'
}
conn.request("POST", "/v2.0.0/Attachment/Upload", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "<APIURL>/v2.0.0/Attachment/Upload");
request.Headers.Add("Authorization", "<ACCESS_TOKEN>");
var content = new StringContent("{
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
require "uri"
require "json"
require "net/http"
url = URI("<APIURL>/v2.0.0/Attachment/Upload")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Authorization"] = "<ACCESS_TOKEN>"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": "nil"
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": "nil",
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
})
response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
}");
Request request = new Request.Builder()
.url("<APIURL>/v2.0.0/Attachment/Upload")
.method("POST", body)
.addHeader("Authorization", "<ACCESS_TOKEN>")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
curl --location '<APIURL>/v2.0.0/Attachment/Upload' --header 'Authorization: <ACCESS_TOKEN>' --header 'Content-Type: application/json' --data '{
"SummaryAttachment": [
{
"RecordID": "e88e7f1d-7ae5-43b6-99f6-38d85664035a",
"PDFByte": "JVBERi0xLjMKJcOHw6zCj8KiCjEgMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIKPj4KZW5kb2JqCgoyIDAgb2JqCjw8L1R5cGUgL1BhZ2VzCj4+CmVuZG9iagoKMyAwIG9iago8PC9Qcm9kdWNlciAoXS5jZr7J2RzsWMGZesbjnpitsebz7uIEZ5dbRhmC/A6w6QJx87yIZn+lw6h212zv0LgpCj4+CmVuZG9iagoKNCAwIG9iago8PC9GaWx0ZXIgL1N0YW5kYXJkCi9WIDIKL1IgMwovUCAtMTg1MgovTyA8MzY0NTFCRDM5RDc1M0I3QzFEMTA5MjJDMjhFNjY2NUFBNEYzMzUzRkIwMzQ4QjUzNjg5M0UzQjFEQjVDNTc5Qj4KL1UgPDREM0ZCQTBEQTkzNDdGRTdBMDhBRDk0Mzk2OEJBNzM2MzE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTU+Ci9MZW5ndGggMTI4Cj4+CmVuZG9iagoKeHJlZgowIDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDAwNjggMDAwMDAgbiAKMDAwMDAwMDEwMiAwMDAwMCBuIAowMDAwMDAwMTg2IDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSA1Ci9Sb290IDEgMCBSCi9JbmZvIDMgMCBSCi9JRCBbPDU1MUQwRTI4MOUE+XQovRW5jcnlwdCA0IDAgUgo+PgpzdGFydHhyZWYKMzk2CiUlRU9GCg==",
"FilePath": null
},
{
"RecordID": "04ec74ea-9099-42a0-9a64-710a4d7eec37",
"PDFByte": null,
"FilePath": "https://amazonaws.com/pdfs/a570efbd-740f-4ae2-bfe7-26356cd85148.pdf"
}
]
}'