Commission Based Affiliate Model

In this model, the main merchant owns the product/service and processes the full transaction. Affiliates help generate sales and receive a commission, but they do not handle turnover.

Typical use cases include:

  • Affiliate referrals (ads, links, blogs)
  • Operational support (e.g., logistics, raw materials)

Main merchant is liable for:

  • Generating invoice
  • Capturing/cancelling
  • Refunds

How the Commission-Based Model Is Technically Achieved

All turnover is tied to the main merchant. Commission is calculated using affiliate.subvendors and affiliate.commission_type

Percentage Commission Example:

SAMPLE CODE
"transaction.amount": "2500",
    "affiliate.subvendors": {
        "2261": "2",
        "2271": "3"
    },
"affiliate.commission_type": "percentage"

Fixed Commission Example:

SAMPLE CODE
"transaction.amount": "2500",
    "affiliate.subvendors": {
        "2261": "100",
        "2271": "200"
    },
"affiliate.commission_type": "amount"

Setup Locations in Admin Portal:

  • Project-level commission is not applicable
  • Must be defined dynamically in every transaction

Cost Sharing

Payment gateway costs (e.g., transaction fee, fraud module fee) are:

  • Default: 100% borne by marketplace
  • Can be customized per affiliate or entire project

Run a Sample Request

The following sample includes only the essential parameters required for demonstration and explanation purposes. For a complete list of all available parameters, along with their descriptions, header information, and result details, please refer to the links below:

  • For Hosted Payment Page integration, see the full parameter reference >>here<< .
  • For Direct API integration, see the full parameter reference >>here<< .

Executing follow up payments using tokenization (without customer interaction)

To use the token based on your business model, the token has to be created (as detailed in the step Creating Token). With the secure token already created, it is not necessary to transmit the payment details instead the token has to be passed in transaction.payment_data.token to complete the payment.

Tokenization Followup
<?php

    // Need to enter your payment access key value here
    $payment_access_key = '###YOUR_PAYMENT_ACCESS_KEY###';

    // Now, have to encode the $payment_access_key value with the base64 encode
    $encoded_data        = base64_encode($payment_access_key);

    // Action Endpoint 
    $endpoint           = 'https://payport.novalnet.de/v2/payment';

    // Build the Headers array
    $headers = [

      // The Content-Type should be "application/json"
        'Content-Type:application/json',
        
        // The charset should be "utf-8"
        'Charset:utf-8', 
        
        // Optional
        'Accept:application/json', 
        
        // The formed authenticate value (case-sensitive)
        'X-NN-Access-Key:' . $encoded_data
    ];

    $data = [];

    // Build Merchant Data
    $data['merchant'] = [
      // Your API signature value
      'signature' => '###YOUR_API_SIGNATURE###', 
            
      // Your corresponding tariff ID
      'tariff'    => '###YOUR_TARIFF_ID###'
    ];

    // Build Customer Data
    $data['customer'] = [

        // Shopper's first name
        'first_name'  => 'Norbert',
        
        // Shopper's last name
        'last_name'   => 'Maier', 
        
        // Shopper's email
        'email'       => '###YOUR_MAIL###', 

        // Shopper's Ip address
        'customer_ip' => '###CUSTOMER_IP###',
        
        // Shopper's customer number from the shop
        'customer_no' => '###CUSTOMER_NUMBER###',
        
        // Shopper's Telephone number
        'tel'         => '+49 089 123456',
        
        // Shopper's Mobile number 
        'mobile'      => '+49 174 7781423',
        
        // Shopper's birthdate value YYYY-MM-DD - Decomment it based on your usage
        // 'birth_date'  => '1992-06-10',
        
        // Shopper's gender - Decomment it based on your usage
        // 'gender'      => 'u',

        // Shopper's company vat ID value - Decomment it based on your usage
        // 'vat_id'      => 'DE123456',
        
        // Shopper's company regestration number - Decomment it based on your usage
        // 'reg_no'      => 'HRB1234',
        
        // Shopper's company tax ID value - Decomment it based on your usage
        // 'tax_id'      => '123/123/123',
        
        // Shopper's session value - Decomment it based on your usage
        // 'session'     => 'fedgrgst5653653hdgfsvgdsf622627e',
        
        // Shopper's fax number - Decomment it based on your usage
        // 'fax'         => '+49 89 654321',

        // Shopper's billing address
        'billing'     => [
        
        // House number
        'house_no'     => '9',
        
        // Street
        'street'       => 'Hauptstr',
        
        // City
        'city'         => 'Kaiserslautern',
        
        // zip
        'zip'          => '66862',
        
        // Country's ISO code
        'country_code' => 'DE',
        
        // Name of the company - Decomment it based on your usage
            'company'   => 'ABC GmbH'
        ],
        
        /* 
        // Optional child object - Decomment it based on your usage
        'shipping' => [
        
        // First name
            'first_name'    => 'Norbert',
            
            // Last name
            'last_name'     => 'Maier',
            
            // Email
            'email'         => 'test@novalnet.de',
        
            // Street
        'street'        => 'Hauptstr',
        
        // House number
        'house_no'      => '9',
        
        // City
        'city'          => 'Kaiserslautern',
        
        // zip
        'zip'           => '66862',
        
        // Country's ISO code
        'country_code'  => 'DE',
        
        // Name of the company
            'company'       => 'A.B.C. Gerüstbau GmbH',
            
            // Telephone number
            'tel'           => '+49 089 123456',

            // Mobile number
            'mobile'        => '+49 174 7781423'
        ]
        */
    ];

    // Build Transaction Data
    $data['transaction'] = [

        // The Payment type of the transaction
        'payment_type'     => '###PAYMENT_TYPE###',
        
        // The transaction Amount in smaller currency unit
        'amount'           => '###TRANSACTION_AMOUNT###',
        
        // The transaction currency's ISO code
        'currency'         => '###TRANSACTION_CURRENCY###',
        
        // The mode of the transaction
        'test_mode'        => '###TEST_MODE###',
        
        // The mode of the transaction
        'order_no'         => '###TRANSACTION_ORDER_NUMBER###',
        
        // The Hook URL value for this particular transaction
        'hook_url'         => '###YOUR_HOOK_URL###',
        
        // Build Payment Data
        'payment_data'     => [
        
        // The created payment token
        'token' => '###PAYMENT_TOKEN###'   
        ]
    ];

    // Instalment data
    //$data['instalment'] = [

      // The interval between each cycle
      //'interval' => '1m',

      // Total number of cycles
      //'cycles' => '3'
    //];

    /* 
    // Subscription Data, used for processing Novalnet`s subscription - Optional object - Decomment it based on your usage
    $data['subscription'] = [

        // The interval between each cycle
        'interval'       => '1m',

        // Subscription trial interval if applicable
        'trial_interval' => '3m',

        // Subscription trial interval amount if applicable
        'trial_amount'   => '150'
    ];
    */

    /* 
    // Marketplace data, used for the affiliate`s marketplace model - Optional object - Decomment it based on your usage
    $data['marketplace'] = [

      // To submit amount for several affiliates to be booked
      'tx_split' => [
        '2261' => '20',
        '2271' => '30'
      ],  
    ];
    */

    /*
    // Affiliate Data, used for the affiliate`s revenue split model - Optional object - Decomment it based on your usage
    $data['affiliate'] = [
      
      // To submit shares for several affiliates for the same transaction
      'subvendors'=> [
        '2261' => '20',
        '2271' => '30'
      ]
    ];
    */

    // Custom Data - Optional object
    $data['custom'] = [
      
      // Shopper's selected language in shop
      "lang" => "EN",
      
      // Custom parameter's key - Optional object - Decomment it based on your usage
      // 'input1'    => 'your internal reference parameter name',
      
      // Custom parameter's value - Optional object - Decomment it based on your usage
      // 'inputval1' => 'your internal reference parameter value'
    ];

    // Convert the array to JSON string
    $json_data = json_encode($data);

    // Handle Response
    $response = send_request($json_data, $endpoint, $headers);

    function send_request($data, $url, $headers) {

        // Initiate cURL
        $curl = curl_init();
        
        // Set the url
        curl_setopt($curl, CURLOPT_URL, $url);
        
        // Set the result output to be a string
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
        // Set the POST value to true (mandatory)
        curl_setopt($curl, CURLOPT_POST, true);
        
        // Set the post fields
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        
        // Set the headers
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

        // Execute cURL
        $result = curl_exec($curl);

        // Handle cURL error
        if (curl_errno($curl)) {
            echo 'Request Error:' . curl_error($curl);
            return $result;
        }
        
        // Close cURL
        curl_close($curl);  
        
        // Decode the JSON string
        $result = json_decode($result);

        return $result;
    }
    ?>
