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

TerminalReaderReader

A Reader represents a physical device for accepting payment details.

Related guide: [Connecting to a reader](https://docs.stripe.com/terminal/payments/connect-reader)

# `cancel_action`

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

Cancel the current reader action

Cancels the current reader action. See [Programmatic Cancellation](https://docs.stripe.com/docs/terminal/payments/collect-card-payment?terminal-sdk-platform=server-driven#programmatic-cancellation) for more details.

# `collect_inputs`

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

Collect inputs using a Reader

Initiates an [input collection flow](https://docs.stripe.com/docs/terminal/features/collect-inputs) on a Reader to display input forms and collect information from your customers.

# `collect_payment_method`

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

Hand off a PaymentIntent to a Reader and collect card details

Initiates a payment flow on a Reader and updates the PaymentIntent with card details before manual confirmation. See [Collecting a Payment method](https://docs.stripe.com/docs/terminal/payments/collect-card-payment?terminal-sdk-platform=server-driven&process=inspect#collect-a-paymentmethod) for more details.

# `confirm_payment_intent`

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

Confirm a PaymentIntent on the Reader

Finalizes a payment on a Reader. See [Confirming a Payment](https://docs.stripe.com/docs/terminal/payments/collect-card-payment?terminal-sdk-platform=server-driven&process=inspect#confirm-the-paymentintent) for more details.

# `create`

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

Create a Reader

Creates a new `Reader` object.

# `delete`

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

Delete a Reader

Deletes a `Reader` object.

# `list`

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

List all Readers

Returns a list of `Reader` objects.

# `process_payment_intent`

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

Hand-off a PaymentIntent to a Reader

Initiates a payment flow on a Reader. See [process the payment](https://docs.stripe.com/docs/terminal/payments/collect-card-payment?terminal-sdk-platform=server-driven&process=immediately#process-payment) for more details.

# `process_setup_intent`

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

Hand-off a SetupIntent to a Reader

Initiates a SetupIntent flow on a Reader. See [Save directly without charging](https://docs.stripe.com/docs/terminal/features/saving-payment-details/save-directly) for more details.

# `refund_payment`

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

Refund a Charge or a PaymentIntent in-person

Initiates an in-person refund on a Reader. See [Refund an Interac Payment](https://docs.stripe.com/docs/terminal/payments/regional?integration-country=CA#refund-an-interac-payment) for more details.

# `retrieve`

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

Retrieve a Reader

Retrieves a `Reader` object.

# `set_reader_display`

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

Set reader display

Sets the reader display to show [cart details](https://docs.stripe.com/docs/terminal/features/display).

# `update`

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

Update a Reader

Updates a `Reader` object by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

---

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