Skip to main content

Dynamic pricing

Overview

Dynamic pricing (with base price) is a basic charge configuration. 2Checkout supports both one-time and recurring dynamic pricing, and offers the possibility to control various cost components through product options pricing. 

Examples:

  • A $99.99 recurring, annual anti-malware subscription.
  • A recurring, monthly $20 subscription to a service providing credit score information.
  • A flat, one-time fee of $1,000 for the license to a CRM software. 

If the pricing configuration has a base price but the customer should be able to alter it by choosing from product options (like subscription types, number of users, platforms), then enter a base price and choose between Net and Gross price type. Extra pricing options can be dynamically added after the product is added, based on formulas from the 2Checkout system.

Availability

All 2Checkout accounts. 

Requirements

Create at least a product/subscription plan before defining pricing. 

Type

  • Net: without taxes - 2Checkout applies extra taxes to the default price, such as Tax/VAT for US/EU orders during  the ordering process. 
  • Gross: with taxes included - 2Checkout takes the taxes out of the costs paid by shoppers, without modifying the price during the ordering process. 

Currency

When defining product prices you can:

  1. Configure the price only for the default currency - 2Checkout converts amounts in the cart based on the currency selected by/for shoppers. Currency rates are available here: https://secure.2checkout.com/content/...p?CURRENCY=USD

    This is an XML schema with the corresponding values for the other currencies compared to the one supplied in the CURRENCY query parameter.

  2. Specify prices in all currencies available for your account - 2Checkout serves shoppers the prices for all the currencies you set up without converting the amounts. 

Basic setup

You can set up basic pricing when first defining your product and then edit the charge configuration as well as utilize advanced charge capabilities. 

 

  1. Choose the default currency, select the base price option and enter the product price.
  2. After filling in the base price for your product, you can:
    • Let the 2Checkout platform auto convert it to other currencies during the ordering process;
    • Manually set the price for each currency.
  3. If you choose to manually enter the price for some currencies only, then 2Checkout automatically converts the ones you left blank from the default currency during the ordering processing.
  4. Extra taxes may be applied to the base price during the ordering process, such as VAT for EU orders, or sales tax for the US. You can choose not to have country specific taxes added to the price in the shopping cart by selecting with taxes included (Gross). This means that the country specific tax fees will be pulled from the product price during ordering process. With the Net option, the 2Checkout system will charge shoppers VAT and sales taxes, when these apply, in addition to the price of the product, and deal with tax management on your behalf. 

Advanced setup

Access advanced pricing/charge options by editing product and navigating to the Pricing tab. This area enables you to edit and create pricing configurations and create charge models that include:

  • Volume pricing
  • Custom recurring charges
  • Advanced pricing options
  • Pay-per-use (Metered billing)
  • Tiered charges

Track affiliate traffic with custom parameters

Overview

If you are using our Avangate Affiliate Network it's important to understand the details related to the quality and potential of the traffic generated by your affiliates.

To monitor and analyze the affiliate-referred traffic, you might be using any analytics tools such as Google Analytics, and/or Adobe Analytics, but not only. Now you can do this by using any type of parameters you want, including, but not only, UTM parameters. These are automatically parsed by both Google Analytics and Adobe Analytics, so you are able to populate standard and custom analytics reports. 

Availability

Available upon request to merchants using the Avangate Affiliate Network.

Benefits

  • Full flexibility in defining the name and the value of the parameters (both static and dynamic)
  • Easy integration with Google/ Adobe Analytics or any other analytics tool merchants use
  • No need for affiliates to perform additional actions when generating new links
  • No need for affiliates to change previously generated links

Workflow

If you are using an affiliate network (including Avangate Affiliate Network) and you want to understand the type of users each network brings, as well as analyze the traffic crossing between affiliates (using Google Analytics or any other analytics tool) you can easily set up any type of parameters, including UTM (Universal Tag Manager) parameters.

  1. Log into your Merchant Control Panel.
  2. Navigate to Affiliate network → Settings.
  3. Click on the Tracking settings tab to define custom parameters.
  4. Click on Add parameter to add the static or dynamic parameters that will be used to identify traffic generated by all networks (e.g. utm_source and utm_medium).

List of parameters_1.png

