> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dintero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# In-person payments overview

> Accept card payments on physical Dintero terminals using the Checkout API. Reuse your session flow with a Seitatech configuration to drive the terminal.

In-person payments let you charge a customer on a physical payment terminal using the same Checkout API you already use for online payments. You create a session, point it at a specific terminal, and the terminal prompts the customer to tap, insert, or swipe their card.

The integration reuses your existing Checkout client, session profile, and transaction management. The only difference is that the order references a store and terminal, and the payment is completed on the terminal instead of in a hosted page.

> [!NOTE]
>
> In-person payments are powered by Seitatech and use the `seitatech.in_person` payment type. Backoffice shows this payment method as **Card (Present)**. The two names refer to the same payment method. The terminals are physical card readers provisioned by Dintero.

## How it works

**1. Create a session**

Send a `POST` to `/v1/sessions-profile` with your usual order details, plus `order.store.id`, `order.store.terminal_id`, and `order.store.payout_destination_id`. Enable **Card (Present)** on your [payment profile](/docs/checkout/payment-profiles.md) and reference it with `profile_id`.

**2. Terminal prompts the customer**

Add a `publish` push/terminal configuration to the session request to initiate the payment on the terminal. Set `configuration.channel` to `in_store` so the transaction is recorded as an in-store payment.

**3. Customer pays on the terminal**

The customer completes the payment on the terminal. In-person payments are processed as a sale: the transaction is authorized and captured in one step.

**4. Receive the result**

Use your `callback_url` and webhooks to be notified when the transaction is authorized and captured. Manage refunds and voids through the standard Transactions API.

## Prerequisites

Before you can take a payment on a terminal, you need:

* An active Dintero account with In-Person Payments enabled.
* A **payout destination** for the merchant of record. KYC must be completed.
* A **store** linked to the payout destination.
* A **terminal** registered to the store.
* A **Checkout API client** with the `checkout` scope.
* A **payment profile** that has Card (Present) enabled. See [payment profiles](/docs/checkout/payment-profiles.md).

See [terminal onboarding](/docs/checkout/in-person/terminal-onboarding.md) for how to set up the payout destination, store, and terminal.

> [!NOTE]
>
> If you are a Dintero partner onboarding a new merchant, you can request in-person payments during the merchant invite flow. See [Requesting in-person payments for a new merchant](/docs/partners/inviting-merchants.md#requesting-in-person-payments-for-a-new-merchant).

## Identifiers you'll use

| Identifier | Where it comes from | Where it goes in the request |
| - | - | - |
| `payout_destination_id` | Created in Backoffice during onboarding | `order.store.payout_destination_id` |
| `store.id` | Created in Backoffice or via the management API | `order.store.id` |
| `terminal_id` | Assigned when the terminal is registered | `order.store.terminal_id` |

The combination of these three values determines which physical terminal the payment is routed to.

## What's next

> **[Onboard a terminal](/docs/checkout/in-person/terminal-onboarding.md)**
>
> Create a payout destination, register a store, and link a terminal.

> **[Create a terminal session](/docs/checkout/in-person/creating-terminal-session.md)**
>
> Build the session payload, trigger the terminal, and handle refunds.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.