> **Description:** A comprehensive implementation checklist for the PSP API integration, ensuring all required features, security measures, and testing scenarios are properly completed before going live.

> **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).

# Vipps PSP API checklist

**Maintenance mode**

This API is in maintenance mode: we continue to support and maintain it, and no end of life date is planned.
New PSP functionality is added to the [ePayment API](https://developer.vippsmobilepay.com/docs/APIs/psp-epayment-api/README.md), so we recommend it for
new integrations.

This API is only available in the Norwegian market.

To ensure that your system is ready for production, we must verify your solution in test and production. Once we have verified that the steps have been completed successfully, you are ready to go live.

Before moving to production, you must have performed the following actions. All actions are mandatory unless explicitly stated otherwise.

Send your filled out Vipps PSP checklist to us at [developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com).
Use this [editable PDF](https://developer.vippsmobilepay.com/downloads/psp-api/psp-checklist.pdf) to fill out and submit. Request examples in the checklist must be no more than 1 month old when you submit the checklist.

**Download the editable Vipps PSP checklist**

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

---

## Vipps PSP checklist

### Endpoints to integrate

| Purpose | Endpoint |
| --- | --- |
| Initiate a PSP payment | [`POST:/psp/v3/psppayments/init`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml) |
| Update the status of the PSP transaction `RESERVED` `CAPTURED` `CANCELLED` `REFUNDED` | [`POST:/psp/v3/psppayments/updatestatus`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml) |
| Get the details of the PSP payment | [`GET:/psp/v3/psppayments/{pspTransactionId}/details`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml) |
| Receive makePaymentRequest | [`POST:makePaymentUrl`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml) |
| Respond with correct error information See [error codes list](https://developer.vippsmobilepay.com/docs/APIs/psp-api/vipps-psp-api.md#error-codes-from-vipps) for possible responses. | [`POST:makePaymentUrl`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml). |

### 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:** Use the buttons from the [button generator](https://developer.vippsmobilepay.com/docs/knowledge-base/buttons.md). The generated buttons work with keyboard navigation and screen readers, and they stay up to date with the brand. |

### Mandatory implementations

| #### Support soft decline step-ups In case of a soft decline (when the issuer requires 3DS), the PSP must host a 3DSecure session and must provide the URL to Vipps. See [PSD2 Compliance and Strong Customer Authentication (SCA)](https://developer.vippsmobilepay.com/docs/APIs/psp-api/vipps-psp-api.md#psd2-compliance-and-strong-customer-authentication-sca). |
| --- |
| #### Do not rely on `pspRedirectUrl` Some users may close Vipps immediately after seeing the payment confirmation, therefore not being "redirected" back to the merchant. Because of this, it is important for the merchant and the PSP to *not* base their transaction logic on the user reaching the `pspRedirectUrl`. See [PSP Payment Sequence](https://developer.vippsmobilepay.com/docs/APIs/psp-api/vipps-psp-api.md#psp-payment-sequence). |
| #### App switch If you offer your merchants the option to use apps, you must test a switch between the Vipps app and a merchant app. |
| #### Payment status All payments must be updated with capture or cancel status, as well as refund if this is performed. |

When the checklist is completed, notify Vipps MobilePay Integration Service
at [developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com).
Include examples from the test environment, pilot customer info, and a description of the implemented solution.

We will verify the integration and contact you.
After the checklist is approved, we'll send you the information you need to get started.

## Live flow

1. The PSP completes all checklist items.
2. The PSP [contacts us](https://developer.vippsmobilepay.com/docs/contact.md#technical-questions-about-our-apis) with test IDs (`pspTransactionId`, `merchantOrderId`) in the
   [test environment](https://developer.vippsmobilepay.com/docs/knowledge-base/test-environment.md), showing that all checklist items have been fulfilled.
   * A complete order including `Reserve`, `Capture` and `Refund`, that has been updated with
      [`POST:/psp/v3/psppayments/updatestatus`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml).
   * A complete order including `Cancel`, that has been updated with
      [`POST:/psp/v3/psppayments/updatestatus`](https://developer.vippsmobilepay.com/redocusaurus/psp-swagger-id.yaml).
   * One ID for each of the [error codes](https://developer.vippsmobilepay.com/docs/APIs/psp-api/vipps-psp-api.md#error-codes-from-vipps).
       * Some codes like 85 aren't applicable for all systems; please provide a short description of why each code does not apply.
3. The PSP [contacts us](https://developer.vippsmobilepay.com/docs/contact.md#technical-questions-about-our-apis) to verify the integration in the production environment:
   * At least one ID for orders with each of the following statuses: `Capture`, `Refund`, `Cancel`.
   * At least 3 IDs for orders with different [error codes](https://developer.vippsmobilepay.com/docs/APIs/psp-api/vipps-psp-api.md#errors).
4. The PSP goes live

**TIP**

**Operational Status Page**

We recommend that you subscribe to the [Vipps MobilePay Operational Status Page](https://status.vippsmobilepay.com/)
for real-time updates on service availability, incidents, and maintenance.
