Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

Vipps

Add Vipps to an existing Drop-in integration.

On this page, you can find additional configuration for adding Vipps to your Drop-in integration.

Before you begin

This page assumes you have already:

API reference

Select which endpoint you're integrating:

Parameter name Required Description
shopperStatement The description of this payment shown in the Vipps app. If you don't specify a shopperStatement, we'll use the value that you provided as the reference to populate this field.

Drop-in configuration

There is no Vipps specific configuration for Drop-in.

Recurring payments

Minimum transaction amount for Vipps is 1.00 NOK

To make recurring payments for Vipps, you need to:

  1. Create a shopper token when the shopper is making a Vipps payment.
  2. Use the token to make future payments for the shopper.

Create a token

To create a token, include in your /payments request:

  • storePaymentMethod: true
  • shopperReference: Your unique identifier for the shopper.

When the payment has been authorised, you receive a webhook containing:

  • eventCode: RECURRING_CONTRACT
  • originalReference: The pspReference of the initial payment.
  • pspReference: The token that you need to make recurring payments for this shopper.

Make sure that your server is able to receive RECURRING_CONTRACT as part of your standard webhooks. You can enable the RECURRING_CONTRACT event code in the webhook settings page.

{
   "live":"false",
   "notificationItems":[
      {
         "NotificationRequestItem":{
            "additionalData":{
               "vipps.userToken":"eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczpcL1wvdmlwcHMubm8iLCJzdWIiOiIxNjQiLCJzY29wZSI6InBzcF9zdWJzY3JpcHRpb24iLCJpc3MiOiJWaXBwcyIsImlhdCI6MTU4ODg1NzgyNH0.P2RsrsdtHXqTeJRzkyilWRae-inqL3Go5iLYMaNCV_o",
               "vipps.variant" : "vipps",
               "recurring.shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
               "paymentMethodVariant":"vipps",
               "acquirerAccountCode":"VippsAcquirerAccount"
            },
            "amount":{
               "currency":"NOK",
               "value":1000
            },
            "eventCode":"RECURRING_CONTRACT",
            "eventDate":"2020-05-07T15:23:56+02:00",
            "merchantAccountCode":"YOUR_MERCHANT_ACCOUNT",
            "merchantReference":"YOUR_ORDER_NUMBER",
            "originalReference" : "88154795347618C",
            "paymentMethod":"vipps",
            "pspReference":"8315888578361992",
            "reason":"",
            "success":"true"
         }
      }
   ]
}

Make a payment with a token

