Automating 941 Filing with the TaxBandits API - A Complete Guide

Form 941 is a cornerstone of quarterly payroll tax compliance — but filing it at scale across multiple clients, entities, or business units can quickly become complex. Whether you're a CPA handling bulk filings, a software platform embedding IRS compliance into your workflow, or an aggregate filer submitting Schedule R for multiple EINs, the need for automation and accuracy is critical.
That's where the TaxBandits API comes in.
In this guide, we'll walk through the key steps and endpoints involved in automating the 941 filing process—from authentication and business setup to e-signing, validation, and transmission.
Step 1: Preliminary Steps for 94x Filing
Before creating and transmitting Form 941 (or any other 94x return) through the TaxBandits API, there are a few foundational steps you'll need to complete. These ensure that your integration is secure, properly authenticated, and ready to receive real-time filing updates.
-
Webhook Configuration
TaxBandits uses webhooks to notify your application about status changes related to filings. For 941 automation, you should configure the following webhooks in your developer console:
- E-File Status Change: Notifies you when a 94x form (such as 941, 940, etc.) has been accepted, rejected, or returned by the IRS with additional information.
- PDF Complete (optional): Use this webhook to receive a ZIP file containing the official IRS-stamped copy of the 941 form once the filing is complete.
Each webhook response includes identifiers such as SubmissionId, RecordId, status code, and timestamp. Ensure your system listens for these updates and stores them appropriately.
-
OAuth 2.0 Authentication
Before calling any TaxBandits API endpoint, you must obtain an access token using the OAuth 2.0 protocol. See how to generate the JWT and retrieve the access token.
-
Business Creation
Each 941 return must be tied to an employer (business entity). Use the Business/Create endpoint to create the business in TaxBandits for which you're filing for.
Best Practices:
- Store the BusinessId returned in your database for all subsequent 941 form generation and transmissions for this business.
- Reuse the same business record across quarters unless details like EIN or address have changed. If the EIN or address details are changed, you can use the Business/Update endpoint to update the business details
Step 2: Create Form 941
Once the business setup is complete, you can create the 941 return using the Form941/Create endpoint. This endpoint allows you to specify the return's quarter, employer details (referencing the BusinessId), wages, withholdings, credits, and other IRS-required values.
You can also provide your Schedule B information (if applicable) and specify IRS payment options to pay any tax due.
During creation, the API automatically validates your data against IRS schema rules and TaxBandits' internal checks. If any errors are found, the response will include error codes and messages so you can correct them before proceeding.
{
"Form941Records": [
{
"SequenceId": "001",
"ReturnHeader": {
"ReturnType": "FORM941",
"TaxYr": "2025",
"Qtr": "Q2",
"Business": {
"BusinessId": null,
"BusinessNm": "ABC Enterprises",
"TradeNm": null,
"PayerRef": "Payerref001",
"IsEIN": true,
"EINorSSN": "236598862",
"Email": "joel@sample.com",
"ContactNm": "Joel Cruz",
"Phone": "787-641-7809",
"PhoneExtn": "12345",
"Fax": null,
"BusinessType": "CORP",
"SigningAuthority": {
"Name": "Joel Cruz",
"Phone": "7876417809",
"BusinessMemberType": "TAXOFFICER"
},
"KindOfEmployer": null,
"KindOfPayer": null,
"IsBusinessTerminated": false,
"IsForeign": false,
"USAddress": {
"Address1": "16 Main Street",
"Address2": "Moon lan avenue",
"City": "Arecibo",
"State": "PR",
"ZipCd": "00614"
},
"ForeignAddress": null
},
"IsThirdPartyDesignee": false,
"ThirdPartyDesignee": {
"Name": null,
"Phone": null,
"PIN": null
},
"SignatureDetails": {
"SignatureType": "REPORTING_AGENT",
"OnlineSignaturePIN": {
"PIN": null
},
"ReportingAgentPIN": {
"PIN": "87435"
},
"taxPayerPIN": {
"PIN": null
},
"Form8453EMP": null
},
"BusinessStatusDetails": {
"IsBusinessClosed": false,
"BusinessClosedDetails": {
"Name": null,
"FinalDateWagesPaid": null,
"IsForeign": false,
"USAddress": {
"Address1": "2302 Kinsey Roadd",
"Address2": "Main Street",
"City": "Dothan",
"State": "AL",
"ZipCd": "36303"
},
"ForeignAddress": null
},
"IsBusinessTransferred": false,
"BusinessTransferredDetails": {
"Name": null,
"BusinessChangeType": null,
"DateOfChange": null,
"NewBusinessType": null,
"NewBusinessName": null,
"IsForeign": true,
"USAddress": {
"Address1": null,
"Address2": null,
"City": null,
"State": null,
"ZipCd": null
},
"ForeignAddress": {
"Address1": "1751 Kinsey Rd",
"Address2": "Main St",
"City": "Dothan",
"ProvinceOrStateNm": "NY",
"Country": "UK",
"PostalCd": "78867789"
}
},
"IsSeasonalEmployer": false
}
},
"ReturnData": {
"Form941": {
"EmployeeCnt": 200,
"WagesAmt": 1264000.32,
"FedIncomeTaxWHAmt": 248000.32,
"WagesNotSubjToSSMedcrTaxInd": false,
"SocialSecurityTaxCashWagesAmt_Col1": 14502.32,
"TaxableSocSecTipsAmt_Col1": 1420.36,
"TaxableMedicareWagesTipsAmt_Col1": 11512.64,
"TxblWageTipsSubjAddnlMedcrAmt_Col1": 7832.16,
"SocialSecurityTaxAmt_Col2": 1798.29,
"TaxOnSocialSecurityTipsAmt_Col2": 176.12,
"TaxOnMedicareWagesTipsAmt_Col2": 333.87,
"TaxOnWageTipsSubjAddnlMedcrAmt_Col2": 70.49,
"TotSSMdcrTaxAmt": 2378.77,
"TaxOnUnreportedTips3121qAmt": 11204.62,
"TotalTaxBeforeAdjustmentAmt": 261583.71,
"CurrentQtrFractionsCentsAmt": 5200.36,
"CurrentQuarterSickPaymentAmt": 16412.28,
"CurrQtrTipGrpTermLifeInsAdjAmt": 5420.32,
"TotalTaxAfterAdjustmentAmt": 288616.67,
"PayrollTaxCreditAmt": 1154.15,
"IsPayrollTaxCredit": true,
"Form8974": {
"Form8974IncomeTaxDetails": [
{
"IncomeTaxPeriodEndDate": "07-07-2025",
"IncomeTaxReturnFiledForm": "FORM1065",
"IncomeTaxReturnFiledDate": "07-07-2025",
"Form6765EIN": "006548956",
"Form6765Line44Amt": 5000,
"PreviousPeriodRemainingCreditAmt": 100,
"RemainingCredit": 4900
}
],
"Line7": 4900,
"Line8": 1798.29,
"Line9": 176.12,
"Line10": 1974.41,
"Line11": 987.21,
"PayerIndicatorType": "SECTION3121QIND",
"Line12": 987.21,
"Line13": 3912.79,
"Line14": 333.87,
"Line15": 166.94,
"Line16": 166.94,
"Line17": 1154.15
},
"TotTaxAfterAdjustmentAndNonRfdCr": 287462.52,
"TotTaxDepositAmt": 13248.12,
"BalanceDueAmt": 274214.40,
"OverpaidAmt": 0,
"OverPaymentRecoveryType": null
},
"IRSPaymentType": "EFTPS",
"IRSPayment": {
"BankRoutingNum": null,
"AccountType": null,
"BankAccountNum": null,
"Phone": null
},
"DepositScheduleType": {
"DepositorType": "MONTHLY",
"MonthlyDepositor": {
"TaxLiabilityMonth1": 50000.00,
"TaxLiabilityMonth2": 187462.52,
"TaxLiabilityMonth3": 50000.00
},
"SemiWeeklyDepositor": null,
"TotalQuarterTaxLiabilityAmt": 287462.52
}
}
}
]
}
Step 3: Signature Collection – Multiple Options
The IRS requires authorized signatures before a 94x return (e.g., Form 941, 940, 944, or 943) can be transmitted. The method you use depends entirely on your role as a filer:
| Filer Type | Signature Type |
|---|---|
| CPA / Paid Preparer | Form 8453-EMP (Signed by both Taxpayer and You) |
| Software Provider | Form 8453-EMP or Online PIN (client) |
| Electronic Return Originator (ERO) | Form 8879-EMP |
| Reporting Agent (RA) | RA PIN |
| CPEO / 3504 Agent / PEO | Online PIN (own) |
Form 8453-EMP
Used by: CPAs, Paid Preparers, and Software Providers
Requirement: If you're filing on behalf of a client, both your client (the taxpayer) and you (the preparer) must sign it. However, if you're filing for your own business, only your signature is required. It must be submitted along with the 94x return to the IRS.
Workflow in TaxBandits API: TaxBandits API offers you multiple ways to complete the signature process.
-
Download, Sign, and Upload
- Use the 'DownloadForm8453EMP' endpoint to download the IRS Form 8453-EMP we've generated for the return. Share it with the corresponding client (taxpayer) to obtain their signature. Once they e-sign, add your signature.
"Form941/DownloadForm8453EMP?RecordId=eed7cf65-088e-4eba-800a-dcd54c0d06bl"- Upload the signed PDF backed to our system using 'UploadForm8453EMP' to attach it to the 941 form.
{
"RecordId": "eed7cf65-088e-4eba-800a-dcd54c0d05bb",
"Form8453EMPPdf":"QEA="
} -
E-Sign Request via Email
-
Use this 'RequestByEmail' endpoint to send an e-signature request to the clients via email. Once they e-sign, you'll be notified; you can e-sign it and proceed with the filing.
Note:The email will be sent from the domain esignirsforms.com and your clients will not know about TaxBandits. You can also customize this email with your business logo to elevate your branding.
{
"RecordId": "0a148914-1125-4cf3-a48a-5ce8b750693e",
"TaxPayerEmail": "shawn@sample.com",
"TaxPreparerEmail": "peter@sample.com",
"CustomizationId": null,
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "LEFT",
"PrimaryColor": "#20DEE5",
"SecondaryColor": "#8C1FCB"
}
}
-
-
E-Sign via Secure URL
-
Use the 'RequestByURLPayer' endpoint to obtain a secure URL that can be embedded in your software or portal. Your clients can e-sign the 8453-EMP form upon clicking the URL.
Note:You can customize the e-sign page with your business logo and add redirection URLs (when the client cancels or completes the submission).
{
"RecordId": "babf0c22-f13b-4d2a-ae6e-8022f4def4a2",
"CustomizationId": null,
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "LEFT",
"PrimaryColor": "#E61A1A",
"SecondaryColor": "#18F244"
},
"RedirectUrls": {
"ReturnUrl": "https://example1.com",
"CancelUrl": "https://example2.com"
}
} -
Use the 'RequestByURLPreparer' endpoint to obtain a secure URL that you or your team members can use to e-sign the return once your clients sign it.
{
"RecordId": "d3643ae5-a55a-40aa-ab78-3b2f9ca7b7bb",
"CustomizationId": null,
"Customization": {
"BusinessLogoUrl": "https://www.spanenterprises.com/Content/Images/span.png",
"LogoPosition": "CENTER",
"PrimaryColor": "#E61A1A",
"SecondaryColor": "#18F244"
},
"RedirectUrls": {
"ReturnUrl": "https://example1.com",
"CancelUrl": "https://example2.com"
}
}
-
Form 8879-EMP
Used by: EROs (Electronic Return Originators)
Requirement: This form is signed by the taxpayer but is not submitted to the IRS—you must retain it for your records.
Workflow in TaxBandits API: Use the 'DownloadForm8879EMP' endpoint to download the IRS Form 8453-EMP we've generated for the return. Share it with the corresponding client (taxpayer) to obtain their signature. Once they e-sign, you can store it for your records.
"Form941/DownloadForm8879EMP?RecordId=eed7cf65-088e-4eba-800a-dcd54c0d05bb"
Online Signature PIN
Used by: Software Providers (client PIN) and Aggregate Filers (own PIN)
Requirement: This method eliminates the need for Form 8453-EMP. The taxpayer must have a valid IRS-issued Online Signature PIN.
Workflow in TaxBandits API: Provide your client's PIN in your CREATE API request in the 'OnlineSignaturePIN' node. For Schedule R filings, you can provide your own PIN.
Note: CPAs and EROs cannot use Online Signature PINs.
"SignatureDetails": {
"SignatureType": "ONLINE_SIGN_PIN",
"OnlineSignaturePIN": {
"PIN": "1234567890"
},
"ReportingAgentPIN": {
"PIN": null
},
"taxPayerPIN": {
"PIN": null
},
"Form8453EMP": null
}
Reporting Agent PIN (RA PIN)
Used by: Registered Reporting Agents
Requirement: RA PIN must be obtained from the IRS by submitting Form 8655 for each client. It serves as your electronic signature for any 94x forms filed on behalf of approved clients.
Workflow in TaxBandits API: Include the PIN while creating the return:
"SignatureDetails": {
"SignatureType": "REPORTING_AGENT",
"OnlineSignaturePIN": {
"PIN": null
},
"ReportingAgentPIN": {
"PIN": "87435"
},
"taxPayerPIN": {
"PIN": null
},
"Form8453EMP": null
}
Step 4: Review the completed Form 941 (Optional but recommended)
Before transmitting the return to the IRS, it's good practice to review the finalized version of Form 941—especially if the data is coming from multiple sources or was auto-filled via your application.
To support this, TaxBandits offers a 'Form941/GetPDF' endpoint. This allows you to generate a draft version of the return, populated with all the submitted values, signatures, and payment information.
"Form941/GETPDF?SubmissionId=66c6e0c7-251e-4f00-8a75-14b5656a59db&RecordIds=8f85ff98-55ea-4fa9-bc20-7abe02625d14"
Step 5: Monitor IRS Filing Status
After transmitting the return to the IRS, the final step is to track its processing status. If you've already configured the 'Efile Status Change' webhook in your developer console, you'll receive real-time notifications when the IRS accepts or rejects your 94x return. When the return is accepted, the webhook also includes the official IRS acknowledgement.
If you haven't set up webhooks, you can call the 'Form941/Status' endpoint to fetch the current status of a return.
"Form941/status?SubmissionId=66c6e0c7-251e-4f00-8a75-14b5656a59db&RecordIds=8f85ff98-55ea-4fa9-bc20-7abe02625d14"
Step 6: Retransmit, If Rejected (Free)
If the IRS rejects your Form 941, you can correct and retransmit it at no extra cost. Review the error message to identify what went wrong and use the 'Form941/Update' endpoint to make the necessary changes.
Then, use the Transmit endpoint with the same SubmissionId to resend the return to the IRS.
Step 7: Retrieve Final Form PDFs (Optional)
Once the IRS accepts the return, you can download a copy using the 'Form941/GetPDF' endpoint. These copies are suitable for sharing with clients or archiving for compliance purposes.
"Form941/GETPDF?SubmissionId=66c6e0c7-251e-4f00-8a75-14b5656a59db&RecordIds=8f85ff98-55ea-4fa9-bc20-7abe02625d14"
Ready to Simplify Your 941 Filing?
By following this structured API-first approach to 941 filing, you can automate a process that was traditionally manual, error-prone, and time-consuming. Whether you're integrating for internal use or enabling your clients to file through your software, TaxBandits provides a secure, developer-friendly platform for federal payroll tax compliance.
For complete documentation and sample payloads, visit: https://developer.taxbandits.com/docs/Form941
