Create
Create
Use this endpoint to generate a new withholding form for the state of Virginia.
VA-5M (Monthly Form):
-
Used for reporting state withholding taxes on a monthly basis.
-
Employers who withhold large amounts of Virginia state tax or meet the threshold requiring monthly reporting must use this form.
-
Covers one month of withholding.
POST StateFilings/VA5MWH/Create Request Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | Unique identifier created by TaxBandits for each submission. Not required when you are creating a return. |
| 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. |
| Month | String | The Quarter for which Form VA-5Q needs to be filed.Allowed values"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" |
| 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 | Object to identify the business details. |
| BusinessId | Guid | Optional Use the unique identifier provided in the response from the Business CREATE endpoint. |
| BusinessNm | string | Name of the business. Size Range: ..75 |
| 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 the Employer Identification Number (EIN) Note: IsEIN should always be set to true, as EIN is the only allowed TIN type for state payroll forms. Size Range: 9-11 |
| string | Optional Email address of the business. Size Range: ..100 | |
| ContactNm | string | Optional Name of the person who can be contacted by the State Agency. Size Range: ..27 |
| Phone | string | Optional Phone number of the business. Size Range: 10 |
| PhoneExtn | string | Optional Extension of the business phone number. Size Range: ..5 |
| Fax | string | Optional Fax number of the business. Size Range: 10 |
| BusinessType | string | Type of business. 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 | Name of the signing authority. Size Range: ..35 |
| Phone | string | Phone number of the signing authority. Size Range: 10 |
| BusinessMemberType | string | Business title of the signing authority 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" |
| KindOfEmployer | string | Optional Identifies the kind of employer.Allowed values"FEDERALGOVT", "STATEORLOCAL501C", "NONGOVT501C", "STATEORLOCALNON501C", "NONEAPPLY" |
| KindOfPayer | string | Optional Identifies the kind of payer.Allowed values"REGULAR941", "REGULAR944", "AGRICULTURAL943", "HOUSEHOLD", "MILITARY", "MEDICAREQUALGOVEM", "RAILROADFORMCT1" |
| IsBusinessTerminated | Boolean | When true, indicates that the business is terminated. |
| IsForeign | Object | When true, indicates that the business has a foreign address. |
| USAddress | object | If IsForeign is false, pass the US address of the business. |
| Address1 | string | Employer/Payer's US address (street or post office box of that locality). 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 code. Refer to static values. Size Range: 2 Allowed values"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AS", "FM", "GU", "MH", "MP", "PW", "PR", "VI", "AA", "AE", "AP" |
| 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 of that locality). 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", "AU", "AJ", "BF", "BA", "FQ", "BG", "BB", "BO", "BE", "BH", "BN", "BD", "BT", "BL", "BK", "BC", "BV", "BR", "IO", "VI", "BX", "BU", "UV", "BM", "BY", "CB", "CM", "CA", "CV", "CJ", "CT", "CD", "CI","CH", "KT", "IP", "CK", "CO", "CN", "CF", "CG", "CW", "CR", "CS", "IV", "HR", "CU", "UC", "CY", "EZ", "DA", "DX", "DJ", "DO", "DR", "TT", "EC", "EG", "ES", "EK", "ER", "EN", "ET", "FK", "FO", "FM", "FJ", "FI", "FR", "FP", "FS", "GB", "GA", "GG", "GM", "GH", "GI", "GR", "GL", "GJ", "GQ", "GT", "GK", "GV", "PU", "GY", "HA", "HM", "VT", "HO", "HK", "HQ", "HU", "IC", "IN", "ID", "IR", "IZ", "EI", "IS", "IT", "JM", "JN", "JA", "DQ", "JE", "JQ", "JO", "KZ", "KE", "KQ", "KR", "KN", "KS", "KV", "KU", "KG", "LA", "LG", "LE", "LT", "LI", "LY", "LS", "LH", "LU", "MC", "MK", "MA","MI", "MY", "MV", "ML", "MT", "IM", "RM", "MR", "MP", "MX", "MQ", "MD", "MN", "MG", "MJ", "MH", "MO", "MZ", "WA", "NR", "BQ", "NP", "NL", "NC", "NZ", "NU", "NG", "NI", "NE", "NF", "CQ", "NO", "MU", "OC", "PK", "PS", "LQ", "PM", "PP", "PF", "PA", "PE", "RP", "PC", "PL", "PO", "RQ", "QA", "RO", "RS", "RW", "TB", "RN", "WS", "SM", "TP", "SA", "SG", "RI", "SE", "SL", "SN", "NN", "LO", "SI", "BP", "SO", "SF", "SX", "OD", "SP", "PG", "CE", "SH", "SC", "ST", "SB", "VC", "SU", "NS", "SV", "WZ", "SW", "SZ", "SY", "TW", "TI", "TZ", "TH", "TO", "TL", "TN", "TD", "TS", "TU", "TX", "TK", "TV", "UG", "UP", "AE", "UK", "UY", "UZ", "NH", "VE", "VM", "VQ", "WQ", "WF", "WI", "YM", "ZA", "ZI" |
| 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
{
"StateWHRecords": [
{
"Sequence": "001",
"ReturnHeader": {
"Month": "Jan",
"TaxYr": "2025",
"BusinessId": null,
"Business": {
"BusinessNm": "SnowDaze LLC",
"TradeNm": null,
"IsEIN": true,
"EINorSSN": "31-7236483",
"Email": "john@sample.com",
"BusinessType": "ESTE",
"SigningAuthority": {
"Name": "James Smith",
"Phone": "9934567890",
"BusinessMemberType": "ADMINISTRATOR"
},
"IsForeign": false,
"USAddress": {
"Address1": "12 main st",
"Address2": null,
"City": "Rock Hill",
"State": "SC",
"ZipCd": "29730"
},
"ForeignAddress": 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": "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": "CREATED",
"StatusTs": "2026-02-17 06:29:36 -05: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": "CREATED",
"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"
}
]
}