> **Description:** Comprehensive verification guide for implementing payments, refunds, and webhooks in your ePayment integration.

> **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 an overview of the entire site, read [https://developer.vippsmobilepay.com/llms.txt](https://developer.vippsmobilepay.com/llms.txt).

# ePayment PSP API checklist

Use this checklist to ensure your ePayment PSP API implementation is complete and production-ready.
It covers the key endpoints, quality assurance steps, and pitfalls -- from payments to captures, refunds, and error handling.

Once you have completed your integration, you must use the checklist to ensure that you have covered all areas of the integration.

## From test to production

1. Complete your testing of the ePayment PSP API. Use the list below to ensure you cover all areas of the integration before you submit the checklist.

2. Send your filled out checklist to us at [developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com). Use this [editable PDF](https://developer.vippsmobilepay.com/downloads/psp-epayment-api/epayment-psp-checklist.pdf) to fill out and submit.
Request examples in the checklist must be no more than 1 month old at the time you submit the checklist.
Together with the checklist, please include a video of your payment flow and a short description of your solution.

3. We will verify your integration and get back to you as soon as possible, so you can continue with the process to go live.

**Download the editable ePayment PSP checklist**

**[Download the PDF](https://developer.vippsmobilepay.com/downloads/psp-epayment-api/epayment-psp-checklist.pdf)** -- an editable PDF you can fill out and track your progress.

## ePayment PSP checklist

### Endpoints to integrate

It is important that you integrate *all* the [ePayment API endpoints](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml).

#### Merchant

| Purpose | Endpoint |
| --- | --- |
| Create merchant | POST /merchant-management/psp/v1/merchants |
| Delete merchant | PATCH /merchant-management/psp/v1/merchants/{'{merchantSerialNumber}'} |

#### Payment

| Purpose | Endpoint |
| --- | --- |
| Initiate payment | POST /epayment/v1/payments |
| Create a payment with [Express](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/api-guide/features/express.md) *Optional feature* | POST /epayment/v1/payments |
| Create a payment with [Profile sharing](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/api-guide/features/profile-sharing.md) *Optional feature* | POST /epayment/v1/payments |
| Create a payment with [Minimum user age](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/api-guide/features/minimum-user-age.md) *Optional feature* | POST /epayment/v1/payments |
| Get payment status Fetch current status of a payment. | GET /epayment/v1/payments/{'{reference}'} |
| Fetch payment event log Fetch the history of a payment. Often used in support cases to see all events for a specific payment. | GET /epayment/v1/payments/{'{reference}'}/events |
| Respond to card data callback With RESERVE, FAIL, and SOFT_DECLINE | POST /psp-card-callback |
| Update payment status with Capture | POST /epayment/v1/payments/{'{reference}'}/capture |
| Update payment status with Cancel | POST /epayment/v1/payments/{'{reference}'}/cancel |
| Update payment status with Refund | POST /epayment/v1/payments/{'{reference}'}/refund |

### Branding

| **Branding compliance and checkout visibility**  Following the [terms and conditions for Vipps MobilePay Business Solutions](https://vippsmobilepay.com/en-NO/terms-and-conditions): * Make Vipps MobilePay just as visible and easy to access as other payment methods, including digital wallets and payment apps. * Make Vipps MobilePay directly accessible, with no secondary menus or extra steps. * Show Vipps MobilePay at the same level as comparable payment methods. * Avoid consistently giving Vipps MobilePay a lower priority in the display or checkout flow. * Present Vipps MobilePay in a way that keeps checkout fair, easy to understand and quick to use. [See logos, text, and dos and don'ts for the checkout](https://brand.vippsmobilepay.com/document/61#/branding/online/branding-in-the-checkout) |
| --- |
| #### Use the approved buttons Show only the approved Vipps MobilePay buttons. **Recommended:** The [Widget SDK](https://developer.vippsmobilepay.com/docs/knowledge-base/widget.md) gives you the approved button and takes the customer to the payment for you: the app on a phone or tablet, or a dialog on a computer. It also keeps the button up to date when the brand changes. |

### Quality assurance

Ensure that your implementation complies with our requirements and recommendations.

| #### Proper logging All integrations should log error responses to be used for later reference in troubleshooting. Logs must include endpoint, headers, request body, error code and message. |
| --- |
| #### Include HTTP headers Send the [HTTP headers](https://developer.vippsmobilepay.com/docs/knowledge-base/http-headers.md) in all API requests for better tracking and troubleshooting (mandatory for partners and platforms). |
| #### Specify customer interaction For instore solutions, it is required to specify the [customer interaction](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/api-guide/features/customer-present-payments.md) by setting `"customerInteraction": "CUSTOMER_PRESENT"` on payment initiation. This is to determine that the customer is present at the time of purchase. |
| #### Payment status All payments must be updated with capture or cancel status, as well as refund if this is performed. |
| #### Merchant onboarding All merchants must be onboarded as individual merchants and not super merchants, and they must be onboarded with a valid MCC. All merchants must use their own merchant/webshop name and logo. See [PSP merchant](https://developer.vippsmobilepay.com/docs/APIs/psp-merchant-api/psp-merchant-api-guide.md#merchant-information) for more details. |
| #### Send a useful `reference` ID Follow our [`reference` recommendations](https://developer.vippsmobilepay.com/docs/knowledge-base/orderid.md) to ensure that each transaction is uniquely and reliably identified across all Vipps MobilePay APIs. |
| #### Handle redirects For mobile flows, the implementation must handle that the `returnUrl` URL is opened in the default browser on the phone, and not rely on the use of a specific browser, a specific tab, an embedded browser, or a session token. Follow our [recommendations regarding handling redirects](https://developer.vippsmobilepay.com/docs/knowledge-base/redirects.md). |
| #### Appswitch If you offer your merchants to use apps, you must test a switch between the MobilePay app and a merchant app. |
| #### Sign up for operational updates Subscribe to the [Vipps MobilePay Operational Status Page](https://status.vippsmobilepay.com/) for real-time updates on service availability, incidents, and maintenance. |

## Go live

After the checklist is approved, we will send you the information you need to get access to production.
In the production environment, you must complete a series of production transactions to verify your solution. We recommend that you complete the production transactions with a pilot merchant. Please contact us at [developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com) with a transaction `reference` for each of the following:

| Purpose | Endpoint | Your `reference` |
| --- | --- | --- |
| Respond to card data callback with RESERVE | POST /psp-card-callback |  |
| Respond to card data callback with FAIL | POST /psp-card-callback |  |
| Respond to card data callback with SOFT_DECLINE | POST /psp-card-callback |  |
| Transaction with status Capture | POST /epayment/v1/payments/{'{reference}'}/capture |  |
| Transaction with status Refund | POST /epayment/v1/payments/{'{reference}'}/refund |  |
| Transaction with status Cancel | POST /epayment/v1/payments/{'{reference}'}/cancel |  |

We will inform you when we have verified your production test, and you can then go live with your merchants
