> ## 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 an existing business in another state

> > **⚠️ Early access** — This endpoint is in preview and may change in backwards-incompatible ways before it is marked stable. Avoid depending on it in production, and [reach out](mailto:support@getpalm.com) before building on it.

Register an LLC that already exists in your Palm account to transact business in another state (a foreign qualification).

**What the request carries.** Reference the business with `business_id` and name the target state in `jurisdiction`. The legal name, entity type, formation jurisdiction, formation date and registration number are read from the business record and never accepted on the request. You supply only what the target state asks for beyond that: a filing contact, 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 [foreign qualification requirements endpoint](/api-reference/v1/filing/get-foreign-qualification-requirements) lists.

**What gets created.** A new business record for the target-state registration, whose `formation_jurisdiction` is the home state and `registration_jurisdiction` is the target state, and a `foreign_qualification` filing linked to it as `business_id`. Owners of the referenced business are carried over. Omit `registered_agent` to have Palm act as registered agent in the target state; it appears under `related_items`.

**Before anything is created** the request is checked in this order: the business exists and is the formation-state registration; it carries every field the application needs (a `400` lists any gap); it is a US LLC (`501` otherwise); the target state is supported (`501` until a state is released); the business is not already registered there (`409 already_registered`, carrying the existing registration); the expedited tier is one the state offers; the legal name clears the target state’s naming rules and is available there (`400` carrying the conflicts); and the payload satisfies the state’s requirements.

**Result.** Returns the filing in `queued` status. It then moves through `ready_to_file` → `processing` → `filed` → `completed`, sending a `filing.*` webhook at each step. Once `completed`, `filing.result` carries the target state’s `registration_number` and `registration_date`, the state documents are on the new business, and its registration number is on the new business record. Until the filing enters `processing`, you can cancel it with the [cancel endpoint](/api-reference/v1/filing/cancel-a-filing).



## OpenAPI

````yaml /api-reference/v1/openapi.json post /v1/filing/foreign-qualification
openapi: 3.0.0
info:
  title: Palm Partner API
  description: >-
    The Palm API is identity verification and compliance infrastructure for US
    businesses: onboard businesses, verify businesses and people (KYB/KYC)
    against authoritative sources, monitor them for changes in real time, and
    act on their behalf through filings, formation, and registered agent
    services.
  version: '1.0'
  contact:
    name: Palm Support
    url: https://getpalm.com
    email: support@getpalm.com
  termsOfService: https://getpalm.com/terms
  license:
    name: Proprietary
    url: https://getpalm.com/license
servers:
  - url: https://api.getpalm.com
    description: Production
security: []
tags:
  - name: Registry
    description: Search business registries
  - name: Business
    description: Manage the businesses in your portfolio
  - name: User
    description: Manage the people in your portfolio
  - name: Verification
    description: Identity and business verification
  - name: Monitor
    description: Continuous monitoring of businesses
  - name: Filing
    description: Form a business, apply for an EIN, and register in additional states
  - name: Case
    description: Answer a request for information that a filing is waiting on
  - name: Registered Agent
    description: Registered agent service for a business
  - name: Documents
    description: Retrieve and download any document held for a business or a person
