> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lomadee.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Commissions

> Commission resource client for commission management

Access through `sdk.commissions` on a [`Lomadee`](/docs/sdk/reference/client) instance. Import types from `@thelomadee/sdk/domains`.

```typescript theme={null}
import type {
  ListCommissionQuery,
  CreateCommissionBody,
  UpdateCommissionBody,
  CommissionData,
  CommissionListResponse,
  CommissionRecurringOptions,
} from '@thelomadee/sdk/domains';
import type { SdkResponse } from '@thelomadee/sdk';
```

<Note>
  Access to the `commissions` client depends on what your integration is provisioned for during onboarding. Confirm commission API availability with your Lomadee contact before building against these methods.
</Note>

`list` returns `CommissionListResponse`. `get`, `create`, and `update` return `SdkResponse<CommissionData>`.

## `list`

```typescript theme={null}
list(query: ListCommissionQuery): Promise<CommissionListResponse>
```

### Parameters — `ListCommissionQuery`

<ParamField query="page" type="number">
  Optional page index.
</ParamField>

<ParamField query="limit" type="number">
  Optional page size.
</ParamField>

### Returns

`Promise<CommissionListResponse>` — `{ data: CommissionData[]; count: number }`.

### Example

```typescript theme={null}
const { data, count } = await sdk.commissions.list({ page: 1, limit: 20 });
```

***

## `get`

```typescript theme={null}
get(id: string): Promise<SdkResponse<CommissionData>>
```

<ParamField path="id" type="string" required>
  Commission identifier.
</ParamField>

### Returns

`Promise<SdkResponse<CommissionData>>` — `{ data: CommissionData }`.

***

## `create`

```typescript theme={null}
create(body: CreateCommissionBody): Promise<SdkResponse<CommissionData>>
```

### Parameters — `CreateCommissionBody`

<ParamField body="name" type="string" required>
  Commission name.
</ParamField>

<ParamField body="type" type="'fixed' | 'percentage'" required>
  Commission calculation type.
</ParamField>

<ParamField body="active" type="boolean">
  Optional active flag.
</ParamField>

<ParamField body="value" type="number" required>
  Commission value (`number` in SDK types; interpretation depends on `type`).
</ParamField>

<ParamField body="isDefault" type="boolean">
  Optional default flag.
</ParamField>

<ParamField body="startAt" type="string">
  Optional start timestamp (string format not specified in SDK types).
</ParamField>

<ParamField body="endAt" type="string">
  Optional end timestamp (string format not specified in SDK types).
</ParamField>

<ParamField body="transfer" type="string">
  Optional transfer field.
</ParamField>

<ParamField body="recurringOptions" type="CommissionRecurringOptions">
  Optional recurring configuration. See [CommissionRecurringOptions](#commissionrecurringoptions).
</ParamField>

### Returns

`Promise<SdkResponse<CommissionData>>`.

### Example

```typescript theme={null}
const { data } = await sdk.commissions.create({
  name: 'Default commission',
  type: 'percentage',
  value: 10,
  recurringOptions: { months: 12, limitless: false },
});
```

***

## `update`

```typescript theme={null}
update(id: string, body: UpdateCommissionBody): Promise<SdkResponse<CommissionData>>
```

<ParamField path="id" type="string" required>
  Commission identifier.
</ParamField>

`UpdateCommissionBody` has the same fields as [`CreateCommissionBody`](#create), including optional `recurringOptions`.

### Returns

`Promise<SdkResponse<CommissionData>>`.

***

## `delete`

```typescript theme={null}
delete(id: string): Promise<void>
```

<ParamField path="id" type="string" required>
  Commission identifier.
</ParamField>

### Returns

`Promise<void>`.

***

## `CommissionRecurringOptions`

<ParamField body="months" type="number">
  Optional number of months.
</ParamField>

<ParamField body="firstPaymentEnabled" type="boolean">
  Optional first-payment flag.
</ParamField>

<ParamField body="firstPaymentCommissionType" type="'fixed' | 'percentage'">
  Optional first-payment commission type.
</ParamField>

<ParamField body="firstPaymentCommissionValue" type="number">
  Optional first-payment commission value.
</ParamField>

<ParamField body="limitless" type="boolean">
  Optional limitless flag.
</ParamField>

## `CommissionListResponse`

<ParamField body="data" type="CommissionData[]" required>
  Page of commission records.
</ParamField>

<ParamField body="count" type="number" required>
  Total count for the query.
</ParamField>

## `CommissionData`

Fields on list items and inside `SdkResponse.data` for get/create/update:

<ParamField body="id" type="string" required>
  Commission identifier.
</ParamField>

<ParamField body="name" type="string" required>
  Commission name.
</ParamField>

<ParamField body="type" type="string" required>
  Commission type (response uses `string`; request accepts `'fixed' | 'percentage'`).
</ParamField>

<ParamField body="active" type="boolean" required>
  Active flag.
</ParamField>

<ParamField body="isDefault" type="boolean" required>
  Default flag.
</ParamField>

<ParamField body="value" type="number" required>
  Commission value.
</ParamField>

<ParamField body="startAt" type="string | null">
  Optional start timestamp; may be `null`.
</ParamField>

<ParamField body="endAt" type="string | null">
  Optional end timestamp; may be `null`.
</ParamField>

<ParamField body="transfer" type="string" required>
  Transfer field.
</ParamField>

<ParamField body="categoryIds" type="string[]" required>
  Category identifiers.
</ParamField>

<ParamField body="channelIds" type="string[]" required>
  Channel identifiers.
</ParamField>

<ParamField body="productIds" type="string[]" required>
  Product identifiers.
</ParamField>

<ParamField body="recurringOptions" type="CommissionRecurringOptions">
  Optional recurring configuration.
</ParamField>

<ParamField body="createdAt" type="string" required>
  Creation timestamp.
</ParamField>

<ParamField body="updatedAt" type="string">
  Optional update timestamp.
</ParamField>

## Related

* [Client](/docs/sdk/reference/client)
* [Error handling](/docs/sdk/guides/error-handling)