curl --location --request POST 'https://payport.novalnet.de/v2/payment' -H 'Content-Type: application/json' -H 'Charset:utf-8' -H 'Accept: application/json' -H 'X-NN-Access-Key: ###YOUR_ENCODED_PAYMENT_ACCESS_KEY###' -d '{"merchant":{"signature":"###YOUR_API_SIGNATURE###","tariff":"###YOUR_TARIFF_ID###"},"customer":{"first_name":"Norbert","last_name":"Maier","email":"###YOUR_MAIL###","customer_ip":"###CUSTOMER_IP###","customer_no":"###CUSTOMER_NUMBER###","tel":"+49 089 123456","mobile":"+49 174 7781423","billing":{"house_no":"9","street":"Hauptstr","city":"Kaiserslautern","zip":"66862","country_code":"DE", "company": "ABC GmbH"}},"transaction":{"payment_type":"###PAYMENT_TYPE###","amount":"###TRANSACTION_AMOUNT###","currency":"###TRANSACTION_CURRENCY###","test_mode":"###TEST_MODE###","order_no":"###TRANSACTION_ORDER_NUMBER###","hook_url":"###YOUR_HOOK_URL###","payment_data":{"token":"###PAYMENT_TOKEN###"}},"custom":{"lang":"EN"}}';
#!/usr/bin/node

    const https = require('https');
    // data sent in the body of the request
    const postData = JSON.stringify({
      "merchant": {
        "signature": "###YOUR_API_SIGNATURE###",
        "tariff": "###YOUR_TARIFF_ID###"
      },
      "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
        "token": "###PAYMENT_TOKEN###"
        }
      },
      "custom": {
        "lang": "EN"
      }
    });

    const options = {
      hostname: 'payport.novalnet.de',
      port: 443,
      path: '/v2/payment',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(postData),
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
      },
    };

    const req = https.request(options, (res) => {
      console.log('statusCode:', res.statusCode);
      // console.log('headers:', res.headers);

      res.on('data', (d) => {
        process.stdout.write(d);
      });
    });

    req.on('error', (e) => {
      console.error('ERROR: ',e);
    });

    // Write data to request body
    req.write(postData);
    req.end();
#!/usr/bin/python3

    import http.client
    import json

    CONN = http.client.HTTPSConnection("payport.novalnet.de")
    PAYLOAD = json.dumps({
        "merchant": {
            "signature": "###YOUR_API_SIGNATURE###",
            "tariff": "###YOUR_TARIFF_ID###"
        },
        "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
        },
        "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
          "token": "###PAYMENT_TOKEN###"
        }
        },
        "custom": {
            "lang": "EN"
        }
    })
    HEADERS = {
        'Content-Type': 'application/json',
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
    }
    CONN.request("POST", "/v2/payment", PAYLOAD, HEADERS)
    RES = CONN.getresponse()
    DATA = RES.read()
    print(DATA.decode("utf-8"))
