API · Create · Entities
Create a formation packet.
Composite endpoint that executes the Day-0 formation packet as a single atomic cascade. Generates the action of incorporator, the bylaws, the secretary certificate, the initial board resolutions (officer election, bank-account authorisation, share-issuance authorisation, option-plan adoption, indemnification-form approval, registered-agent appointment), the founder stock purchase agreements (one per founder, with §83(b) elections, escrowed stock powers, and IP-assignment agreements), the indemnification agreements for each director and officer, and the EIN application — all under one Idempotency-Key.
Returns 202 Accepted immediately with a Request id; webhook stream emits entity.formation_packet.step.completed per step and entity.formation_packet.completed at terminal. Sub-state is reflected on Entity.formation_packet_status.
Pass ?dry_run=true to receive the full execution plan without executing.
Last updated
Query Parameters
dry_runbooleanOptionalIf true, simulate the mutation and return the would-be resource, any cascaded
resources, and a fee estimate — without side effects. Available on every mutation.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
foundersarray<object>RequiredFounder stakeholders to receive restricted stock.
stakeholder_idstringRequiredconsideration_typestringOptional"cash""ip_assignment""services""mixed"cash_consideration_centsintegerOptionalip_assignment_scopestringOptional"full""limited""none"vestingobjectOptionalcliff_monthsintegerOptionaltotal_monthsintegerOptionalreverse_vestingbooleanOptionalrepurchase_option_window_daysintegerOptionalDays after termination during which the company may
exercise its FSPA repurchase right. Memorialized in the
executed agreement; later validated at
POST /grants/{id}/repurchase time. Default 90 (NVCA
standard). Mirrors
Grant.founder_restricted_stock_terms.repurchase_option_window_days.
accelerationobjectOptionalsingle_trigger_change_of_control_percentnumberOptionaldouble_trigger_change_of_control_percentnumberOptionaloption_pool_basis_pointsintegerOptionalInitial option pool, expressed as a fraction of post-formation fully-diluted shares.
officer_slatearray<object>OptionalInitial officer appointments adopted by the Initial Board
Consent. When omitted, Matter's recommendation engine
resolves the slate from founders[].role plus DGCL §142
minimums (President and Secretary required; the same person
may hold multiple offices). Provide explicitly when
appointing non-founder officers (outside counsel as
Secretary, non-founder CFOs), when one founder must hold
multiple titles, or when the entity uses a non-standard
title scheme. Each entry must reference an existing
Stakeholder; if a non-founder Secretary is needed, create
that Stakeholder via POST /entities/{id}/stakeholders
before calling formation_packet.
stakeholder_idstringRequiredStakeholder receiving the officer appointment. Must
already exist on the entity (or be one of the founders
created by this same formation_packet call).
titlestringRequiredOfficer title. Common values: chief_executive_officer,
president, chief_financial_officer,
chief_operating_officer, chief_technology_officer,
treasurer, secretary, vice_president. Free-form;
the Initial Board Consent template renders the literal
string after de-snake-casing for display.
authority_basisstringOptionalWhy this officer slot exists. dgcl_142_minimum for
President / Secretary (DGCL §142 mandates them);
bylaws_default for slots the bylaws name explicitly;
board_resolution for everything else (default).
"bylaws_default""board_resolution""dgcl_142_minimum"include_bank_account_applicationobjectOptionalAtomically provision a corporate bank account alongside
the formation packet. With the default column
processor, the account is created synchronously via
Column's banking-as-a-service API — account_number
and routing_number land on the formation_packet
response directly. With Mercury / Brex / Chase / Ramp
overrides, returns a pre-filled application URL so the
founder can complete the partner's onboarding flow.
processorstringOptionalDefault column — Matter's banking-as-a-service
partner. Column has a real API and provisions the
account synchronously (returns account_number and
routing_number on the formation_packet response).
Mercury / Brex / Chase / Ramp are alternative
providers that require off-platform web-flow
onboarding (KYC happens on the partner's site).
These overrides dispatch a sub-agent (see
initiateBankAccountOpening) to drive the
partner's onboarding portal.
"column""mercury""brex""chase""ramp""auto"include_ein_applicationobjectOptionalAtomically submit IRS Form SS-4 alongside the formation
packet. Internally invokes the same path as
submitEINApplication with the responsible-party
stakeholder. Returns the EIN application status in
package_artifacts.ein_application.
responsible_party_stakeholder_idstringRequiredStakeholder listed as responsible party on Form SS-4. For 1-person C-Corps this is the sole founder; for teams it's the founder taking the role of CEO.
internationalbooleanOptionalTrue when the responsible party doesn't have a US SSN or ITIN. Routes the application through the IRS Phone-Application path. Adds 1–2 weeks to turnaround.
include_foreign_qualificationobjectOptionalAtomically file foreign qualification in the founder's
operating state when it differs from the formation
jurisdiction. Inferred from discovery_input.home_state
on the parent Intent if not specified explicitly.
jurisdictionstringOptionalTwo-letter US state code (e.g. "NC", "CA"). When
omitted, the resolver pulls from
Intent.discovery_input.home_state.
indemnification_policyobjectOptionaladvancement_of_expensesbooleanOptionald_and_o_insurance_requiredbooleanOptionalregistered_agent_idstringOptionalrequest_einbooleanOptionalefile_83bobjectOptionalHow to file the §83(b) Election with the IRS. As of July
2025, the IRS supports e-filing Form 15620 via the ID.me
portal with instant confirmation. Default id_me_portal
for novice founders means Matter handles the entire flow
— no print/sign/mail step.
methodstringOptional"id_me_portal""paper_mail""none"delegated_credentialsobjectOptionalHow Matter signs the §83(b) e-file on the responsible
party's behalf. Default matter_ueta_agent: Matter
holds a tier-3 token authorised for §83(b) filing
under UETA §14 standing consent (set up at terms
acceptance time). The founder never types into id.me.
railstringOptional"matter_ueta_agent""founder_session"routine_install_policystringOptionalWhether to install recurring compliance routines as part of the formation packet (default), via a separate call, or not at all.
"auto_on_formation""manual""none"signing_modestringOptionalHow signature events on the formation packet are handled:
agent(default): every signable artifact except the personal §83(b) election is signed on the founder's behalf by Matter's electronic signing agent under UETA §14. The founder receives aDocumentwithagent_signed: trueand areview_urlfor each item; no countersignature action is required from them. The §83(b) is the only document the founder must personally execute and mail within the 30-day window — surfaced separately withDocument.countdown_until_deadlineand a pre-filled certified-mail label.self: every signable artifact (Action of Incorporator, organisational consent, bylaws adoption, stock purchase agreement, indemnification agreement, and §83(b)) is queued for the founder's personal signature. Each appears in the dashboard as apending_signatureDocument with a signing link. Matter will not advanceEntity.formation_packet_statuspastawaiting_founder_signaturesuntil every item is executed.
See signing modes for the
full decision matrix. Tier-3+ tokens may set this; lower
tiers always default to agent.
"agent""self"signing_mode_review_settingsobjectOptionalReview preferences when signing_mode: agent. Optional —
omit for sensible defaults. Ignored when signing_mode: self.
email_review_linksbooleanOptionalEmail the founder a single digest of review_urls for every agent-signed Document at packet completion. They can read but not sign.
require_acknowledgementbooleanOptionalIf true, agent-signed Documents are produced but the
Entity stays in awaiting_founder_acknowledgement until
the founder clicks "I've reviewed" in the dashboard. Lets
compliance-conscious founders gate the
Entity.formation_packet_status: completed transition
on a positive review even when not signing themselves.
Response Body
application/json
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
Request
curl -X POST "https://api.mattermode.com/v1/entities/{id}/formation_packet" \ -H "Content-Type: application/json" \ -d '{ "founders": [ { "stakeholder_id": "string", "shares": 1 } ] }'const body = JSON.stringify({ "founders": [ { "stakeholder_id": "string", "shares": 1 } ]})fetch("https://api.mattermode.com/v1/entities/{id}/formation_packet", { method: "POST", headers: { "Content-Type": "application/json" }, body})package mainimport ( "fmt" "net/http" "io/ioutil" "strings")func main() { url := "https://api.mattermode.com/v1/entities/{id}/formation_packet" body := strings.NewReader(`{ "founders": [ { "stakeholder_id": "string", "shares": 1 } ] }`) req, _ := http.NewRequest("POST", url, body) req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body))}import requestsheaders = { "Authorization": "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc", "Matter-Version": "2026-06-10", "Idempotency-Key": "ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b",}payload = { "founders": [ { "stakeholder_id": "example", "shares": 1 } ]}resp = requests.post( "https://api.mattermode.com/v1/entities/ent_Nq3KcAbc/formation_packet", headers=headers, json=payload,)resp.raise_for_status()print(resp.json())import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;import java.net.http.HttpRequest.BodyPublishers;var body = BodyPublishers.ofString("""{ "founders": [ { "stakeholder_id": "string", "shares": 1 } ]}""");HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() .uri(URI.create("https://api.mattermode.com/v1/entities/{id}/formation_packet")) .header("Content-Type", "application/json") .POST(body) .build();try { HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString()); System.out.println("Status code: " + response.statusCode()); System.out.println("Response body: " + response.body());} catch (Exception e) { e.printStackTrace();}using System;using System.Net.Http;using System.Text;var body = new StringContent("""{ "founders": [ { "stakeholder_id": "string", "shares": 1 } ]}""", Encoding.UTF8, "application/json");var client = new HttpClient();var response = await client.PostAsync("https://api.mattermode.com/v1/entities/{id}/formation_packet", body);var responseBody = await response.Content.ReadAsStringAsync();curl --request POST 'https://api.mattermode.com/v1/entities/ent_Nq3KcAbc/formation_packet' \ --header 'Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc' \ --header 'Matter-Version: 2026-06-10' \ --header 'Idempotency-Key: ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b' \ --header 'Content-Type: application/json' \ --data '{ "founders": [ { "stakeholder_id": "example", "shares": 1 } ]}'const response = await fetch("https://api.mattermode.com/v1/entities/ent_Nq3KcAbc/formation_packet", { method: "POST", headers: { "Authorization": "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc", "Matter-Version": "2026-06-10", "Idempotency-Key": "ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b", "Content-Type": "application/json", }, body: JSON.stringify({ "founders": [ { "stakeholder_id": "example", "shares": 1 } ] }),});if (!response.ok) { throw new Error(`Matter API ${response.status}: ${await response.text()}`);}const data = await response.json();console.log(data);Response
application/json{
"steps": [
{
"operation": "string",
"depends_on": [
0
],
"estimated_duration_seconds": 0,
"cost_estimate": {
"amount": 50000,
"currency": "usd"
},
"requires_human_signature": false,
"status": "pending",
"output_resource_ids": [
"string"
],
"defaulted_fields": [
{
"field": "string",
"value": null,
"rationale": "string",
"rationale_source": "discovery_input",
"overridable": true,
"basis": "nvca_standard",
"citations": [
"string"
]
}
],
"phase": "formation",
"gate": {
"owner": "founder",
"expected_duration_days": [
0,
0
],
"evidence": [
"string"
]
},
"deadline": {
"due": {},
"hard": true
},
"entity_ref": "string",
"fee_cents": 0
}
],
"compliance_calendar": [
{
"name": "string",
"due": {},
"fee_cents": 0,
"cadence": "one_time",
"source": "jurisdiction",
"hard": true,
"notes": "string",
"jurisdiction": "string"
}
],
"jurisdiction_support": {
"tier": "first_class",
"notes": "string"
},
"recipe": {
"name": "venture_de_c_corp",
"basis": "nvca_standard",
"rationale": "string"
},
"plan_version": "string"
}{
"request_id": "string",
"entity": {
"id": "ent_Nq3KcAbc",
"object": "entity",
"status": "draft",
"type": "c_corp",
"jurisdiction": "US-DE",
"legal_name": "Waypoint Systems, Inc.",
"aliases": [
"string"
],
"formed_at": 0,
"dissolved_at": 0,
"acquired_at": 0,
"merged_at": 0,
"sold_at": 0,
"workspace_id": "string",
"corporate_transaction_id": "string",
"principal_address": {
"line1": "string",
"line2": "string",
"city": "string",
"county": "string",
"region": "string",
"postal_code": "string",
"country": "US"
},
"mailing_address": {
"line1": "string",
"line2": "string",
"city": "string",
"county": "string",
"region": "string",
"postal_code": "string",
"country": "US"
},
"registered_agent_id": "string",
"incorporator_stakeholder_id": "string",
"tax_profile_id": "string",
"stakeholder_ids": [
"string"
],
"cap_table_id": "string",
"equity_plan_ids": [
"string"
],
"qualifications": [
{
"id": "string",
"object": "qualification",
"entity_id": "string",
"jurisdiction": "US-DE",
"status": "qualifying",
"qualified_at": 0,
"registered_agent_id": "string",
"compliance_track": {
"annual_report_due_on": "2019-08-24",
"franchise_tax_due_on": "2019-08-24"
},
"metadata": {
"customer_id": "cus_7Hpx9WxY",
"portfolio_tag": "y-combinator-w26"
},
"created": 0,
"updated": 0,
"livemode": true
}
],
"compliance": {
"health": "healthy",
"next_deadline": 0,
"open_obligations_count": 0
},
"intent_id": "string",
"incorporator_receipt_id": "string",
"portfolio_id": "string",
"governing_documents": {
"certificate_of_incorporation_id": "string",
"restated_certificate_of_incorporation_id": "string",
"bylaws_id": "string",
"action_of_incorporator_id": "string",
"secretary_certificate_id": "string",
"initial_board_consent_id": "string"
},
"formation_packet_status": "not_started",
"external_status": "pending",
"active_browser_agent_run_id": "string",
"browser_agent_run": {
"id": "string",
"object": "browser_agent_run",
"entity_id": "string",
"filing_kind": "formation",
"submitted": false,
"state": "pending",
"perception_mode": "recipe",
"region": "us_east",
"computed_fee_usd": 0,
"observed_fee_usd": 0,
"proof_bundle_id": "string",
"content_hash": "string",
"render_hash": "string",
"blocker": {
"reason": "PORTAL_MARKUP_DRIFT",
"message": "string",
"resume_token": "string",
"partial_field_dump": {}
},
"stopped_at": 0,
"created": 0
},
"metadata": {
"customer_id": "cus_7Hpx9WxY",
"portfolio_tag": "y-combinator-w26"
},
"created": 0,
"updated": 0,
"livemode": true
},
"formation_packet_status": "string",
"expected_steps": [
"string"
],
"package_artifacts": {
"documents": [
{
"id": "string",
"object": "document",
"entity_id": "string",
"type": "certificate_of_incorporation",
"provenance": "matter_generated",
"status": "draft",
"execution_status": "draft",
"lifecycle_class": "agreement",
"upstream_provenance": null,
"terminated_at": "2019-08-24",
"terminated_reason": null,
"clause_toggles": [
{
"clause_id": "string",
"current_value": null,
"default_value": null,
"override_basis": null,
"set_at": 0,
"set_by_stakeholder_id": "string"
}
],
"clause_toggle_changes": [
{
"clause_id": "string",
"previous_value": null,
"new_value": null,
"override_basis": null,
"changed_at": 0,
"changed_by_stakeholder_id": "string",
"note": "string"
}
],
"internal_notes": "string",
"structured_clauses": [
{
"clause_id": "string",
"value_type": "integer",
"value": null,
"source_section": "string",
"extracted_at": 0
}
],
"efile_metadata": {
"rail": "irs_id_me_portal",
"irs_confirmation_number": "string",
"confirmed_at": "2019-08-24T14:15:22Z",
"form_15620_document_id": "string",
"sub_agent_session_id": "string"
},
"attaches_to": "string",
"attachment_kind": null,
"related_documents": [
{
"document_id": "string",
"relation_kind": "co_executed_with",
"note": "string",
"established_at": "2019-08-24T14:15:22Z"
}
],
"cover_page_fields": {},
"equity_promise": {
"kind": "iso",
"shares_promised": 0,
"strike_price_status": "pending_409a",
"derived_from_valuation_id": "string",
"fixed_strike_price_usd": 0,
"vesting_schedule_promised": {
"total_months": 0,
"cliff_months": 0,
"commencement_anchor": "start_date",
"acceleration": null,
"expected_grant_date": "2019-08-24"
},
"board_approval_status": "pending",
"realized_grant_id": "string"
},
"standard_terms_template_id": "string",
"template_id": "string",
"template_version": "string",
"current_version_id": "string",
"entity_snapshot": {},
"payload": {},
"pdf_url": "http://example.com",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"proof": {
"algorithm": "Ed25519",
"value": "string",
"signing_key_fingerprint": "string"
},
"version": 1,
"parent_document_id": "string",
"signatures": [
{
"stakeholder_id": "string",
"signed_at": 0,
"signature_method": "esign",
"legal_basis": "wet_signature",
"consent_record": {
"consent_id": "string",
"ip": "string",
"user_agent": "string",
"accepted_at": 0,
"esra_disclosure_version": "2026-04-01"
},
"agent_authority": {
"token_id": "string",
"authorization_id": "string",
"principal_human_id": "string",
"agent_id": "string",
"acknowledgements": [
{
"slug": "not_legal_advice",
"version": "2026-04-01",
"accepted_by_stakeholder_id": "string",
"accepted_at": 0,
"ip": "string",
"user_agent": "string"
}
],
"standing_policy_id": "string"
},
"intent_text": "string"
}
],
"envelope_id": "string",
"sensitivity": "standard",
"disclaimer": {
"text": "string",
"version": "2026-04-01",
"source": "ueta_matter_v1",
"marketing_disclosure_url": "http://example.com"
},
"metadata": {
"customer_id": "cus_7Hpx9WxY",
"portfolio_tag": "y-combinator-w26"
},
"created": 0,
"updated": 0,
"livemode": true
}
],
"resolutions": [
{
"id": "string",
"object": "resolution",
"entity_id": "string",
"kind": "board_meeting",
"subject": "Approval of 2026 Equity Plan and initial pool of 2,000,000 shares",
"resolved_at": 0,
"variant": "sole_director",
"signatories": [
{
"stakeholder_id": "string",
"signed_at": 0,
"role": "string",
"signing_capacity": "director"
}
],
"officer_changes": [
{
"stakeholder_id": "string",
"change_kind": "appoint",
"title": "string",
"effective_date": "2019-08-24",
"previous_title": "string"
}
],
"document_id": "string",
"authorizes_filings": [
"string"
],
"authorizes_agreements": [
"string"
],
"authorizes_grants": [
"string"
],
"authorizes_share_reservations": [
"string"
],
"metadata": {
"customer_id": "cus_7Hpx9WxY",
"portfolio_tag": "y-combinator-w26"
},
"created": 0,
"updated": 0,
"livemode": true
}
],
"routines": [
{
"id": "string",
"obligation_kind": "string",
"schedule": "string",
"status": "string",
"next_run_at": "2019-08-24T14:15:22Z"
}
],
"ein_application": {
"request_id": "string",
"ein_application_status": "submitted",
"expected_completion_at": "2019-08-24T14:15:22Z"
},
"bank_account_application": {
"provider": "column",
"bank_account_id": "string",
"account_number": "string",
"routing_number": "string",
"status": "active",
"kyb_decision": "approved",
"column_account_id": "string"
},
"foreign_qualification": {
"filing_id": "string",
"jurisdiction": "string",
"status": "submitted"
},
"equity_plan": {
"plan_id": "string",
"authorised_shares": 0,
"terms_summary": "string"
},
"efile_83b_receipt": {
"irs_confirmation_number": "string",
"confirmed_at": "2019-08-24T14:15:22Z",
"form_15620_document_id": "string"
}
},
"routines": [
{
"id": "string",
"obligation_kind": "string",
"schedule": "string",
"token_id": "string",
"status": "active",
"next_run_at": 0
}
]
}{
"type": "https://mattermode.com/docs/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Request body could not be parsed as JSON.",
"doc_url": "https://mattermode.com/docs/guides/errors#invalid_request",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/authentication_required",
"title": "Authentication required",
"status": 401,
"code": "authentication_required",
"detail": "No bearer token was supplied. Pass `Authorization: Bearer sk_live_...` on every request.",
"doc_url": "https://mattermode.com/docs/guides/errors#authentication_required",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/scope_denied",
"title": "Scope denied",
"status": 403,
"code": "scope_denied",
"detail": "Token tok_8FbWcEoP9 has no grant on entity ent_Nq3KcAbc.",
"doc_url": "https://mattermode.com/docs/guides/errors#scope_denied",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/invalid_state_transition",
"title": "Invalid state transition",
"status": 409,
"code": "invalid_state_transition",
"detail": "Entity ent_Nq3KcAbc is in state `dissolved`; `dissolve` is not a valid transition.",
"doc_url": "https://mattermode.com/docs/guides/errors#invalid_state_transition",
"request_id": "req_Qw9xYz8A",
"current_state": "dissolved",
"attempted_transition": "dissolve",
"allowed_transitions": []
}{
"type": "https://mattermode.com/docs/errors/dissolution_prerequisites_missing",
"title": "Dissolution prerequisites missing",
"status": 409,
"code": "dissolution_prerequisites_missing",
"detail": "Voluntary dissolution requires `board_resolution_id` and `stockholder_consent_id`, or `auto_generate_resolutions: true`.",
"doc_url": "https://mattermode.com/docs/guides/errors#dissolution_prerequisites_missing",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/valuation_stale",
"title": "409A valuation stale",
"status": 409,
"code": "valuation_stale",
"detail": "Active 409A val_AbCd1234 is older than 12 months or superseded by a material event. Issuing ISOs at the prior strike risks IRC §409A violation. Refresh via POST /entities/{id}/valuations/{id}/refresh_request.",
"doc_url": "https://mattermode.com/docs/guides/errors#valuation_stale",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/rate_limit_exceeded",
"title": "Rate limit exceeded",
"status": 429,
"code": "rate_limit_exceeded",
"detail": "Request rate exceeded for this key. Retry after `retry_after` seconds or honor the `Retry-After` header.",
"doc_url": "https://mattermode.com/docs/guides/errors#rate_limit_exceeded",
"request_id": "req_Qw9xYz8A",
"retry_after": 30
}Cascade
A single call kicks off: {"kind":"document","type":"action_of_incorporator","timing":"immediate"} → {"kind":"document","type":"bylaws","timing":"immediate"} → {"kind":"document","type":"secretary_certificate","timing":"immediate"} → {"kind":"document","type":"initial_board_consent","timing":"immediate"} → {"kind":"document","type":"rspa","timing":"per_initial_issuance"} → {"kind":"document","type":"indemnification_agreement","timing":"immediate","qualifier":"per_director_or_officer"} → {"kind":"filing","type":"form_ss4","timing":"immediate"} → {"kind":"tax_election","type":"section_83b","timing":"per_restricted_issuance"}