> ## 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.

# Transactions

> Transaction resource client for order operations

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

```typescript theme={null}
import type {
  GetOrdersQuery,
  CreateOrderBody,
  UpdateOrderBody,
  OrderCustomer,
  OrderItem,
  OrderSubItem,
  OrderSubItemKey,
  OrderStatus,
  OrderQueryStatus,
} from '@thelomadee/sdk/domains';
```

<Warning>
  In the current SDK contract, `list`, `get`, `create`, and `update` return `Promise<unknown>`. The package does not export a response type for these methods. Validate or narrow the resolved value in your application before use.
</Warning>

## `list`

```typescript theme={null}
list(query: GetOrdersQuery): Promise<unknown>
```

### Parameters — `GetOrdersQuery`

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

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

<ParamField query="search" type="string">
  Optional search string.
</ParamField>

<ParamField query="status" type="OrderQueryStatus">
  Optional single status filter. Union: `OrderStatus | 'Canceled'`.
</ParamField>

<ParamField query="statuses" type="OrderQueryStatus[]">
  Optional multi-status filter. Accepts `Canceled` in addition to write statuses.
</ParamField>

### Returns

`Promise<unknown>` — response shape is not declared in the current SDK contract.

### Example

```typescript theme={null}
const result = await sdk.transactions.list({ page: 1, limit: 20, status: 'Pending' });
```

***

## `get`

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

<ParamField path="id" type="string" required>
  Transaction (order) identifier.
</ParamField>

### Returns

`Promise<unknown>` — response shape is not declared in the current SDK contract.

### Example

```typescript theme={null}
const result = await sdk.transactions.get('order-id');
```

***

## `create`

```typescript theme={null}
create(body: CreateOrderBody): Promise<unknown>
```

### Parameters — `CreateOrderBody`

<ParamField body="orderId" type="string" required>
  External order identifier.
</ParamField>

<ParamField body="customer" type="OrderCustomer">
  Optional customer payload. See [OrderCustomer](#ordercustomer).
</ParamField>

<ParamField body="items" type="OrderItem[]" required>
  Line items. See [OrderItem](#orderitem).
</ParamField>

<ParamField body="status" type="OrderStatus">
  Optional order status for writes. Union: `'Approved' | 'Reproved' | 'Pending'`.
</ParamField>

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

<ParamField body="subItems" type="OrderSubItem[]" required>
  Sub-item breakdown. See [OrderSubItem](#ordersubitem).
</ParamField>

<ParamField body="affiliateId" type="string" required>
  Affiliate identifier.
</ParamField>

<ParamField body="channelId" type="string">
  Optional channel identifier.
</ParamField>

<ParamField body="group" type="string">
  Optional grouping label.
</ParamField>

### Returns

`Promise<unknown>` — response shape is not declared in the current SDK contract.

### Example

```typescript theme={null}
import type { CreateOrderBody } from '@thelomadee/sdk/domains';

const body: CreateOrderBody = {
  orderId: 'ext-123',
  affiliateId: 'affiliate-id',
  items: [
    {
      id: 'sku-1',
      name: 'Product',
      imageUrl: 'https://example.com/img.png',
      price: 100,
      listPrice: 120,
      quantity: 1,
      parentId: 'parent-1',
    },
  ],
  value: 100,
  subItems: [{ key: 'Shipping', value: 10 }],
};

const result = await sdk.transactions.create(body);
```

***

## `update`

```typescript theme={null}
update(id: string, body: UpdateOrderBody): Promise<unknown>
```

<ParamField path="id" type="string" required>
  Transaction (order) identifier.
</ParamField>

### Parameters — `UpdateOrderBody`

<ParamField body="id" type="string">
  Optional identifier field in body.
</ParamField>

<ParamField body="customer" type="OrderCustomer">
  Optional customer payload. See [OrderCustomer](#ordercustomer).
</ParamField>

<ParamField body="items" type="OrderItem[]" required>
  Line items. See [OrderItem](#orderitem).
</ParamField>

<ParamField body="status" type="OrderStatus">
  Optional order status for writes. Union: `'Approved' | 'Reproved' | 'Pending'`.
</ParamField>

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

<ParamField body="subItems" type="OrderSubItem[]" required>
  Sub-item breakdown. See [OrderSubItem](#ordersubitem).
</ParamField>

<ParamField body="channelId" type="string">
  Optional channel identifier.
</ParamField>

<ParamField body="group" type="string">
  Optional grouping label.
</ParamField>

### Returns

`Promise<unknown>` — response shape is not declared in the current SDK contract.

***

## `delete`

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

<ParamField path="id" type="string" required>
  Transaction (order) identifier.
</ParamField>

### Returns

`Promise<void>` — resolves with no value on success.

***

## Types

### `OrderCustomer`

<Warning>
  May contain personally identifiable information (PII). Handle according to your privacy and retention policies.
</Warning>

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

<ParamField body="email" type="string">
  Optional email address.
</ParamField>

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

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

<ParamField body="documentType" type="string">
  Optional document type label (unrestricted string in SDK types).
</ParamField>

<ParamField body="document" type="string">
  Optional document number.
</ParamField>

<ParamField body="phone" type="string">
  Optional phone number.
</ParamField>

### `OrderItem`

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

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

<ParamField body="imageUrl" type="string" required>
  Image URL.
</ParamField>

<ParamField body="price" type="number" required>
  Unit or line price (`number` in SDK types; unit semantics are not specified).
</ParamField>

<ParamField body="listPrice" type="number" required>
  List price (`number` in SDK types).
</ParamField>

<ParamField body="quantity" type="number" required>
  Quantity.
</ParamField>

<ParamField body="parentId" type="string" required>
  Parent item identifier.
</ParamField>

### `OrderSubItem`

<ParamField body="key" type="OrderSubItemKey" required>
  Sub-item key. See [OrderSubItemKey](#ordersubitemkey).
</ParamField>

<ParamField body="value" type="number" required>
  Sub-item numeric value. Backend validation: `Items` and `Shipping` require `value >= 0`; `Discounts` requires `value <= 0`.
</ParamField>

### `OrderSubItemKey`

| Value         | Backend value constraint |
| ------------- | ------------------------ |
| `'Items'`     | `value >= 0`             |
| `'Shipping'`  | `value >= 0`             |
| `'Discounts'` | `value <= 0`             |

### `OrderStatus`

Used in `CreateOrderBody.status` and `UpdateOrderBody.status`:

`'Approved' | 'Reproved' | 'Pending'`

### `OrderQueryStatus`

Used in `GetOrdersQuery.status` and `GetOrdersQuery.statuses`:

`OrderStatus | 'Canceled'`

## Related

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