Create
Create
Use this endpoint to create Form NM ES903A (New Mexico Quarterly Tax and Wage Report) for an employer (payer), reporting quarterly wages, taxable wages, and unemployment insurance (UI) contributions due, along with required employee wage details for the corresponding quarter.
Form NM ES903A must be filed every quarter, even if no wages were paid.
POST StateFilings/NMUI/Create Request Body
| Field | Type | Description |
|---|---|---|
| StateUIRecords | Object[] | Object to identify the records. |
| SequenceId | String | A unique identifier for this record. Size Range: ..50 |
| ReturnHeader | Object | Contains business information. |
| TaxYr | string | The tax year for which the Form ES903A is to be filed.Allowed values"2025", "2026" |
| Qtr | string | The quarter for which the Form ES903A is to be filed.Allowed values"Q1", "Q2", "Q3", "Q4" |
| 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" |
| 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 | Contains the return information. |
| FormES903A | Object | Identifies the Form ES903A data. |
| UIIdNum | String | Employer's New Mexico Unemployment Account Number Size Range: 8 digits Sample format: XXXXXXXX |
| WHIdNum | String | Employer's Combined Reporting System Identification numberAllowed values99-999999-99-9* |
| IsNoWageReported | Boolean | When true, indicates that no wage is reported in this quarter |
| TaxRate | Number | Tax rate for the quarter. Size Range: 1-100 |
| TotWagesAmt | Number | Total wages paid for the quarter. Size Range: 0-99999999999.99 |
| TotExcessWageAmt | Number | Total excess wages paid for the quarter. Size Range: 0-99999999999.99 |
| TotTaxableWages | Number | Total taxable wages paid for all employees in the quarter that is subject to New Mexico Unemployment Insurance. Size Range: 0-99999999999.99 |
| TaxDue | Number | Total tax due for the quarter Size Range: 0-99999999999.99 |
| Interest | Number | Interest for the quarter (1% per month after the due date). Size Range: 0-99999999999.99 |
| IsLateRepPenalty | Boolean | If true identifies that the employer is subject to late reporting penalty Note: Default penalty for late reporting is $50.00 |
| PenaltyLateFiling | Number | Optional Late filing penalty for the quarter. Size Range: 0-99999999999.99 |
| BalanceDue | Number | Total remittance due for the quarter. Size Range: 0-99999999999.99 |
| NumOfEmployees | Object | Identifies the total number of employees for the quarter. |
| Month1TotEmployees | string | Total number of employees in month 1 of the quarter. Size Range: 0-9999999 |
| Month2TotEmployees | string | Total number of employees in month 2 of the quarter. Size Range: 0-9999999 |
| Month3TotEmployees | string | Total number of employees in month 3 of the quarter. Size Range: 0-9999999 |
| TotIncomeTaxWH | Number | Total income tax witheld for all employees in the quarter. Size Range: 0-99999999999.99 |
| TotWCFee | Number | Total Worker's Compensation fees for all employees in the quarter Size Range: 0-99999999999.99 |
| EmployeeDetails | Object | Object to identify the employee details. |
| EmpSequenceId | string | A unique number to identify this record. Size Range: ..10 |
| EmployeeId | Guid | Optional A unique ID generated by TaxBandits after the return is created and returned in the response. |
| EmpRef | string | A unique identifier of the employee. |
| UnitNum | String | An identification number to identify wages by worksite Size range: 1-99999 |
| SSN | string | Employee's Social Security Number (SSN). Size Range: 9-11 |
| FirstNm | string | Employee's first name. Size Range: 15 |
| MiddleNm | string | Optional Employee's middle name. Size Range: 15 |
| LastNm | string | Employee's last name. Size Range: 20 |
| Suffix | string | Optional Employee's suffix. Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| IsOfficer | Boolean | When true, indicates that the employment type is Officer |
| IsMonth1 | Boolean | When true, indicates the employee was employed during the month 1 of the quarter. |
| IsMonth2 | Boolean | When true, indicates the employee was employed during the month 2 of the quarter. |
| IsMonth3 | Boolean | When true, indicates the employee was employed during the month 3 of the quarter. |
| GrossWagesAmt | Number | Total gross wages reported for the quarter. Size Range: ..99999999999.99 |
| ExcessAmt | Number | Total excess wages for the quarter. Size Range: ..99999999999.99 |
| IncomeTaxWH | Number | Total taxable wages for the quarter. Size Range: ..99999999999.99 |
| WCFee | Number | Total Worker's Compensation fees for the quarter Size Range: ..99999999999.99 |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | Unique identifier for a submission. |
| SuccessRecords | object[] | Provides detailed information about the success status of Form ES903A records. |
| SequenceId | string | A unique reference ID for the submission that can be used to identify a particular record. The Sequence ID will be returned in the response for your reference. |
| BusinessId | Guid | Unique identifier for the business (payer) generated by TaxBandits. |
| PayerRef | string | Unique identifier for the business (payer) provided by you. |
| RecordId | Guid | A unique identifier generated by TaxBandits when a Form ES903A return is created. |
| FormType | string | Type of form. |
| Status | string | Returns the record status. |
| StatusTs | string | Returns the date and time when the return was created. |
| Info | string | Provides additional information about the return. |
| Errors | object[] | Displays error information related to the state returns of Form ES903A. |
| Id | string | Returns the validation error ID. |
| Name | string | Name of the validation error. |
| ErrorRecords | object[] | Provides detailed information about the error status of Form ES903A records. |
| SequenceId | string | A unique reference ID for the submission that can be used to identify a particular record. The Sequence ID will be returned in the response for your reference. |
| RecordId | Guid | Unique identifier for the record. |
| Errors | object[] | Displays 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
{
"StateUIRecords": [
{
"SequenceId": "001",
"ReturnHeader": {
"TaxYr": "2025",
"Qtr": "Q4",
"Business": {
"BusinessId": null,
"BusinessNm": "SnowDaze LLC",
"TradeNm": "Mayfill Tech",
"IsEIN": true,
"EINorSSN": "71-7676332",
"Email": "james@sample.com",
"ContactNm": "John",
"Phone": "7894561231",
"BusinessType": "ESTE",
"SigningAuthority": {
"Name": "James Smith",
"Phone": "9934567890",
"BusinessMemberType": "ADMINISTRATOR"
},
"IsForeign": false,
"USAddress": {
"Address1": "12 Main st",
"Address2": "CC avenue",
"City": "Rock Hill",
"State": "SC",
"ZipCd": "29730"
},
"ForeignAddress": null
}
},
"ReturnData": {
"FormES903A": {
"UIIdNum": "64573545",
"WHIdNum": "12-123456-12-4",
"IsNoWageReported": false,
"TaxRate": "5",
"TotWagesAmt": 2000,
"TotExcessWageAmt": 200,
"TotTaxableWages": 1800,
"TaxDue": 90,
"Interest": 10,
"LateRepPenalty": 25,
"PenaltyLateFiling": 100,
"BalanceDue": 225,
"NumOfEmployees": {
"Month1TotEmployees": 2,
"Month2TotEmployees": 0,
"Month3TotEmployees": 0
},
"TotIncomeTaxWH": 200,
"TotWCFee": 8.6,
"EmployeeDetails": [
{
"EmpSequenceId": "01",
"EmployeeId": null,
"EmpRef": "EmpRef001,
"UnitNum": "1",
"SSN": "234-48-4738",
"FirstNm": "Klaus",
"MiddleNm": "A",
"LastNm": "Thomas",
"Suffix": "Sr",
"IsOfficer": false,
"IsMonth1": true,
"IsMonth2": false,
"IsMonth3": false,
"GrossWagesAmt": 1000,
"TaxableWages": 900,
"ExcessAmt": 100,
"IncomeTaxWH": 100,
"WCFee": 4.30
},
{
"EmpSequenceId": "02",
"EmployeeId": null,
"EmpRef": null,
"UnitNum": "1",
"SSN": "784-83-8348",
"FirstNm": "James",
"MiddleNm": "A",
"LastNm": "Smith",
"Suffix": "Sr",
"IsOfficer": false,
"IsMonth1": true,
"IsMonth2": false,
"IsMonth3": false,
"GrossWagesAmt": 1000,
"TaxableWages": 900,
"ExcessAmt": 100,
"IncomeTaxWH": 100,
"WCFee": 4.30
}
]
}
}
}
]
}
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": "019d0528-5321-7566-b1cd-0498fce88d84",
"SuccessRecords": [
{
"SequenceId": "001",
"BusinessId": "fae28d96-bee4-414c-a81c-04a34143129e",
"PayerRef": null,
"RecordId": "019d0528-5b30-749c-98a4-5a9bf74961e4",
"FormType": "ES903A",
"EmployeeData": [
{
"EmployeeId": "1e83929f-8510-4a59-a9e0-392cc465131b",
"EmpRef": null
},
{
"EmployeeId": "21507bd1-9143-48ed-b235-43e789deeed7",
"EmpRef": null
}
],
"Status": "CREATED",
"StatusTs": "2026-03-19 04:13:44 -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": "300",
"StatusName": "MultiStatus",
"StatusMessage": "Multiple statuses are available for the request",
"SubmissionId": "019d056c-786c-73cd-9c64-b02b54dd34da",
"SuccessRecords": [
{
"SequenceId": "001",
"BusinessId": "a5e76a93-024b-4b85-b20a-c37c36774092",
"PayerRef": null,
"RecordId": "019d056c-7de3-73eb-a8be-41fd891fa627",
"FormType": "ES903A",
"EmployeeData": [
{
"EmployeeId": "b2d0ec8e-35dd-4382-8f1c-9075aee7e7aa",
"EmpRef": null
},
{
"EmployeeId": "04422516-74e8-4c86-9a3f-3faaf8dbec84",
"EmpRef": null
}
],
"Status": "CREATED",
"StatusTs": "2026-03-19 05:28:09 -04:00",
"Info": null,
"Errors": null
}
],
"ErrorRecords": [
{
"SequenceId": "002",
"RecordId": null,
"Errors": [
{
"Id": "S00-001252",
"Name": "StateUIRecords[1].ReturnData.FormES903A.TotWagesAmt",
"Message": "Invalid total wages paid subject to New Mexico Unemployement Insurance. This value should be equal to the sum of gross wages paid for all employees subject to the New Mexico Unemployement Insurance"
},
{
"Id": "S00-001258",
"Name": "StateUIRecords[1].ReturnData.FormES903A.TotTaxableWages",
"Message": "Invalid taxable wages subject to New Mexico Unemployement Insurance. This value should be equal to difference between the total wages paid and total excess wages paid subject to New Mexico Unemployement Insurance of all employee"
}
]
}
],
"Errors": [
{
"Id": "S00-000184",
"Name": "Error Records",
"Message": "Some of the records are errored. Please read the Error Records for more details."
}
]
}
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-001109",
"Name": "StateUIRecords[0].ReturnData.FormES903A.NumOfEmployees.Month[1]Employees",
"Message": "Invalid number of employees. The number of Employees in Month 1 should be equal to the number of employees who were employed in Month 1"
}
]
}
],
"Errors": null
}
Unauthorized Response - You'll get the below response when your API requests don't contain valid authentication credentials.
{
"StatusCode": 401,
"StatusMessage": "Unauthorized",
"StatusName": "Invalid authorization credentials",
"Errors": [
{
"Id": "AUTH-100018",
"Name": "Authorization",
"Message": "JWT EXPIRED"
}
]
}