#!/usr/lib/ruby

    require "uri"
    require "json"
    require "net/http"

    url = URI("https://payport.novalnet.de/v2/payment")

    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true

    request = Net::HTTP::Post.new(url)
    request["Content-Type"] = "application/json"
    request["Accept"] = "application/json"
    request["Charset"] = "utf-8"
    request["X-NN-Access-Key"] = "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###"
    request.body = JSON.dump({
      "merchant": {
        "signature": "###YOUR_API_SIGNATURE###",
        "tariff": "###YOUR_TARIFF_ID###"
      },
      "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
            "token": "###PAYMENT_TOKEN###"
        }
      },
      "custom": {
        "lang": "EN"
      }
    })

    response = https.request(request)
    puts response.read_body
package main

    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )

    func main() {

      url := "https://payport.novalnet.de/v2/payment"
      method := "POST"

      payload := strings.NewReader(`{"merchant":{"signature":"###YOUR_API_SIGNATURE###", "tariff" : "###YOUR_TARIFF_ID###"},"customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
            "token": "###PAYMENT_TOKEN###"
        }
      },"custom":{"lang":"EN"}}`)

      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)

      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
      req.Header.Add("Accept", "application/json")
      req.Header.Add("Charset", "utf-8")
      req.Header.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")

      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()

      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
/* List of required libraries (see also the import statements below): 
    - commons-logging-1.2.jar    
    - httpasyncclient-4.1.5.jar  
    - httpclient-4.3.3.jar  
    - httpcore-4.4.16.jar   
    - httpcore-nio-4.4.16.jar  
    - httpmime-4.5.14.jar      
    - json-20230227.jar  
    - unirest-java-3.9.00.jar
    */
    import java.io.*;

    import org.json.JSONArray;
    import org.apache.http.auth.*;
    import org.apache.http.nio.conn.*; 
    import org.apache.http.concurrent.*;
    import org.apache.http.nio.reactor.*;
    import org.apache.commons.logging.*;
    import org.apache.http.entity.mime.content.*; 
    import kong.unirest.*;


    public class TokenizationRequest {
      public static void main(String []args) throws Exception{
        Unirest.config().connectTimeout(1000).socketTimeout(2000);

        HttpResponse<String> response = Unirest.post("https://payport.novalnet.de/v2/payment")
          .header("Content-Type", "application/json")
          .header("Charset", "utf-8")
          .header("Accept", "application/json")
          .header("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")
          .body("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}},\"custom\":{\"lang\":\"EN\"}}")
          .asString();
        
        System.out.println(response.getBody());
      }
    }
using System;
    using System.Net.Http;

    namespace TokenizationRequest
    {
      public class TokenizationRequest {

        public string check_Tokenization_request() {

          var client = new HttpClient();
          var request = new HttpRequestMessage(HttpMethod.Post, "https://payport.novalnet.de/v2/payment");

          request.Headers.Add("Charset", "utf-8");
          request.Headers.Add("Accept", "application/json");
          request.Headers.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###");
          var content = new StringContent("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}},\"custom\":{\"lang\":\"EN\"}}", null, "application/json");

          request.Content = content;
          var response = client.SendAsync(request).Result;
          response.EnsureSuccessStatusCode();
          var responseText = response.Content.ReadAsStringAsync().Result;
          Console.WriteLine(responseText);
          return responseText;
        }
        public static void Main() {
          var testRequest = new TokenizationRequest();
          testRequest.check_Tokenization_request(); 
        }

      }
    }
