---
title: "GET /user/services"
method: GET
path: "/user/services"
---

# GET /user/services

`GET /user/services`

## Request

- Base URL: `https://developers.whmcs.com/api/v2`
- URL: `https://developers.whmcs.com/api/v2/user/services`
- Auth: none declared

Retrieve all services for the authenticated client.

## Query parameters

- `page` integer
- `page_size` integer

## Response `200`

A list of all services

- object
  - `data` Service[], required
    - `id` integer, required
    - `product` Product
      - `id` integer, required
      - `name` string, nullable
      - `description` string, nullable
      - `tagline` string, nullable
      - `allow_multiple_quantities` ProductMultipleQuantities
        - `is_supported` boolean: Indicates whether the product supports multiple quantities.
        - `type` object
          - `code` integer: The internal code representing the multiple quantities setting.
          - `display` string: The human-readable display value for the multiple quantities setting.
      - `is_domain_required` boolean: Whether a domain is required to order this product
      - `stock_control_enabled` boolean: Whether stock control is enabled for this product
      - `stock_quantity` integer, nullable: The current stock quantity if stock control is enabled
      - `order` integer: The display order of the product as configured in the application.
      - `group` Group
        - `id` integer, required
        - `name` string, nullable
        - `description` string, nullable
        - `icon` string, nullable
        - `headline` string, nullable
        - `tagline` string, nullable
        - `order` integer: The display order of the group as configured in the application.
        - `features` Feature[]
          - `id` integer, required
          - `name` string, nullable, required
          - `description` string, nullable
          - `order` integer, required
    - `server` Server
      - `id` integer, required
      - `name` string, nullable
      - `description` string, nullable
      - `groups` ServerGroup[]
        - `id` integer, required
        - `name` string, nullable
        - `description` string, nullable
    - `domain` string, nullable
    - `status` string, nullable
    - `quantity` integer, required
    - `registration_date` string, date
    - `billing` ServiceBillingExtended, nullable
      - `promotions` Promotion[], required
        - `code` string, nullable, required
        - `type` string, nullable
        - `value` number, float, nullable: Monetary amount or discount percentage
        - `is_recurring` boolean, nullable
        - `number_of_recurring` integer, nullable: maximum number of times the promotion code will be applied if set
      - `cycle` 'free' | 'onetime' | 'monthly' | 'quarterly' | 'semiannually' | 'annually' | 'biennially' | 'triennially', nullable: Billing cycle's frequency.
      - `price` ServicePrice
        - `first_payment` ServiceFirstPaymentPrice
          - `amount` Amount, required
            - `value` string, required
            - `code` string, required
            - `display_value` string, required
            - `prefix` string, required: Optional currency prefix
            - `suffix` string, required: Optional currency prefix
        - `recurring` ServiceRecurringPrice
          - `amount` Amount, required
            - `value` string, required
            - `code` string, required
            - `display_value` string, required
            - `prefix` string, required: Optional currency prefix
            - `suffix` string, required: Optional currency prefix
      - `payment_gateway` PaymentGateway
        - `name` string, required: Name of the payment gateway module.
        - `description` string: The friendly name of the payment gateway module.
        - `supports_headless_payment_session` boolean: Whether this gateway can return a `payment_session` value for a checkout that includes a `payment.mode` value of `headless`. - An integration that cannot follow a redirect should present only gateways where this value is true. - Sending `headless` to a gateway where it is false returns the hand-off redirect instead, or, when the `payment.mode` value is `headless`, a `422` error status.
      - `next_due_date` string, date, nullable
    - `addons` ServiceAddon[]
      - `id` integer, required
      - `addon` Addon
        - `id` integer, required
        - `name` string, nullable
        - `description` string, nullable
      - `service` object
        - `id` integer, required
      - `quantity` integer, nullable
      - `status` string
      - `registration_date` string, date
      - `billing` ServiceBilling, nullable, required
        - `cycle` 'free' | 'onetime' | 'monthly' | 'quarterly' | 'semiannually' | 'annually' | 'biennially' | 'triennially', nullable: Billing cycle's frequency.
        - `price` ServicePrice
          - `first_payment` ServiceFirstPaymentPrice
            - `amount` Amount, required
              - …
          - `recurring` ServiceRecurringPrice
            - `amount` Amount, required
              - …
        - `payment_gateway` PaymentGateway
          - `name` string, required: Name of the payment gateway module.
          - `description` string: The friendly name of the payment gateway module.
          - `supports_headless_payment_session` boolean: Whether this gateway can return a `payment_session` value for a checkout that includes a `payment.mode` value of `headless`. - An integration that cannot follow a redirect should present only gateways where this value is true. - Sending `headless` to a gateway where it is false returns the hand-off redirect instead, or, when the `payment.mode` value is `headless`, a `422` error status.
        - `next_due_date` string, date, nullable
      - `renewal` ServiceAddonRenewal
        - `id` integer, required
        - `type` 'addon', required
        - `is_renewable` boolean, required
        - `non_renewable_reason` string, nullable
        - `renewal_period` object
          - `start` string, date
          - `end` string, date
        - `price` Amount, required
          - `value` string, required
          - `code` string, required
          - `display_value` string, required
          - `prefix` string, required: Optional currency prefix
          - `suffix` string, required: Optional currency prefix
    - `custom_fields` ServiceCustomField[]
      - `id` integer, required
      - `custom_field` CustomField, required
        - `id` integer, required
        - `name` string, nullable
        - `description` string, nullable
        - `type` 'text' | 'link' | 'password' | 'dropdown' | 'checkbox' | 'textarea', required: Field type
        - `options` CustomFieldValueType[], nullable
          - union: Custom Field Value
            - string
            - boolean
        - `validation` string, nullable
        - `required` boolean, required
      - `service` object
        - `id` integer, required
      - `value` union: Custom Field Value
        - string
        - boolean
    - `config_options` ServiceConfigOption[]
      - `id` integer, required
      - `config_option` object, required
        - `id` integer, required
        - `name` string, required
        - `type` 'dropdown' | 'radio' | 'yesno' | 'quantity', required: Config option type
      - `service` object
        - `id` integer, required
      - `option` object, required
        - `name` string
        - `value` union: Configuration Option Value
          - boolean: for yesno type, the value should be true or false
          - integer: for quantity type, the value is the inputted numeric value while for radio and dropdown type, the value is the predefined option id
      - `billing` ServiceConfigOptionBilling, nullable
        - `price` ServicePrice
          - `first_payment` ServiceFirstPaymentPrice
            - `amount` Amount, required
              - …
          - `recurring` ServiceRecurringPrice
            - `amount` Amount, required
              - …
    - `renewal` ServiceRenewal
      - `id` integer, required
      - `type` 'service' | 'addon', required
      - `is_renewable` boolean, required
      - `non_renewable_reason` string, nullable
      - `renewal_period` object
        - `start` string, date
        - `end` string, date
      - `price` Amount, required
        - `value` string, required
        - `code` string, required
        - `display_value` string, required
        - `prefix` string, required: Optional currency prefix
        - `suffix` string, required: Optional currency prefix

## Other responses

- `401`: Access Not Authorized
- `default`: General Error

---

[API](https://skmtc.dev/whmcs/apis/whmcs-api.md) - [All operations](https://skmtc.dev/whmcs/apis/whmcs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whmcs/apis/whmcs-api/revisions/bd3848ddbc3f?raw)