5. Input the parameter Name and Value (e.g. utm_source = AVAffiliate, utm_medium = AffiliateID), and click on Save changes.

Add a parameter.png

6. To modify a parameter, go to the list of Available parameters and click on the Edit button in the column Actions. 

7. Then click on Save changes.

Edit a parameter.png

Affiliate links triggering merchant website/landing page will be available through the above set parameters via any analytics tool.

Affiliate links triggering cart/product pages will populate these parameters in the omniture parameter collection (that can be easily integrated with either Google Analytics or any other analytics tool).

The omniture_vars Object

The 2Checkout shopping cart pages use an object called omniture_vars, which contains a variety of parameters that offer information about the particularities of the cart and the products in it. The object can be accessed by typing “omniture_vars” in the browser console.

The object contains detailed information about the products in the cart (examples: product name, id, price, product group, pricing options, whether the product is an upsell or a cross-sell, etc.), as well as information about the configuration of the shopping cart, such as cart currency, language, the selected country, the id of the template used, whether the cart flow has a review page, whether the cart is in test mode, or whether the cart link is generated by a 2Checkout affiliate.

The values of the parameters in the omniture_vars object are updated when the page refreshes. For example, if the currency is changed in the cart, the page refreshes and the omniture_vars object is updated with the new value for the currency.

Parameters from omniture_vars can be used for custom tracking, for example for sending custom dimensions data to Google Analytics with specific information about the cart configuration.

Reducing churn through online retention strategies

Overview

A common pitfall throughout the eCommerce landscape is represented by focusing on customer base growth at the expense of neglecting existing customers. While growing your customer base is key to a business's success, customer retention is equally important, especially from a financial standpoint. One of the most frequent mistakes businesses do in terms of customer retention is ignoring the customers once they brought them on board.

Analyzing customer data from hundreds of companies in our portfolio, we’ve concluded that shoppers are much more invested in continuing their subscriptions when approached through proactive retention strategies. As a result, online renewals proved to be more than twice as effective as offline ones, while automatic renewals saved three times more subscriptions than manual ones.

While developing your retention subscriber retention strategy, make sure to clearly inform your users about the incurred charges and billing cycles, and give them the ability to easily cancel automatic renewals, should they not need them. Keep in mind that placing your customers in control of their subscription management process is paramount to preventing and reducing your refunds and/or chargeback rates.

2Checkout’s retention tools introduce a smart and easy way to reduce customer churn and gain useful insights about what drives customers to cancel automatic renewals. Use 2Checkout’s out of the box retention capabilities to:

  • Leverage proactive subscription enrollment to increase renewals and generate additional revenue. Use special deals to deepen loyalty and incentivize your customers to enroll in automatic subscription renewals.
  • Decrease churn and prevent recurring revenue from “leaking” by converting cancelations into continued subscriptions. Offer the right incentives to the customers that decided to cancel their subscriptions and make them change their mind at the point of exit.
  • Turn threats into opportunities by capturing your customers’ feedback at the point of cancelation.

Auto-renewal enrollment

If your customers purchased subscriptions from you and disabled the automatic renewal upon purchase, try to convert them to a recurring billing plan. An easy way to increase your revenue and customer retention rate is by proactively incentivizing your customers to enroll in auto-renewal campaigns. Do this via 2Checkout’s retention tools and configure discounts for one or multiple billing cycles. Your customers see the discounts in 2Checkout myAccount and they can quickly enable automatic renewal from their account.

Important: 2Checkout triggers auto-renewal enrollment campaigns only for products/subscriptions paid for with online payment methods.

2Checkout recommendations

Based on existing auto-renewal enrollment campaigns, 2Checkout recommends starting with a 15% discount for one billing cycle.

2Checkout vendors have successfully configured proactive enrollment campaigns offering discounts from 15% up to 25% for one billing cycle. This ultimately led to increases in sales of up to three times the value of the awarded discounts without counting the entire customer lifecycle value.

We recommend testing such campaigns for specific products with different time intervals and with different tiers of discounts. This way you can choose the best discounts for your customers and increase revenue and their lifetime value.

Behavior

Use promotions to enroll your customers in auto-renewal campaigns by leveraging 2Checkout myAccount. Your customers will see campaign teasers such as the one below.

