# In-person payments

Take card payments in store on a phone or a Kustom terminal. How enrollments, devices and sessions fit, what your backend builds and how to get /ipp/v1 enabled.

Take card payments in your store on an iPhone, an Android phone or a Kustom terminal. Your
backend sends a cart to the device, the clerk collects the payment, and you get the same
order in Order Management that an online checkout creates.

  Step 1

Enroll a device

Pair a phone or terminal with your account through a one-time code.

[Enroll a device](/in-person/enroll-a-device/)

  Step 2

Take a payment

Send a cart to the device and handle the callbacks.

[Take a payment](/in-person/take-a-payment/)

  Before you go live

Test without hardware

Check the whole flow in Playground with a simulated device and card tap.

[Test it](/in-person/test-without-hardware/)

Devices managed by an MDM? [Enroll a managed fleet](/in-person/enroll-a-managed-fleet/)
instead. Writing the callback handler? [Session states and
callbacks](/in-person/sessions-and-callbacks/) is the reference.

## How it fits together

| Concept | What it is |
|---|---|
| **Enrollment** | A single-use code that pairs a device with your account |
| **Device** | An enrolled phone or terminal, addressed by its `device_id` |
| **Session** | One payment: a cart sent to a `device_id` |

It's its own API under `/ipp/v1`, separate from Checkout. There's no order to create first:
Kustom creates it when the session is finalized.

## Phones and terminals

Both run the Kustom POS app, enroll the same way and take the same sessions. They differ in
how the customer can pay:

| Device | The customer can |
|---|---|
| iPhone or Android phone | Tap |
| Kustom terminal: S700, S710 or V660p | Insert, swipe or tap |

The API doesn't say which kind a device is, so give each one a `name` when you
[update it](/api/in-person-payments/update-device/).

## Getting set up

**Ask your Kustom representative to enable in-person payments.** The `/ipp/v1` endpoints
don't answer until they have. After that, the API takes your usual API username and API password.

On a phone, install the Kustom POS app from the
[App Store](https://apps.apple.com/se/app/kustom/id6742444903) or
[Google Play](https://play.google.com/store/apps/details?id=co.kustom.kustom&hl=en). Your
Kustom representative can supply a Playground build of either.

## Settings Kustom configures for you

Your Kustom representative sets these, not the API:

- **Capture method**, per account:
  - **Automatic.** The payment is captured as soon as it's authorized.
  - **Manual.** It stays authorized until you
    [capture](/order-management/capture/) it, later or in part.
- **Fiscalization**, per location, in some countries only:
  - **Enabled.** Kustom's certified cash registers issue compliant fiscal receipts.
  - **Disabled.** No fiscal receipts.

## Related

- [Order management](/order-management/) — capturing, refunding and cancelling the order a finalized session creates
- [In-Person Payments API](/api/in-person-payments/) — every endpoint
