Accounts

Update Account Preferences

Changed on

Updates the account's preferences. Each top-level key present in the body is replaced as a whole; omitted keys are left untouched.

Required scopes depend on the preferences being updated:

PreferencesRequired scope
ads_payment_methods, ads_reporting_currency, ads_scheduling_timezone, ads_triple_whale_integration, ads_certificationsad_campaign:create
cards_auto_top_up, cards_notificationspayout:account:update
dispute_fighter_enabledpayment:dispute
economic_intelligence_duration_key, economic_intelligence_auto_renewcompany:update
feedback_optionscompany:manage_checkout

When updating preferences from multiple rows, all corresponding scopes are required for the account.

patch/accounts/{account_id}/preferences

Request

  • Base URL: https://api.whop.com/api/v1
  • URL: https://api.whop.com/api/v1/accounts/{account_id}/preferences
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer

Headers

Api-Version-Datestring
Example:2026-10-15

Pins the request to a dated API version.

Request body

ads_certificationsobject

Opens an advertising certification application. Keyed by certification type (prescription_drug_ads); set the entry's status to pending_information to start, then answer the requested fields via PATCH /verifications/{id}. Only one application per type can be open at a time; every other status is set by Whop's review. Requires the ad_campaign:create scope on your API key.

ads_reporting_currencystring

Lowercase ISO currency code, such as usd or eur, used to display ad spend and stats. Defaults to usd. Requires the ad_campaign:create scope on your API key.

ads_scheduling_timezonestring

IANA timezone (e.g. America/New_York) used to interpret campaign start/end times and to bucket reports. Cannot be cleared once set — pass a new value to change it. Requires the ad_campaign:create scope on your API key.

cards_auto_top_upboolean

Whether incoming funds are automatically moved to the account's cards balance. Requires a cards balance on the account and the payout:account:update scope on your API key.

cards_notificationsboolean

Whether Whop Card notifications reach this account's team. Set it to false to stop every card email and push notification for the account — application status, verification and action-required alerts, card-ready alerts, declines, large charges, and cashback summaries. Cardholder onboarding invitations still send, because they carry the only link an invited cardholder can onboard with. Requesting a card is rejected while notifications are off, since the request reaches nobody. Cards on personal accounts are unaffected. Requires a cards balance on the account and the payout:account:update scope on your API key.

dispute_fighter_enabledboolean

Whether Whop assembles and files the evidence response when this account's payments are disputed. Off by default; enabling it also opts the account into the success fee charged only on disputes it wins. Requires the payment:dispute scope on your API key.

economic_intelligence_auto_renewboolean

false stops renewing: Economic Intelligence stays on until the end of the current week, and stopping before the first renewal charges the rest of that week at the 7_days offer's fee. true keeps it renewing again before then, or turns it on like the weekly offer. Can't be combined with economic_intelligence_duration_key. Requires the company:update scope on your API key.

economic_intelligence_duration_key'weekly' | '7_days' | '1_day' | '1_hour'

Turns on Economic Intelligence with the offer that has this key in economic_intelligence_offers, at that offer's fee. A committed duration can't be changed or turned off until economic_intelligence_ends_at, except to upgrade to weekly, which switches to auto-renew right away. Requires the company:update scope on your API key.

preferred_settlement_currency'usd' | 'eur' | 'gbp' | 'cad' | 'aud' | 'null' nullable

Settle every new sale into this currency, regardless of the plan's currency or what the buyer paid in; sales converted this way carry an additional 0.5% FX fee. Pass null to go back to settling each sale in its plan's currency. Changing it never converts money already in your balances, and it can change at most once every 7 days (see preferred_settlement_currency_changeable_at). Requires the payout:account:update scope on your API key.

subscription_failure_behavior'cancel' | 'none'

What happens to a subscription once every retry of a renewal payment has failed. cancel (the default) cancels it. none leaves it past due and keeps billing it each period; access follows the account's past-due access setting. Requires company:manage_checkout permission.

Example request

{
  "ads_certifications": {
    "prescription_drug_ads": {
      "status": "pending_information"
    }
  },
  "ads_payment_methods": {
    "backup": {
      "id": "payt_xxxxxxxxxxxxxx",
      "type": "card"
    },
    "primary": {
      "id": "payt_xxxxxxxxxxxxxx",
      "type": "platform_balance"
    }
  },
  "ads_reporting_currency": "eur",
  "ads_scheduling_timezone": "PST8PDT",
  "ads_triple_whale_integration": {
    "api_key": "tw_live_key_1234",
    "shop_domain": "custom-store.example.com"
  },
  "cards_auto_top_up": true,
  "cards_notifications": true,
  "dispute_fighter_enabled": true,
  "economic_intelligence_duration_key": "weekly",
  "feedback_options": [
    {
      "category": "unused",
      "id": "fo_xxxxxxxxxxxxxx",
      "label": "I don't get my car detailed often enough"
    }
  ],
  "preferred_settlement_currency": "eur",
  "subscription_failure_behavior": "none"
}

Response

preferences updated

ads_reporting_currencystring required

Lowercase ISO currency code, such as usd or eur, used to display ad spend and stats. Defaults to usd.

ads_scheduling_timezonestring required