Churn prevention

Subscribers enrolled in auto-renewal campaigns are 3.5 times more likely to continue their subscriptions. Churn prevention tools help you prevent recurring revenue from “leaking” by converting terminations into continued subscriptions.

2Checkout gives you an easy way to configure churn prevention campaigns so that you can:

  • Engage and collect feedback from your churning subscribers to optimize your products, marketing campaigns, and business operations. You can extract valuable information from cancellation reasons, such as pricing, feature ideas, competitor information, or just service quality improvements.
  • Solidify your recurring revenue by offering discounts to customers who want to cancel recurring billing, incentivizing them to keep auto-renewal enabled for their subscriptions.

2Checkout recommendations

Based on existing churn prevention campaigns, 2Checkout recommends asking for customer feedback and subsequently offers a 15% to 35% discount for one billing cycle. This configuration ultimately led to an increase in recovered volumes of more than 4 times the value of the awarded discounts, not considering the entire customer lifecycle value.

Behavior

Once you've started the campaign, your shoppers are notified in myAccount whenever they try to stop subscription auto-renewals for the products included in the campaign. You can customize the message displayed to your shoppers and choose whether or not to gather feedback.

The first pop-up displays either the default message shown below or the one you customize.

The next pop-up asks for a cancellation reason and shopper feedback (if you choose to gather it).

The last pop-up shows the discount that you offered for keeping the auto-renewal.

Should customers accept your discount, 2Checkout renews the subscription at the specified discounted price and improves your churn rate.

Conclusion

2Checkout’s retention tools are a key feature in increasing your revenue and customer lifetime value through customer incentives. At the same time, they can help you get important insights on how your customers see your products, what they love and/or dislike about them and what you can do to stay competitive.

Make sure you configure retention campaigns and test multiple scenarios. Different customers have different needs, so they might react differently to unique discounts. Incentivize them to keep their subscriptions active and fine-tune your retention campaigns for maximum impact on your revenue and churn rate.

Import usage from CSV

Overview

Upload usage data through the 2Checkout API from a CSV (comma-separated values) file. 2Checkout will capture the parameters sent and import the usage data into the system. Once the upload process is complete, you'll be able to access the uploaded file in the Usage area of the Merchant Control Panel.

Use the importUsageFromCsv method via SOAP APIv6 to upload usage from a CSV file.

Set the DATE parameter to GMT+2 time zone, when making the API call to the Usage Upload endpoint.

Method and URL

POSThttps://api.2checkout.com/subscription/payperusage/receiver/index.php

Parameters

Parameters

Type

Required/Optional

Description

Used in HASH validation*

merchant

String

Required

Your unique 2Checkout merchant code. View merchant code.

YES

secret_key

String

Required

The secret key associated to your account. View secret key.

YES

file_MD5

String

Required

The md5 hash of the CSV file used to upload usage.

YES

hash

String

Required

The MD5 hmac key for the request.

N/A

UsageStart Datetime Required The datetime when the usage started; can be the same as UsageEnd. For existing records, this will be updated to time 00:00:00. N/A
UsageEnd Datetime Required The datetime when the usage ended and was recorded.  For existing records this will be updated to time 23:59:59, this will be enforced in the CSV upload as well. N/A
OptionCode String Required Unique codes you provided as identifiers of specific Pricing Options in the Usage Scale Pricing Options Group scheme. Example: metered pricing.   N/A
Description String Optional It can be used to store a short merchant comment of the usage being uploaded. This can be anything, from the source of usage (mobile, web, etc.), to why changes occurred, etc. Example: Subscription usage for September. N/A
SubscriptionRef String Required Unique code that represents a subscription. Example: 83FE4FEF2. N/A

Request Example

<?php
//hmac
$date             = date("Y-m-d");
$fileReceived_md5 = md5_file("[Path to the CSV file used for usage upload]");
$merchantCode     = "";
/* 2Checkout Code */
$merchantKey      = "";
/* Merchant Secret Key */
$hashParams       = "MERCHANT={$merchantCode}&FILE={$fileReceived_md5}&DATE={$date}";
$hmac             = hash_hmac('md5', $hashParams, $merchantKey);
?>

