> **Description:** Visual walkthrough of the in-person payment flow for PSPs using card passthrough with the ePayment API.

> **AI agent:** Read [https://developer.vippsmobilepay.com/docs/knowledge-base/ai-tools.md](https://developer.vippsmobilepay.com/docs/knowledge-base/ai-tools.md) first. It covers keeping API keys and secrets out of generated code.

> **Full site overview:** For every page in this documentation, read [https://developer.vippsmobilepay.com/llms.txt](https://developer.vippsmobilepay.com/llms.txt).

# How the ePayment PSP API works in person

How in-person payments work for PSPs using `CARD_PASSTHROUGH` with the ePayment API.

## Details

### 1. Add products to sell

Add the products that the customer wants to buy in the POS system.

Screenshot: POS system showing a list of items on the left and payment method options on
the right, including a highlighted "Pay with Vipps" or "Pay with MobilePay" button alongside card, cash, and
other options.

### 2. Enter the customer's phone number

When the customer is ready to pay, choose *Pay with Vipps/MobilePay* and enter the customer's phone number.

Screenshot: POS system showing order items on the left and a phone number input field with
a Next button on the right.

### 3. The PSP creates a payment request

The PSP creates a payment request by sending a
[`POST:/epayment/v1/payments`](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml) request with:

* `paymentMethod.type` set to `CARD_PASSTHROUGH`
* `userFlow` set to `PUSH_MESSAGE`, which sends a push notification directly to the customer
* `"customerInteraction": "CUSTOMER_PRESENT"` (required by regulation for in-person payments)
* [`cardPassthrough`](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/epayment-psp-api-guide.md#cardpassthrough) object with the PSP's server URL specified in
  the `cardCallbackUrl` field
* [Other required parameters](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/epayment-psp-api-guide.md#parameters)

For a full example, see [Create an in-person payment](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/epayment-psp-api-guide.md#create-an-in-person-payment).

### 4. Customer selects a card and confirms in the app

The customer gets a push notification, opens their Vipps  or MobilePay  app, selects
a stored card, and confirms the payment.

Screenshot: App payment screen showing the merchant name, order description, selected
payment card, and a Pay button.

### 5. Vipps MobilePay sends the card token to the PSP

When the customer confirms the payment and selects their card, Vipps MobilePay sends a card token to the PSP's
`cardCallbackUrl`. The PSP must respond within 20 seconds. See [Card callback](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/epayment-psp-api-guide.md#card-callback)
for the request format, HMAC authentication, and expected response.

### 6. The PSP processes the payment

The PSP processes the payment through its own acquiring infrastructure using the card token.

### 7. The merchant registers the payment

Register the payment in the POS system.

Screenshot: POS system showing order items on the left and a large green checkmark with
"Payment completed" on the right, indicating successful payment registration.

### 8. The PSP updates the payment status

The PSP captures, refunds, or cancels the payment via the ePayment API, keeping the Vipps MobilePay app status in
sync. The payment is transferred to the merchant's account through the PSP. This may take 2 or 3 days, depending
on the bank.

## More information

For technical details, see the [ePayment PSP API guide](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/epayment-psp-api-guide.md).
