import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
const response = await client.accounts.formCompany('account_id', {
business_name: '<string>',
business_type: '<string>',
formation_state: 'AL',
founders: [
{
address: {
city: '<string>',
country: '<string>',
line1: '<string>',
postal_code: '<string>',
state: '<string>',
},
email: '<string>',
first_name: '<string>',
is_primary: true,
last_name: '<string>',
phone: '<string>',
},
],
industry_group: '<string>',
industry_type: '<string>',
});
console.log(response.checkout_session_id);curl --request POST \
--url https://api.whop.com/api/v1/accounts/{account_id}/form_company \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"business_name": "<string>",
"business_phone": "<string>",
"business_type": "<string>",
"business_website": "<string>",
"entity_suffix": "<string>",
"entity_type": "<string>",
"expedite_ein": true,
"formation_state": "<string>",
"founders": [
{
"address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"date_of_birth": "<string>",
"email": "<string>",
"first_name": "<string>",
"is_primary": true,
"last_name": "<string>",
"ownership_percentage": 123,
"phone": "<string>",
"roles": [
"<string>"
],
"ssn": "<string>"
}
],
"industry_group": "<string>",
"industry_type": "<string>",
"share_structure": {
"number_of_shares": 123,
"value": 123
},
"use_registered_agent": true
}
'import requests
url = "https://api.whop.com/api/v1/accounts/{account_id}/form_company"
payload = {
"business_address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"business_name": "<string>",
"business_phone": "<string>",
"business_type": "<string>",
"business_website": "<string>",
"entity_suffix": "<string>",
"entity_type": "<string>",
"expedite_ein": True,
"formation_state": "<string>",
"founders": [
{
"address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"date_of_birth": "<string>",
"email": "<string>",
"first_name": "<string>",
"is_primary": True,
"last_name": "<string>",
"ownership_percentage": 123,
"phone": "<string>",
"roles": ["<string>"],
"ssn": "<string>"
}
],
"industry_group": "<string>",
"industry_type": "<string>",
"share_structure": {
"number_of_shares": 123,
"value": 123
},
"use_registered_agent": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/accounts/{account_id}/form_company",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'business_address' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postal_code' => '<string>',
'state' => '<string>'
],
'business_name' => '<string>',
'business_phone' => '<string>',
'business_type' => '<string>',
'business_website' => '<string>',
'entity_suffix' => '<string>',
'entity_type' => '<string>',
'expedite_ein' => true,
'formation_state' => '<string>',
'founders' => [
[
'address' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postal_code' => '<string>',
'state' => '<string>'
],
'date_of_birth' => '<string>',
'email' => '<string>',
'first_name' => '<string>',
'is_primary' => true,
'last_name' => '<string>',
'ownership_percentage' => 123,
'phone' => '<string>',
'roles' => [
'<string>'
],
'ssn' => '<string>'
]
],
'industry_group' => '<string>',
'industry_type' => '<string>',
'share_structure' => [
'number_of_shares' => 123,
'value' => 123
],
'use_registered_agent' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/accounts/{account_id}/form_company"
payload := strings.NewReader("{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.whop.com/api/v1/accounts/{account_id}/form_company")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/accounts/{account_id}/form_company")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}"
response = http.request(request)
puts response.read_body{
"checkout_session_id": "<string>",
"checkout_url": "<string>",
"currency": "<string>",
"total": 123
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}Form Company
Starts an LLC or C-Corp formation for a business account. Defaults to an LLC; set entity_type to c_corp to form a C-Corp, which additionally requires share_structure and officer roles on every founder. On submission, the application is validated and the response returns a hosted checkout URL. Once paid, the filing is submitted. Track progress through the account’s company_formation field on Retrieve Account.
import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
const response = await client.accounts.formCompany('account_id', {
business_name: '<string>',
business_type: '<string>',
formation_state: 'AL',
founders: [
{
address: {
city: '<string>',
country: '<string>',
line1: '<string>',
postal_code: '<string>',
state: '<string>',
},
email: '<string>',
first_name: '<string>',
is_primary: true,
last_name: '<string>',
phone: '<string>',
},
],
industry_group: '<string>',
industry_type: '<string>',
});
console.log(response.checkout_session_id);curl --request POST \
--url https://api.whop.com/api/v1/accounts/{account_id}/form_company \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"business_address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"business_name": "<string>",
"business_phone": "<string>",
"business_type": "<string>",
"business_website": "<string>",
"entity_suffix": "<string>",
"entity_type": "<string>",
"expedite_ein": true,
"formation_state": "<string>",
"founders": [
{
"address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"date_of_birth": "<string>",
"email": "<string>",
"first_name": "<string>",
"is_primary": true,
"last_name": "<string>",
"ownership_percentage": 123,
"phone": "<string>",
"roles": [
"<string>"
],
"ssn": "<string>"
}
],
"industry_group": "<string>",
"industry_type": "<string>",
"share_structure": {
"number_of_shares": 123,
"value": 123
},
"use_registered_agent": true
}
'import requests
url = "https://api.whop.com/api/v1/accounts/{account_id}/form_company"
payload = {
"business_address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"business_name": "<string>",
"business_phone": "<string>",
"business_type": "<string>",
"business_website": "<string>",
"entity_suffix": "<string>",
"entity_type": "<string>",
"expedite_ein": True,
"formation_state": "<string>",
"founders": [
{
"address": {
"city": "<string>",
"country": "<string>",
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"state": "<string>"
},
"date_of_birth": "<string>",
"email": "<string>",
"first_name": "<string>",
"is_primary": True,
"last_name": "<string>",
"ownership_percentage": 123,
"phone": "<string>",
"roles": ["<string>"],
"ssn": "<string>"
}
],
"industry_group": "<string>",
"industry_type": "<string>",
"share_structure": {
"number_of_shares": 123,
"value": 123
},
"use_registered_agent": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/accounts/{account_id}/form_company",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'business_address' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postal_code' => '<string>',
'state' => '<string>'
],
'business_name' => '<string>',
'business_phone' => '<string>',
'business_type' => '<string>',
'business_website' => '<string>',
'entity_suffix' => '<string>',
'entity_type' => '<string>',
'expedite_ein' => true,
'formation_state' => '<string>',
'founders' => [
[
'address' => [
'city' => '<string>',
'country' => '<string>',
'line1' => '<string>',
'line2' => '<string>',
'postal_code' => '<string>',
'state' => '<string>'
],
'date_of_birth' => '<string>',
'email' => '<string>',
'first_name' => '<string>',
'is_primary' => true,
'last_name' => '<string>',
'ownership_percentage' => 123,
'phone' => '<string>',
'roles' => [
'<string>'
],
'ssn' => '<string>'
]
],
'industry_group' => '<string>',
'industry_type' => '<string>',
'share_structure' => [
'number_of_shares' => 123,
'value' => 123
],
'use_registered_agent' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/accounts/{account_id}/form_company"
payload := strings.NewReader("{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.whop.com/api/v1/accounts/{account_id}/form_company")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/accounts/{account_id}/form_company")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"business_address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"business_name\": \"<string>\",\n \"business_phone\": \"<string>\",\n \"business_type\": \"<string>\",\n \"business_website\": \"<string>\",\n \"entity_suffix\": \"<string>\",\n \"entity_type\": \"<string>\",\n \"expedite_ein\": true,\n \"formation_state\": \"<string>\",\n \"founders\": [\n {\n \"address\": {\n \"city\": \"<string>\",\n \"country\": \"<string>\",\n \"line1\": \"<string>\",\n \"line2\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"state\": \"<string>\"\n },\n \"date_of_birth\": \"<string>\",\n \"email\": \"<string>\",\n \"first_name\": \"<string>\",\n \"is_primary\": true,\n \"last_name\": \"<string>\",\n \"ownership_percentage\": 123,\n \"phone\": \"<string>\",\n \"roles\": [\n \"<string>\"\n ],\n \"ssn\": \"<string>\"\n }\n ],\n \"industry_group\": \"<string>\",\n \"industry_type\": \"<string>\",\n \"share_structure\": {\n \"number_of_shares\": 123,\n \"value\": 123\n },\n \"use_registered_agent\": true\n}"
response = http.request(request)
puts response.read_body{
"checkout_session_id": "<string>",
"checkout_url": "<string>",
"currency": "<string>",
"total": 123
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>"
}
}Authorizations
A company API key, company scoped JWT, app API key, or user OAuth token. You must prepend your key/token with the word 'Bearer', which will look like Bearer ***************************
Headers
A unique key that makes this request safe to retry. See Idempotent requests.
255"d9105228-4a08-46b1-8b91-42fed586d383"
Pins the request to a dated API version.
"2026-07-23"
Path Parameters
Account ID, prefixed biz_.
Body
Legal name for the new company.
High-level business category, from the Whop business taxonomy. Valid values are listed on business types and industries glossary.
Two-letter code of the US state (or DC) to form the company in.
AL, AK, AZ, AR, CA, CO, CT, DE, DC, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY The company's founders. Exactly one must be marked is_primary — the responsible party for the filing.
Show child attributes
Show child attributes
Industry group, from the Whop business taxonomy. Valid values are listed on business types and industries glossary.
Specific industry vertical, from the Whop business taxonomy. Valid values are listed on business types and industries glossary.
Company mailing address. Required unless use_registered_agent is true.
Show child attributes
Show child attributes
Business phone number in E.164 format, for example +12125550100. Required unless use_registered_agent is true.
Company website URL.
Legal entity ending appended to business_name. LLC formations accept LLC, L.L.C, L.L.C. or Limited Liability Company and default to LLC; C-Corp formations accept Inc, Inc., Incorporated, Corp., Corporation, C Corp, C Corporation, CCorp or Company and default to Inc.. Unrecognized values fall back to the default for the entity type.
LLC, L.L.C, L.L.C., Limited Liability Company, Inc, Inc., Incorporated, Corp., Corporation, C Corp, C Corporation, CCorp, Company Legal entity type to form. Defaults to llc.
llc, c_corp Request expedited EIN processing for an additional fee. Available only when no founder supplies an SSN.
Authorized share structure. Required when entity_type is c_corp; ignored for LLCs.
Show child attributes
Show child attributes
Use the registered agent's address as the company address instead of business_address.
Response
application accepted and checkout created

