Skip to main content
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 and verification.
Early access. The foreign qualification endpoints are in preview and may change in backwards-incompatible ways before they are marked stable. Contact us 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, 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.

Discover requirements

Requirements differ between states, so read them rather than hardcoding a field list.
Bash
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. 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. Every figure returned before submission is an estimate.
Bash
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.

Validate before you submit

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

Track the filing

Bash
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 and sends a case.opened webhook. Until the filing enters processing, you can cancel it with Cancel a filing. For what each status asks of you, see 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