paths:
  /v1/filing/foreign-qualification:
    post:
      tags:
        - Filing
      summary: Register an existing business in another state
      description: >-
        > **⚠️ Early access** — This endpoint is in preview and may change in
        backwards-incompatible ways before it is marked stable. Avoid depending
        on it in production, and [reach out](mailto:support@getpalm.com) before
        building on it.


        Register an LLC that already exists in your Palm account to transact
        business in another state (a foreign qualification).


        **What the request carries.** Reference the business with `business_id`
        and name the target state in `jurisdiction`. The legal name, entity
        type, formation jurisdiction, formation date and registration number are
        read from the business record and never accepted on the request. You
        supply only what the target state asks for beyond that: a filing
        contact, 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 [foreign qualification
        requirements
        endpoint](/api-reference/v1/filing/get-foreign-qualification-requirements)
        lists.


        **What gets created.** A new business record for the target-state
        registration, whose `formation_jurisdiction` is the home state and
        `registration_jurisdiction` is the target state, and a
        `foreign_qualification` filing linked to it as `business_id`. Owners of
        the referenced business are carried over. Omit `registered_agent` to
        have Palm act as registered agent in the target state; it appears under
        `related_items`.


        **Before anything is created** the request is checked in this order: the
        business exists and is the formation-state registration; it carries
        every field the application needs (a `400` lists any gap); it is a US
        LLC (`501` otherwise); the target state is supported (`501` until a
        state is released); the business is not already registered there (`409
        already_registered`, carrying the existing registration); the expedited
        tier is one the state offers; the legal name clears the target state’s
        naming rules and is available there (`400` carrying the conflicts); and
        the payload satisfies the state’s requirements.


        **Result.** Returns the filing in `queued` status. It then moves through
        `ready_to_file` → `processing` → `filed` → `completed`, sending a
        `filing.*` webhook at each step. Once `completed`, `filing.result`
        carries the target state’s `registration_number` and
        `registration_date`, the state documents are on the new business, and
        its registration number is on the new business record. Until the filing
        enters `processing`, you can cancel it with the [cancel
        endpoint](/api-reference/v1/filing/cancel-a-filing).
      operationId: createForeignQualification
      parameters:
        - name: Idempotency-Key
          in: header
          description: >-
            Use one key per logical submission and reuse it for every retry of
            that submission. A key is bound to the first request that succeeds
            with it and honored for 24 hours: retrying with the same key and
            payload returns the previously created filing with the
            `Idempotent-Replayed: true` response header instead of creating a
            second one. Reusing a key with a different payload or on a different
            operation is rejected with a 409 `idempotency_key_conflict` problem
            carrying `existing_filing_id`. Keys are 1-255 characters, unique per
            organization and mode.
          required: false
          schema:
            type: string
            maxLength: 255
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForeignQualificationRequest'
      responses:
        '201':
          description: Foreign qualification filing created
          headers:
            Idempotent-Replayed:
              description: >-
                Present and `true` when this response replays a previously
                accepted submission.
              schema:
                type: string
                enum:
                  - 'true'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Filing'
        '400':
          description: >-
            Validation error: the business record is missing required fields or
            is not the formation-state registration, the name is unavailable in
            the target state, or the payload fails the state’s requirements
        '404':
          description: Business not found
        '409':
          description: >-
            Already registered in the target state (`already_registered`), or an
            idempotency-key conflict (`idempotency_key_conflict`)
        '501':
          description: >-
            The target state is not yet supported, or the business is not a US
            LLC
      security:
        - ApiKey: []
