# `Polarex.Checkouts`
[🔗](https://github.com/giusdp/polarex/blob/main/lib/polarex/operations/checkouts.ex#L1)

Provides API endpoints related to checkouts

# `checkouts_client_confirm`

```elixir
@spec checkouts_client_confirm(
  client_secret :: String.t(),
  body :: Polarex.CheckoutConfirmStripe.t(),
  opts :: keyword()
) ::
  {:ok, Polarex.CheckoutPublicConfirmed.t()}
  | {:error,
     Polarex.AlreadyActiveSubscriptionError.t()
     | Polarex.ExpiredCheckoutError.t()
     | Polarex.HTTPValidationError.t()
     | Polarex.NotOpenCheckout.t()
     | Polarex.PaymentError.t()
     | Polarex.PaymentNotReady.t()
     | Polarex.ResourceNotFound.t()
     | Polarex.TrialAlreadyRedeemed.t()}
```

Confirm Checkout Session from Client

Confirm a checkout session by client secret.

Orders and subscriptions will be processed.

## Request Body

**Content Types**: `application/json`

# `checkouts_client_get`

```elixir
@spec checkouts_client_get(client_secret :: String.t(), opts :: keyword()) ::
  {:ok, Polarex.CheckoutPublic.t()}
  | {:error,
     Polarex.ExpiredCheckoutError.t()
     | Polarex.HTTPValidationError.t()
     | Polarex.ResourceNotFound.t()}
```

Get Checkout Session from Client

Get a checkout session by client secret.

# `checkouts_client_update`

```elixir
@spec checkouts_client_update(
  client_secret :: String.t(),
  body :: Polarex.CheckoutUpdatePublic.t(),
  opts :: keyword()
) ::
  {:ok, Polarex.CheckoutPublic.t()}
  | {:error,
     Polarex.AlreadyActiveSubscriptionError.t()
     | Polarex.ExpiredCheckoutError.t()
     | Polarex.HTTPValidationError.t()
     | Polarex.NotOpenCheckout.t()
     | Polarex.PaymentNotReady.t()
     | Polarex.ResourceNotFound.t()
     | Polarex.TrialAlreadyRedeemed.t()}
```

Update Checkout Session from Client

Update a checkout session by client secret.

## Request Body

**Content Types**: `application/json`

# `checkouts_create`

```elixir
@spec checkouts_create(body :: Polarex.CheckoutProductsCreate.t(), opts :: keyword()) ::
  {:ok, Polarex.Checkout.t()} | {:error, Polarex.HTTPValidationError.t()}
```

Create Checkout Session

Create a checkout session.

**Scopes**: `checkouts:write`

## Request Body

**Content Types**: `application/json`

# `checkouts_get`

```elixir
@spec checkouts_get(id :: String.t(), opts :: keyword()) ::
  {:ok, Polarex.Checkout.t()}
  | {:error, Polarex.HTTPValidationError.t() | Polarex.ResourceNotFound.t()}
```

Get Checkout Session

Get a checkout session by ID.

**Scopes**: `checkouts:read` `checkouts:write`

# `checkouts_list`

```elixir
@spec checkouts_list(opts :: keyword()) ::
  {:ok, Polarex.ListResourceCheckout.t()}
  | {:error, Polarex.HTTPValidationError.t()}
```

List Checkout Sessions

List checkout sessions.

**Scopes**: `checkouts:read` `checkouts:write`

## Options

  * `organization_id`: Filter by organization ID.
  * `product_id`: Filter by product ID.
  * `customer_id`: Filter by customer ID.
  * `external_customer_id`: Filter by customer external ID.
  * `status`: Filter by checkout session status.
  * `query`: Filter by customer email.
  * `page`: Page number, defaults to 1.
  * `limit`: Size of a page, defaults to 10. Maximum is 100.
  * `sorting`: Sorting criterion. Several criteria can be used simultaneously and will be applied in order. Add a minus sign `-` before the criteria name to sort by descending order.

# `checkouts_update`

```elixir
@spec checkouts_update(
  id :: String.t(),
  body :: Polarex.CheckoutUpdate.t(),
  opts :: keyword()
) ::
  {:ok, Polarex.Checkout.t()}
  | {:error,
     Polarex.AlreadyActiveSubscriptionError.t()
     | Polarex.HTTPValidationError.t()
     | Polarex.NotOpenCheckout.t()
     | Polarex.PaymentNotReady.t()
     | Polarex.ResourceNotFound.t()
     | Polarex.TrialAlreadyRedeemed.t()}
```

Update Checkout Session

Update a checkout session.

**Scopes**: `checkouts:write`

## Request Body

**Content Types**: `application/json`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