To make a payment with saved payment details, include in your /payments request:

  • paymentMethod.type: vipps.
  • paymentMethod.storedPaymentMethodId: The pspReference from the RECURRING_CONTRACT webhook. Alternatively, you can get this value by using the /listRecurringDetails endpoint.
  • shopperReference: The unique shopper identifier that you specified when creating the token.
  • shopperInteractionContAuth.
  • recurringProcessingModel: Subscription for subscription payments, or CardOnFile for one-off payments. For more information about these parameters, refer to our Tokenization guide.

    curl https://checkout-test.adyen.com/v68/payments \
    -H "x-API-key: YOUR_X-API-KEY" \
    -H "content-type: application/json" \
    -d '{
           "amount":{
              "value":1000,
              "currency":"NOK"
           },
           "paymentMethod":{
              "type":"vipps",
              "recurringDetailReference":"8315888578361992"
           },
           "reference":"YOUR_ORDER_NUMBER",
           "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
           "shopperReference":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
           "shopperInteraction":"ContAuth",
           "recurringProcessingModel": "Subscription"
    }'
    # Set your X-API-KEY with the API key from the Customer Area.
    adyen = Adyen::Client.new
    adyen.api_key = "YOUR_X-API-KEY"
     
    response = adyen.checkout.payments({
      :amount => {
        :currency => "NOK",
        :value => 1000
      },
      :reference => "YOUR_ORDER_NUMBER",
      :paymentMethod => {
        :type => "vipps",
        :recurringDetailReference => "8315888578361992"
      },
      :returnUrl => "https://your-company.com/checkout?shopperOrder=12xy..",
      :shopperReference => "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
      :merchantAccount => "YOUR_MERCHANT_ACCOUNT",
      :shopperInteraction => "ContAuth",
      :recurringProcessingModel => "Subscription"
    })
    // Set YOUR_X-API-KEY with the API key from the Customer Area.
    // Change to Environment.LIVE and add the Live URL prefix when you're ready to accept live payments.
    Client client = new Client("YOUR_X-API-KEY", Environment.TEST);
    Checkout checkout = new Checkout(client);
    
    PaymentsRequest paymentsRequest = new PaymentsRequest();
    
    String merchantAccount = "YOUR_MERCHANT_ACCOUNT";
    paymentsRequest.setMerchantAccount(merchantAccount);
    
    Amount amount = new Amount();
    amount.setCurrency("NOK");
    amount.setValue(1000L);
    paymentsRequest.setAmount(amount);
    
    DefaultPaymentMethodDetails paymentMethodDetails = new DefaultPaymentMethodDetails();
    paymentMethodDetails.setRecurringDetailReference("8315888578361992");
    paymentMethodDetails.setType("vipps");
    paymentsRequest.setPaymentMethod(paymentMethodDetails);
    
    paymentsRequest.setReference("YOUR_ORDER_NUMBER");
    paymentsRequest.setReturnUrl("https://your-company.com/checkout?shopperOrder=12xy..");
    paymentsRequest.setShopperInteraction("ContAuth");
    paymentsRequest.setRecurringProcessingModel("Subscription");
    
    PaymentsResponse paymentsResponse = checkout.payments(paymentsRequest);
    // Set your X-API-KEY with the API key from the Customer Area.
    $client = new \Adyen\Client();
    $client->setXApiKey("YOUR_X-API-KEY");
    $service = new \Adyen\Service\Checkout($client);
    
    $params = array(
      "amount" => array(
        "currency" => "NOK",
        "value" => 1000
      ),
      "reference" => "YOUR_ORDER_NUMBER",
      "paymentMethod" => array(
        "type" => "vipps",
        "recurringDetailReference" => "8315888578361992"
      ),
      "returnUrl" => "https://your-company.com/checkout?shopperOrder=12xy..",
      "shopperReference" => "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
      "recurringProcessingModel" => "Subscription",
      "shopperInteraction" => "ContAuth",
      "merchantAccount" => "YOUR_MERCHANT_ACCOUNT"
    );
    $result = $service->payments($params);
    #Set your X-API-KEY with the API key from the Customer Area.
    adyen = Adyen.Adyen()
    adyen.client.xapikey = 'YOUR_X-API-KEY'
    
    result = adyen.checkout.payments({
       'amount': {
          'value': 1000,
          'currency': 'NOK'
       },
       'reference': 'YOUR_ORDER_NUMBER',
       'paymentMethod': {
          'type': 'vipps',
          'recurringDetailReference': '8315888578361992'
       },
       'returnUrl': 'https://your-company.com/checkout?shopperOrder=12xy..',
       'shopperReference': 'YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j'
       'merchantAccount': 'YOUR_MERCHANT_ACCOUNT',
       'shopperInteraction':'ContAuth',
       'recurringProcessingModel': 'Subscription'
    })
    // Set your X-API-KEY with the API key from the Customer Area.
    var client = new Client ("YOUR_X-API-KEY", Environment.Test);
    var checkout = new Checkout(client);
    
    var amount = new Adyen.Model.Checkout.Amount("NOK", 1000);
    var details = new Adyen.Model.Checkout.DefaultPaymentMethodDetails{
      Type = "vipps",
      RecurringDetailReference = "8315888578361992"
    };
    var paymentsRequest = new Adyen.Model.Checkout.PaymentRequest
    {
      Reference = "YOUR_ORDER_NUMBER",
      Amount = amount,
      ReturnUrl = @"https://your-company.com/checkout?shopperOrder=12xy..",
      MerchantAccount = "YOUR_MERCHANT_ACCOUNT",
      ShopperReference = "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
      RecurringProcessingModel = Adyen.Model.Checkout.PaymentRequest.RecurringProcessingModelEnum.Subscription,
      ShopperInteraction = Adyen.Model.Checkout.PaymentRequest.ShopperInteractionEnum.ContAuth,
      PaymentMethod = details
    };
    
    var paymentResponse = checkout.Payments(paymentsRequest);
    // Set your X-API-KEY with the API key from the Customer Area.
    const {Client, Config, CheckoutAPI} = require('@adyen/api-library');
    const config = new Config();
    // Set your X-API-KEY with the API key from the Customer Area.
    config.apiKey = '[API_KEY]';
    config.merchantAccount = '[YOUR_MERCHANT_ACCOUNT]';
    const client = new Client({ config });
    client.setEnvironment("TEST");
    const checkout = new CheckoutAPI(client);
    checkout.payments({
        amount: { currency: "NOK", value: 1000 },
        paymentMethod: {
            type: 'vipps',
            recurringDetailReference: "8315888578361992"
        },
        reference: "YOUR_ORDER_NUMBER",
        merchantAccount: config.merchantAccount,
        shopperReference: "YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
        returnUrl: "https://your-company.com/checkout?shopperOrder=12xy..",
        shopperInteraction: "ContAuth",
        recurringProcessingModel: "Subscription"
    }).then(res => res);

Test and go live

To test your integration, install a Vipps test app, and use the following credentials:

  • Phone number: 98258879, 91437328, 46364980, 45902658, 97538802, 45480257, 45241041, 99290775, or 95686106, 92426303
  • PIN: 1236

The Vipps test app is limited to a Visa test card. You can test different scenarios by adding additionalData.RequestedTestAcquirerResponseCode to your /payments request, as described in Using additional data.

Check the status of Vipps test payments in your Customer Area > Transactions > Payments.

Go live

Before you can accept live Vipps payments, you need to submit a request for Vipps in your live Customer Area.

See also