Tokenization Followup
<?php

    // Need to enter your payment access key value here
    $payment_access_key = '###YOUR_PAYMENT_ACCESS_KEY###';

    // Now, have to encode the $payment_access_key value with the base64 encode
    $encoded_data        = base64_encode($payment_access_key);

    // Action Endpoint 
    $endpoint           = 'https://payport.novalnet.de/v2/payment';

    // Build the Headers array
    $headers = [

      // The Content-Type should be "application/json"
        'Content-Type:application/json',
        
        // The charset should be "utf-8"
        'Charset:utf-8', 
        
        // Optional
        'Accept:application/json', 
        
        // The formed authenticate value (case-sensitive)
        'X-NN-Access-Key:' . $encoded_data
    ];

    $data = [];

    // Build Merchant Data
    $data['merchant'] = [

      // Your API signature value
        'signature' => '###YOUR_API_SIGNATURE###', 
        
        // Your corresponding tariff ID
        'tariff'    => '###YOUR_TARIFF_ID###'
    ];

    // Build Customer Data
    $data['customer'] = [

        // Shopper's first name
        'first_name'  => 'Norbert',
        
        // Shopper's last name
        'last_name'   => 'Maier', 
        
        // Shopper's email
        'email'       => '###YOUR_MAIL###', 

        // Shopper's Ip address
        'customer_ip' => '###CUSTOMER_IP###',
        
        // Shopper's customer number from the shop
        'customer_no' => '###CUSTOMER_NUMBER###',
        
        // Shopper's Telephone number
        'tel'         => '+49 089 123456',
        
        // Shopper's Mobile number 
        'mobile'      => '+49 174 7781423',
        
        // Shopper's birthdate value YYYY-MM-DD - Decomment it based on your usage
        // 'birth_date'  => '1992-06-10',
        
        // Shopper's gender - Decomment it based on your usage
        // 'gender'      => 'u',

        // Shopper's company vat ID value - Decomment it based on your usage
        // 'vat_id'      => 'DE123456',
        
        // Shopper's company regestration number - Decomment it based on your usage
        // 'reg_no'      => 'HRB1234',
        
        // Shopper's company tax ID value - Decomment it based on your usage
        // 'tax_id'      => '123/123/123',
        
        // Shopper's session value - Decomment it based on your usage
        // 'session'     => 'fedgrgst5653653hdgfsvgdsf622627e',
        
        // Shopper's fax number - Decomment it based on your usage
        // 'fax'         => '+49 89 654321',

        // Shopper's billing address
        'billing'     => [
        
        // House number
        'house_no'     => '9',
        
        // Street
        'street'       => 'Hauptstr',
        
        // City
        'city'         => 'Kaiserslautern',
        
        // zip
        'zip'          => '66862',
        
        // Country's ISO code
        'country_code' => 'DE',
        
        // Name of the company - Decomment it based on your usage
            'company'   => 'ABC GmbH'
        ],
        
        /* 
        // Optional child object - Decomment it based on your usage
        'shipping' => [
        
        // First name
            'first_name'    => 'Norbert',
            
            // Last name
            'last_name'     => 'Maier',
            
            // Email
            'email'         => 'test@novalnet.de',
        
            // Street
        'street'        => 'Hauptstr',
        
        // House number
        'house_no'      => '9',
        
        // City
        'city'          => 'Kaiserslautern',
        
        // zip
        'zip'           => '66862',
        
        // Country's ISO code
        'country_code'  => 'DE',
        
        // Name of the company
            'company'       => 'A.B.C. Gerüstbau GmbH',
            
            // Telephone number
            'tel'           => '+49 089 123456',

            // Mobile number
            'mobile'        => '+49 174 7781423'
        ]
        */
    ];

    // Build Transaction Data
    $data['transaction'] = [

        // The Payment type of the transaction
        'payment_type'     => '###PAYMENT_TYPE###',
        
        // The transaction Amount in smaller currency unit
        'amount'           => '###TRANSACTION_AMOUNT###',
        
        // The transaction currency's ISO code
        'currency'         => '###TRANSACTION_CURRENCY###',
        
        // The mode of the transaction
        'test_mode'        => '###TEST_MODE###',
        
        // The mode of the transaction
        'order_no'         => '###TRANSACTION_ORDER_NUMBER###',
        
        // The date on which the purchase is initiated
        'order_date'       => '###TRANSACTION_ORDER_DATE###',
        
        // The amount in which the purchase is initiated
        'order_amount'     => '###TRANSACTION_ORDER_AMOUNT###',
        
        // The order reference of the initial purchase
        'order_reference'  => '###TRANSACTION_ORDER_REFERENCE###',
        
        // The Hook URL value for this particular transaction
        'hook_url'         => '###YOUR_HOOK_URL###',
        
        // Build Payment Data
        'payment_data'     => [
        
        // The created payment token
        'token' => '###PAYMENT_TOKEN###'   
        ]
    ];

    // Instalment data
    //$data['instalment'] = [

      // The interval between each cycle
      //'interval' => '1m',

      // Total number of cycles
      //'cycles' => '3'
    //];

    /* 
    // Subscription Data, used for processing Novalnet`s subscription - Optional object - Decomment it based on your usage
    $data['subscription'] = [

        // The interval between each cycle
        'interval'       => '1m',

        // Subscription trial interval if applicable
        'trial_interval' => '3m',

        // Subscription trial interval amount if applicable
        'trial_amount'   => '150'
    ];
    */

    /* 
    // Marketplace data, used for the affiliate`s marketplace model - Optional object - Decomment it based on your usage
    $data['marketplace'] = [

      // To submit amount for several affiliates to be booked
      'tx_split' => [
        '2261' => '20',
        '2271' => '30'
      ],  
    ];
    */

    /*
    // Affiliate Data, used for the affiliate`s revenue split model - Optional object - Decomment it based on your usage
    $data['affiliate'] = [
      
      // To submit shares for several affiliates for the same transaction
      'subvendors'=> [
        '2261' => '20',
        '2271' => '30'
      ]
    ];
    */

    // Custom Data - Optional object
    $data['custom'] = [
      
      // Shopper's selected language in shop
      "lang" => "EN",
      
      // Custom parameter's key - Optional object - Decomment it based on your usage
      // 'input1'    => 'your internal reference parameter name',
      
      // Custom parameter's value - Optional object - Decomment it based on your usage
      // 'inputval1' => 'your internal reference parameter value'
    ];

    // Convert the array to JSON string
    $json_data = json_encode($data);

    // Handle Response
    $response = send_request($json_data, $endpoint, $headers);

    function send_request($data, $url, $headers) {

        // Initiate cURL
        $curl = curl_init();
        
        // Set the url
        curl_setopt($curl, CURLOPT_URL, $url);
        
        // Set the result output to be a string
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
        // Set the POST value to true (mandatory)
        curl_setopt($curl, CURLOPT_POST, true);
        
        // Set the post fields
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        
        // Set the headers
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

        // Execute cURL
        $result = curl_exec($curl);

        // Handle cURL error
        if (curl_errno($curl)) {
            echo 'Request Error:' . curl_error($curl);
            return $result;
        }
        
        // Close cURL
        curl_close($curl);  
        
        // Decode the JSON string
        $result = json_decode($result);

        return $result;
    }
    ?>
