Create
Create
Use this endpoint to create Form DE 9 / DE 9C (California Quarterly Contribution Return and Report of Wages) for an employer (payer), reporting quarterly payroll tax liability — Unemployment Insurance (UI), Employment Training Tax (ETT), State Disability Insurance (SDI), and Personal Income Tax (PIT) withholding — along with required employee-level wage details for the corresponding quarter.
Form DE 9 and Form DE 9C must be filed every quarter, even if no wages were paid.
2026 California payroll tax highlights:
| Tax | 2026 Taxable Wage Limit (per employee) | Rate |
|---|---|---|
| UI (Unemployment Insurance) | $7,000 | 3.4% for new employers (up to 3 years) |
| ETT (Employment Training Tax) | $7,000 | 0.1% |
| SDI (State Disability Insurance) | No taxable wage limit | 1.3% |
POST StateFilings/CAWHUI/Create Request Body
| Field | Type | Description |
|---|---|---|
| StateWHRecords | Object[] | Object to identify the records. |
| SequenceId | String | A unique identifier for this record. Size Range: ..50 |
| ReturnHeader | Object | Contains business information. |
| TaxYear | String | The tax year for which the Form DE 9/9C is to be filed. Allowed values2025, 2026 |
| Qtr | String | The quarter for which the Form DE 9/9C is to be filed. Allowed values"Q1", "Q2", "Q3", "Q4" |
| Business | object | Object to identify the Business Details. |
| BusinessId | Guid | Optional Use the unique Business ID (Generated by TaxBandits) that you received in the response of the Business CREATE Endpoint. If you do not have a Business ID, ignore the field. By giving the Business ID, you do not have to provide all the business information again. |
| PayerRef | string | Optional Your unique identifier for the payer. Can replace BusinessId in future requests. Size Range: 50 |
| IsDefaultBusiness | Boolean | When set to TRUE, this business will be set as the default across requests that do not specify a business. |
| TINDetails | object | TIN information for the business. |
| Format | string | Specifies how the TIN is passed.Allowed values"PLAIN_TIN" — Pass TIN directly. "TOKENIZED_TIN" — Pass tokenized TIN. |
| TINType | string | Specify the TIN type of the business.Allowed values"EIN", "SSN", "QI-EIN", "ITIN", "WP-EIN", "WT-EIN", "NQI-EIN", "IRSN" |
| TIN | string | The TIN value according to the Format selected. |
| IndividualNm | object | Required when TINType is SSN. Provide individual name fields instead of BusinessNm. |
| FirstNm | string | The first name of the individual. Size Range: 20 |
| MiddleNm | string | Optional Middle name of the individual. Size Range: 20 |
| LastNm | string | The last name of the individual. Size Range: 20 |
| Suffix | string | Optional Suffix of the individual's name.Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| BusinessNm | string | Legal name of the business. Required when TINType is EIN. Size Range: 75 |
| NameCtrl | string | Name control of the business as registered with the IRS. Size Range: 3..4 |
| DBADetails | object[] | Optional DBA (Doing Business As) information. |
| DBANm | string | Name of the DBA. Size Range: 75 |
| DBARef | string | Unique identifier for the DBA. Size Range: 1-50 |
| DBAId | Guid | TaxBandits-generated DBA identifier. |
| Address | object[] | Address information of the DBA. |
| Address1 | string | Street address or PO Box. Size Range: 46 |
| Address2 | string | Optional Suite or apartment number. Size Range: 46 |
| City | string | DBA's city. Size Range: 50 |
| ProvinceOrState | string | DBA's province or state name. When the country code is US: 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" Allowed values"AB", "BC", "MB", "NB", "NL", "NT", "NS", "NU", "ON", "PE", "QC", "SK", "YT" |
| Zipcd | string | DBA's ZIP code. Size Range: 5-16 |
| Country | string | DBA's 2-character country code.Allowed values"US","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" |
| string | Optional Email address of the business. Size Range: ..100 | |
| Address | object | Primary address of the business. |
| Address1 | string | Street address or PO Box of the business. Size Range: 46 |
| Address2 | string | Optional Suite or apartment number of the business. Size Range: 46 |
| City | string | City of the business. Size Range: 50 |
| ProvinceOrState | string | Province or state name of the business. When the country code is US: 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" Allowed values"AB", "BC", "MB", "NB", "NL", "NT", "NS", "NU", "ON", "PE", "QC", "SK", "YT" |
| ZipCd | string | ZIP code of the business. Size Range: 5-16 |
| Country | string | 2-character country code of the business.Allowed values"US","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" |
| ContactDetails | object[] | Details of the person the IRS can contact regarding the given business. |
| FirstNm | string | First name of the contact person. Size Range: 20 |
| MiddleNm | string | Optional Middle name of the contact person. Size Range: 20 |
| LastNm | string | Last name of the contact person. Size Range: 20 |
| Suffix | string | Optional The suffix of the contact person.Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| Phone | string | Optional Phone number of the contact person. Size Range: 10 digits |
| PhoneExtn | string | Optional Phone extension number. Size Range: 5 |
| string | Optional Email address of the contact person. Size Range: ..100 | |
| Fax | string | Optional Fax number of the contact person. Size Range: 10 digits |
| SigningAuthority | Object | Details of the person authorized to sign the return. |
| FirstNm | String | First name of the signatory. Size Range: 20 |
| MiddleNm | String | Optional Middle name of the signatory. Size Range: 20 |
| LastNm | String | Last name of the signatory. Size Range: 20 |
| Suffix | String | Optional The suffix of the signatory.Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| Phone | String | Optional Phone number of the signatory. Size Range: 10 digits |
| PhoneExtn | String | Optional Phone extension number of the signatory. Size Range: 5 |
| BusinessMemberType | String | Optional Title or role of the signatory.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", "REPORTINGAGENT" |
| ReturnData | Object[] | Identifies the Form DE 9/9C data. |
| FormDE9 | Object | California withholding/UI tax return. |
| AccNum | String | California withholding account number. Size Range: 8 Sample Format: "99999999" |
| BranchCd | String | Branch Code to identify a specific business location or branch under the given account number. Size Range: ..3 Sample Format: "999" |
| IsNoWageRptd | Boolean | If true, identifies that no wages have been paid for the quarter. |
| IsFinalReturn | Boolean | If true, identifies that the business has ceased operations or had no employees during that quarter. |
| OperationCeasedDt | String | Date on which the business ceased operations or had no employees during that quarter. Enter the date in a valid format: MM/DD/YYYY or MM-DD-YYYY or M/D/YYYY or M-D-YYYY. |
| TotGrossWages | Number | Total subject wages paid for the quarter. Size Range: 0-9999999999.99 |
| UITaxRate | Number | Unemployment Insurance (UI) rate. Size Range: 0-100 |
| TotTaxableWages | Number | Unemployment Insurance (UI) wages for the quarter. Size Range: 0-9999999999.99 |
| UITaxDue | Number | Employer's contributions on Unemployment Insurance for the quarter. Size Range: 0-9999999999.99 |
| ETTTaxDue | Number | Employer's contributions on Employment Training Tax for the quarter. Size Range: 0-9999999999.99 |
| SDITaxableWages | Number | State Disability Insurance (SDI) wages for the quarter. Size Range: 0-9999999999.99 |
| SDITaxDue | Number | Employer's contributions to State Disability Insurance for the quarter. Size Range: 0-9999999999.99 |
| PITWH | Number | Personal Income Tax (PIT) withheld for the quarter. Size Range: 0-9999999999.99 |
| TotTaxDue | Number | Total tax liability for the quarter. Size Range: 0-9999999999.99 |
| TotTaxPaid | Number | Total contributions and withholdings paid for the quarter. Size Range: 0-9999999999.99 |
| BalanceDue | Number | Total amount due for the quarter. Size Range: 0-9999999999.99 |
| NumOfEmp | Object | Identifies the total number of employees for the quarter. |
| TotMonth1Emp | Number | Total number of employees reported for month 1 of the quarter. Size Range: ..9999999 |
| TotMonth2Emp | Number | Total number of employees reported for month 2 of the quarter. Size Range: ..9999999 |
| TotMonth3Emp | Number | Total number of employees reported for month 3 of the quarter. Size Range: ..9999999 |
| EmpDetails | Object[] | Object that contains the information of the employees for the business. |
| EmployeeSequenceId | String | A unique reference ID for the submission that can be used to identify a particular employee. The Sequence ID will be returned in the response for your reference. |
| EmployeeId | Guid | Optional A unique identifier generated by TaxBandits for an employee. You can use this ID for your future reference to Update. |
| EmployeeRef | String | Optional Your unique identifier for the Employee. Size Range: 1-50 |
| SSN | String | The nine-digit SSN of the employee. Size Range: 9-11 digits |
| FirstNm | String | First name of the employee. Size Range: ..20 |
| MiddleNm | String | Middle name of the employee. Size Range: ..20 |
| LastNm | String | Last name of the employee. Size Range: ..20 |
| Suffix | String | Suffix of the individual.Allowed values"Jr", "Sr", "I", "II", "III", "IV", "V", "VI", "VII" |
| WageCode | String | Wage plan code for the employee.Allowed values"S", "U", "J", "L", "R", "A", "P" |
| TotalWages | Number | Total subject wages paid for the employee. Size Range: 0-9999999999.99 |
| PITWages | Number | Personal Income Tax (PIT) wages paid for the employee. Size Range: 0-9999999999.99 |
| PITTaxWH | Number | Personal Income Tax (PIT) withheld for the employee. Size Range: 0-9999999999.99 |
Response Body
| Field | Type | Description |
|---|---|---|
| SubmissionId | Guid | Unique identifier for a submission. |
| SuccessRecords | object[] | Provides detailed information about the success status of Form DE9 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 DE9 return is created. |
| FormType | string | Returns the type of UI form. |
| EmployeeData | object[] | Object to identify the employee details. |
| EmployeeId | Guid | Returns the unique identifier of the employee generated by TaxBandits. |
| 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 DE9. |
| 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 DE9 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
- Sample 1
Return with Business as EIN and US address
{
"StateWHRecords": [
{
"SequenceId": "01",
"ReturnHeader": {
"TaxYear": "2026",
"Qtr": "Q3",
"Business": {
"IsDefaultBusiness": true,
"TINDetails": {
"Format": "PLAIN_TIN",
"TINType": "EIN",
"TIN": "48-7789830"
},
"BusinessNm": "Snowdaze LLC",
"NameCtrl": "FIRE",
"DBADetails": {
"DBANm": "Iceberg Icecreams",
"DBARef": "DBA1001",
"DBAId": null,
"Address": {
"Address1": "123 Main St",
"Address2": "Suite 1001",
"City": "Rock Hill",
"ProvinceOrState": "SC",
"ZipCd": "29730",
"Country": "US"
}
},
"Address": {
"Address1": "123 Main St",
"Address2": "Suite 1001",
"City": "Rock Hill",
"ProvinceOrState": "SC",
"ZipCd": "29730",
"Country": "US"
},
"ContactDetails": {
"FirstNm": "James",
"MiddleNm": "A",
"LastNm": "Anderson",
"Suffix": "Jr",
"Phone": "8035551234",
"PhoneExtn": "101",
"Email": "contact@snowdaze.com",
"Fax": "8035555678"
},
"BusinessType": "ESTE",
"SigningAuthority": {
"FirstNm": "Ambrane",
"MiddleNm": "A",
"LastNm": "Cavil",
"Suffix": "Jr",
"Phone": "8035551000",
"PhoneExtn": "111",
"BusinessMemberType": "ADMINISTRATOR"
}
}
},
"ReturnData": {
"FormDE9": {
"AccNum": "12352114",
"BranchCd": "566",
"IsNoWageRptd": false,
"IsFinalReturn": true,
"OperationCeasedDt": "02/02/2026",
"TotGrossWages": 50000,
"UITaxRate": "1",
"TotTaxableWages": 25000,
"UITaxDue": 250,
"ETTTaxDue": 25,
"SDITaxableWages": 20000,
"SDITaxDue": 260,
"PITWH": 5000,
"TotTaxDue": 5535,
"TotTaxPaid": 1000,
"BalanceDue": 4535,
"NumOfEmp": {
"TotMonth1Emp": 2,
"TotMonth2Emp": 0,
"TotMonth3Emp": 0
},
"EmpDetails": [
{
"EmployeeSequenceId": "1",
"EmployeeId": null,
"SSN": "332543301",
"FirstNm": "Kelly",
"MiddleNm": "A",
"LastNm": "Roger",
"Suffix": "Sr",
"WageCode": "S",
"TotalWages": 30000,
"PITWages": 25000,
"PITTaxWH": 3000
},
{
"EmployeeSequenceId": "12",
"EmployeeId": null,
"SSN": "572154302",
"FirstNm": "Jason",
"MiddleNm": "",
"LastNm": "Samuel",
"Suffix": "",
"WageCode": "S",
"TotalWages": 20000,
"PITWages": 20000,
"PITTaxWH": 2000
}
]
}
}
}
]
}
Response JSON
- 200
- 401
Success Response - This is a sample response for successful API requests.
{
"SubmissionId": "01a0e6d4-4d61-77f5-bb55-1eb1d880a1af",
"SuccessRecords": [
{
"SequenceId": "01",
"BusinessId": "10849a59-dc25-4717-bb1e-c2e9b0135646",
"PayerRef": null,
"RecordId": "01a0e6d4-5053-70d8-8bfb-e6b74e1c9d99",
"FormType": "DE9",
"EmployeeData": [
{
"EmployeeId": "e0aa23de-b3f3-4fbf-b1a4-7fafe1e6237b",
"EmployeeRef": null
},
{
"EmployeeId": "d460d26b-c9d3-45ff-8d3e-615b40aba076",
"EmployeeRef": null
}
],
"Status": "CREATED",
"StatusTs": "2026-09-28 03:04:29 -04:00",
"Info": null,
"Errors": null
}
],
"ErrorRecords": null,
"Errors": null
}
Unauthorized Response - You'll get the below response when your API requests don't contain valid authentication credentials.
{
"Errors": [
{
"Id": "AUTH-100018",
"Name": "Authorization",
"Message": "JWT EXPIRED"
}
]
}