<html>
<body>
<form method="post" action="https://api.2checkout.com/subscription/payperusage/receiver/index.php" enctype="multipart/form-data">
<input type="text" name="MERCHANT" value="<?php
echo $merchantCode;
?>" /><br />
<input type="text" name="HASH" value="<?php
echo $hmac;
?>" /><br />
<input type="file" name="OPTIONS" /><br />
<input type="hidden" name="FILE_MD5" value="<?php
echo $fileReceived_md5;
?>" />
<input type="hidden" name="DATE" value="<?php
echo $date;
?>" />
<input type="submit" /><br />
</form>
</body>
</html>

Error handling

Message code

Message description

Resolution

1

The upload operation completed successfully.

N/A

Invalid account!

The merchant code provided does not belong to a vendor in the 2Checkout system.

Please check your merchant code and make sure you're using the correct version. View merchant code.

Bad signature on the received file!

The upload CSV file's md5 signature is different than the one sent as a parameter.

Please make sure that you're using the correct md5 signature for the CSV file, or that you're uploading the CSV file for which the signature was generated.

Invalid signature

The HMAC calculated by the 2Checkout system is different from the one you're sending.

Please make sure that all parameters use correct values.

Remove promotion sources

Overview

Use the deletePromotionSources method to define new sources for an existing promotion.

Parameters

Parameter Type/Description

sessionID

Required (string)

 

Output of the Login method.

promotionCode

Required (string)

 

The code corresponding to the promotion that you want to remove sources from.

promotionSources

Required (string array)

 

Array of strings defining the promotion sources to be removed.

Response

Parameter Type/Description

status

Boolean

 

True or false

Request

<?php

function callRPC($Request, $host, $Debug = true) {
    $curl = curl_init($host);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSLVERSION, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Accept: application/json'));
    $RequestString = json_encode($Request);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $RequestString);
    if ($Debug) {
        $RequestString;
    }
    $ResponseString = curl_exec($curl);
    if ($Debug) {
        $ResponseString;
    }
    if (!empty($ResponseString)) {
        var_dump($ResponseString);
        $Response = json_decode($ResponseString);
        if (isset($Response->result)) {
            return $Response->result;
        }
        if (!is_null($Response->error)) {
            var_dump($Request->method, $Response->error);
        }
    } else {
        return null;
    }
}

$host = 'https://api.avangate.com/rpc/3.1/';

$merchantCode = "YOUR_MERCHANT_CODE"; // your account's merchant code available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php
$key = "YOUR_SECRET_KEY"; // your account's secret key available in the 'System settings' area of the cPanel: https://secure.avangate.com/cpanel/account_settings.php

$string = strlen($merchantCode) . $merchantCode . strlen(gmdate('Y-m-d H:i:s')) . gmdate('Y-m-d H:i:s');
$hash = hash_hmac('md5', $string, $key);

$i = 1;

$jsonRpcRequest = new stdClass();
$jsonRpcRequest->jsonrpc = '2.0';
$jsonRpcRequest->method = 'login';
$jsonRpcRequest->params = array($merchantCode, gmdate('Y-m-d H:i:s'), $hash);
$jsonRpcRequest->id = $i++;

$sessionID = callRPC($jsonRpcRequest, $host);

// Promotion code corresponding to the promotion you want to remove sources from
$promotionCode = '';

// Sources array with the source values 
$sources = ['source1', 'source2'];

$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'deletePromotionSources',
'params' => array($sessionID, $promotionCode, $sources)
);
var_dump (callRPC($jsonRpcRequest, $host));

Accept and pay proposal

Overview

Once a proposal is created and sent to a customer, they need to perform a few steps to accept the offer.

Accept and pay proposal without net terms

Below are the steps a customer needs to perform to accept and pay for a simple proposal.

Customer flow

As a customer, you need to follow these steps to accept and pay for a simple proposal without net terms:

  1. Go to your email inbox and click on the email titled <Merchant Name> sent you a proposal.
  2. In the email click Review Proposal.

reject proposal_1.png

3. The Proposal Accept Page of the proposal will open after the previous step.

accept and pay proposal_1.png

4. Preview the proposal (the prices are always NET whereas in CPQ they are a combination of net and gross).