curl --location --request POST 'https://payport.novalnet.de/v2/payment' -H 'Content-Type: application/json' -H 'Charset:utf-8' -H 'Accept: application/json' -H 'X-NN-Access-Key: ###YOUR_ENCODED_PAYMENT_ACCESS_KEY###' -d '{"merchant":{"signature":"###YOUR_API_SIGNATURE###","tariff":"###YOUR_TARIFF_ID###"},"customer":{"first_name":"Norbert","last_name":"Maier","email":"###YOUR_MAIL###","customer_ip":"###CUSTOMER_IP###","customer_no":"###CUSTOMER_NUMBER###","tel":"+49 089 123456","mobile":"+49 174 7781423","billing":{"house_no":"9","street":"Hauptstr","city":"Kaiserslautern","zip":"66862","country_code":"DE", "company": "ABC GmbH"}},"transaction":{"payment_type":"###PAYMENT_TYPE###","amount":"###TRANSACTION_AMOUNT###","currency":"###TRANSACTION_CURRENCY###","test_mode":"###TEST_MODE###","order_no":"###TRANSACTION_ORDER_NUMBER###","order_date":"###TRANSACTION_ORDER_DATE###","order_amount":"###TRANSACTION_ORDER_AMOUNT###","order_reference":"###TRANSACTION_ORDER_REFERENCE###","hook_url":"###YOUR_HOOK_URL###","payment_data":{"token":"###PAYMENT_TOKEN###"}},"custom":{"lang":"EN"}}';
#!/usr/bin/node
    // refund request script using the standard https library

    const https = require('https');
    // data sent in the body of the request
    const postData = JSON.stringify({
      "merchant": {
        "signature": "###YOUR_API_SIGNATURE###",
        "tariff": "###YOUR_TARIFF_ID###"
      },
      "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "order_date":"###TRANSACTION_ORDER_DATE###",
        "order_amount":"###TRANSACTION_ORDER_AMOUNT###",
        "order_reference":"###TRANSACTION_ORDER_REFERENCE###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
        "token": "###PAYMENT_TOKEN###"
        }
      },
      "custom": {
        "lang": "EN"
      }
    });

    const options = {
      hostname: 'payport.novalnet.de',
      port: 443,
      path: '/v2/payment',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(postData),
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
      },
    };

    const req = https.request(options, (res) => {
      console.log('statusCode:', res.statusCode);
      // console.log('headers:', res.headers);

      res.on('data', (d) => {
        process.stdout.write(d);
      });
    });

    req.on('error', (e) => {
      console.error('ERROR: ',e);
    });

    // Write data to request body
    req.write(postData);
    req.end();
#!/usr/bin/python3

    import http.client
    import json

    CONN = http.client.HTTPSConnection("payport.novalnet.de")
    PAYLOAD = json.dumps({
        "merchant": {
            "signature": "###YOUR_API_SIGNATURE###",
            "tariff": "###YOUR_TARIFF_ID###"
        },
        "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
        },
        "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "order_date":"###TRANSACTION_ORDER_DATE###",
        "order_amount":"###TRANSACTION_ORDER_AMOUNT###",
        "order_reference":"###TRANSACTION_ORDER_REFERENCE###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
          "token": "###PAYMENT_TOKEN###"
        }
        },
        "custom": {
            "lang": "EN"
        }
    })
    HEADERS = {
        'Content-Type': 'application/json',
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
    }
    CONN.request("POST", "/v2/payment", PAYLOAD, HEADERS)
    RES = CONN.getresponse()
    DATA = RES.read()
    print(DATA.decode("utf-8"))
#!/usr/lib/ruby

    require "uri"
    require "json"
    require "net/http"

    url = URI("https://payport.novalnet.de/v2/payment")

    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true

    request = Net::HTTP::Post.new(url)
    request["Content-Type"] = "application/json"
    request["Accept"] = "application/json"
    request["Charset"] = "utf-8"
    request["X-NN-Access-Key"] = "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###"
    request.body = JSON.dump({
      "merchant": {
        "signature": "###YOUR_API_SIGNATURE###",
        "tariff": "###YOUR_TARIFF_ID###"
      },
      "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
      "order_date":"###TRANSACTION_ORDER_DATE###",
      "order_amount":"###TRANSACTION_ORDER_AMOUNT###",
      "order_reference":"###TRANSACTION_ORDER_REFERENCE###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
            "token": "###PAYMENT_TOKEN###"
        }
      },
      "custom": {
        "lang": "EN"
      }
    })

    response = https.request(request)
    puts response.read_body
package main

    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )

    func main() {

      url := "https://payport.novalnet.de/v2/payment"
      method := "POST"

      payload := strings.NewReader(`{"merchant":{"signature":"###YOUR_API_SIGNATURE###", "tariff" : "###YOUR_TARIFF_ID###"},"customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "order_date":"###TRANSACTION_ORDER_DATE###",
        "order_amount":"###TRANSACTION_ORDER_AMOUNT###",
        "order_reference":"###TRANSACTION_ORDER_REFERENCE###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
            "token": "###PAYMENT_TOKEN###"
        }
      },"custom":{"lang":"EN"}}`)

      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)

      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
      req.Header.Add("Accept", "application/json")
      req.Header.Add("Charset", "utf-8")
      req.Header.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")

      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()

      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
