> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getpalm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Form a business

> Register a new LLC or Corporation with any US state — Palm handles the filing end to end.

export const iconProps = (variant = "default") => {
  const iconVariants = {
    default: "palm-icon-default",
    horizontal: "palm-icon-horizontal",
    stack: "palm-icon-stack",
    navigation: "palm-icon-navigation",
    darkHorizontal: "palm-icon-dark-horizontal",
    dark_stack: "palm-icon-dark-stack",
    getStarted: "palm-icon-get-started"
  };
  return iconVariants[variant] ?? iconVariants.default;
};

export const PalmCard = ({title, description, icon, variant = "default", href, items}) => {
  if (variant === "getStarted") {
    return <div data-card className="pc-wrapper-get-started flex flex-col gap-4 border border-[rgba(4,44,47,0.1)] rounded-2xl p-6">
        <div className="pc-wrapper-inner-get-started">
          {icon !== undefined && <div className="pc-icon-container-get-started">{icon}</div>}
          {title !== undefined && <span className="pc-title-get-started">{title}</span>}
        </div>
        {items && items.length > 0 && <ul className="pc-items-get-started">
            {items.map((item, i) => <li key={i}>
                <a href={item.href} className="pc-item-link-get-started">{item.label}</a>
              </li>)}
          </ul>}
      </div>;
  }
  const variants = {
    default: {
      wrapper: "pc-wrapper-default",
      title: "pc-title",
      description: "pc-description"
    },
    horizontal: {
      wrapper: "pc-wrapper-card",
      title: "pc-title-horizontal",
      description: "pc-description"
    },
    stack: {
      wrapper: "pc-wrapper-stack",
      title: "pc-title-stack",
      description: "pc-description"
    },
    darkHorizontal: {
      wrapper: "pc-wrapper-dark-horizontal",
      title: "pc-title-dark-horizontal",
      description: "pc-description-dark-horizontal"
    },
    navigation: {
      wrapper: "pc-wrapper-navigation",
      title: "pc-title-navigation",
      description: "pc-description-navigation"
    },
    dark_stack: {
      icon: "pc-icon-card",
      title: "pc-title",
      description: "pc-description"
    }
  };
  const styles = variants[variant] ?? variants.default;
  const inner = <a data-card href={href ? href : '#'} className={`no-underline flex flex-col h-full items-start gap-4 p-6 rounded-2xl hover:opacity-80 transition-opacity ${styles.wrapper}`}>
      {icon !== undefined && <span className="icon-wrapper">{icon}</span>}
      {(title !== undefined || description !== undefined) && <div className="flex flex-col min-w-0">
          {title !== undefined && <span className={styles.title}>{title}</span>}
          {description !== undefined && <span className={styles.description}>{description}</span>}
        </div>}
    </a>;
  return inner;
};

Palm validates the business name, prepares state-specific documents, submits to the state, and returns the registration number and confirmation documents when complete. Palm creates a business record on submission, so the entity is immediately available for [verification](/verify/verify-a-business) and [monitoring](/monitor/overview) without re-entering data.

***

## How it works

1. **Discover requirements**: Query what fields are required for your jurisdiction and entity type. Requirements vary by state.
2. **Collect the required data**: Use the requirements response to build your collection flow. Only ask for what the target state requires.
3. **Submit the formation**: Send the business data, owner information, and principal address. Palm validates the request, including name availability, and creates a filing.
4. **Track the filing**: The filing moves through the status lifecycle (`queued` through `completed`). You receive a webhook at each transition.
5. **Handle information requests**: If Palm needs more information, it opens a case on the filing. Respond programmatically.
6. **Retrieve the result**: When complete, the filing includes the state-assigned registration number and confirmation documents.

## Discover requirements

Before collecting data from your customer, query the requirements endpoint to learn what fields are needed for a given jurisdiction and entity type.

```bash Bash wrap theme={null}
GET /v1/filing/formation/requirement?entity_type=llc&jurisdiction=US-NC
```

The response includes common fields (name, address, organizers), jurisdiction-specific fields (e.g., Delaware consent statements, North Carolina stock requirements), and available add-ons (EIN bundling, registered agent).

## Collect the required data

Use the requirements response to build your collection flow dynamically: required fields differ significantly between states, so don't hardcode field lists. The response tells you exactly which fields are required, optional, and conditional for the target jurisdiction and entity type, so you only ask your customer for what's actually needed.

## Submit a formation

```bash Bash wrap theme={null}
POST /v1/filing/formation/llc            # form an LLC
POST /v1/filing/formation/corporation    # form a corporation (C-Corp)
```

