import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const account of client.accounts.list()) {
console.log(account.id);
}curl --request GET \
--url https://api.whop.com/api/v1/accounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/accounts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.whop.com/api/v1/accounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"balances": [
{
"balance": "50.0",
"breakdown": {
"available": "1500.0",
"in_transit": "0",
"pending": "0",
"pending_settlements": [
{
"amount": "12.5",
"date": "2026-01-01"
}
],
"reserve": "0"
},
"icon_url": "https://assets.whop.com/tokens/usd.png",
"name": "US Dollar",
"price_usd": 1,
"symbol": "USD",
"value_usd": "50.00"
}
],
"banner_image_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"business_address": {
"city": "Austin",
"country": "US",
"line1": "4180 Burnet Rd",
"line2": "Suite 2",
"postal_code": "78756",
"state": "TX"
},
"business_name": "Shine Time Auto Detailing, LLC",
"business_type": "other",
"can_transfer_pending_balance_to_children": false,
"capabilities": {
"accept_bank_payments": "active",
"accept_bnpl_payments": "inactive",
"accept_card_payments": "active",
"bank_deposit": "inactive",
"card_deposit": "active",
"card_issuing": "inactive",
"crypto_deposit": "active",
"crypto_payout": "inactive",
"instant_payout": "inactive",
"run_ads": "active",
"standard_payout": "inactive",
"transfer": "inactive"
},
"cards": {
"kind": "individual",
"status": "approved"
},
"collect_vat_id": true,
"company_formation": {
"documents": [
{
"id": "file_xxxxxxxxxxxxxx",
"name": "Articles of Organization",
"type": "articles_of_organization",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/audio/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
],
"ein_registered": false,
"legal_name": "Shine Time Auto Detailing, LLC",
"signatures": {
"form8821": {
"status": "pending",
"expires_at": "2026-01-01T12:00:00.000Z",
"url": "https://sign.doola.com/shine-time-auto-detailing/form8821"
},
"ss4": {
"status": "pending",
"expires_at": "2026-01-01T12:00:00.000Z",
"url": "https://sign.doola.com/shine-time-auto-detailing/form8821"
}
},
"state_registered": true,
"status": "draft"
},
"country": "us",
"created_at": "2026-01-01T12:00:00.000Z",
"description": "Mobile ceramic coating, paint correction, and interior detailing across the Austin metro.",
"email": "marcus@shinetime.example",
"home_preferences": [
"hide_member_count"
],
"id": "biz_xxxxxxxxxxxxxx",
"industry_group": "automotive",
"industry_type": "other",
"invoice_prefix": "SHINE",
"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"metadata": {
"external_id": "shop_4417",
"region": "austin"
},
"onboarding_type": "seller",
"opengraph_image_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"opengraph_image_variant": "black",
"other_business_description": "Mobile auto detailing",
"other_industry_description": "Automotive services",
"owner": {
"id": "user_xxxxxxxxxxxxxx",
"name": "Dana Whitfield",
"profile_picture": {
"url": "https://ui-avatars.com/api/"
},
"username": "danawhitfield"
},
"parent_account": {
"id": "biz_xxxxxxxxxxxxxx",
"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"route": "shine-time-holdings",
"title": "Shine Time Holdings"
},
"payment_controls": {
"dispute_alert_auto_refund": {
"locked": false,
"threshold_usd": 500
},
"dispute_alert_fee_usd": 29,
"enforce_3ds": false,
"financing_disabled": false,
"high_risk_processing_fee_percentage": 0,
"pending_auto_topup_fee_percentage": 2,
"pending_balance_delay_days": 0,
"reserve": {
"hold_period_days": 14,
"percentage": 15
},
"resolution_center_auto_refund": {
"card_threshold_usd": 50,
"financing_threshold_usd": 25,
"locked": false,
"paypal_threshold_usd": 40
},
"restricted_payment_methods": [
"card_visa"
]
},
"product_tax_code": {
"id": "ptc_xxxxxxxxxxxxxx",
"name": "General - Digital Goods",
"product_type": "digital"
},
"recommended_actions": [
{
"action": "apply_for_financing",
"blocked_capabilities": [
"accept_bnpl_payments"
],
"cta": "https://whop.com/dashboard/biz_xxxxxxxxxxxxxx/settings/payments/",
"cta_label": "Apply",
"description": "Let customers pay over time with buy now, pay later.",
"icon_url": "https://whop.com/illustrations/orange/piggy-bank.svg",
"impact_score": 86,
"reasoning": "Financing lifts conversion on the $249 ceramic coating, the priciest job on the menu.",
"status": "optional",
"title": "Offer financing at checkout"
}
],
"require_2fa": true,
"required_actions": [
{
"action": "verify_identity",
"blocked_capabilities": [
"standard_payout"
],
"cta": "https://whop.com/dashboard/biz_xxxxxxxxxxxxxx/balance/",
"cta_label": "Verify now",
"description": "Complete verification to withdraw your earnings.",
"icon_url": "https://whop.com/illustrations/orange/shield.svg",
"status": "required",
"title": "Complete your identity verification"
}
],
"route": "biz_xxxxxxxxxxxxxx",
"send_customer_emails": false,
"show_joined_whops": false,
"show_reviews_dtc": false,
"show_user_directory": false,
"social_links": [
{
"id": "social_1",
"title": "@shinetimedetail",
"url": "https://instagram.com/shinetimedetail",
"website": "instagram"
}
],
"stablecoin_rails": false,
"status": "active",
"status_reason": "Payments are paused while we review recent chargebacks on this account.",
"store_page_config": {
"accent_color": "red",
"layout": "compact",
"profile_variant": "business",
"whop_affiliate_link": true
},
"target_audience": "Owners of new and enthusiast vehicles in Austin, TX",
"tax_collection_enabled_states": [
"TX"
],
"tax_identifiers": [
{
"id": "txid_xxxxxxxxxxxxxx",
"tax_id_type": "eu_vat",
"tax_id_value": "DE123456789"
}
],
"tax_remitted_by": "self",
"tax_type": "inclusive",
"three_ds_level": "mandate_challenge",
"title": "Shine Time Auto Detailing",
"total_earned_usd": 0,
"total_usd": "50.00",
"use_logo_as_opengraph_image_fallback": true,
"verification": {
"business": null,
"individual": null
},
"volume_usd": 123,
"wallet": {
"address": "0xabc123",
"id": "cwal_xxxxxxxxxxxxxx",
"network": "ethereum"
}
}
],
"page_info": {
"end_cursor": "WyJjdXJzb3IiLDFd",
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}List Accounts
Lists accounts visible to the credential. User tokens return the user’s business accounts; Account API keys return the requesting account and its connected accounts. Pass parent_account_id to return only that parent account’s connected accounts.
import Whop from '@whop/sdk';
const client = new Whop({
apiKey: process.env['WHOP_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const account of client.accounts.list()) {
console.log(account.id);
}curl --request GET \
--url https://api.whop.com/api/v1/accounts \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.whop.com/api/v1/accounts"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.whop.com/api/v1/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.whop.com/api/v1/accounts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.whop.com/api/v1/accounts")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.whop.com/api/v1/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"balances": [
{
"balance": "50.0",
"breakdown": {
"available": "1500.0",
"in_transit": "0",
"pending": "0",
"pending_settlements": [
{
"amount": "12.5",
"date": "2026-01-01"
}
],
"reserve": "0"
},
"icon_url": "https://assets.whop.com/tokens/usd.png",
"name": "US Dollar",
"price_usd": 1,
"symbol": "USD",
"value_usd": "50.00"
}
],
"banner_image_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"business_address": {
"city": "Austin",
"country": "US",
"line1": "4180 Burnet Rd",
"line2": "Suite 2",
"postal_code": "78756",
"state": "TX"
},
"business_name": "Shine Time Auto Detailing, LLC",
"business_type": "other",
"can_transfer_pending_balance_to_children": false,
"capabilities": {
"accept_bank_payments": "active",
"accept_bnpl_payments": "inactive",
"accept_card_payments": "active",
"bank_deposit": "inactive",
"card_deposit": "active",
"card_issuing": "inactive",
"crypto_deposit": "active",
"crypto_payout": "inactive",
"instant_payout": "inactive",
"run_ads": "active",
"standard_payout": "inactive",
"transfer": "inactive"
},
"cards": {
"kind": "individual",
"status": "approved"
},
"collect_vat_id": true,
"company_formation": {
"documents": [
{
"id": "file_xxxxxxxxxxxxxx",
"name": "Articles of Organization",
"type": "articles_of_organization",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/audio/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
],
"ein_registered": false,
"legal_name": "Shine Time Auto Detailing, LLC",
"signatures": {
"form8821": {
"status": "pending",
"expires_at": "2026-01-01T12:00:00.000Z",
"url": "https://sign.doola.com/shine-time-auto-detailing/form8821"
},
"ss4": {
"status": "pending",
"expires_at": "2026-01-01T12:00:00.000Z",
"url": "https://sign.doola.com/shine-time-auto-detailing/form8821"
}
},
"state_registered": true,
"status": "draft"
},
"country": "us",
"created_at": "2026-01-01T12:00:00.000Z",
"description": "Mobile ceramic coating, paint correction, and interior detailing across the Austin metro.",
"email": "marcus@shinetime.example",
"home_preferences": [
"hide_member_count"
],
"id": "biz_xxxxxxxxxxxxxx",
"industry_group": "automotive",
"industry_type": "other",
"invoice_prefix": "SHINE",
"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"metadata": {
"external_id": "shop_4417",
"region": "austin"
},
"onboarding_type": "seller",
"opengraph_image_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"opengraph_image_variant": "black",
"other_business_description": "Mobile auto detailing",
"other_industry_description": "Automotive services",
"owner": {
"id": "user_xxxxxxxxxxxxxx",
"name": "Dana Whitfield",
"profile_picture": {
"url": "https://ui-avatars.com/api/"
},
"username": "danawhitfield"
},
"parent_account": {
"id": "biz_xxxxxxxxxxxxxx",
"logo_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"route": "shine-time-holdings",
"title": "Shine Time Holdings"
},
"payment_controls": {
"dispute_alert_auto_refund": {
"locked": false,
"threshold_usd": 500
},
"dispute_alert_fee_usd": 29,
"enforce_3ds": false,
"financing_disabled": false,
"high_risk_processing_fee_percentage": 0,
"pending_auto_topup_fee_percentage": 2,
"pending_balance_delay_days": 0,
"reserve": {
"hold_period_days": 14,
"percentage": 15
},
"resolution_center_auto_refund": {
"card_threshold_usd": 50,
"financing_threshold_usd": 25,
"locked": false,
"paypal_threshold_usd": 40
},
"restricted_payment_methods": [
"card_visa"
]
},
"product_tax_code": {
"id": "ptc_xxxxxxxxxxxxxx",
"name": "General - Digital Goods",
"product_type": "digital"
},
"recommended_actions": [
{
"action": "apply_for_financing",
"blocked_capabilities": [
"accept_bnpl_payments"
],
"cta": "https://whop.com/dashboard/biz_xxxxxxxxxxxxxx/settings/payments/",
"cta_label": "Apply",
"description": "Let customers pay over time with buy now, pay later.",
"icon_url": "https://whop.com/illustrations/orange/piggy-bank.svg",
"impact_score": 86,
"reasoning": "Financing lifts conversion on the $249 ceramic coating, the priciest job on the menu.",
"status": "optional",
"title": "Offer financing at checkout"
}
],
"require_2fa": true,
"required_actions": [
{
"action": "verify_identity",
"blocked_capabilities": [
"standard_payout"
],
"cta": "https://whop.com/dashboard/biz_xxxxxxxxxxxxxx/balance/",
"cta_label": "Verify now",
"description": "Complete verification to withdraw your earnings.",
"icon_url": "https://whop.com/illustrations/orange/shield.svg",
"status": "required",
"title": "Complete your identity verification"
}
],
"route": "biz_xxxxxxxxxxxxxx",
"send_customer_emails": false,
"show_joined_whops": false,
"show_reviews_dtc": false,
"show_user_directory": false,
"social_links": [
{
"id": "social_1",
"title": "@shinetimedetail",
"url": "https://instagram.com/shinetimedetail",
"website": "instagram"
}
],
"stablecoin_rails": false,
"status": "active",
"status_reason": "Payments are paused while we review recent chargebacks on this account.",
"store_page_config": {
"accent_color": "red",
"layout": "compact",
"profile_variant": "business",
"whop_affiliate_link": true
},
"target_audience": "Owners of new and enthusiast vehicles in Austin, TX",
"tax_collection_enabled_states": [
"TX"
],
"tax_identifiers": [
{
"id": "txid_xxxxxxxxxxxxxx",
"tax_id_type": "eu_vat",
"tax_id_value": "DE123456789"
}
],
"tax_remitted_by": "self",
"tax_type": "inclusive",
"three_ds_level": "mandate_challenge",
"title": "Shine Time Auto Detailing",
"total_earned_usd": 0,
"total_usd": "50.00",
"use_logo_as_opengraph_image_fallback": true,
"verification": {
"business": null,
"individual": null
},
"volume_usd": 123,
"wallet": {
"address": "0xabc123",
"id": "cwal_xxxxxxxxxxxxxx",
"network": "ethereum"
}
}
],
"page_info": {
"end_cursor": "WyJjdXJzb3IiLDFd",
"has_next_page": false,
"has_previous_page": false,
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}{
"error": {
"message": "account_id is required",
"type": "bad_request",
"code": "<string>"
}
}Authorizations
An Account API key, account-scoped JWT, App API key, or user OAuth token. Prepend the key or token with Bearer, for example Bearer ***************************.
Headers
Pins the request to a dated API version.
"2026-08-21"
Query Parameters
The number of accounts to return (default 10, max 50).
A cursor; returns accounts after this position.
The number of accounts to return from the end of the range.
A cursor; returns accounts before this position.
The field to sort accounts by. volume requires stats:read on the parent account.
created_at, volume Sort direction.
asc, desc Return only accounts with this status: active (includes accounts that have not entered payments review) or suspended.
active, suspended Free-text filter on account title or ID. % and _ match literally.
Return only accounts created after this ISO 8601 timestamp.
Return only accounts created before this ISO 8601 timestamp.
Return only accounts whose lifetime USD volume is at least this value. Requires stats:read on the parent account.
Return only accounts whose lifetime USD volume is at most this value. Requires stats:read on the parent account.
For platforms: the parent account ID whose direct connected accounts to return. Requires payout:account:read on the parent account.