components:
  schemas:
    ForeignQualificationRequest:
      type: object
      properties:
        jurisdiction:
          type: string
          description: >-
            The state to register in (ISO 3166-2). Becomes the registration
            jurisdiction of the new business record.
          example: US-TX
        business_id:
          type: string
          description: >-
            The existing business in your account, as registered in its
            formation state. Its legal name, entity type, formation
            jurisdiction, formation date and registration number are read from
            the record and are never accepted on this request.
          format: uuid
          example: 987e6543-e21a-45b6-c789-012345678901
        contact:
          description: >-
            Primary contact for questions about this filing. Used by Palm
            operations; never sent to the state.
          allOf:
            - $ref: '#/components/schemas/FilingContact'
        email:
          type: string
          description: Business email address
          example: info@acme.com
        phone:
          type: string
          description: Business phone number
          example: 512-555-1234
        website:
          type: string
          description: Business website
          example: https://acme.com
        principal_address:
          description: Principal office address, as you hold it
          allOf:
            - $ref: '#/components/schemas/FormationAddress'
        mailing_address:
          description: >-
            Mailing address if different from the principal office. Defaults to
            principal_address when omitted.
          allOf:
            - $ref: '#/components/schemas/FormationAddress'
        governing_persons:
          description: >-
            Members or managers of the LLC, where the target state asks for
            them. The requirement endpoint says whether the state does.
          type: array
          items:
            $ref: '#/components/schemas/ForeignGoverningPerson'
        purpose:
          type: string
          description: >-
            Purpose of the business in the target state, where the state asks
            for one.
          example: Any lawful purpose
        registered_agent:
          description: >-
            Your own registered agent in the target state. If omitted, Palm
            provides registered agent service there.
          allOf:
            - $ref: '#/components/schemas/FormationRegisteredAgent'
        effective_date:
          type: string
          description: >-
            Delayed effective date (YYYY-MM-DD), where the state offers one.
            Omit to register immediately.
          example: '2026-10-01'
        expedited_tier:
          type: string
          description: >-
            Expedited processing tier. Omit for standard processing. Valid
            values are jurisdiction-specific — discover them via GET
            /v1/filing/foreign-qualification/requirement (`expedited_tiers`) and
            price them via GET /v1/filing/foreign-qualification/fee
            (`expedited_tiers`). Rejected with 400 if the value is not offered
            by the jurisdiction.
          example: expedited
        metadata:
          type: object
          description: >-
            Partner-defined metadata. Round-tripped on webhooks and the filing
            record.
      required:
        - jurisdiction
        - business_id
        - contact
        - email
        - principal_address
    Filing:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the resource
          format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
        object:
          type: string
          description: Object type
          example: filing
          enum:
            - filing
        mode:
          type: string
          description: >-
            Whether this resource was created with test or live credentials.
            Test and live data are fully isolated — a test resource never
            appears in live results and vice versa.
          enum:
            - test
            - live
          example: live
        created_at:
          type: string
          description: ISO 8601 timestamp of when the resource was created
          format: date-time
          example: '2025-10-24T10:30:00Z'
        updated_at:
          type: string
          description: ISO 8601 timestamp of when the resource was last updated
          format: date-time
          example: '2025-10-24T15:45:00Z'
        metadata:
          type: object
          description: >-
            Store up to 50 custom key-value pairs for application-specific data.
            Useful for storing references to external systems, feature flags, or
            other custom attributes.
          additionalProperties:
            type: string
          example:
            external_id: user_123_in_my_system
            customer_tier: premium
            signup_source: mobile_app
        type:
          type: string
          description: Filing type
          enum:
            - formation
            - ein
            - amendment
            - scorp_election
            - foreign_qualification
        status:
          type: string
          description: Current status
          enum:
            - queued
            - ready_to_file
            - processing
            - filed
            - completed
            - canceled
        entity_type:
          type: string
          description: >-
            Entity type. Set on formations and foreign qualifications (derived
            from the referenced business).
          enum:
            - llc
            - professional_llc
            - corporation
            - professional_corporation
        jurisdiction:
          type: string
          description: >-
            Jurisdiction the filing is made in (ISO 3166-2). For a foreign
            qualification this is the target state.
          example: US-NC
        legal_name:
          type: string
          description: >-
            Business name the filing is being made under, as sent on the
            request. For a foreign qualification, the legal name being
            registered. Changes when a `legal_name_change` case resolves.
          example: Acme Holdings LLC
        name:
          type: string
          description: 'Deprecated: use `legal_name`. The same value.'
          example: Acme Holdings LLC
          deprecated: true
        expedited_tier:
          type: string
          description: >-
            Expedited processing tier requested for this filing, or null for
            standard processing. Only set on filings submitted with an
            `expedited_tier`.
          example: same_day
        business_id:
          type: string
          description: >-
            Linked business ID. For a foreign qualification this is the new
            business record created for the target-state registration, whose
            `formation_jurisdiction` and `registration_jurisdiction` say where
            the entity was formed and where it is registered.
          format: uuid
        result:
          description: >-
            Filing result — populated on completion, `null` until then. Shape
            depends on the filing `type`: formation → `{ registration_number,
            formation_date }`; foreign qualification → `{ registration_number,
            registration_date, palm_id }`; EIN → `{ ein_number, legal_name }`.
            Other filing types have no result.
          oneOf:
            - $ref: '#/components/schemas/FormationFilingResult'
            - $ref: '#/components/schemas/ForeignQualificationFilingResult'
            - $ref: '#/components/schemas/EinFilingResult'
          nullable: true
        parent_filing_id:
          type: string
          description: Parent filing ID (for bundled EIN/RA)
          format: uuid
        related_items:
          type: array
          description: >-
            Bundle of obligations tracked under this filing, each with its own
            object type and status: filings (state registration, EIN) and the
            registered agent (`id` is the business, resolvable at `GET
            /business/:id/registered-agent`).
          items:
            oneOf:
              - $ref: '#/components/schemas/FilingRelatedItem'
              - $ref: '#/components/schemas/RegisteredAgentRelatedItem'
        documents:
          description: Documents associated with this filing
          type: array
          items:
            $ref: '#/components/schemas/FilingDocument'
        fee:
          description: >-
            Fee components keyed by type (base, dynamic, late, credit_card,
            ach), plus a convenience `total` grand total (assumes credit-card
            payment). Only present components are included. When `items` is set,
            it lists each evaluated rule for itemized rendering — the
            component-keyed values are the sums across those items.
          nullable: true
          type: object
          allOf:
            - $ref: '#/components/schemas/FeeBreakdown'
        status_reason:
          type: string
          description: >-
            Reason the filing was canceled (partner request, parent off-boarded,
            duplicate, etc.). Only present when status is `canceled`.
        canceled_by:
          type: string
          description: >-
            Role that initiated the cancellation. One of: `partner`, `palm`.
            Only present when status is `canceled`.
        canceled_at:
          type: string
          description: Timestamp the filing was canceled
          format: date-time
        cases:
          description: >-
            Cases attached to this filing. One entry per partner-visible case,
            in chronological order. Each case carries a typed `request` payload
            describing what Palm needs and, once submitted, a typed `response`.
            Partners respond via `POST /v1/case/:case_id/response`. An entry
            with `status=needs_response` is an outstanding ask — its presence is
            the signal that the filing needs partner action.
          type: array
          items:
            $ref: '#/components/schemas/Case'
      required:
        - id
        - object
        - mode
        - created_at
        - updated_at
        - metadata
        - type
        - status
    FilingContact:
      type: object
      properties:
        name:
          type: string
          description: Contact name
          example: Jane Doe
        email:
          type: string
          description: Contact email
          example: jane@acme.com
        phone:
          type: string
          description: Contact phone number
          example: 919-555-1234
      required:
        - name
        - email
    FormationAddress:
      type: object
      properties:
        street_line_1:
          type: string
          example: 123 Main St
          description: Street address line 1
        street_line_2:
          type: string
          description: Apt, suite, unit, etc.
          example: Suite 200
        city:
          type: string
          description: City
          example: Raleigh
        region:
          type: string
          description: State or region code
          example: NC
        postal_code:
          type: string
          description: Postal/ZIP code
          example: '27601'
        county:
          type: string
          description: County name (required by some jurisdictions)
          example: Mecklenburg
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code
          example: US
      required:
        - street_line_1
        - city
        - region
        - postal_code
        - country
    ForeignGoverningPerson:
      type: object
      properties:
        name:
          description: Person or entity name
          allOf:
            - $ref: '#/components/schemas/PartyName'
        address:
          description: Address
          allOf:
            - $ref: '#/components/schemas/FormationAddress'
        role:
          type: string
          description: Whether this person is a member or a manager
          enum:
            - member
            - manager
          example: member
        email:
          type: string
          description: Email. Required by some jurisdictions.
          example: member@example.com
        phone:
          type: string
          description: Phone.
          example: 512-555-1234
      required:
        - name
    FormationRegisteredAgent:
      type: object
      properties:
        type:
          type: string
          description: Whether the registered agent is a person or an organization
          enum:
            - person
            - organization
          example: person
        name:
          description: Registered agent name
          allOf:
            - $ref: '#/components/schemas/PartyName'
        address:
          description: Registered office address (must be in the formation jurisdiction)
          allOf:
            - $ref: '#/components/schemas/FormationAddress'
        mailing_address:
          description: Mailing address if different from the registered office
          allOf:
            - $ref: '#/components/schemas/FormationAddress'
        email:
          type: string
          description: Registered agent email. Required by some jurisdictions.
          example: agent@example.com
        phone:
          type: string
          description: Registered agent phone
          example: 919-555-1234
      required:
        - type
        - name
        - address
    FormationFilingResult:
      type: object
      properties:
        registration_number:
          type: string
          nullable: true
          description: State-assigned registration/file number.
          example: NC-12345678
        formation_date:
          type: string
          format: date
          nullable: true
          description: Date the entity was formed (YYYY-MM-DD).
          example: '2026-06-23'
      required:
        - registration_number
        - formation_date
    ForeignQualificationFilingResult:
      type: object
      properties:
        registration_number:
          type: string
          nullable: true
          description: >-
            Registration or file number the target state assigned to the
            registration.
          example: '0805123456'
        registration_date:
          type: string
          format: date
          nullable: true
          description: Date the target state accepted the registration (YYYY-MM-DD).
          example: '2026-10-14'
        palm_id:
          type: string
          nullable: true
          description: >-
            Palm identifier of the new registration, once its registry record
            appears. Null until then; also stamped on the new business record.
          example: 7001-2233-4455
      required:
        - registration_number
        - registration_date
        - palm_id
    EinFilingResult:
      type: object
      properties:
        ein_number:
          type: string
          nullable: true
          description: Issued Employer Identification Number.
          example: 12-3456789
        legal_name:
          type: string
          nullable: true
          description: Legal name the EIN was issued to.
          example: Acme Holdings LLC
        entity_name:
          type: string
          nullable: true
          description: 'Deprecated: use `legal_name`. The same value.'
          example: Acme Holdings LLC
          deprecated: true
      required:
        - ein_number
        - legal_name
        - entity_name
    FilingRelatedItem:
      type: object
      properties:
        object:
          type: string
          description: Object type
          enum:
            - filing
        id:
          type: string
          description: Filing ID
          format: uuid
        type:
          type: string
          description: Filing type
          enum:
            - formation
            - ein
            - amendment
            - scorp_election
            - foreign_qualification
        status:
          type: string
          description: Current filing status
          enum:
            - queued
            - ready_to_file
            - processing
            - filed
            - completed
            - canceled
      required:
        - object
        - id
        - type
        - status
    RegisteredAgentRelatedItem:
      type: object
      properties:
        object:
          type: string
          description: Object type
          enum:
            - registered_agent
        id:
          type: string
          description: Business ID that owns the registered-agent resource
          format: uuid
        status:
          type: string
          description: Current registered-agent status
          enum:
            - pending
            - active
            - termination_requested
            - terminated
            - failed
            - canceled
      required:
        - object
        - id
        - status
    FilingDocument:
      type: object
      properties:
        id:
          type: string
          description: Document ID
          format: uuid
        object:
          type: string
          description: Object type
          enum:
            - document
        types:
          type: array
          description: All document types that apply to this document.
          example:
            - receipt
            - filing_confirmation
          items:
            type: string
            enum:
              - passport
              - drivers_license
              - national_id
              - government_id
              - articles_of_incorporation
              - certificate_of_formation
              - operating_agreement
              - bylaws
              - ein_letter
              - ein_letter_alternate
              - business_license
              - certificate_of_good_standing
              - certificate_of_authority
              - bank_statement
              - tax_return
              - filing_confirmation
              - welcome_letter
              - proof_of_address
              - service_of_process
              - notice
              - mail
              - ra_change_confirmation
              - ra_resignation
              - receipt
              - other
        type:
          type: string
          description: 'Deprecated: use `types`. The first entry of `types`.'
          example: articles_of_organization
          deprecated: true
        uploaded_at:
          type: string
          description: Upload timestamp
          format: date-time
      required:
        - id
        - object
        - types
        - type
        - uploaded_at
    FeeBreakdown:
      type: object
      properties:
        base:
          description: Base filing fee total.
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        dynamic:
          description: >-
            Variable fee total (e.g. franchise tax, share-based or expedited
            surcharges).
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        late:
          description: Late fee total.
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        credit_card:
          description: Credit-card payment surcharge total.
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        ach:
          description: ACH payment surcharge total.
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        total:
          description: >-
            Grand total across the applicable fee components — a convenience so
            you do not have to sum the breakdown yourself. Assumes a credit-card
            payment method, so it is `base + dynamic + late + credit_card` (the
            mutually-exclusive `ach` surcharge is excluded). `items` and any
            `expedited_tiers` menu are not included; a requested
            `expedited_tier` surcharge is already in `dynamic`. Always an
            estimate.
          allOf:
            - $ref: '#/components/schemas/FeeAmount'
        items:
          description: >-
            Itemized breakdown — one entry per evaluated rule. Component totals
            above are sums across these.
          type: array
          items:
            $ref: '#/components/schemas/FeeLine'
      required:
        - total
    Case:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the resource
          format: uuid
          example: 123e4567-e89b-12d3-a456-426614174000
        object:
          type: string
          description: Object type
          example: case
          enum:
            - case
        mode:
          type: string
          description: >-
            Whether this resource was created with test or live credentials.
            Test and live data are fully isolated — a test resource never
            appears in live results and vice versa.
          enum:
            - test
            - live
          example: live
        created_at:
          type: string
          description: ISO 8601 timestamp of when the resource was created
          format: date-time
          example: '2025-10-24T10:30:00Z'
        updated_at:
          type: string
          description: ISO 8601 timestamp of when the resource was last updated
          format: date-time
          example: '2025-10-24T15:45:00Z'
        metadata:
          type: object
          description: >-
            Store up to 50 custom key-value pairs for application-specific data.
            Useful for storing references to external systems, feature flags, or
            other custom attributes.
          additionalProperties:
            type: string
          example:
            external_id: user_123_in_my_system
            customer_tier: premium
            signup_source: mobile_app
        parent_type:
          type: string
          description: Type of the parent resource this case attaches to.
          enum:
            - filing
            - verification
            - business
            - session
        parent_id:
          type: string
          description: ID of the parent resource named by `parent_type`.
          format: uuid
          example: 4b2d9e17-8c35-4a6b-9f02-1e7d5a3c8b96
        kind:
          type: string
          description: >-
            Typed kind of case. Each kind has its own request/response payload
            shape — see the request/response fields.
          enum:
            - missing_information
            - legal_name_change
            - ra_termination
        status:
          type: string
          description: >-
            Lifecycle status. `needs_response` means the partner must act;
            `under_review` means Palm is working on it. Both are open states.
            `resolved` and `superseded` are terminal.
          enum:
            - needs_response
            - under_review
            - resolved
            - superseded
        summary:
          type: string
          description: One-line summary of the case.
          example: Additional information needed to complete your filing.
        details:
          type: string
          description: Markdown-formatted details about the case.
        request:
          description: Typed request payload — what Palm is asking for.
          allOf:
            - $ref: '#/components/schemas/CaseRequestPayload'
        response:
          description: >-
            Typed response payload — what the partner submitted. Present once
            the partner has responded. For a `legal_name_change` case,
            `fields.legal_name` is the business name to file under instead.
          allOf:
            - $ref: '#/components/schemas/CaseResponsePayload'
        due_at:
          type: string
          description: Timestamp by which the case is expected to be resolved.
          format: date-time
        opened_at:
          type: string
          description: Timestamp the case was opened.
          format: date-time
        resolved_at:
          type: string
          description: Timestamp the case was resolved or superseded.
          format: date-time
        resolution_reason:
          type: string
          description: >-
            Why the case left an open state. Set when status is `resolved` or
            `superseded`.
          enum:
            - response_received
            - no_response_needed
            - parent_canceled
            - parent_completed
            - parent_failed
      required:
        - id
        - object
        - mode
        - created_at
        - updated_at
        - metadata
        - parent_type
        - parent_id
        - kind
        - status
        - summary
        - opened_at
    PartyName:
      type: object
      properties:
        type:
          type: string
          description: Whether the party is a person or an entity
          enum:
            - person
            - entity
          example: person
        first:
          type: string
          description: First name. Required when type is "person".
          example: Jane
        last:
          type: string
          description: Last name. Required when type is "person".
          example: Doe
        middle:
          type: string
          description: Middle name or initial
          example: A.
        suffix:
          type: string
          description: Suffix (e.g., Jr., Sr., III)
          example: Jr.
        entity_name:
          type: string
          description: Legal name of the entity. Required when type is "entity".
          example: Acme Holdings LLC
      required:
        - type
    FeeAmount:
      type: object
      properties:
        amount:
          type: number
          description: Fee amount in whole units
          example: 125
        currency:
          type: string
          description: Currency code
          example: USD
      required:
        - amount
        - currency
    FeeLine:
      type: object
      properties:
        component_type:
          type: string
          description: Component type this rule rolls up under
          enum:
            - base
            - dynamic
            - late
            - credit_card
            - ach
          example: dynamic
        name:
          type: string
          description: >-
            Stable identifier within the component (e.g., "filing",
            "franchise_tax", "expedited"). "default" when there is exactly one
            rule for this component.
          example: franchise_tax
        amount:
          type: number
          description: Fee amount in whole units
          example: 500
        currency:
          type: string
          description: Currency code
          example: USD
      required:
        - component_type
        - name
        - amount
        - currency
    CaseRequestPayload:
      type: object
      properties:
        fields:
          description: >-
            Ordered list of fields Palm is requesting from you. A
            `legal_name_change` case always includes a field named `legal_name`.
          type: array
          items:
            $ref: '#/components/schemas/FieldSpec'
        documents:
          description: >-
            IDs of documents Palm attached for you, such as a letter from the
            state or a form to sign and return. Each is related to this case;
            retrieve it by id through the document endpoints.
          example:
            - 906f369f-a73b-46a2-8184-ccc5c2848abd
          type: array
          items:
            type: string
            format: uuid
      required:
        - fields
    CaseResponsePayload:
      type: object
      properties:
        fields:
          type: object
          description: >-
            Map of field name to value. Keys must match the names from the case
            request; required fields must be present.
          additionalProperties: true
          example:
            legal_name: Acme Holdings LLC
            signed_consent_letter: 906f369f-a73b-46a2-8184-ccc5c2848abd
        documents:
          description: >-
            IDs of documents uploaded to the business that support this
            response, in addition to any `document` fields. Each becomes related
            to the case and its filing.
          example:
            - 906f369f-a73b-46a2-8184-ccc5c2848abd
          type: array
          items:
            type: string
            format: uuid
    FieldSpec:
      type: object
      properties:
        name:
          type: string
          description: >-
            Stable machine-readable identifier for the requested field. Used as
            the key in the response payload. Matches the filing request field
            name when one corresponds.
          example: legal_name
        type:
          type: string
          description: >-
            Type of the requested value. One of: string, number, boolean, date,
            document, object, list. For `document`, respond with the id of a
            document already uploaded to the business. For `object` and `list`,
            respond with the JSON value in the same shape the field has in the
            filing request, for example an address object for
            `principal_address`.
          example: string
        description:
          type: string
          description: Human-readable prompt explaining what is being asked.
          example: >-
            Corrected legal name (state rejected "Acme LLC" — name already
            taken).
        required:
          type: boolean
          description: >-
            Whether this field must be present in the response. Defaults to
            true.
          example: true
        example:
          description: Example value to help you understand the expected format.
          oneOf:
            - type: string
            - type: number
            - type: boolean
          example: Acme Holdings LLC
        document_types:
          type: array
          description: >-
            For `type: document`, the document types that satisfy this field.
            Any type is accepted when omitted. Not used by other field types.
          example:
            - other
          items:
            type: string
            enum:
              - passport
              - drivers_license
              - national_id
              - government_id
              - articles_of_incorporation
              - certificate_of_formation
              - operating_agreement
              - bylaws
              - ein_letter
              - ein_letter_alternate
              - business_license
              - certificate_of_good_standing
              - certificate_of_authority
              - bank_statement
              - tax_return
              - filing_confirmation
              - welcome_letter
              - proof_of_address
              - service_of_process
              - notice
              - mail
              - ra_change_confirmation
              - ra_resignation
              - receipt
              - other
      required:
        - name
        - type
        - description
  securitySchemes:
    ApiKey:
      scheme: bearer
      bearerFormat: opaque
      type: http
      description: 'Enter your API key in the format: sk_test_xxxxx or sk_live_xxxxx'

````