/* List of required libraries (see also the import statements below): 
    - commons-logging-1.2.jar    
    - httpasyncclient-4.1.5.jar  
    - httpclient-4.3.3.jar  
    - httpcore-4.4.16.jar   
    - httpcore-nio-4.4.16.jar  
    - httpmime-4.5.14.jar      
    - json-20230227.jar  
    - unirest-java-3.9.00.jar
    */
    import java.io.*;

    import org.json.JSONArray;
    import org.apache.http.auth.*;
    import org.apache.http.nio.conn.*; 
    import org.apache.http.concurrent.*;
    import org.apache.http.nio.reactor.*;
    import org.apache.commons.logging.*;
    import org.apache.http.entity.mime.content.*; 
    import kong.unirest.*;


    public class TokenizationCreate {
      public static void main(String []args) throws Exception{
        Unirest.config().connectTimeout(1000).socketTimeout(2000);

        HttpResponse<String> response = Unirest.post("https://payport.novalnet.de/v2/payment")
          .header("Content-Type", "application/json")
          .header("Charset", "utf-8")
          .header("Accept", "application/json")
          .header("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")
          .body("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\","order_date":"###TRANSACTION_ORDER_DATE###","order_amount":"###TRANSACTION_ORDER_AMOUNT###","order_reference":"###TRANSACTION_ORDER_REFERENCE###",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}},\"custom\":{\"lang\":\"EN\"}}")
          .asString();
        
        System.out.println(response.getBody());
      }
    }
using System;
    using System.Net.Http;

    namespace TokenizationCreateRequest
    {
      public class TokenizationCreate {

        public string check_Tokenization_create_request() {

          var client = new HttpClient();
          var request = new HttpRequestMessage(HttpMethod.Post, "https://payport.novalnet.de/v2/payment");

          request.Headers.Add("Charset", "utf-8");
          request.Headers.Add("Accept", "application/json");
          request.Headers.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###");
          var content = new StringContent("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\","order_date":"###TRANSACTION_ORDER_DATE###","order_amount":"###TRANSACTION_ORDER_AMOUNT###","order_reference":"###TRANSACTION_ORDER_REFERENCE###",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}},\"custom\":{\"lang\":\"EN\"}}", null, "application/json");

          request.Content = content;
          var response = client.SendAsync(request).Result;
          response.EnsureSuccessStatusCode();
          var responseText = response.Content.ReadAsStringAsync().Result;
          Console.WriteLine(responseText);
          return responseText;
        }
        public static void Main() {
          var testRequest = new TokenizationCreate();
          testRequest.check_Tokenization_create_request(); 
        }

      }
    }
Tokenization Followup
<?php

    // Need to enter your payment access key value here
    $payment_access_key = '###YOUR_PAYMENT_ACCESS_KEY###';

    // Now, have to encode the $payment_access_key value with the base64 encode
    $encoded_data        = base64_encode($payment_access_key);

    // Action Endpoint 
    $endpoint           = 'https://payport.novalnet.de/v2/payment';

    // Build the Headers array
    $headers = [

      // The Content-Type should be "application/json"
        'Content-Type:application/json',
        
        // The charset should be "utf-8"
        'Charset:utf-8', 
        
        // Optional
        'Accept:application/json', 
        
        // The formed authenticate value (case-sensitive)
        'X-NN-Access-Key:' . $encoded_data
    ];

    $data = [];

    // Build Merchant Data
    $data['merchant'] = [

      // Your API signature value
        'signature' => '###YOUR_API_SIGNATURE###', 
        
        // Your corresponding tariff ID
        'tariff'    => '###YOUR_TARIFF_ID###'
    ];

    // Build Customer Data
    $data['customer'] = [

        // Shopper's first name
        'first_name'  => 'Norbert',
        
        // Shopper's last name
        'last_name'   => 'Maier', 
        
        // Shopper's email
        'email'       => '###YOUR_MAIL###', 

        // Shopper's Ip address
        'customer_ip' => '###CUSTOMER_IP###',
        
        // Shopper's customer number from the shop
        'customer_no' => '###CUSTOMER_NUMBER###',
        
        // Shopper's Telephone number
        'tel'         => '+49 089 123456',
        
        // Shopper's Mobile number 
        'mobile'      => '+49 174 7781423',
        
        // Shopper's birthdate value YYYY-MM-DD - Decomment it based on your usage
        // 'birth_date'  => '1992-06-10',
        
        // Shopper's gender - Decomment it based on your usage
        // 'gender'      => 'u',

        // Shopper's company vat ID value - Decomment it based on your usage
        // 'vat_id'      => 'DE123456',
        
        // Shopper's company regestration number - Decomment it based on your usage
        // 'reg_no'      => 'HRB1234',
        
        // Shopper's company tax ID value - Decomment it based on your usage
        // 'tax_id'      => '123/123/123',
        
        // Shopper's session value - Decomment it based on your usage
        // 'session'     => 'fedgrgst5653653hdgfsvgdsf622627e',
        
        // Shopper's fax number - Decomment it based on your usage
        // 'fax'         => '+49 89 654321',

        // Shopper's billing address
        'billing'     => [
        
        // House number
        'house_no'     => '9',
        
        // Street
        'street'       => 'Hauptstr',
        
        // City
        'city'         => 'Kaiserslautern',
        
        // zip
        'zip'          => '66862',
        
        // Country's ISO code
        'country_code' => 'DE',
        
        // Name of the company - Decomment it based on your usage
            'company'   => 'ABC GmbH'
        ],
        
        /* 
        // Optional child object - Decomment it based on your usage
        'shipping' => [
        
        // First name
            'first_name'    => 'Norbert',
            
            // Last name
            'last_name'     => 'Maier',
            
            // Email
            'email'         => 'test@novalnet.de',
        
            // Street
        'street'        => 'Hauptstr',
        
        // House number
        'house_no'      => '9',
        
        // City
        'city'          => 'Kaiserslautern',
        
        // zip
        'zip'           => '66862',
        
        // Country's ISO code
        'country_code'  => 'DE',
        
        // Name of the company
            'company'       => 'A.B.C. Gerüstbau GmbH',
            
            // Telephone number
            'tel'           => '+49 089 123456',

            // Mobile number
            'mobile'        => '+49 174 7781423'
        ]
        */
    ];

    // Build Transaction Data
    $data['transaction'] = [

        // The Payment type of the transaction
        'payment_type'     => '###PAYMENT_TYPE###',
        
        // The transaction Amount in smaller currency unit
        'amount'           => '30000',
        
        // The transaction currency's ISO code
        'currency'         => '###TRANSACTION_CURRENCY###',
        
        // The mode of the transaction
        'test_mode'        => '###TEST_MODE###',
        
        // The mode of the transaction
        'order_no'         => '###TRANSACTION_ORDER_NUMBER###',
        
        // The Hook URL value for this particular transaction
        'hook_url'         => '###YOUR_HOOK_URL###',
        
        // Build Payment Data
        'payment_data'     => [
        
        // The created payment token
        'token' => '###PAYMENT_TOKEN###'   
        ]
    ];

    // Instalment data
    $data['instalment'] = [

      // The interval between each cycle
      'interval' => '1m',

      // Total number of cycles
      'cycles' => '3'
    ];

    /* 
    // Subscription Data, used for processing Novalnet`s subscription - Optional object - Decomment it based on your usage
    $data['subscription'] = [

        // The interval between each cycle
        'interval'       => '1m',

        // Subscription trial interval if applicable
        'trial_interval' => '3m',

        // Subscription trial interval amount if applicable
        'trial_amount'   => '150'
    ];
    */

    /* 
    // Marketplace data, used for the affiliate`s marketplace model - Optional object - Decomment it based on your usage
    $data['marketplace'] = [

      // To submit amount for several affiliates to be booked
      'tx_split' => [
        '2261' => '20',
        '2271' => '30'
      ],  
    ];
    */

    /*
    // Affiliate Data, used for the affiliate`s revenue split model - Optional object - Decomment it based on your usage
    $data['affiliate'] = [
      
      // To submit shares for several affiliates for the same transaction
      'subvendors'=> [
        '2261' => '20',
        '2271' => '30'
      ]
    ];
    */

    // Custom Data - Optional object
    $data['custom'] = [
      
      // Shopper's selected language in shop
      "lang" => "EN",
      
      // Custom parameter's key - Optional object - Decomment it based on your usage
      // 'input1'    => 'your internal reference parameter name',
      
      // Custom parameter's value - Optional object - Decomment it based on your usage
      // 'inputval1' => 'your internal reference parameter value'
    ];

    // Convert the array to JSON string
    $json_data = json_encode($data);

    // Handle Response
    $response = send_request($json_data, $endpoint, $headers);

    function send_request($data, $url, $headers) {

        // Initiate cURL
        $curl = curl_init();
        
        // Set the url
        curl_setopt($curl, CURLOPT_URL, $url);
        
        // Set the result output to be a string
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
        // Set the POST value to true (mandatory)
        curl_setopt($curl, CURLOPT_POST, true);
        
        // Set the post fields
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        
        // Set the headers
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

        // Execute cURL
        $result = curl_exec($curl);

        // Handle cURL error
        if (curl_errno($curl)) {
            echo 'Request Error:' . curl_error($curl);
            return $result;
        }
        
        // Close cURL
        curl_close($curl);  
        
        // Decode the JSON string
        $result = json_decode($result);

        return $result;
    }
    ?>
curl --location --request POST 'https://payport.novalnet.de/v2/payment' -H 'Content-Type: application/json' -H 'Charset:utf-8' -H 'Accept: application/json' -H 'X-NN-Access-Key: ###YOUR_ENCODED_PAYMENT_ACCESS_KEY###' -d '{"merchant":{"signature":"###YOUR_API_SIGNATURE###","tariff":"###YOUR_TARIFF_ID###"},"customer":{"first_name":"Norbert","last_name":"Maier","email":"###YOUR_MAIL###","customer_ip":"###CUSTOMER_IP###","customer_no":"###CUSTOMER_NUMBER###","tel":"+49 089 123456","mobile":"+49 174 7781423","billing":{"house_no":"9","street":"Hauptstr","city":"Kaiserslautern","zip":"66862","country_code":"DE", "company": "ABC GmbH"}},"transaction":{"payment_type":"###PAYMENT_TYPE###","amount":"30000","currency":"###TRANSACTION_CURRENCY###","test_mode":"###TEST_MODE###","order_no":"###TRANSACTION_ORDER_NUMBER###","hook_url":"###YOUR_HOOK_URL###","payment_data":{"token":"###PAYMENT_TOKEN###"}} ,"instalment":{"interval":"1m" , "cycles" : "3"} ,"custom":{"lang":"EN"}}';
#!/usr/bin/node

    const https = require('https');
    // data sent in the body of the request
    const postData = JSON.stringify({
      "merchant": {
        "signature": "###YOUR_API_SIGNATURE###",
        "tariff": "###YOUR_TARIFF_ID###"
      },
      "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
        "token": "###PAYMENT_TOKEN###"
        }
      },
      "instalment":{"interval":"1m" , "cycles" : "3"},
      "custom": {
        "lang": "EN"
      }
    });

    const options = {
      hostname: 'payport.novalnet.de',
      port: 443,
      path: '/v2/payment',
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(postData),
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
      },
    };

    const req = https.request(options, (res) => {
      console.log('statusCode:', res.statusCode);
      // console.log('headers:', res.headers);

      res.on('data', (d) => {
        process.stdout.write(d);
      });
    });

    req.on('error', (e) => {
      console.error('ERROR: ',e);
    });

    // Write data to request body
    req.write(postData);
    req.end();