5. Click on I agree with the terms of this proposal after checking out the terms pop-up window.

6. If your set-up is Create and send Proposal without Net Terms 

  • With 1 contact and Use same contact for invoicing = ON (SellTo=BillTo)
    • Click Continue to Payment
  • With 2 contacts and Use same contact for invoicing = OFF (SellTo<>BillTo)
    • Click Accept
    • You will be taken to a Thank you page
    • Go back to the email editor and refresh the inbox page
    • Click on the email titled Pending Payment for <Merchant Name> Proposal
    • Click Finalize payment

SellTo =  The contact person from the  side of the client who can approve the offer line items and  who is usually the main contact for the client.

BillTo = The contact that is going to receive invoices and make the payments on behalf of SellTo.

Sometimes, SellTo and BillTo  can be the same person and this is shown in the offer creation page.

Test the customer experience using test payment details

1. The Proposal Payment Page (add test to the payment page URL) will open and you can select the credit card option and use the following payment details:

  • Credit card no: 4111 1111 1111 1111
  • Expiration: 12/23
  • CCV: 123
  • Cardholder: John Doe

2. Click Request billing information changes if you want to edit the billing details.

3. Click Pay to finish the payment and get a confirmation screen.

image-20200819-095327.png

Merchant flow

CPQ check status

In the CPQ app you will be able to see the progression of the offer as follows:

  1. Click on the offer you have sent to the customer.
  2. After each of the above steps, click Refresh and check the Offer status field on the top section.
Offer Status Description
Sent When receiving the link for the Proposal UI.
Accepted When accepting the proposal in the scenario with 2 contacts

Closed Won/Pending Payment

When finishing payment.
Closed Won/Paid

Payment is finalized.

After Closed Won/Paid you can also check out the first billing cycle on the Opportunity and see that it is paid

Accept and pay proposal with net terms

This flow shows the steps a customer needs to perform in order to accept and pay for a proposal with net terms, as well as the steps you, as a salesperson, need to take in order to upload the necessary documents for net terms proposals.

Customer flow

  1. Go to your email inbox and click on the email titled Upload order form for <Merchant name>.
  2. Download the PDF from the link in the email, print, sign it, and send it back to the email address mentioned in the email.

accept and pay proposal.png

3. You can also open a Net terms payment and pay the proposal:

  • You will receive an email to make the Net terms payment titled Pay order form from <merchant name>.
  • Clicking the link in the email takes you to a payment page.
  • On the Payment page, select credit card and input your details:
    • Credit card number
    • Expiration date
    • CCV
    • Cardholder name
  • Finalize the payment.

image-20200821-160821.png

 

Merchant Flow

Upload Order form in the CPQ app

  1. Go back to the Offer screen.
  2. In the top right corner of the section, click on Upload Documents.
  3. Make sure that the Offer is in status Closed Won/Pending Payment. If not, the button will not appear.
  4. In case the button doesn’t appear after more than 5 minutes, please contact support.

Upload Order form in 2Checkout

1. In the Upload window, select one of the "Choose a file" buttons and upload the PDF proposal.

2. Enter a PO number (optional).

  • This field will be used for invoicing with a PO number.

3. Click Upload files to finish the process.

CPQ check status

In the CPQ app, you can see the progression of the offer as follows:

1. Click on the offer you have sent to the customer.

2. After each of the above steps, click Refresh and check the Offer status field on the top section.

Offer Status Description
Sent When sending the proposal.
Closed Won/Pending payment After uploading the documents as a salesperson on the 2Checkout page.
Closed Won/Paid

When finishing payment. 

After Closed Won/Paid you can also check out the first billing cycle on the Opportunity and see that it is paid.

Billing Cycles

1. When an offer is in "Placed" status, for each Offer Line Item, billing cycles are created. The number of billing cycles depends on the contract period.

2. The created billing cycles can be found on each Offer Line item of the offer by opening the Line Item and navigating to the related list.

Billings Cycles created per each Offer Line Item.png

3. Fill in the information on the billing cycles. If a cycle is paid, its status will be changed to "Complete".

4. In order to see how much was paid and how much there is still to be paid, check the Offer Line item product and see the Paid Billing Cycles and Remaining Billing Cycles fields.

