> ## 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.

# Register in another state

> Register an existing LLC in another US state, a filing known as foreign qualification. Palm handles the filing end to end.

A business formed in one state that operates in another usually has to register there as a foreign entity, a filing known as foreign qualification. Palm reads the home-state details from the business record you already hold, prepares the target state's application, submits it, and returns the target-state registration number and documents when the state accepts the filing. Palm creates a new business record for the target-state registration at submission, so it is available for [monitoring](/monitor/overview) and [verification](/verify/verify-a-business).

> [!WARNING]
>
> **Early access.** The foreign qualification endpoints are in preview and may change in backwards-incompatible ways before they are marked stable. [Contact us](mailto:support@getpalm.com) before building on them.

***

## How it works

1. Start from the home-state business. The business must already be in your Palm account, as registered in the state where it was formed.
2. Discover requirements. Ask what the target state needs, and what it costs.
3. Validate. Check the payload against the target state's rules before you commit to it.
4. Submit. Palm creates a filing and a new business record for the target-state registration.
5. Track. Follow the filing through its [lifecycle](/comply/overview#the-lifecycle), driven by webhooks.
6. Retrieve the result. Collect the target-state registration number and documents on completion.

## Start from the home-state business

A foreign qualification request references an existing business by `business_id`. Palm reads the legal name, entity type, formation jurisdiction, formation date, and registration number from that record. If a field is missing, the request returns a `400` that lists the gap.

The referenced record must be the registration in the state where the business was formed. Add a business that is not yet in your account through the [Business API](/api-reference/v1/business/add-a-business).

## Discover requirements

Requirements differ between states, so read them rather than hardcoding a field list.

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

The response carries:

* **`schema`.** A JSON Schema for the request body in the target state: the common fields plus the fields that state requires. The fields Palm reads from the business record are absent, since you never supply them.
* **`prerequisites`.** The documents the state needs alongside the application. Palm orders the home-state certificate of good standing or existence as part of the filing.
* **`post_filing_obligations`.** What the registration starts once the state accepts it, such as a publication requirement.
* **`expedited_tiers`.** The expedited processing tiers the state offers.
* **`effective_date`.** Present only when the state offers a delayed effective date, with the state's own description of its limits.

Build your collection flow from this response so you ask a member only for what the target state needs. See [Get foreign qualification requirements](/api-reference/v1/filing/get-foreign-qualification-requirements).

Palm adds target states over time. A state that is not yet supported returns `501`.

### Price the filing

To show a member a cost before they commit, call the [fee estimate endpoint](/api-reference/v1/filing/get-foreign-qualification-fee-estimate). Every figure returned before submission is an estimate.

```bash Bash wrap theme={null}
GET /v1/filing/foreign-qualification/fee?entity_type=llc&jurisdiction=US-TX
```

Where the state offers expedited processing, omit `expedited_tier` to receive a priced menu of tiers, or pass one to fold its surcharge into the estimate. Pass your chosen tier as `expedited_tier` on the foreign qualification request. Where the state prices the filing on inputs you supply, a `400` lists any input that is missing. See [Fees and expedited processing](/comply/overview#fees-and-expedited-processing).

## Validate before you submit

```bash Bash wrap theme={null}
POST /v1/filing/foreign-qualification/validate
```

Validation runs the same checks as the create endpoint, without creating a filing or a business record, and returns every finding in one pass: problems with the referenced business record, an expedited tier the state does not offer, and state compliance errors on the payload. It accepts a partial payload, which makes it usable for inline validation while a member is still filling in your form.

> [!NOTE]
>
> Validation does not run the name check. The create endpoint can still reject a payload that passes validation when the legal name is not available in the target state.

## Submit the foreign qualification

```bash Bash wrap theme={null}
POST /v1/filing/foreign-qualification
```

The request names the business and the target state, and carries only what the target state asks for beyond the business record: a filing contact, the business email, the principal and mailing address, governing persons where the state wants them, a registered agent if you are not using Palm's, an expedited tier, and any state-specific fields the requirements response lists.

Palm validates the request against the business record and the target state's rules before it creates anything, and returns specific errors for anything that fails.

A request for a business that already holds a registration in the target state returns `409 already_registered`, carrying the existing registration.

On success, Palm creates:

* A **filing** of type `foreign_qualification` in `queued` status.
* A **new business record** for the target-state registration, whose `formation_jurisdiction` is the home state and `registration_jurisdiction` is the target state. The filing's `business_id` is the ID of this new record.

Palm carries the owners of the referenced business over to the new record.

Send an `Idempotency-Key` header and reuse it on every retry of the same submission, so a retry returns the original filing instead of creating a second one. Use `note` for context Palm operations should read before submitting, such as an existing name reservation.

### The name check

Palm checks the legal name on every foreign qualification against the target state's naming rules and confirms it is available there. If the name does not clear, the request returns a `400` carrying the conflicts. If the state later declines the name, Palm opens a `legal_name_change` [case](/comply/cases) on the filing.

### Registered agent

Omit the `registered_agent` block and Palm acts as registered agent in the target state. The registered agent appears under `related_items` on the filing. Pass the block to name your own agent there. See [Registered agent](/comply/registered-agent).

## Track the filing

```bash Bash wrap theme={null}
GET /v1/filing/{filing_id}
GET /v1/filing?type=foreign_qualification&business_id={id}
```

The filing moves through `ready_to_file`, `processing`, `filed`, and `completed`, and a `filing.*` webhook fires at each transition. If Palm needs something to finish the filing, it opens a [case](/comply/cases) and sends a `case.opened` webhook.

Until the filing enters `processing`, you can cancel it with [Cancel a filing](/api-reference/v1/filing/cancel-a-filing).

For what each status asks of you, see [the lifecycle](/comply/overview#the-lifecycle).

## Retrieve the result

On `completed`, `filing.result` carries the target state's registration number, the date the state accepted the registration, and the Palm identifier of the new registration.

## Next steps


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.