#!/usr/bin/python3

    import http.client
    import json

    CONN = http.client.HTTPSConnection("payport.novalnet.de")
    PAYLOAD = json.dumps({
        "merchant": {
            "signature": "###YOUR_API_SIGNATURE###",
            "tariff": "###YOUR_TARIFF_ID###"
        },
        "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
        },
        "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
          "token": "###PAYMENT_TOKEN###"
        }
        },
      "instalment":{"interval":"1m" , "cycles" : "3"},
        "custom": {
            "lang": "EN"
        }
    })
    HEADERS = {
        'Content-Type': 'application/json',
        'Charset': 'utf-8',
        'Accept': 'application/json',
        'X-NN-Access-Key': '###YOUR_ENCODED_PAYMENT_ACCESS_KEY###'
    }
    CONN.request("POST", "/v2/payment", PAYLOAD, HEADERS)
    RES = CONN.getresponse()
    DATA = RES.read()
    print(DATA.decode("utf-8"))
#!/usr/lib/ruby

    require "uri"
    require "json"
    require "net/http"

    url = URI("https://payport.novalnet.de/v2/payment")

    https = Net::HTTP.new(url.host, url.port)
    https.use_ssl = true

    request = Net::HTTP::Post.new(url)
    request["Content-Type"] = "application/json"
    request["Accept"] = "application/json"
    request["Charset"] = "utf-8"
    request["X-NN-Access-Key"] = "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###"
    request.body = JSON.dump({
      "merchant": {
            "signature": "###YOUR_API_SIGNATURE###",
            "tariff": "###YOUR_TARIFF_ID###"
        },
        "customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
          "token": "###PAYMENT_TOKEN###"
        }
      },
      "instalment":{"interval":"1m" , "cycles" : "3"},
      "custom": {
        "lang": "EN"
      }
    })

    response = https.request(request)
    puts response.read_body
