> **Description:** Guide to integrating Vipps MobilePay into Point of Sale systems, covering different integration methods and best practices for seamless in-store payments.

# Point of Sale integrations

Point of Sale (POS) integrations enable in-person payment experiences at physical locations like retail stores, restaurants, and service providers. Whether you're using a customer-facing screen, QR scanner, manual entry system, or unmanned point of sale, Vipps MobilePay provides flexible integration options to meet your needs.

**In-person payment scenarios:**

- **Customer-facing screen** - Display a dynamic QR code for customers to scan
- **QR scanner** - Scan the customer's personal QR code from their app
- **Manual entry** - Cashier enters the customer's phone number
- **Static QR** - Unmanned locations like vending machines or self-service kiosks

See [In-person payments](https://developer.vippsmobilepay.com/docs/recommended-flows/in-store/README.md) for detailed implementation flows for each scenario.

This guide covers specific integration considerations for POS systems, including QR code usage, multi-location refunds, distance selling requirements, and the go-live process.

## The process to go live in production

1. The partner establishes a customer relationship with Vipps MobilePay.
   See: [Apply for services](https://developer.vippsmobilepay.com/docs/knowledge-base/applying-for-services.md).
2. The partner integrates the POS system with Vipps MobilePay and completes the
   integration checklist for the APIs they are using.
   The partner now has a working POS integration.
   This process normally takes 1-4 days.
3. The partner's merchant establishes a customer relationship with Vipps MobilePay.
   See: [Apply for services](https://developer.vippsmobilepay.com/docs/knowledge-base/applying-for-services.md).
   This process normally takes 1-4 days.
4. If the merchant already has a customer relationship with Vipps MobilePay, a new sales
   unit must be created, with `skipLandingPage` activated.
   The
   [customer center](https://help.vippsmobilepay.com/)
   can help with this.
   See: [landing page](https://developer.vippsmobilepay.com/docs/knowledge-base/landing-page.md#skip-landing-page).
5. Set up API keys according to your integration model.
   See: [API keys for POS integrations](#api-keys-for-pos-integrations).
6. The partner configures the merchant's POS system for Vipps MobilePay.
7. The merchant can now accept Vipps MobilePay payments at the point of sale.

## Skipping the landing page

POS integrations can be whitelisted to skip the landing page, providing a faster checkout experience. When enabled, customers proceed directly to payment authorization without seeing an intermediate landing page.

See: [Skip the landing page](https://developer.vippsmobilepay.com/docs/knowledge-base/landing-page.md#skip-landing-page) for details on how to get whitelisted.

## API keys for POS integrations

POS integrations should typically use [Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md) rather than separate API keys for each merchant. Partner keys simplify key management when integrating multiple merchants and allow you to authenticate on behalf of your merchants using their Merchant Serial Number (MSN).

**Using Partner keys (recommended):**

Partner keys enable you to manage multiple merchants through a single set of credentials. You authenticate using your partner keys and specify which merchant you're acting on behalf of by including their MSN in your API requests.

See: [Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md) for setup and implementation details.

**Using individual merchant API keys:**

If you're not using Partner keys, each merchant must [retrieve their API keys](https://developer.vippsmobilepay.com/docs/knowledge-base/api-keys.md#getting-the-api-keys) from the business portal and provide them securely to you. This approach requires managing separate credentials for each merchant, which can be more complex at scale.

The best approach depends on your specific integration architecture and the number of merchants you serve.

## Signing up merchants

Partners who integrate Vipps MobilePay into their POS systems can sign up multiple merchants through a streamlined process. This is useful for POS vendors, payment service providers, and other partners who serve multiple merchants.

See: [Partners: How to sign up new merchants](https://developer.vippsmobilepay.com/docs/partner/merchant-signup.md) for the complete signup process.

## Provide order details

**How to provide order details:**

- **ePayment API:** Include order details directly when creating the payment using the [`receipt` property](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/api-guide/features/pre-built-order-management-api-integration.md). This allows customers to view the order details in their app immediately after payment.
- **eCom API (legacy):** Use the [Order Management API](https://developer.vippsmobilepay.com/docs/APIs/order-management-api/order-management-api-guide.md) to send order details to existing transactions.

As an alternative to digital receipts, an online sales log must be available for compliance.

## User anonymity in transactions

If your POS integration allows the cashier to enter the customer's phone number, you may store it in compliance with GDPR and other applicable data protection regulations.

For more information about user data and privacy, see [User data and privacy](https://developer.vippsmobilepay.com/docs/knowledge-base/user-data-privacy.md).

## Handling refunds on behalf of other locations

It may be relevant for enterprise setup, omnichannel, multiple physical locations within the same chain
to refund orders on behalf of other locations.

**Prerequisites:**
Your locations or your centralized system must have access to all location credentials or use
[Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md).
Locations must be able to search for the order reference ID from other locations or request it from the centralized system.

**User story:** A user buys a product from "Store A".
The user then visits Store B to return some goods. "Store B" wants to be able to refund on behalf of "Store A".

**Problem:** Refunds can only be performed by the sales unit where the payment originated from: "Store A".

**Recommended solutions:**

**A:**
[Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md)
are used for all locations:

Locations must be able to search for `orderId` for payments made in other locations.
The cashier can then search and select `orderId` from "Store A" and click `refund`.
**Technical:** Use
[Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md)
to authenticate, add `Merchant-Serial-Number` from "Store A" to the request header and original `orderId` to the refund request.

NB: With
[Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md),
do not let the cashier input `Merchant-Serial-Number` themselves.
These must be locked and connected to the location selection to reduce risk of adding the wrong location.

**B:**
[Partner keys](https://developer.vippsmobilepay.com/docs/partner/partner-keys.md)
are not used:

In this case, a centralized system needs to store credentials from all sales units within the enterprise.
"Store B" must be able to request a `refund` from the central system based on the original `orderId` and
location for the order origin ("Store A").
**Technical:** Use "Store A" credentials to authenticate, add original `orderId` to the refund request.

**C:** Same sales unit is used for all locations:

It is possible to use one sales unit (one MSN) for all locations and use a prefix in the `reference` (also called `orderId`)
to identify which orders belong to which locations.
This will result in having one settlement for all. You decide what the `reference` contains, and it may be up to 50 characters.
See: [Recommendations for `reference` and `orderId`](https://developer.vippsmobilepay.com/docs/knowledge-base/orderid.md).
You will use the same API keys for all locations.

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