# `PolarExpress.Services.CustomerPortal.CustomersService`
[🔗](https://github.com/jeffhuen/polar_express/blob/main/lib/polar_express/services/customer_portal/customers_service.ex#L2)

Customers

Customers API operations.

# `add_customer_payment_method`

```elixir
@spec add_customer_payment_method(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.CustomerPaymentMethodCreateResponse.t()}
  | {:error, PolarExpress.Error.t()}
```

Add Customer Payment Method

Add a payment method to the authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersAddCustomerPaymentMethodParams` for parameter details.

# `check_email_change_token`

```elixir
@spec check_email_change_token(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, term()} | {:error, PolarExpress.Error.t()}
```

Check Email Change Token

Check if an email change verification token is still valid.

See `PolarExpress.Params.CustomerPortal.CustomersCheckEmailChangeTokenParams` for parameter details.

# `confirm_customer_payment_method`

```elixir
@spec confirm_customer_payment_method(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.CustomerPaymentMethodCreateResponse.t()}
  | {:error, PolarExpress.Error.t()}
```

Confirm Customer Payment Method

Confirm a payment method for the authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersConfirmCustomerPaymentMethodParams` for parameter details.

# `delete_customer_payment_method`

```elixir
@spec delete_customer_payment_method(
  PolarExpress.Client.t(),
  String.t(),
  map(),
  keyword()
) ::
  {:ok, term()} | {:error, PolarExpress.Error.t()}
```

Delete Customer Payment Method

Delete a payment method from the authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersDeleteCustomerPaymentMethodParams` for parameter details.

# `get_customer`

```elixir
@spec get_customer(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.CustomerPortalCustomer.t()}
  | {:error, PolarExpress.Error.t()}
```

Get Customer

Get authenticated customer.

**Scopes**: `customer_portal:read` `customer_portal:write`

See `PolarExpress.Params.CustomerPortal.CustomersGetCustomerParams` for parameter details.

# `list_customer_payment_methods`

```elixir
@spec list_customer_payment_methods(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.ListObject.t()} | {:error, PolarExpress.Error.t()}
```

List Customer Payment Methods

Get saved payment methods of the authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersListCustomerPaymentMethodsParams` for parameter details.

# `request_email_change`

```elixir
@spec request_email_change(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, term()} | {:error, PolarExpress.Error.t()}
```

Request Email Change

Request an email change for the authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersRequestEmailChangeParams` for parameter details.

# `update_customer`

```elixir
@spec update_customer(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.CustomerPortalCustomer.t()}
  | {:error, PolarExpress.Error.t()}
```

Update Customer

Update authenticated customer.

See `PolarExpress.Params.CustomerPortal.CustomersUpdateCustomerParams` for parameter details.

# `verify_email_change`

```elixir
@spec verify_email_change(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.CustomerEmailUpdateVerifyResponse.t()}
  | {:error, PolarExpress.Error.t()}
```

Verify Email Change

Verify an email change using the token from the verification email.

See `PolarExpress.Params.CustomerPortal.CustomersVerifyEmailChangeParams` for parameter details.

---

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