# Form a company

Source: https://joinopenfile.com/docs/formations
Index: https://joinopenfile.com/llms.txt

You prepare the formation, the owner signs it, adds any remaining details and pays, and we file it with the state.

| Step | Who | How |
| --- | --- | --- |
| Check the state | You or your agent | [`GET /states/{code}`](https://joinopenfile.com/docs/api/get-state.md) and [`POST /formations/quote`](https://joinopenfile.com/docs/api/quote-formation.md) |
| Prepare | You or your agent | [`POST /formations`](https://joinopenfile.com/docs/api/create-formation.md) and [`PATCH /formations/{id}`](https://joinopenfile.com/docs/api/update-formation.md) |
| Review and sign | The owner | `review_url`, in their browser |
| Add details and pay | The owner | `review_url`, then `order.order_url` for anything left |
| File | OpenFile | [`GET /orders/{id}`](https://joinopenfile.com/docs/api/get-order.md) shows `status` and `file_number` |

## Prepare it

```bash
curl -X POST https://api.joinopenfile.com/v1/formations \
  -H 'content-type: application/json' \
  -d '{"entity":"llc","state":"WY","name":"Northwind","package":"pro","contact":{"name":"Sam Lee","email":"sam@example.com"}}'
```

The response has `id`, `token`, `review_url`, `issues` and `quote`. Keep the token. Send more answers with `PATCH`, and when `ready` is true, send the owner `review_url`.

## What only the owner can do

- **Sign.** The authorization lets us file for them, so an agent can't sign it. The API refuses `signature`, and no route takes one.
- **Give a Social Security number or ITIN.** These go only on their order page, and the API refuses them.
- **Confirm their registered agent.** OpenFile doesn't offer one yet, so the owner names their own and confirms they agreed to serve.
- **Start anything that recurs.** The API refuses recurring add-ons.

## Ask, don't infer

Answers you don't send stay missing, and `issues` lists them, so a default never passes for a fact. Don't pick the state, company type or package for someone.

Don't tell them a name is available. We search the state's records before filing, and `backup_name` is used if the first choice is taken.

## Fees

`quote` lists every line, with the state's marked `government`. Our processing fee varies by state and is a line of its own, so quote from `quote`, not from the state's fee alone. On [`GET /states/{code}`](https://joinopenfile.com/docs/api/get-state.md), `verified` false means the fee is an estimate, so say so. `plus` names costs quoted later, like newspaper publication.

The `rush` add-on is our expedited filing. Its price varies by state, and Premium includes it. `expedite` is separate: it pays for the state's own faster processing, where the state offers one.

## After signing

`get_formation` returns `order` with its own `token`. Read [`GET /orders/{id}`](https://joinopenfile.com/docs/api/get-order.md) with that token: `owner_steps` lists what the owner still has to do, and `note` is any message from staff.

The owner orders add-ons, like annual reports, from their dashboard. [`GET /services`](https://joinopenfile.com/docs/api/list-services.md) lists them. A filing add-on starts once the owner finishes its form and it's paid.

## Common questions

### Can an agent form a company on its own?

No. It prepares the draft and sends the owner `review_url`. The owner checks it and signs.

### Who is the registered agent?

The owner names their own: themselves if they live in the state, or a company they hire. We don't offer one yet.

### How do I follow an order?

Call `get_formation` until it shows an order, then `get_order`.
