Update
Update
Use this endpoint to update the information on existing VA-5M forms that are already created for the business.
You cannot update a return once it has been transmitted.
PUTStateFilings/VA5MWH/UpdateRequest Body
| Field | Type | Description |
|---|---|---|
| StateWHRecords | Object [] | Object to create VA-5Qs |
| SequenceId | String | A unique number given by an inbound application to identify failed records. Size Range: ..10 |
| ReturnHeader | Object | Identifies the supporting details of Form VA-5Q. |
| Qtr | String | The Quarter for which Form VA-5Q needs to be filed.Allowed values"Q1", "Q2", "Q3", "Q4" |
| TaxYr | String | The tax year for which Form VA-5Q needs to be filed.Allowed values2025 |
| BusinessId | String | Optional Use the unique BusinessId (Generated by TaxBandits) you received in the response of the Business CREATE Endpoint. If you do not have a BusinesId, ignore the field. By giving the BusinessId, you do not have to provide all the business information again. |
| Business | Object | The details of the business you’re filing for. |
| BusinessNm | String | Name of the business. Size Range: ..75 |
| PayerRef | string | Optional An unique identifier for each payer completing their information. This identifier can be used in future references of the payer in the API. Size Range: ..50 |
| TradeNm | String | Optional Name under which the business operates. Size Range: ..75 |
| IsEIN | Boolean | When true, identifies the business with an EIN. |
| EINorSSN | String | When IsEIN is true, use Employer Identification Number (EIN). When IsEIN is false, use Social Security Number (SSN). Size Range: 9-11 |
| String | Email address of the business. Size Range: ..100 | |
| BusinessType | String | Type of business. Optional for W-2/1099 and mandatory for 94X series Size Range: ..4 Allowed values"ESTE", "PART", "CORP", "EORG", "SPRO" |
| SigningAuthority | Object | Details of the person who is authorized to sign the return. |
| Name | String | Optional Name of the signing authority. Size Range: ..75 |
| Phone | String | Optional Phone number of the signing authority. Size Range: 10 |
| BusinessMemberType | String | Optional Business title of the authorized signatory. Size Range: 5..29 Allowed values"CORPORATESECRETARY", "SECRETARYTREASURER", "PARTNER", "GENERALPARTNER", "LIMITEDPARTNER", "LLCMEMBER", "MANAGINGMEMBER", "MANAGER", "TAXMATTERPARTNER", "PRESIDENT", "VICEPRESIDENT", "CORPORATETREASURER", "TREASURER", "ASSISTANTTREASURER", "CHIEFACCOUNTINGOFFICER", "CHIEFEXECUTIVEOFFICER", "CHIEFFINANCIALOFFICER", "TAXOFFICER", "CHIEFOPERATINGOFFICER", "CORPORATEOFFICER", "EXECUTIVEDIRECTOR", "DIRECTOR", "CHAIRMAN", "EXECUTIVEADMINISTRATOR", "RECEIVER", "PASTOR", "ASSISTANTTORELIGIOUSLEADER", "REVEREND", "PRIEST", "MINISTER", "RABBI", "LEADEROFRELIGIOUSORGANIZATION", "SECRETARY", "DIRECTOROFTAXATION", "DIRECTOROFPERSONNEL", "ADMINISTRATOR", "EXECUTOR", "TRUSTEE", "FIDUCIARY", "OWNER", "SOLEPROPRIETOR", "MEMBER", "SOLEMEMBER" |
| IsForeign | Boolean | When true, identifies the business as having a foreign address. |
| USAddress | Object | If IsForeign is false, pass the US address of the business. |
| Address1 | String | Employer/Payer’s US address (street address or post office box). Size Range: ..46 |
| Address2 | String | Optional Employer/Payer’s suite or apartment. Size Range: ..46 |
| City | String | Employer/Payer’s city. Size Range: ..50 |
| State | String | Employer/Payer’s state. Size Range: 2 Allowed values"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", etc. |
| ZipCd | String | Employer/Payer’s zip code. Size Range: 5..10 |
| ForeignAddress | Object | If IsForeign is true, pass the foreign address of the business. |
| Address1 | String | Employer/Payer’s foreign address (street address or post office box). Size Range: ..50 |
| Address2 | String | Optional Employer/Payer’s suite or apartment. Size Range: ..50 |
| City | String | Employer/Payer’s city. Size Range: ..50 |
| ProvinceOrStateNm | String | Employer/Payer’s province or state name. Size Range: ..50 |
| Country | String | Employer/Payer’s country. Size Range: 2 Allowed values"AF", "AX", "AL", "AG", "AQ", "AN", "AO", "AV", "AY", "AC", "AR", "AM", "AA", "AT", "AS", etc. |
| PostalCd | String | Employer/Payer’s postal code. Size Range: ..16 |
| ReturnData | Object[] | Identifies the Form VA-5Q data. |
| FormVA5Q | Object | Virginia withholding quarterly tax return. |
| WHIdNum | String | Virginia withholding account number. Allowed Format: "30-999999999F-001" or "30999999999F001" |
| L1VAWHAmt | Number | Total Virginia income tax withheld for the quarter Size Range: 0-99999999.99 |
| IsL1OverPayment | Boolean | If True identifies that Adjustment is made for the over payment reporting |
| IsL2UnderPayment | Boolean | If True identifies that Adjustment is made for the under payment reporting |
| L2AdjAmt | Number | Previous period(s) adjustments Size Range: 0-99999999.99 |
| L3TotAdjAmt | Number | Total adjustment totals of the quarter Size Range: 0-99999999.99 |
| L4PenaltyAmt | Number | Penalties for the quarter Size Range: 0-99999999.99 |
| L5InterestAmt | Number | Total interest amount for the quarter Size Range: 0-99999999.99 |
| L6TotAmtDue | Number | Total amount due for the quarter Size Range: 0-99999999.99 |
| StatePayment | Object | Object to identify the state payment details |
| RoutingTransitNumber | String | Bank routing number for state payment Size Range: 9 |
| BankAccountNumber | String | Bank account number for state payment Size Range: ..17 |
| PaymentAmt | Number | Payment amount for state payment Size Range: 0-99999999.99 |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | Unique identifier of a submission |
| SuccessRecords | object[] | It will show the detailed information about the success status of Form VA-5Q Records |
| SequenceId | string | A unique number given by an inbound application to identify particular records. |
| BusinessId | Guid | Unique identifier of a Business |
| PayerRef | string | Unique identifier of the payer |
| RecordId | Guid | An unique identifier generated by TaxBandits when a VA-5Q return is created |
| FormType | string | Denotes the type of withholding form (Form VA-5Q). |
| Status | string | Returns the record status of return. |
| StatusTs | string | Date and time of the return created. |
| Info | string | Returns the information about the return |
| Errors | object[] | Shows error information of state returns of Form VA-5Q |
| Id | string | Returns the validation error Id. |
| Name | string | Name of the validation error. |
| Message | string | Description of the validation error. |
| ErrorRecords | object[] | It will show the detailed information about the error status of Form VA-5Q Records. |
| SequenceId | string | A unique number given by an inbound application to identify particular records. The Sequence ID will be returned in the Response for your reference. |
| RecordId | Guid | Unique identifier of a record |
| 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 |
| 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. |
Request JSON
- Sample 1
Update return for the first three quarters of the tax year
{
"SubmissionId": "0199e75c-0735-77da-a40d-90459b8b9495",
"StateWHRecords": [
{
"Sequence": "001",
"RecordId": "0199e75c-084f-730c-9db2-238dbdc5e014",
"ReturnHeader": {
"Qtr": "Q4",
"TaxYr": "2025",
"Business": {
"BusinessId": "351fc0b4-2568-40af-a403-4c08468cdd95",
"BusinessNm": "SnowDaze LLC",
"PayerRef": null,
"FirstNm": null,
"MiddleNm": null,
"LastNm": null,
"Suffix": null,
"TradeNm": "",
"IsEIN": true,
"EINorSSN": "34-2093733",
"Email": "john@sample.com",
"ContactNm": null,
"Phone": null,
"PhoneExtn": null,
"Fax": null,
"BusinessType": "ESTE",
"SigningAuthority": {
"Name": "John",
"Phone": "(789) 789-7987",
"BusinessMemberType": "ADMINISTRATOR"
},
"KindOfEmployer": null,
"KindOfPayer": null,
"IsBusinessTerminated": false,
"IsForeign": false,
"USAddress": {
"Address1": "12 main st",
"Address2": null,
"City": "Rock Hill",
"State": "SC",
"ZipCd": "29730"
},
"ForeignAddress": null,
"ACADetails": null
}
},
"ReturnData": {
"FormVA5M": {
"WHIdNum": "30-317236483F-001",
"L1VAWHAmt": 100,
"L2AdjAmt": 100,
"IsL2OverPayment": true,
"IsL2UnderPayment": false,
"L3TotAdjAmt": 200,
"L4PenaltyAmt": 100,
"L5InterestAmt": 100,
"L6TotAmtDue": 400
},
"StatePayment": {
"BankRoutingNum": "217555555",
"BankAccountNum": "0000000001",
"PaymentAmt": 100
}
}
}
]
}
Response JSON
- 200
- 300
- 400
- 401
Success Response - This is a sample response for successful API requests.
{
"StatusCode": "200",
"StatusName": "Ok",
"StatusMessage": "Successful API call",
"SubmissionId": "0199e75c-0735-77da-a40d-90459b8b9495",
"SuccessRecords": [
{
"SequenceId": "001",
"BusinessId": "351fc0b4-2568-40af-a403-4c08468cdd95",
"PayerRef": null,
"RecordId": "0199e75c-084f-730c-9db2-238dbdc5e014",
"FormType": "VA5Q",
"Status": "CREATED",
"StatusTs": "2025-10-15 06:14:37 -04:00",
"Info": null,
"Errors": null
}
],
"ErrorRecords": null,
"Errors": null
}
Multi-status Response - You'll get the below response when multiple statuses are included.
{
"StatusCode": "200",
"StatusName": "Ok",
"StatusMessage": "Successful API call",
"SubmissionId": "019c6b5c-e4c8-735f-aebe-38c6e677aa9b",
"SuccessRecords": [
{
"SequenceId": "001",
"BusinessId": "820798f7-c99b-447b-a417-b3cca1b6c678",
"PayerRef": null,
"RecordId": "019c6b5c-e5c2-715c-aea2-52b7122ac270",
"FormType": "VA5M",
"Status": "UPDATED",
"StatusTs": "2026-02-17 06:29:36 -05:00",
"Info": null,
"Errors": null
}
],
"ErrorRecords": null,
"Errors": null
}
Bad Request Response - You'll get the below response when your API requests contain any validation errors.
{
"StatusCode": "400",
"StatusName": "BadRequest",
"StatusMessage": "Validation error has occurred",
"SubmissionId": null,
"SuccessRecords": null,
"ErrorRecords": [
{
"SequenceId": "001",
"RecordId": null,
"Errors": [
{
"Id": "S00-000406",
"Name": "StateWHRecords[0].ReturnData.FormVA5Q.WHIdNum",
"Message": "Withholding Account Number is required."
}
]
}
],
"Errors": null
}
Unauthorized Response - You'll get the below response when your API requests don't contain valid authentication credentials.
{
"StatusCode": 401,
"StatusName": "Unauthorized",
"StatusMessage": "Invalid authorization credentials",
"Errors": [
{
"Id": "AUTH-100018",
"Name": "Authorization",
"Message": "JWT EXPIRED"
}
]
}