Paid Billing Cycles vs the Remaining Billing Cycles.png

paid billing cycles_1.png

 

Order field

Overview

Use this object to retrieve information about additional order/product fields. 

Parameters

AdditionalField

Object

Label

String

 

Field text.

Code

String

 

Field identifier. Alpha-numeric chars, underscores and dashes.

Type

String

 

Field type:

  • LISTBOX
  • CHECKBOX
  • TEXT
  • HIDDEN

ApplyTo

Sting

 

  • ORDER
  • PRODUCT

Values

Array of values

 

Custom values you control.

ValidationRule

String

 

The validation rule restricting the type of information shoppers can enter in the additional field during the purchase process.

Translations

Array of objects

 

Details below.

 

Translation

Object

Label

String

 

Field text translated in the language of the Translations object.

Values

Object

 

Custom values you control translated in the language of the Translations object.

Language

String

 

ISO language code. (ISO 639-1 two-letter code).

 

Add a pricing configuration

Overview

Use the addPricingConfiguration method to add a new pricing configuration for your account.

Parameters

Parameters Type/Description

sessionID

Required (string)

 

Session identifier, the output of the Login method. Include sessionID into all your requests. 2Checkout throws an exception if the values are incorrect.  The sessionID expires in 10 minutes.

PricingConfiguration

Required (object)

 

Use this object to add a new pricing configuration for your account.

ProductCode

Required (string)

 

The code of the produt you assign the configuration to.

Response

bool(true)

Request

<?php

require ('PATH_TO_AUTH');

