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

# Vipps PSP API checklist

 *Applicable to Vipps.*

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

### 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 to use apps, you must test a switch between 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. |
| #### Follow design guidelines Proper use of our logo and buttons will ensure better user experience and conversion rate. Please visit our [Design guidelines](https://developer.vippsmobilepay.com/docs/knowledge-base/design-guidelines.md) for more information and resources. |

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 for 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.

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