State Unemployment Insurance (SUI)
State Unemployment Insurance (SUI) registration establishes an employer’s unemployment tax account with the state workforce agency. Partners use this flow to order employer account setup or related payroll-tax onboarding where SwyftFilings supports it via API.
Related: Service Filings overview · State requirements reference
When to use this flow
Use the standalone SUI service when your customer must register as an employer for unemployment tax in a specific state. Requirements vary widely by state.
Service slug and catalog
- Call Get Services and select the State Unemployment Insurance (or the name provided for your program).
- Use that
slugfor configuration and order APIs.
Examples use state-unemployment-insurance. Replace with the slug from your environment.
API flow
| Step | Method | Endpoint |
|---|---|---|
| 1. List services | GET | /service-carts |
| 2. Configuration and catalog | GET | /service-carts/{service} |
| 3. NAICS (if required) | GET | /business-classifications |
| 4. Create order | POST | /orders |
| 5. Get order (optional) | GET | /orders/{order_uuid} |
| 6. Get timely Order status changes and Requests for Information on your Webhook |
Example: List services
GET {baseUrl}/service-carts
Authorization: Bearer {token}
{
"success": true,
"data": [
{
"slug": "state-unemployment-insurance",
"name": "State Unemployment Insurance",
"description": "Employer registration for state unemployment insurance.",
"allows_addons": false,
"is_standalone": true,
"nested_services": []
}
]
}
State-specific requirements (discovery)
API-driven configuration: For each target state, call Get Service Configuration with your SUI service slug and build the order using the returned input_fields and catalog.
input_fieldsreturn the baseline required and optional keys, types, and validation rules for the selected state and product. Additional inputs may be required during processing based on jurisdiction-specific or employer-specific conditions.cataloglists line items withsku,name,price, and any applicable state-based fees or conditions.
Do not cache field keys across states without revalidating; requirements vary by jurisdiction.
Partners should design for a multi-step intake flow and not assume all required inputs will always be known at initial configuration.
SUI flows often require payroll start dates, officer SSN last four, or withholding elections. Do not assume parity with formation orders; render forms from input_fields dynamically.
Example: Get Service Configuration
GET {baseUrl}/service-carts/state-unemployment-insurance?state=TX&business_type=LLC
Authorization: Bearer {token}
Abbreviated response:
{
"success": true,
"data": {
"name": "State Unemployment Insurance",
"slug": "state-unemployment-insurance",
"description": "Employer registration for state unemployment insurance.",
"input_fields": [
{
"name": "First Name",
"key": "first_name",
"type": "string",
"description": "First name of the user",
"questionnaire_copy": "What is your first name?",
"validation_rules": [
"string",
"max:100",
"regex:/^[\\p{L}]+([\\s\\-'.]*[\\p{L}]+)*\\.?$/u"
],
"default_value": null,
"options": null,
"is_sensitive": false,
"required": true
},
{
"name": "Last Name",
"key": "last_name",
"type": "string",
"description": "Last name of the user",
"questionnaire_copy": "What is your last name?",
"validation_rules": [
"string",
"max:100",
"regex:/^[\\p{L}]+([\\s\\-'.]*[\\p{L}]+)*\\.?$/u"
],
"default_value": null,
"options": null,
"is_sensitive": false,
"required": true
},
{
"name": "Email",
"key": "email",
"type": "string",
"description": "Email address",
"questionnaire_copy": "What is your email address?",
"validation_rules": [
"email:rfc,dns",
"max:255"
],
"default_value": null,
"options": null,
"is_sensitive": false,
"required": true
},
{
"name": "Phone Number",
"key": "phone_number",
"type": "string",
"description": "Phone number",
"questionnaire_copy": "What is your phone number?",
"validation_rules": [
"string",
"size:10",
"regex:/^(?![01])\\d+$/"
],
"default_value": null,
"options": null,
"is_sensitive": false,
"required": true
},
...
]
}
}
Example: Create order
POST {baseUrl}/orders
Authorization: Bearer {token}
Content-Type: application/json
{
"service": "state-unemployment-insurance",
"email": "[email protected]",
"first_name": "Alex",
"last_name": "Nguyen",
"phone_number": "5551112222",
"consent_sms": false,
"business_data": {
"name": "Acme Payroll LLC",
"type": "LLC",
"formation_state": "CA",
"category": "541214",
"address": "500 Howard St",
"city": "San Francisco",
"state": "CA",
"zip": "94105"
}
}
Abbreviated response:
{
"success": true,
"data": {
"message": "Order created successfully",
"order_uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}
}
Standalone flow — no submit step
State Unemployment Insurance is a standalone service: the order is created and finalized by the single Create order call above. There is no separate submit step — PATCH /orders/{uuid} and POST /orders/{uuid}/submit are not used for this flow and are rejected. The catalog line item (SF_SUI_EXAMPLE_SG_0, $75, no government fee) is applied automatically at creation.
Example: Get order
GET {baseUrl}/orders/c3d4e5f6-a7b8-9012-cdef-123456789012
Authorization: Bearer {token}
Abbreviated response:
{
"success": true,
"data": {
"id": 1,
"uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"service": "state-unemployment-insurance",
"status": "In Progress",
"business_data": {
"name": "Acme Payroll LLC",
"type": "LLC",
"formation_state": "CA"
},
"managers_data": [],
"order_items": [
{ "submitted_at": "2026-07-01", "type": "sale", "items": ["SF_SUI_EXAMPLE_SG_0"] }
],
"required_actions": {
"rejections": [],
"questionnaires": [],
"alerts": []
},
"documents": []
}
}
Jurisdiction
Set business_data.formation_state to the state where the employer is registering for unemployment insurance.
Use the keys returned by Get Service Configuration to determine how jurisdiction fields should be populated.
Fulfillment
- Order processing: After creation or submission, SwyftFilings evaluates the order and begins registration.
- Follow-up requirements: Additional information may be required during processing based on jurisdiction and employer details. These requirements often involve highly sensitive personally identifiable information (PII).
- Webhooks: Use
order_status_changeto track progress and process Rejections (Information Requests) - Completion: The order is complete once registration is successfully processed and account details are available.
Errors and edge cases
- Multi-state employers: Each state may require a separate order or SKU selection.