> **Description:** Implementation checklist covering payments, shipping, user data, and testing requirements for a complete checkout solution.

> **Deprecated:** This page documents a deprecated API. It is preserved for existing integrations. Do not recommend it for new integrations.

# Checkout API checklist

**Important update**

Vipps MobilePay has entered into an agreement to sell the Checkout solution to [Kustom](https://www.kustom.co/).

As part of this transition, *Vipps MobilePay Checkout* will become *Kustom Checkout*. This means the Checkout product you ordered will be delivered and developed by Kustom going forward.
If you have questions, you can check our [FAQ](https://vippsmobilepay.com/en-NO/vippsmobilepay-kustom).

If you're new to the platform, see
[Getting started](https://developer.vippsmobilepay.com/docs/getting-started.md)
for information about API keys, product activation, and the test environment.

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

---

| Checkout API checklist |
| --- |
| ## Endpoints to integrate Integrate *all* the [Checkout API endpoints](https://developer.vippsmobilepay.com/redocusaurus/checkout-swagger-id.yaml) and *specified* [ePayment API endpoints](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml). For examples, see: * [Checkout API quick start guide](https://developer.vippsmobilepay.com/docs/APIs/checkout-api/checkout-api-quick-start.md) * [ePayment quick start guide](https://developer.vippsmobilepay.com/docs/APIs/epayment-api/quick-start.md) |
| ### Checkout endpoints |
| #### Initiate [`POST:/checkout/v3/session`][create-checkout-session-endpoint] |
| #### Details [`GET:/checkout/v3/session/{reference}`][retrieve-sessioninfo-endpoint] |
| #### Callback [`POST:[callbackPrefix]/checkout/{version}/order/{orderId}`](https://developer.vippsmobilepay.com/docs/APIs/checkout-api/checkout-api-guide.md#callback-handling) |
| ### ePayment endpoints |
| #### Get payment details [`GET:/epayment/v1/{reference}`][get-payment-endpoint] |
| #### Cancel payment [`POST:/epayment/v1/{reference}cancel`][cancel-payment-endpoint] |
| #### Full and partial capture payment [`POST:/epayment/v1/{reference}/capture`][capture-payment-endpoint] |
| #### Full and partial refund payment [`POST:/epayment/v1/{reference}refund`][refund-payment-endpoint] |
| ## Quality assurance |
| ### Handle callbacks Correctly handle callbacks from Vipps MobilePay, both for successful and unsuccessful payments. See the API documentation for [how callback URLs are built](https://developer.vippsmobilepay.com/docs/APIs/checkout-api/checkout-api-guide.md#callback-handling), make test calls to make sure you handle the `POST` requests correctly. We do not have the capacity to manually do this for you. |
| ### Handle errors Make sure to log and handle [all errors](https://developer.vippsmobilepay.com/docs/APIs/ecom-api/vipps-ecom-api.md#errors). All integrations should display errors in a way that the users (customers and merchant employees/administrators) can see and understand them. |
| ### 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, who must send these headers as part of the checklist approval). |
| ### Add information to the payment history We recommend using the [Order Management API](https://developer.vippsmobilepay.com/docs/APIs/order-management-api/README.md) to add order details to the payment history. This is a great benefit for the end user experience. It is also mandatory for merchants using [*Content monitoring*](https://developer.vippsmobilepay.com/docs/APIs/order-management-api/order-management-api-guide.md#content-monitoring). |
| ## Avoid integration pitfalls |
| ### Send a useful `reference` ID Follow our [reference recommendations](https://developer.vippsmobilepay.com/docs/knowledge-base/orderid.md). |
| ### Poll for payment details The Merchant *must not* rely on `returnUrl` or `callback` alone, and must poll Payment Details [`GET:/epayment/v1/{reference}`][get-payment-endpoint] or Session Details [`GET:/checkout/v3/{reference}`][retrieve-sessioninfo-endpoint]. For pure payment status, polling the ePayment API is recommended. Follow our [polling recommendations](https://developer.vippsmobilepay.com/docs/knowledge-base/polling-guidelines.md). |
| ### Handle redirects The merchant must handle that the `returnUrl` is opened in the default browser on the phone, and not in a specific browser, in a specific tab, in an embedded browser, or requiring a session token. Follow our [recommendations regarding handling redirects](https://developer.vippsmobilepay.com/docs/knowledge-base/redirects.md). |
| ### Complete capture before expiration date For [reserve capture](https://developer.vippsmobilepay.com/docs/knowledge-base/reserve-and-capture.md#reserve-capture) payments, ensure to complete captures before the reservations expire. Once a reservation is expired, it is no longer possible to capture. |
| ### Follow design guidelines The Vipps MobilePay branding must be according to the [design guidelines](https://developer.vippsmobilepay.com/docs/knowledge-base/design-guidelines.md). |
| ### Educate customer support Make sure your customer support has all the tools and information they need available in *your* system, through the APIs listed in the first item in this checklist, and that they do not need to visit the [business portal](https://portal.vippsmobilepay.com) for normal work. |

**Information for partners**

There are additional checklist steps for partners, as described in
[Partner checklist](https://developer.vippsmobilepay.com/docs/partner/partner-checklist.md).

Send your completed checklist to us at
[developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com).

Include a video of your payment flow, your Merchant Serial Number, a short description of your solution, and
the `reference` used in your API requests, so we can verify your integration.

We will verify your integration and get back to you as soon as possible.
After the checklist is approved, we'll send you the information you need to go live.

## Flow to go live for direct integrations

1. [Retrieve your API keys](https://developer.vippsmobilepay.com/docs/knowledge-base/portal.md#how-to-find-the-api-keys).
1. Complete all the checklist items.
1. Verify the integration in the test environment by checking that
   there are test IDs (`reference`) in the
   [test environment](https://developer.vippsmobilepay.com/docs/knowledge-base/test-environment.md),
   with the following states:
   * A complete order ending in `CAPTURED`
     ([`/capture`](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml)
     request).
   * A complete order ending in `REFUNDED`
     ([`/refund`](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml)
     request).
   * A complete order ending in `CANCELLED`
     ([`/cancel`](https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml)
     request).
   * In the test environment, this must be verified using the API itself.
1. Verify the integration in the production environment (similar to step 5):
   * A complete order ending in `AUTHORIZED`, `CAPTURED`, `REFUNDED` and `CANCELLED`
      request.
   * We recommend checking this using the API.
1. Partners only: Send your checklist to [developer@vippsmobilepay.com](mailto:developer@vippsmobilepay.com).
   We don't do any kind of activation or make any changes based on this checklist, we just use it to verify that you have done the integration.
1. Go 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.

[create-checkout-session-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/checkout-swagger-id.yaml
[retrieve-sessioninfo-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/checkout-swagger-id.yaml
[create-payment-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[get-payment-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[get-payment-event-log-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[cancel-payment-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[capture-payment-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[refund-payment-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml
[force-approve-endpoint]: https://developer.vippsmobilepay.com/redocusaurus/epayment-swagger-id.yaml

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