$PricingConfiguration = new stdClass();
$PricingConfiguration->Default = True;
$PricingConfiguration->Name = 'New Pricing Configuration Through API';
$PricingConfiguration->BillingCountries = array();
$PricingConfiguration->BillingCountries[0] = 'RO';
$PricingConfiguration->BillingCountries[1] = 'DE';
$PricingConfiguration->PricingSchema = 'DYNAMIC';
$PricingConfiguration->PriceType = 'NET';
$PricingConfiguration->DefaultCurrency = 'USD';
$PricingConfiguration->Prices = new stdClass();
$PricingConfiguration->Prices->Regular = array();
$PricingConfiguration->Prices->Regular[0] = new stdClass();
$PricingConfiguration->Prices->Regular[0]->Amount = 69.09;
$PricingConfiguration->Prices->Regular[0]->Currency = 'USD';
$PricingConfiguration->Prices->Regular[0]->MinQuantity = 1;
$PricingConfiguration->Prices->Regular[0]->MaxQuantity = 35;
$PricingConfiguration->Prices->Regular[0]->OptionCodes = array();
$PricingConfiguration->Prices->Regular[0]->OptionCodes[0] = new stdClass();
$PricingConfiguration->Prices->Regular[0]->OptionCodes[0]->Code = 'G77ICHEM1C';
$PricingConfiguration->Prices->Regular[0]->OptionCodes[0]->Options = array();
$PricingConfiguration->Prices->Regular[0]->OptionCodes[0]->Options[0] = 'zh5onfolw7';
$PricingConfiguration->Prices->Regular[0]->OptionCodes[0]->Options[1] = '75rjldfcnz';
$PricingConfiguration->Prices->Regular[0]->OptionCodes[1] = new stdClass();
$PricingConfiguration->Prices->Regular[0]->OptionCodes[1]->Code = 'BAWAQB8LZP';
$PricingConfiguration->Prices->Regular[0]->OptionCodes[1]->Options = array();
$PricingConfiguration->Prices->Regular[0]->OptionCodes[1]->Options[0] = 'r3oi06opvi';
$PricingConfiguration->Prices->Regular[0]->OptionCodes[1]->Options[1] = '76gqbq4bhd';
$PricingConfiguration->Prices->Regular[1] = new stdClass();
$PricingConfiguration->Prices->Regular[1]->Amount = 64.66;
$PricingConfiguration->Prices->Regular[1]->Currency = 'USD';
$PricingConfiguration->Prices->Regular[1]->MinQuantity = 36;
$PricingConfiguration->Prices->Regular[1]->MaxQuantity = 83;
$PricingConfiguration->Prices->Regular[1]->OptionCodes = array();
$PricingConfiguration->Prices->Regular[1]->OptionCodes[0] = new stdClass();
$PricingConfiguration->Prices->Regular[1]->OptionCodes[0]->Code = '8RNXV3T3RE';
$PricingConfiguration->Prices->Regular[1]->OptionCodes[0]->Options = array();
$PricingConfiguration->Prices->Regular[1]->OptionCodes[0]->Options[0] = 'rorqkqnd9p';
$PricingConfiguration->Prices->Regular[1]->OptionCodes[0]->Options[1] = 'aeu89gqdg6';
$PricingConfiguration->Prices->Regular[1]->OptionCodes[1] = new stdClass();
$PricingConfiguration->Prices->Regular[1]->OptionCodes[1]->Code = 'DJYD713MKC';
$PricingConfiguration->Prices->Regular[1]->OptionCodes[1]->Options = array();
$PricingConfiguration->Prices->Regular[1]->OptionCodes[1]->Options[0] = 'y2z2squ7c1';
$PricingConfiguration->Prices->Regular[1]->OptionCodes[1]->Options[1] = 'g74qfskbjg';
$PricingConfiguration->Prices->Renewal = array();
$PricingConfiguration->Prices->Renewal[0] = new stdClass();
$PricingConfiguration->Prices->Renewal[0]->Amount = 7.89;
$PricingConfiguration->Prices->Renewal[0]->Currency = 'USD';
$PricingConfiguration->Prices->Renewal[0]->MinQuantity = 84;
$PricingConfiguration->Prices->Renewal[0]->MaxQuantity = 100;
$PricingConfiguration->Prices->Renewal[0]->OptionCodes = array();
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[0] = new stdClass();
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[0]->Code = '73QCSXYH0E';
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[0]->Options = array();
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[0]->Options[0] = '54xu7mngqm';
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[0]->Options[1] = 'p6m8im2unl';
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[1] = new stdClass();
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[1]->Code = '0QD0CF0OIE';
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[1]->Options = array();
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[1]->Options[0] = 'ytbac9wpmh';
$PricingConfiguration->Prices->Renewal[0]->OptionCodes[1]->Options[1] = 'lpkxxqsqxb';
$PricingConfiguration->Prices->Renewal[1] = new stdClass();
$PricingConfiguration->Prices->Renewal[1]->Amount = 76.99;
$PricingConfiguration->Prices->Renewal[1]->Currency = 'USD';
$PricingConfiguration->Prices->Renewal[1]->MinQuantity = 101;
$PricingConfiguration->Prices->Renewal[1]->MaxQuantity = 544;
$PricingConfiguration->Prices->Renewal[1]->OptionCodes = array();
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[0] = new stdClass();
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[0]->Code = '03APF0H4QF';
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[0]->Options = array();
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[0]->Options[0] = '15ce5uw2j6';
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[0]->Options[1] = 'e88d5hk0tb';
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[1] = new stdClass();
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[1]->Code = 'PT00TYI2VY';
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[1]->Options = array();
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[1]->Options[0] = '10c24smlbl';
$PricingConfiguration->Prices->Renewal[1]->OptionCodes[1]->Options[1] = '0ondbwdk3q';
$PricingConfiguration->PriceOptions = array();
$PricingConfiguration->PriceOptions[0] = new stdClass();
$PricingConfiguration->PriceOptions[0]->Code = 'FKQ8CFLYKM';
$PricingConfiguration->PriceOptions[0]->Required = false;
$PricingConfiguration->PriceOptions[1] = new stdClass();
$PricingConfiguration->PriceOptions[1]->Code = 'TH1HKFOTFR';
$PricingConfiguration->PriceOptions[1]->Required = true;

$ProductCode= 'API_Imported_123456';

$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'addPricingConfiguration',
'params' => array($sessionID, $PricingConfiguration, $ProductCode) //Use product ID and not product code for API versions 2.3 and earlier
);

var_dump (callRPC((Object)$jsonRpcRequest, $host));

?>

Require end user information

Overview

Make it mandatory for your partners to attach end user information to orders.

You can also attach end user information on behalf of your partners.

Important

