Cookbook
Form a company
Delaware C-Corp, two founders, 4-year vest, EIN, 83(b) — working entity in test mode in under 60 seconds.
Last updated
Single POST to /v1/entities files the certificate of incorporation, mints founder shares, requests an EIN, and lays down organizational consent — all under one Idempotency-Key.
Trigger
You have a name, a state of incorporation, founders with allocations, and an authorized share count. The customer is ready to be a real entity.
Call sequence
1. Plan the path
POST /v1/intents
{ kind: 'form_entity', state: 'DE', entity_type: 'c_corp' }2. Check name availability
GET /v1/name_availability?name=Acme%20Inc&state=DE3. Form the entity
POST /v1/entities
Idempotency-Key: form-acme-2026-04-28
{ name, state, founders[], authorized_shares: 10000000 }4. Submit to the secretary of state
POST /v1/entities/{id}/submit5. Apply for the EIN
POST /v1/ein_applications { entity }Idempotency
Use a stable `Idempotency-Key` derived from `(account_id, founder_emails, state)`. Replays return the same `entity.id`. EIN application is idempotent on `entity` — at most one open application per entity.
Webhooks
| Event | Description |
|---|---|
entity.created | Right after POST /v1/entities. Use this to wire downstream state. |
entity.submitted | After the secretary of state accepts the filing. |
entity.formed | When the certified copy is back. The entity is real. |
ein_application.completed | EIN landed. Tax profile is now ready. |
Errors
| Status | Code | Description |
|---|---|---|
422 | name_unavailable | The name failed the SOS check. Re-run name availability with a fallback. |
422 | founder_address_invalid | A founder address failed USPS normalization. Surface to the human. |
409 | entity_already_exists | You replayed with a different body. Either reuse the prior key or pick a new one. |
Related
v1 model: founder-as-incorporator. The natural-person founder named at
incorporator_founder_index signs the Certificate of Incorporation. Matter
facilitates technical execution but never signs as incorporator. The founder
signs directly via a signing envelope (Rail 1) or through their electronic
agent under UETA §14 standing consent (Rail 2 — see
form an entity with an agent).
See legal basis for the full enum.
What you end up with
Patterns
The Recipe above is the canonical founder C-Corp shape. The patterns below cover the other common entity shapes — each is a runnable starting point.
Pattern 2: Single-member LLC
Solo founder, US-WY (no franchise tax, low fees), pass-through tax election. The LLC equivalent of the named incorporator is the organizer — the natural-person member who signs and files the Articles of Organization. Matter never signs as organizer; the customer's named member does.
curl https://api.mattermode.com/v1/workflows/form_company \
-H "Authorization: Bearer $MATTER_KEY" \
-H "Matter-Version: 2026-05-01" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"type": "llc",
"jurisdiction": "US-WY",
"legal_name": "Waypoint Studio, LLC",
"organizer_member_index": 0,
"members": [
{"name": "Jane Doe", "ownership_percent": 100, "email": "jane@example.com"}
],
"tax": {"election": "disregarded_entity", "apply_for_ein": true},
"registered_agent": {"provider": "matter"},
"acknowledgements": [
{"slug": "not_legal_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "not_tax_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "formation_is_legally_binding", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "formation_creates_tax_obligations", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200}
]
}'LLCs don't issue stock — members replaces founders, ownership_percent
replaces equity_percent, and organizer_member_index is the LLC analog of
incorporator_founder_index. There's no EquityPlan, Grant, or 83(b). The
rest of the cascade (Filing, IncorporatorReceipt, EIN, Documents) is the same
shape — the receipt's signer_stakeholder_id points at the named organizer
and signer_basis records how their signature was captured.
Pattern 3: Multi-member partnership with deferred capitalization
Form the entity first; defer founder share issuance for a 30-day cap-table negotiation. Drops down to primitives instead of using the full workflow.
# Step 1 — entity only, equity deferred. The named incorporator must still be a
# natural-person founder; supply them up front and defer share issuance.
ENTITY=$(curl -s https://api.mattermode.com/v1/entities \
-H "Authorization: Bearer $MATTER_KEY" \
-H "Matter-Version: 2026-05-01" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"type": "c_corp",
"jurisdiction": "US-DE",
"legal_name": "Waypoint Systems, Inc.",
"incorporator_founder_index": 0,
"founders": [
{"stakeholder_id": "stk_jane_F0und3r", "name": "Jane Doe", "email": "jane@example.com", "kind": "natural_person"}
],
"share_structure": {"authorized_shares": 10000000, "par_value": "0.0001"},
"tax": {"apply_for_ein": true},
"acknowledgements": [
{"slug": "not_legal_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "not_tax_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "formation_is_legally_binding", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200},
{"slug": "formation_creates_tax_obligations", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_jane_F0und3r", "accepted_at": 1745683200}
]
}' | jq -r '.id')
# ... 30 days of cap-table negotiation ...
# Step 2 — issue founder grants once the split is agreed
curl https://api.mattermode.com/v1/grants \
-H "Authorization: Bearer $MATTER_KEY" \
-H "Matter-Version: 2026-05-01" \
-H "Idempotency-Key: $(uuidgen)" \
-d "{
\"entity_id\": \"$ENTITY\",
\"stakeholder\": {\"name\": \"Jane Doe\", \"email\": \"jane@example.com\"},
\"shares\": 8000000,
\"vesting\": {\"schedule\": \"4y_monthly\", \"cliff_months\": 12}
}"The workflow and the primitives are interchangeable — form_company is
idempotent under the same key, so you can switch paths without creating
duplicate entities.
Pattern 4: Subsidiary or sister entity
A parent entity owns 100% of the new subsidiary. Common at scale: an
international expansion arm, a regulated business line ring-fenced from
operations, an SPV for a SAFE note, or a sister C-Corp under a holding
structure. No founder vesting, no 83(b), no EquityPlan issued by default.
A natural-person officer of the parent signs the Certificate of
Incorporation as the named incorporator under either Rail 1 (signing
envelope) or Rail 2 (UETA §14 standing consent).
curl https://api.mattermode.com/v1/workflows/form_company \
-H "Authorization: Bearer $MATTER_KEY" \
-H "Matter-Version: 2026-05-01" \
-H "Idempotency-Key: $(uuidgen)" \
-H "X-Matter-Test-Speed: instant" \
-H "Content-Type: application/json" \
-d '{
"type": "c_corp",
"jurisdiction": "US-DE",
"legal_name": "Waypoint International, Inc.",
"parent": {
"entity_id": "ent_Nq3KcAbc",
"ownership_percent": 100
},
"incorporator": {
"stakeholder_id": "stk_ParentCEO",
"title": "CEO of Waypoint Systems, Inc.",
"signer_basis": "esra_consent"
},
"share_structure": {
"authorized_shares": 1000,
"par_value": "0.0001",
"issued_to_parent": 1000
},
"tax": {
"apply_for_ein": true,
"consolidated_return_election": true
},
"registered_agent": {"provider": "matter"},
"governance_docs": true,
"acknowledgements": [
{"slug": "not_legal_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_ParentCEO", "accepted_at": 1745683200},
{"slug": "not_tax_advice", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_ParentCEO", "accepted_at": 1745683200},
{"slug": "formation_is_legally_binding", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_ParentCEO", "accepted_at": 1745683200},
{"slug": "formation_creates_tax_obligations", "version": "2026-04-01", "accepted_by_stakeholder_id": "stk_ParentCEO", "accepted_at": 1745683200}
]
}'The differences from the canonical recipe are structural: parent replaces
founders[], incorporator replaces incorporator_founder_index, and the
share_structure.issued_to_parent field cascades a single
ShareLedgerEntry issuing 100% to the parent's stakeholder record. No
EquityPlan, Grant, or 83(b) artifacts. The IncorporatorReceipt still
emits — signer_stakeholder_id points at the named officer, with the
parent's authorizing resolution attached at agent_authority for tier-4
formations.