The request includes business details, owner information, principal address, and contact information. Required fields are determined by the jurisdiction and entity type returned from the requirements endpoint.

Palm validates the request synchronously and returns specific errors for any missing or malformed fields. On success, Palm creates:

* A **filing** record in `queued` status.
* A **business** record linked to the filing, immediately available via the Business API.

### Name availability

As part of validation, Palm checks whether the requested business name is available by searching active entities with the state. If the name conflicts with an existing registration, the request returns an error so you can prompt your customer for an alternative before the filing is submitted.

To catch naming problems before you submit (a missing designator, a restricted word, or a name already taken), run the name past [Check name eligibility](/onboard/name-eligibility) first. The same naming rules run again at submission, so a name that passes there is not re-litigated here.

### Entity types

Today, Palm supports LLC and Corporation (C-Corp) entity types across all 50 US states and DC.

### Add-ons

You can bundle additional services with a formation request:

* **EIN application**: Include an `ein` object in the formation request. The EIN filing is created in `queued` status and automatically advances to `ready_to_file` when the formation completes. See [Apply for an EIN](/comply/apply-for-an-ein) for the full field reference.
* **Registered agent**: Opt in to Palm's registered agent service as part of the formation. See [Registered agent](/comply/registered-agent) for status, mail forwarding, change, and termination.

Palm surfaces bundled filings as `related_filings` on the parent formation record.

## Track the filing

The filing moves through the status lifecycle:

```text theme={null}
queued → ready_to_file → processing → filed → completed
```

Check the status at any time:

```bash Bash wrap theme={null}
GET /v1/filing/{filing_id}
```

Or list filings with filters:

```bash Bash wrap theme={null}
GET /v1/filing?type=formation&status=processing&business_id={id}
```

Every status transition fires a `filing.*` webhook. See [Webhooks](/developer-guide/webhooks) for event types and payloads.

## Handle information requests

If Palm needs additional information to complete the filing (a correction, or a detail not collected at submission), it opens a **case** on the filing with a structured request describing what's needed, and notifies you with a `case.opened` webhook.

Respond via:

```bash Bash wrap theme={null}
POST /v1/case/{case_id}/response
```

Multiple rounds are recorded on the filing for audit purposes. See [Cases](/comply/cases) for the full lifecycle and field reference.

## Retrieve the result

When the filing reaches `completed`, the result includes:

* **Registration number**: The state-assigned entity number, available on `filing.result.registration_number`.
* **Formation date**: Available on `filing.result.formation_date`.
* **Documents**: Articles of Organization (LLC) or Articles of Incorporation (Corporation), state certificate, and receipts. Each document is downloadable from its `url` (see [Download a document](/api-reference/v1/documents/download-a-document)).

```json JSON wrap theme={null}
{
  "id": "fil_abc123",
  "object": "filing",
  "type": "formation",
  "status": "completed",
  "entity_type": "llc",
  "jurisdiction": "US-NC",
  "name": "Acme Holdings LLC",
  "business_id": "biz_xyz789",
  "result": {
    "registration_number": "1234567",
    "formation_date": "2026-06-01"
  },
  "related_filings": [
    {
      "id": "fil_ein456",
      "object": "filing",
      "type": "ein",
      "status": "ready_to_file"
    }
  ],
  "documents": [
    {
      "id": "doc_001",
      "object": "document",
      "type": "articles_of_organization",
      "uploaded_at": "2026-06-01T14:30:00Z"
    }
  ],
  "fee": {
    "base": 12500,
    "expedite": 2500
  }
}
```

## Fees

Formation fees vary by state and entity type. Use the requirements endpoint to get fee estimates before submitting. The final amount paid is available on the filing record once it reaches `completed`, broken down by component (base, expedite, etc.).

## Next steps

<div className="grid lg:grid-cols-2 gap-6 mt-6">
  <PalmCard variant="navigation" title="Apply for an EIN" description="Standalone or bundled with formation." icon={<Icon className={iconProps("navigation")} icon="arrow-right" />} href="/comply/apply-for-an-ein" />

  <PalmCard variant="navigation" title="Registered agent" description="Provision, status, mail forwarding, change, and termination." icon={<Icon className={iconProps("navigation")} icon="arrow-right" />} href="/comply/registered-agent" />

  <PalmCard variant="navigation" title="Webhooks" description="Receive real-time status updates as filings progress." icon={<Icon className={iconProps("navigation")} icon="arrow-right" />} href="/developer-guide/webhooks" />

  <PalmCard variant="navigation" title="API Reference" description="Full reference for the formation and filing endpoints." icon={<Icon className={iconProps("navigation")} icon="arrow-right" />} href="/api-reference/introduction" />
</div>
