# `Stripe.Services.CustomerPaymentSourceService`
[🔗](https://github.com/jeffhuen/tiger_stripe/blob/main/lib/stripe/services/customer_payment_source_service.ex#L2)

CustomerPaymentSource API operations.

# `create`

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

Create a card

When you create a new credit card, you must specify a customer or recipient on which to create it.

If the card’s owner has no default card, then the new card will become the default.
However, if the owner already has a default, then it will not change.
To change the default, you should [update the customer](https://docs.stripe.com/docs/api#update_customer) to have a new `default_source`.

# `delete`

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

Delete a customer source

Delete a specified source for a given customer.

# `list`

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

List sources for a specified customer.

# `retrieve`

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

Retrieve a specified source for a given customer.

# `update`

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

Update a specified source for a given customer.

# `verify`

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

Verify a bank account

Verify a specified bank account for a given customer.

---

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