package main

    import (
      "fmt"
      "strings"
      "net/http"
      "io/ioutil"
    )

    func main() {

      url := "https://payport.novalnet.de/v2/payment"
      method := "POST"

      payload := strings.NewReader(`{"merchant":{"signature":"###YOUR_API_SIGNATURE###", "tariff" : "###YOUR_TARIFF_ID###"},"customer": {
        "gender": "u",
        "first_name": "Max",
        "last_name": "Mustermann",
        "email": "###YOUR_MAIL###",
        "customer_ip": "###CUSTOMER_IP###",
        "customer_no": "###CUSTOMER_NUMBER###",
        "birth_date": "1992-06-10",
        "billing": {
          "street": "Musterstr",
          "house_no": "2",
          "city": "Musterhausen",
          "zip": "12345",
          "country_code": "DE",
          "company": "ABC GmbH"
        }
      },
      "transaction": {
        "payment_type": "###PAYMENT_TYPE###",
        "amount": "###TRANSACTION_AMOUNT###",
        "currency": "###TRANSACTION_CURRENCY###",
        "order_no": "###TRANSACTION_ORDER_NUMBER###",
        "test_mode": "###TEST_MODE###",
        "hook_url":"###YOUR_HOOK_URL###",
        "payment_data": {
            "token": "###PAYMENT_TOKEN###"
        }
      },
      "instalment":{"interval":"1m" , "cycles" : "3"},"custom":{"lang":"EN"}}`)

      client := &http.Client {
      }
      req, err := http.NewRequest(method, url, payload)

      if err != nil {
        fmt.Println(err)
        return
      }
      req.Header.Add("Content-Type", "application/json")
      req.Header.Add("Accept", "application/json")
      req.Header.Add("Charset", "utf-8")
      req.Header.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")

      res, err := client.Do(req)
      if err != nil {
        fmt.Println(err)
        return
      }
      defer res.Body.Close()

      body, err := ioutil.ReadAll(res.Body)
      if err != nil {
        fmt.Println(err)
        return
      }
      fmt.Println(string(body))
    }
/* List of required libraries (see also the import statements below): 
    - commons-logging-1.2.jar    
    - httpasyncclient-4.1.5.jar  
    - httpclient-4.3.3.jar  
    - httpcore-4.4.16.jar   
    - httpcore-nio-4.4.16.jar  
    - httpmime-4.5.14.jar      
    - json-20230227.jar  
    - unirest-java-3.9.00.jar
    */
    import java.io.*;

    import org.json.JSONArray;
    import org.apache.http.auth.*;
    import org.apache.http.nio.conn.*; 
    import org.apache.http.concurrent.*;
    import org.apache.http.nio.reactor.*;
    import org.apache.commons.logging.*;
    import org.apache.http.entity.mime.content.*; 
    import kong.unirest.*;


    public class TokenizationRequest {
      public static void main(String []args) throws Exception{
        Unirest.config().connectTimeout(1000).socketTimeout(2000);

        HttpResponse<String> response = Unirest.post("https://payport.novalnet.de/v2/payment")
          .header("Content-Type", "application/json")
          .header("Charset", "utf-8")
          .header("Accept", "application/json")
          .header("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###")
          .body("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}}, \"instalment\":{\"interval\":\"1m\" , \"cycles\" : \"3\"},\"custom\":{\"lang\":\"EN\"}}")
          .asString();
        
        System.out.println(response.getBody());
      }
    }
using System;
    using System.Net.Http;

    namespace TokenizationRequest
    {
      public class TokenizationRequest {

        public string check_Tokenization_request() {

          var client = new HttpClient();
          var request = new HttpRequestMessage(HttpMethod.Post, "https://payport.novalnet.de/v2/payment");

          request.Headers.Add("Charset", "utf-8");
          request.Headers.Add("Accept", "application/json");
          request.Headers.Add("X-NN-Access-Key", "###YOUR_ENCODED_PAYMENT_ACCESS_KEY###");
          var content = new StringContent("{\"merchant\":{\"signature\":\"###YOUR_API_SIGNATURE###\", \"tariff\" : \"###YOUR_TARIFF_ID###\"},\"customer\":{\"customer_ip\":\"###CUSTOMER_IP###\",\"gender\":\"u\", \"first_name\": \"Max\", \"last_name\": \"Mustermann\", \"email\": \"###YOUR_MAIL###\", \"birth_date\":\"1983-07-02\",\"billing\":{\"street\":\"Musterstr\",\"house_no\":\"2\",\"city\":\"Musterhausen\",\"zip\":\"12345\",\"country_code\":\"DE\",\"company\":\"ABC GmbH\"}},\"transaction\":{\"payment_type\": \"###PAYMENT_TYPE###\",\"amount\":\"###TRANSACTION_AMOUNT###\",\"currency\":\"EUR\",\"order_no\":\"###TRANSACTION_ORDER_NUMBER###\",\"test_mode\":\"###TEST_MODE###\",\"hook_url\":\"###YOUR_HOOK_URL###\",\"payment_data\":{\"token\":\"###PAYMENT_TOKEN###\"}},\"instalment\":{\"interval\":\"1m\" , \"cycles\" : \"3\"},\"custom\":{\"lang\":\"EN\"}}", null, "application/json");

          request.Content = content;
          var response = client.SendAsync(request).Result;
          response.EnsureSuccessStatusCode();
          var responseText = response.Content.ReadAsStringAsync().Result;
          Console.WriteLine(responseText);
          return responseText;
        }
        public static void Main() {
          var testRequest = new TokenizationRequest();
          testRequest.check_Tokenization_request(); 
        }

      }
    }