IANA timezone (e.g. America/New_York) used to interpret campaign start/end times and to bucket reports. Defaults to America/New_York until explicitly overridden.

cards_auto_top_upboolean required

Whether incoming funds are automatically moved to the account's cards balance. false when the account has no cards balance.

cards_notificationsboolean required

Whether Whop Card notifications reach this account's team. true by default, including when the account has no cards balance. Set it to false to stop every card email and push notification for the account — application status, verification and action-required alerts, card-ready alerts, declines, large charges, and cashback summaries. Cardholder onboarding invitations still send, because they carry the only link an invited cardholder can onboard with. Requesting a card is rejected while notifications are off, since the request reaches nobody. Cards on personal accounts are unaffected.

dispute_fighter_enabledboolean required

Whether Whop assembles and files the evidence response when this account's payments are disputed. Off by default; enabling it also opts the account into the success fee charged only on disputes it wins.

economic_intelligenceboolean required

Whether Economic Intelligence is on for the account. It turns off automatically at economic_intelligence_ends_at.

economic_intelligence_auto_renewboolean required

Whether Economic Intelligence renews itself every week, with no end date. Turn it on with the weekly offer. Set it to false to stop renewing, which keeps Economic Intelligence on until the end of the current week, shown in economic_intelligence_ends_at; stopping before the first renewal charges the rest of that week at the 7_days offer's fee. Set it back to true before then to keep renewing at the weekly fee.

economic_intelligence_ends_atstring nullable required

When the account's committed Economic Intelligence period ends, as an ISO 8601 timestamp. Economic Intelligence can't be turned off before then. null when Economic Intelligence is off or renews automatically.

economic_intelligence_fee_percentagenumber nullable required

Percentage of volume charged while Economic Intelligence is on, such as 1.5 for 1.5%. null when Economic Intelligence is off.

economic_intelligence_first_renewal_atstring nullable required

When auto-renew first renews, as an ISO 8601 timestamp. Turning auto-renew off before then charges the rest of that week at the 7_days offer's fee. null when auto-renew is off.

preferred_settlement_currency'usd' | 'eur' | 'gbp' | 'cad' | 'aud' | 'null' nullable required

Lowercase ISO currency code every new sale settles into, regardless of the plan's currency or what the buyer paid in. Sales converted this way carry an additional 0.5% FX fee. null when the account settles each sale in its plan's currency.

preferred_settlement_currency_changeable_atstring nullable required

When preferred_settlement_currency may next be changed or turned off, as an ISO 8601 timestamp. It can change at most once every 7 days. null when it may change now.

subscription_failure_behavior'cancel' | 'none' required

What happens to a subscription once every retry of a renewal payment has failed. cancel (the default) cancels it. none leaves it past due and keeps billing it each period; access follows the account's past-due access setting.

Example response

{
  "ads_agreement": {
    "accepted_at": "2026-01-01T12:00:00.000Z",
    "agreement_version": "2026-01-01",
    "printed_name": "Marcus Webb",
    "status": "not_required"
  },
  "ads_certifications": [
    {
      "business_type": "online_pharmacy",
      "certification_type": "prescription_drug_ads",
      "request_id": "inrq_xxxxxxxxxxxxxx",
      "status": "not_started"
    }
  ],
  "ads_payment_methods": {
    "backup": {
      "card_brand": "visa",
      "exp_month": 10,
      "exp_year": 2031,
      "icon_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "id": "ldgr_xxxxxxxxxxxxxx",
      "last4": "4242",
      "title": "Shine Time Auto Detailing",
      "type": "platform_balance"
    },
    "primary": {
      "card_brand": "visa",
      "exp_month": 10,
      "exp_year": 2031,
      "icon_url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "id": "ldgr_xxxxxxxxxxxxxx",
      "last4": "4242",
      "title": "Shine Time Auto Detailing",
      "type": "platform_balance"
    }
  },
  "ads_reporting_currency": "usd",
  "ads_scheduling_timezone": "America/New_York",
  "ads_triple_whale_integration": {
    "masked_api_key": "tw_live_********",
    "shop_domain": "shinetime.myshopify.com",
    "status": "requires_shop_domain"
  },
  "cards_notifications": true,
  "economic_intelligence_ends_at": "2026-01-01T12:00:00.000Z",
  "economic_intelligence_fee_percentage": 1.5,
  "economic_intelligence_offers": [
    {
      "auto_renew": true,
      "duration": 7,
      "duration_unit": "days",
      "fee_percentage": 1,
      "key": "weekly",
      "recommended": true
    }
  ],
  "feedback_options": [
    {
      "category": "bad_experience",
      "id": "fo_xxxxxxxxxxxxxx",
      "label": "The detail missed spots"
    }
  ],
  "preferred_settlement_currency": "eur",
  "preferred_settlement_currency_changeable_at": "2026-01-01T12:00:00.000Z",
  "subscription_failure_behavior": "cancel"
}

Changes

    • info

      the security scope ad_campaign:create was added to the endpoint's security scheme bearerAuth

    • info

      the security scope company:update was removed from the endpoint's security scheme bearerAuth

    • info

      the security scope ad_campaign:create was added to the endpoint's security scheme bearerAuth

    • info

      the security scope company:update was removed from the endpoint's security scheme bearerAuth