When you enable this feature/require end user information, 2Checkout will fulfill/deliver orders only after the mandatory details are provided. When supplied by either you or your partners, required end user details trigger the finalization of purchases and orders reach the Complete status.

Requirements

You need to configure at least one electronic delivery codes list, either static or dynamic to use this feature. You can manage code lists in the Electronic Delivery page.

How does this feature work?

When enabled, this feature makes end user information a requirement, and introduces a mandatory stage in the ordering process. End user information needs to be supplied by you, your partners or the end users for the orders to be fulfilled/delivered and reach the Complete status. Once attached, end user info is used for the details of the Customer entity created for each subscription.

  1. Attach end user info AFTER placing the order
    • Manually for each license/subscription.
    • Via CSV (comma separated values) upload.
    • Send a registration email to customers and let them enter the end user information themselves.
  2. Attach end user info BEFORE placing the order
    • Manually for each license/subscription.
    • Via a CSV (comma separated values) file.

Partners have to provide the necessary details to push the order to the delivery/fulfillment stage, but you can also provide the details if you have them.

Alternatively, fulfillment can be done exclusively to partners, leaving them to deal with their customers, and in this case, no additional info is required.

When the system configuration is set to distribute products/keys to end users, customers are required to first register ahead of delivery/fulfillment.

Enable this feature

To require end user information for each order:

  1. Go to:
    • The Partners area of the Control Panel if you're enabling the feature for a single reseller.
    • The Partnership programs area of the Control Panel if your enabling the feature for a group of resellers governed by the same partner program.
  2. Search for and edit:
    • A specific partner.
    • A partner program.
  3. Select the Commercial settings tab in either area.
  4. Scroll down to the Delivery settings area.
  5. Check the Requires end user information option under Codes Delivery.
  6. Select the After placing the order option to make end user information mandatory after orders are placed.
  7. Select the Before placing the order option to make end user information a mandatory stage of the ordering process.
  8. Orders are fulfilled/delivered and reach the Complete status only if end user information is attached.

Attaching end user information

Both you and your partners can add end user information after placing orders. End user information needs to be attached to the placed order for the 2Checkout system to fulfill/deliver it, otherwise, the order will not reach the Complete status.

Additionally, you can now identify end users/customers by the ‘customer external ID’ information in the listing results of the license report, without having to generate and open a CSV file. 

Manually

To attach end user information, follow the steps below.

  1. Go to Partner orders.
  2. Search for and Edit an order.
  3. Scroll down to the bottom of the screen in the View Order page.
  4. Click Add now.
  5. Fill in all required info in the End user details.
  6. Click Save.

The end user details provided will also be copied to the customer information associated with the subscription.

CSV upload

As an alternative to manually attaching end user information to orders, you can upload CSV files with the desired details. Follow the steps below to do this.

  1. Go to Orders & customers -> Partner orders
  2. Search for an order.
  3. Scroll down to the bottom of the screen in the View Order area.
  4. Click Upload end user information in a .CSV file.
  5. Download the .CSV template provided.
  6. Fill in the end user details. It's very important that you do not modify the headers of the document template available for download, either by altering the text or by changing their order to ensure that the information will be introduced correctly into the system. Be advised that the CSV templates are each tailored (containing the 2Checkout license/subscription references) to the specific order for which you're downloading them.
  7. Upload the .CSV file.

Place an order

Overview

Use this method to place an order.

Requirements

Parameters

Parameters Type/Description
sessionID Required (String)
  Session identifier, which is the output of the Login method. An exception is thrown if the values are incorrect.

Response

Parameters Type/Description
Order Object

Request

<?php

require('PATH_TO_AUTH'); // Authentication example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/02Authentication
require('PATH_TO_setPartner'); // setPartner example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/06Reference/Partner/00Set_partner
require('PATH_TO_addProduct'); // addProduct example: https://knowledgecenter.avangate.com/Integration/Channel_Manager_API/SOAP/06Reference/08Place_an_order/00Add_product_to_cart

try {
    $Order= $client->placeOrder ($sessionID);
} catch (SoapFault $e) {
    echo "PlacedOrder: " . $e->getMessage();
    exit;
}
var_dump ("PlacedOrder", $Order);

 

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo