Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

Vipps Redirect Component

Add Vipps to your existing iOS Components integration.

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

Before you begin

This page assumes you have already:

API reference

You don't need to send additional fields for Vipps. To see optional fields that you can send for all payment methods, choose the endpoint you integrated:

Component configuration

If your integration uses iOS Components v5.0.0 or later, configure and create an instance of the Vipps Component:

//Create a payment method object for Vipps.
let paymentMethod = paymentMethods.paymentMethod(ofType: vippsComponentPaymentMethod.self)
//Create a configuration object for the Vipps Component.
var vippsComponentConfiguration = vippsComponent.Configuration()
//Set additional parameters on the configuration object.
vippsComponentConfiguration.localizationParameters = //Optional custom localization parameters.

There is no required Vipps specific integration for Components.

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