Tiered charges
Overview
Use tiered/scale pricing to create variable cost tiers (scales/intervals) impacting product unit price and provide cost benefits and incentives to shoppers to purchase large volumes. Tiered (scale) pricing configurations enable you to change the per-unit cost gradually for multiple tiers defined based on the quantities purchased.
Example of a product with a flat charge of $100:
Quantity interval | Cost per unit |
1 to 3 | $100 |
3 to 6 | $90 |
7 to 10 | $80 |
For this example, a shopper purchasing 6 units would pay 90*6= $540 on top of the $100 flat charge, or $640 in total.
Availability
Requirements
Set up tiered (scale) charges
To add a usage component to a subscription you need to create a new pricing options group for metered resources.
- Navigate to Products under Setup, search for or add/import the product you want to set usage pricing, and click to edit it.
- Select the Pricing tab and click to Edit the Pricing configuration that will be used to define usage costs.
- On the editing screen of the pricing configuration, scroll down to the bottom and click on Create new pricing options group in the Pricing options groups area.
- Enter the Group name (Required) - this label is displayed to shoppers in the cart and is included on invoices.
- Enter the Group description (Optional) - This text is displayed to shoppers in the cart and is included on invoices.
- Select the type: Scale - Regular - for a tiered charge.
- Enter a unique alphanumeric/string code (Required) - this is an identifier used in the 2Checkout API, product import/export, and for Buy Links query parameters.
- Add the first scale.
- Specify the interval.
- Define impact on price per unit of tiered/metered resources (available only for products with dynamic pricing (with base price) configurations).
- Add - add a specific cost for each unit of tiered/metered resource in each available currency for your account.
- Subtract - subtract a specific price for each unit of tiered/metered resource.
- Define impact on subscription lifecycle
- Adds - Add the desired number of months to the default billing cycle interval of a subscription. Adding one month to a monthly subscription purchased on April 22nd pushes the expiration/renewal deadline to June 22nd.
- Subtracts - Subtract the desired number of months to the default billing cycle interval of a subscription. Subtracting 12 months from a 2-year subscription purchased on April 22nd, 2016, pushed the expiration/renewal deadline to April 22nd, 2017 instead of April 22nd, 2018.
- Non-recurring - Increase the lifetime of a subscription indefinitely at the moment of purchase, making it evergreen.
- When you're done defining the scale usage intervals click Save group. Localization: To localize the usage pricing options group to another market, select the desired language from the list of options available for your account, and repeat the steps described above.
- The newly created pricing options group is available on the pricing configuration edit page. Scroll down to the bottom of the screen to identify it by the unique name you assigned to it in the Available pricing options groups area and click the Use with this product link.
- Hit Save to associate the usage pricing options group with the pricing configuration you're editing.
Multiple scales
Take advantage of multiple variable pricing scales/intervals for the same product. When defining the price for your offerings, you'll be able to create multiple scale pricing options groups and associate them to the same product. Once assigned to a product, the scaled pricing options group contribute to generating the price of purchases, per the offering's configuration, in accordance with the options selected by the shopper.
- Products With a base price configuration can feature as many scale pricing options groups as you wish. However, only the use of a single usage pricing options group is supported at this point in time.
- Products Without a base price configuration can feature only a single scale pricing options group and do not support the use of usage pricing options groups.
|
Product With a base price |
Product Without a base price |
Number of scale pricing options |
Unlimited |
1 |
Number of usage scale pricing options |
1 |
Not available |
Multiple scales use cases
2Checkout's multiple scale capabilities can be used to create complex pricing schemas designed to control the costs paid by customers through the use of a multi-tiered charge model.
1. In the example below, a customer purchasing a single subscription for 15 seats and including 200 support calls will pay $150 + $800 on top of the offering's default price.
Product/Service |
||
Pricing |
Scale intervals |
Impact on price per unit |
Number of seats |
1 to 10 |
Do nothing |
11 to 50 |
Add $10 per unit |
|
51 to 100 |
Add $8 per unit |
|
Support calls |
1 to 100 |
Add $5 per unit |
101 to 500 |
Add $4 per unit |
|
500 to 2000 |
Add $3 per unit |
2. In the example below, a customer purchasing a subscription for 5 users, with a total of 200GB of storage, allowing the synching of 15 devices, will pay $450 + $1.600 + $3.450.
Product/Service |
||
Pricing |
Scale intervals |
Impact on price per unit |
Number of users |
1 to 3 |
Add $100 per unit |
4 to 10 |
Add $90 per unit |
|
11 to 20 |
Add $80 per unit |
|
GBs of storage used |
1 to 25 |
Do nothing |
26 to 50 |
Add $10 per unit |
|
51 to 100 |
Add $9 per unit |
|
101 to 500 |
Add $8 per unit |
|
No. of synchronized devices |
1 to 12 |
Add $250 per unit |
13 to 29 |
Add $230 per unit |
|
30 to 50 |
Add $200 per unit |
Scale Pricing vs. Volume discounts
Unlike Volume discounts, focused exclusively on decreasing the cost per unit as the number of items added to cart increases, Scale Pricing involves multiple parameters unrelated to the actual volume of products your customers orders. Use Volume discounts to lower the price per unit for orders containing large quantities of your product.
Leverage scale pricing options to also reduce the price per unit, but in relation to variables beyond quantity, such as the number of seats/users/PCs for a single product subscription.
The two pricing options share the same core concept, namely the more customers buy the less they pay per unit, but control completely different factors, and can in fact be used in concert for the same order.
Scale pricing option parameters in Buy Links
Let's assume that you created a Users scale pricing options group with the unique code: users, and two options: 1 to 10 ($99 per user) and 11 to 50 ($88 per user).
If you want to build the Buy Link for a product using the Users scale pricing options group and charge customers for 35 users, the parameter should be formatted as such: OPTIONS=users=35, including both the unique code of the pricing options group and the specific value of the scale pricing interval.
FAQ
Can I modify scale pricing options?
All pricing scales you created are available in the Pricing options groups area under the Pricing tab for all of your products.
You can always select the Group name / label in order to access an overview of the options, and click on edit to alter the values as needed. Always make sure to save the group once you introduced modifications.
Can the same pricing scale be applied to different products?
Yes. But please keep in mind that the settings for a pricing scale are global, so if you edit them for one product, they will be automatically impact all others that they're associated with.
Can I delete a pricing scale?
No. Existing pricing group options, including scale intervals, can only be deactivated per product, and will no longer impact the price of that specific item.
Consider overhauling unused, irrelevant or obsolete pricing group options by changing all parameters including Group name, Group description, and options type, in order to obtain completely new options. Reusing older pricing options groups is as easy as editing them, and this recycling process ensures that the Pricing options groups area never gets too crowded.
What happens when a customer chooses a Scale interval I haven't defined?
Only the pricing intervals that you configure will be available to your customers. They won't be able to select a scale interval that has not been configured for a specific product.
What's the difference between Scale Pricing and Volume Discounts?
Volume discounts are financial incentives you can offer customers that acquire large quantities of your products (multiple units). Buyers are incentivized to buy more through price discounts that increase proportionally with the volume of their order.
Scale pricing enable you to offer your customers the possibility of correlating financial incentives with product utilization, by associating the subscriptions they purchase with large numbers of users, seats, PCs, etc. The pecuniary rewards available with scale pricing extend beyond buying in bulk, to shoppers acquiring a single subscription for use by a large volume of users, or for multiple seats/PCs, etc., for example.
Why should I use Scale pricing and not Volume discounts?
It really depends on the customer needs you're trying to meet. With Volume discounts you can offer, let say, 20 subscriptions at a slashed price. With Scale pricing you allow them to buy a single subscriptions but for 20 users/seats. But also 20 subscriptions, each for 20 users. It's really up to you what pricing configuration to use, 2Checkout just makes sure you have more options in this regard than any other platform on the market.
LCN Parameters
Overview
You can configure and set the LCN triggers and parameters right from your Merchant Control Panel so that you choose when to be notified about license changes and updates.
Configure LCN triggers and message
Navigate to LCN settings from your Merchant Control Panel, Dashboard → Integrations → Webhooks and API. Select the events for which 2Checkout sends notifications from the list of options available in the General LCN Settings section, under Triggers.
LCN Parameters
Depending on your LCN settings, the notifications contain all or a subset of the available parameters. 2Checkout continuously adds new LCN parameters. To include additional information in the notifications, enable new parameters on the LCN settings page in the Merchant Control Panel.
Parameter | Description | Type/Length |
---|---|---|
FIRST_NAME | Customer first name | String/40 |
LAST_NAME | Customer last name | String/40 |
COMPANY | Company name | String/40 |
Customer email address | String/40 | |
PHONE | Phone number | String/40 |
FAX | Fax number | String/40 |
COUNTRY | Country | String/50 |
STATE | State/County | String/30 |
CITY | City | String/30 |
ZIP | Zip code | String/20 |
ADDRESS | Customer address | String/100 |
LICENSE_CODE | System-generated, unique identifier for the subscriptions | String/50 |
EXPIRATION_DATE | The date when the subscription expires. For lifetime subscriptions, the value is: 9999-12-31 23:59:59. | String/20 |
DATE_UPDATED | The date when the 2Checkout system logs an update for a subscription | String/20 |
AVANGATE_CUSTOMER_REFERENCE | Default customer numerical (integer) IDs generated automatically by the 2Checkout system. | String/10 |
EXTERNAL_CUSTOMER_REFERENCE | Unique customer alphanumeric (string) identifiers that you control | String/250 |
TEST |
Possible values:
|
String/1 |
CHANGED_BY |
Reveals the author of subscription modifications. Possible values:
|
String/8 |
LICENSE_TYPE |
Possible values:
|
String/7 |
DISABLED |
Subscription status.
|
String/1 |
RECURRING |
The renewal license type
|
String/1 |
LICENSE_PRODUCT | Product ID | String/7 |
START_DATE | Date when you schedule the subscription to start | String/20 |
PURCHASE_DATE | The initial date when a subscriber acquired the subscription | String/20 |
LICENSE_LIFETIME |
This parameter indicates whether the subscription is evergreen (lifetime)
|
String/1 |
BILLING_CYCLES |
This parameter indicates the current, total number of billing cycles for a subscription since its creation/import, reflecting the number of renewals, but counting from the first payment made, equivalent with the initial billing cycle. For imported subscriptions, the first billing cycle starts immediately after import. The default value is 1, for the initial billing. A subscription renewed once enters the second billing cycle, and the value of the parameter changes to 2. Similarly, the value increases to 3 for the third billing cycle, 4 for the fourth, and so on. It is the correspondent of the BILLING_CYCLES option in the LCN configuration page. Available only for subscriptions for which you configure a contract. |
String/2 |
CONTRACT_CYCLES | This parameter indicates the current subscription contract cycle. The default value is 1. For example, for a 12-month contract, the value of the CONTRACT_CYCLES is 1 for the first 12 months, 2 for the next 12 months after the contract is restarted, 3 for the following year, etc. | String/2 |
BILLING_CYCLES_LEFT | The number of billing cycles remaining until the contract restarts. 2Checkout counts down from the moment a subscription goes live. For example, the BILLING_CYCLES_LEFT value for a monthly subscription with a 12-month contract will be 11 the first month, 10 the second month, 9 the third, then 8, 7, 6, 5, 4, 3, 2, 1, and 0, before the contract restarts. | String/2 |
CURRENT_BILLING_CYCLE | This parameter indicates the current, total number of billing cycles of a subscription out of the duration of the current contract. For example, the CURRENT_BILLING_CYCLE value for a monthly subscription with a 12-month contract is 1 for the first month, 2 for the second month, and so forth until the twelfth billing cycle when the value reaches 12. Following the restart of the contract, the CURRENT_BILLING_CYCLE value is also restarted, starting with 1 for the first month of the new contract, 2 for the second, etc. | String/2 |
NEXT_RENEWAL_PRICE | Renewal price for the next billing cycle | Int |
NEXT_RENEWAL_CURRENCY | Renewal currency for the next billing cycle | String / 3 |
NEXT_RENEWAL_PRICE_TYPE | GROSS/NET values depending on whether the price includes taxes | String / 5 |
NEXT_RENEWAL_DATE | Date of the next subscription renewal | |
PARTNER_CODE |
Possible values:
|
String/250 |
PSKU | Product SKU (stock keeping unit) | String/250 |
ACTIVATION_CODE | Sends out the last used activation code | String/250 |
STATUS |
The status of the subscription. Possible values:
|
String/18 |
EXPIRED |
|
String/1 |
TIMEZONE_OFFSET | The time zone you selected or the default GMT+2 time zone of the 2Checkout system | String/9 |
LICENSE_GRACE_PERIOD | The grace period impacting a subscription. Can have a numeric value (INT) representing the number of days sent as the grace period. | Int/2 |
LICENSE_BILLING_TYPE |
Designed to differentiate subscriptions leveraging usage pricing options groups from those without a metered cost component. • PREPAID - subscription cost governed only by pricing options groups of the following type: Radio, Dropdown, Checkbox, and Scale (but without a metered cost component (usage scale pricing)). • POSTPAID - subscription cost includes a metered cost component (usage scale pricing). |
String/8 |
USAGE_BILLING_DATE |
The date resulting from adding the Usage Billing Interval defined to the expiration deadline of the subscription. For subscriptions with the automatic renewal system enabled and for which you uploaded usage data, the USAGE_BILLING_DATE represents the moment when 2Checkout attempts to automatically renew the subscription and charge the customer. |
String/20 |
USAGE_STATUS |
The status of usage data upload and processing.
|
String/10 |
LATEST_REPORTED_USAGE_DATE | The most recent date when you uploaded usage data into the 2Checkout system for a subscription, preceding the renewal order before subscribers pay for the metered resources consumed. 2Checkout resets the counter after it renews the subscription. | String/20 |
ACTION_AFTER_CYCLES |
Indicates the action performed at the end of the subscription contract. Possible actions: subscription automatic renewal or expiration. Possible values:
|
String/7 |
HASH |
Calculated HMAC_MD5 signature based on the sent LCN fields and the secret key (Note: This parameter won't be used anymore for LCN validation as of 15th of August, 2024.) |
String/32 |
SIGNATURE_SHA2_256 | Calculated HMAC_SHA2_256 signature based on the sent LCN fields and the secret key | String/64 |
SIGNATURE_SHA3_256 | Calculated HMAC_SHA3_256 signature based on the sent LCN fields and the secret key | String/64 |
COUNTRY_CODE | Customer country code from the billing details | String/2 |
END_USER_LANGUAGE | The language used by the customer for placing the order | String/2 |
DISPATCH_REASON |
The reason why LCN was dispatched. Value depends on the change made on the license. Possible values:
|
String/27 |
NEXT_RENEWAL_PAYMETHOD | The payment method used in the upcoming renewal | String/20 |
NEXT_RENEWAL_PAYMETHOD_CODE | Code of the payment method | String/15 |
NEXT_RENEWAL_CARD_LAST_DIGITS | Last four digits of the debit/credit card used by the shopper | String/4 |
NEXT_RENEWAL_CARD_TYPE | Card type used by the customer | String/12 |
NEXT_RENEWAL_CARD_EXPIRATION_DATE | The expiration date of the card used by the customer | String/6 |
ORIGINAL_ORDER_REFERENCE | Reference of the order that generated the subscription | String/8 |
LAST_ORDER_REFERENCE | Reference of the last order generated on the subscription, such as a renewal or an upgrade | String/8 |
LICENSE_PRODUCT_CODE | The product identifier you create or a system-generated code that you control | String |
LCN_LICENSE_ADDITIONAL_INFO_CUSTOM_TEXT | Name of the subscription additional information field | String |
LCN_LICENSE_ADDITIONAL_INFO_CUSTOM_VALUE | Value of the subscription additional information field | String/100 |
EXPIRATION_DATE_TIME | The date and time when a license/subscription expires. For lifetime licenses/subscriptions, the value will always be 9999-12-31 23:59:59. | Date |
START_DATE_TIME | The license/subscription start date and time | Date |
PURCHASE_DATE_TIME | The initial date and time when the license/subscription was purchased | Date |
RENEWALS_NUMBER | The number of renewals | Int |
UPGRADES_NUMBER | The number of upgrades | Int |
IS_TRIAL |
Possible values:
|
Int/1 |
PAUSE_START_DATE | Date when the subscription pause is scheduled to start or has started | Date |
PAUSE_END_DATE | Date when the subscription pause will end and the next billing cycle starts | Date |
PAUSE_REASON | The reason why the pause was set up, as specified by the merchant or shopper | Date |
PRODUCT_QUANTITY | The number of units on the subscription | Number |
VENDOR_CODE | Unique merchant identifier generated by the 2Checkout system | String |
MESSAGE_ID | The sequence ID number of the sent message | Integer |
LCN_LICENSE_OPTIONS_TEXT |
Array with the names of all the price options used on the product generating the license For usage scale pricing option groups, 2Checkout returns the name of the pricing options as well as the number of units of metered resources consumed by the customer. Format: 'PricingOptionsGroupName: NumberOfUnitsConsumed', for example 'GBs: 100'. |
Array of strings/250 |
LCN_LICENSE_OPTIONS_VALUE |
Array with unique codes set up for the active pricing option groups of the product generating the license. In the case of usage scale pricing options groups, 2Checkout returns both the unique code of the group as well as the number of units of metered resources consumed by the customer. Format: 'UniqueCode: NumberOfUnitsConsumed', for example 'metered GBs: 100'. |
Array of strings/250 |
LCN_LICENSE_OPTIONS_PRICE | Array with all prices corresponding to each active option (prices are in the order currency of the product generating the license). In the case of usage scale pricing options groups, it will return the price of the metered resources consumed by the customer in the order currency. | Array of float numbers |
LCN_LICENSE_OPTIONS_OPERATOR |
Array with all price operators corresponding to each active price option, of the product generating the license. Possible values: • ADD • SUBTRACT |
Array of strings/9 |
LCN_LICENSE_OPTIONS_USAGE |
Designed to differentiate usage pricing options groups from non-usage pricing options groups. Possible values: • PREPAID - for orders involving products with pricing options groups of the following type: Radio, Dropdown, Checkbox, and Scale (but without a metered cost component (usage scale pricing)). |
String/8 |
LCN_LICENSE_OPTIONS_OPTIONAL_VALUE | Array with optional codes (unique for pricing option group). In the case of usage scale pricing options groups, 2Checkout returns both the unique code of the group as well as the number of units of metered resources consumed by the customer. Format: 'UniqueCode: NumberOfUnitsConsumed', for example 'metered GBs: 100'. | Array of strings/250 |
LCN_LICENSE_OPTIONS_IMPACT_SUBSCRIPTION |
Array with operators showing the impact of the active pricing option on the subscription. Possible values:
|
Array of strings/9 |
LCN_LICENSE_OPTIONS_IMPACT_SUBSCRIPTION_VALUE |
Array with the values (number of months) which are the impact of the active pricing options. When LCN_LICENSE_OPTIONS_IMPACT_SUBSCRIPTION returns “NONE” or “RECURRING”, LCN_LICENSE_OPTIONS_IMPACT_SUBSCRIPTION_VALUE will return 0. |
Array of integer numbers |
LCN_PRODUCT_GROUP_ID | Group ID of the product generating the license | String |
LCN_PRODUCT_GROUP_NAME | Group Name of the product generating the license | String |
PRODUCT_EXTERNAL_REFERENCE | The external reference used to match the product with identifiers in your own system | String |
PRODUCT_VERSION_MODEL | The version or model of the product | String |
CLIENT_DEAL_AUTO_RENEWAL | Client option to automatically renew a deal contract at its expiration date | String |
MERCHANT_DEAL_AUTO_RENEWAL | Merchant option to automatically renew a deal contract at its expiration date | String |
LAST_CHURN_REASONS | The reason(s) provided by the shopper for disabling a subscription or cancelling the auto-renewal | String/20 |
LAST_CHURN_SOURCE | The flow through which the subscription was disabled or the auto-renewal was cancelled | String/10 |
LAST_CHURN_DATE | The date when the subscription was disabled or the auto-renewal was cancelled | String/255 |
CANCEL_ON_DEMAND_DATE | Latest churn cancel on demand date. | String |
CHURN_PREVENTION_CAMPAIGN_TYPE | The type of the churn prevention campaign whose discount has been accepted by the shopper. | String |
CHURN_PREVENTION_CAMPAIGN_NAME | The type of the churn prevention campaign whose discount has been accepted by the shopper. | String |
CHURN_PREVENTION_CAMPAIGN_DISCOUNT | The value of the discount accepted via the churn prevention campaign/auto-renewal enrolment based on which the next renewal price is calculated. | String |
Volume discounts
Overview
Use Volume discounts to incentivize shoppers to purchase your products in large quantities/number of units. Set a different price per unit based on the total purchased quantity.
Volume discounts impact the unit price applied by the platform for Channel Manager and resellers if you (vendor) use the products in both channels.
Example:
Quantity interval | Cost per unit |
---|---|
1 to 100 | $59 |
101 to 500 | $49 |
501 and more | $39 |
For this example, a shopper purchasing 55 units would pay 55*59= $3,245. Another, purchasing a quantity of 600 would pay 600*39= $23,400.
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:
- 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.
- 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.
Setup
Set volume discounts under the Pricing tab when editing or first configuring products.
- Products with dynamic pricing (with base price):
- Define your first quantity interval and click save. The initial discounted price per unit is the same as the default price; changes as needed for at least the default currency or for all currencies available for your account.
- Click the Add new volume discount link, define the interval, the discounted price per unit, and click Add interval.
- Repeat as needed.
- Static pricing (without base price)
- Create as many unit intervals for purchase volume discounts as you need and save the configuration.
- Define prices for each possible option available to your shoppers in the Prices area.
Limitations
Volumes not defined are not available for purchase to your shoppers. For example, if you define two intervals, 1 to 100 and 102 to 1,000, your shoppers will not be able to purchase 101 units or 1,200 units.
Create product group
Overview
Use the addProductGroup method to create product groups for your account:
- Send null for product group Code. 2Checkout ignores any values you send for Code and generates identifiers itself.
- Use unique product group names.
- 2Checkout throws an exception if you send a blank product group.
- If you send only the name of the product group 2Checkout creates the new product group entity.
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. |
Required (object) |
|
|
Use this object to create product groups. Send null for the Code. 2Checkout generates unique product group code identifiers. |
Response
bool(true)
Request
<?php
require ('PATH_TO_AUTH');
$ProductGroup = new stdClass();
$ProductGroup->Name = 'New Product Group from API';
$ProductGroup->Code = null;//Send null for the Code. 2Checkout generates unique product group code identifiers.
$ProductGroup->TemplateName = 'Default Template';//'001 - Two Column Billing'; //the name of the cart template you want to associate with the product group
$ProductGroup->Description = 'This is a generic description';
$ProductGroup->Enabled = true;
try {
$NewProductGroup = $client->addProductGroup($sessionID, $ProductGroup);
}
catch (SoapFault $e) {
echo "NewProductGroup: " . $e->getMessage();
exit;
}
var_dump("NewProductGroup", $NewProductGroup);
?>
Order with catalog products
Overview
The object below is returned directly or within a successful response from the following API requests:
Place orders with catalog product
Catalog order object
Parameters | Type/Description | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RefNo | String | |||||||||||||||||||||||||||||||||||
2Checkout generates unique reference numbers for all orders (purchases). You can use this parameter to retry authorizations for orders with failed transactions by changing the payment method.
NULL when you place new orders. |
||||||||||||||||||||||||||||||||||||
ChargebackResolution | String | |||||||||||||||||||||||||||||||||||
Chargeback status information. Possible values: · OPEN (chargeback is in progress) · WON (chargeback won by you) · LOST (chargeback won by the customer) · ACCEPTED (you agreed to repay the value of the order to the customer) · NONE (no chargeback initiated for the order) To manage chargeback notifications navigate to Control Panel Dashboard →Integrations → Webhooks and API, and click on the IPN settings tab. In the General IPN Settings section, under Triggers, make sure to check the boxes next to the following options: · chargeback open (2Checkout sends an IPN when shoppers open a chargeback dispute). · chargeback closed - (2Checkout sends an IPN when the parties involved resolve a chargeback dispute). Also, check the checkbox next to the CHARGEBACK_RESOLUTION parameter featured in the Response tags area. |
||||||||||||||||||||||||||||||||||||
ChargebackReasonCode | String | |||||||||||||||||||||||||||||||||||
Identifier for the chargeback dispute reason from the 2Checkout system. Empty for orders with no chargeback dispute initiated. Possible values:
|
||||||||||||||||||||||||||||||||||||
OrderNo | String | |||||||||||||||||||||||||||||||||||
The consecutive order number 2Checkout associates with orders and displays in the Order search area of your account. | ||||||||||||||||||||||||||||||||||||
ExternalReference | String | |||||||||||||||||||||||||||||||||||
Set external reference identifiers for orders. Enables you to replicate the functionality of the REF parameter included into Buy Links. Maximum 100 characters. If there is a need for longer references, you can apply an md5 hash for any string value, resulting in a 32 characters string. You can verify the hash after the order notification, on the client side. | ||||||||||||||||||||||||||||||||||||
Status | String | |||||||||||||||||||||||||||||||||||
The status of the order:
|
||||||||||||||||||||||||||||||||||||
ApproveStatus | String | |||||||||||||||||||||||||||||||||||
The status of the order resulted from the evaluation by the 2Checkout anti-fraud system or by a member of the anti-fraud department. This status varies for new purchases and for orders requiring customers to make manual payments. Possible values:
|
||||||||||||||||||||||||||||||||||||
VendorApproveStatus | String | |||||||||||||||||||||||||||||||||||
Shows if you approved or not a partner order. Possible values:
|
||||||||||||||||||||||||||||||||||||
Language | String | |||||||||||||||||||||||||||||||||||
ISO 639-1 two-letter code. Language used for the purchase process. Example: “en.” | ||||||||||||||||||||||||||||||||||||
OrderDate | String | |||||||||||||||||||||||||||||||||||
Y-m-d H:i:s (2014-05-22 00:12:12) The datetime stamp (in the API time zone defined in cPanel) when customers place their orders. | ||||||||||||||||||||||||||||||||||||
FinishDate | String | |||||||||||||||||||||||||||||||||||
Y-m-d H:i:s (2014-05-22 00:12:12) The datetime stamp (in the API time zone defined in cPanel) when the order reach the Complete status.
NULL for order that did not reach the Complete/Finished stage. |
||||||||||||||||||||||||||||||||||||
Source | String | |||||||||||||||||||||||||||||||||||
The link source for the sale. Enables you to replicate the functionality of the SRC (separate link identifier) parameter when included into Buy Links. Use the SRC parameter to track sale sources. Maximum length 255 characters. Cannot be null. |
||||||||||||||||||||||||||||||||||||
Affiliate | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
AffiliateCode | String | |||||||||||||||||||||||||||||||||||
The unique code of the affiliate who refer orders. | ||||||||||||||||||||||||||||||||||||
AffiliateSource | String | |||||||||||||||||||||||||||||||||||
The link source for affiliate referred sales. Similar to the functionality of the SRC (separate link identifier) parameter included into Buy Links, but controlled by the AFFSRC parameter. Affiliates use the AFFSRC parameter to track sale sources for their referrals. Maximum length 255 characters. | ||||||||||||||||||||||||||||||||||||
AffiliateName | String | |||||||||||||||||||||||||||||||||||
Affiliate name. | ||||||||||||||||||||||||||||||||||||
AffiliateUrl | String | |||||||||||||||||||||||||||||||||||
Affiliate website URL from the Affiliate Details. | ||||||||||||||||||||||||||||||||||||
HasShipping | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on whether the order requires shipping. | ||||||||||||||||||||||||||||||||||||
DeliveryFinalized | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on whether product delivery has been completed. | ||||||||||||||||||||||||||||||||||||
BillingDetails | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
FirstName | String | |||||||||||||||||||||||||||||||||||
Shopper name. | ||||||||||||||||||||||||||||||||||||
LastName | String | |||||||||||||||||||||||||||||||||||
Shopper surname. | ||||||||||||||||||||||||||||||||||||
CountryCode | String | |||||||||||||||||||||||||||||||||||
Shopper country. ISO 3166 two-letter code. | ||||||||||||||||||||||||||||||||||||
State | String | |||||||||||||||||||||||||||||||||||
The state in the shopper's country. Mandatory when you set the Billing Country to US, Turkey, India and Romania. Use case insensitive utf8 strings for the full name, or just the two letter code. | ||||||||||||||||||||||||||||||||||||
City | String | |||||||||||||||||||||||||||||||||||
Shopper city. | ||||||||||||||||||||||||||||||||||||
Address1 | String | |||||||||||||||||||||||||||||||||||
Shopper address. | ||||||||||||||||||||||||||||||||||||
Address2 | String | |||||||||||||||||||||||||||||||||||
Shopper address. | ||||||||||||||||||||||||||||||||||||
Zip | String | |||||||||||||||||||||||||||||||||||
ZIP/ Postal code. | ||||||||||||||||||||||||||||||||||||
String | ||||||||||||||||||||||||||||||||||||
Shopper email address. | ||||||||||||||||||||||||||||||||||||
Phone | String | |||||||||||||||||||||||||||||||||||
Shopper phone number. Mandatory when you set Brazil as the Billing Country. Can be NULL. | ||||||||||||||||||||||||||||||||||||
Company | String | |||||||||||||||||||||||||||||||||||
Company name. Can be null for end users. When present, you also need to provide the FiscalCode. | ||||||||||||||||||||||||||||||||||||
FiscalCode | String | |||||||||||||||||||||||||||||||||||
• For companies, it needs to be the VAT ID. 2Checkout will validate the value provided and throw an error if the VAT ID is invalid/incorrect when calling setPaymentDetails. When present, you also need to provide the Company name. • Mandatory when the Billing Country is set to Brazil. For Brazilian customers it represents the Fiscal Code (CPF/CNPJ). • Mandatory when the Billing Country is set to India, and purchase is made by a Company. • Can be null for end users. |
||||||||||||||||||||||||||||||||||||
DeliveryDetails |
Object Optional. When missing, 2Checkout uses the same details as for the BillingDetails object. |
|||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
FirstNameFirstName | String | |||||||||||||||||||||||||||||||||||
Shopper name from the delivery details. | ||||||||||||||||||||||||||||||||||||
LastName | String | |||||||||||||||||||||||||||||||||||
Shopper surname from the delivery details. | ||||||||||||||||||||||||||||||||||||
CountryCode | String | |||||||||||||||||||||||||||||||||||
Shopper country. ISO 3166 two-letter code from the delivery details. | ||||||||||||||||||||||||||||||||||||
State | String | |||||||||||||||||||||||||||||||||||
The state in the shopper's country from the delivery details. Mandatory when you set the Billing Country to US, Turkey and Romania. Use case insensitive utf8 strings for the full name, or just the two letter code. | ||||||||||||||||||||||||||||||||||||
City | String | |||||||||||||||||||||||||||||||||||
Shopper city from the delivery details. | ||||||||||||||||||||||||||||||||||||
Address1 | String | |||||||||||||||||||||||||||||||||||
Shopper address from the delivery details. | ||||||||||||||||||||||||||||||||||||
Address2 | String | |||||||||||||||||||||||||||||||||||
Shopper address from the delivery details. | ||||||||||||||||||||||||||||||||||||
Zip | String | |||||||||||||||||||||||||||||||||||
ZIP/ Postal code from the delivery details. | ||||||||||||||||||||||||||||||||||||
String | ||||||||||||||||||||||||||||||||||||
Shopper email address from the delivery details. | ||||||||||||||||||||||||||||||||||||
Phone | String | |||||||||||||||||||||||||||||||||||
Shopper phone number from the delivery details. Mandatory when you set Brazil as the Billing Country. Can be NULL. | ||||||||||||||||||||||||||||||||||||
Company | String | |||||||||||||||||||||||||||||||||||
Company name from the delivery details. Can be null for end users. When present, you also need to provide the FiscalCode. | ||||||||||||||||||||||||||||||||||||
PaymentDetails | Optional (Object) | |||||||||||||||||||||||||||||||||||
Adapt this object to the desired payment method. | ||||||||||||||||||||||||||||||||||||
Type | String | |||||||||||||||||||||||||||||||||||
The payment method:
|
||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code for the payment - ISO 4217. Example: “usd.” | ||||||||||||||||||||||||||||||||||||
PaymentMethod | Optional (object) | |||||||||||||||||||||||||||||||||||
Object structure and parameters differ according to payment method selected and API method (placing orders (POST) vs. retrieving order data (GET)). For payments with credit cards, PalPay Express, previous order reference and purchase order use the objects below.
For payments with check and wire, send only the ‘CHECH’ and ‘WIRE’ strings.
null for 0 value orders for which you’re not requiring customers to enter payment details. |
||||||||||||||||||||||||||||||||||||
RecurringEnabled | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on whether the shoppers checked the subscription auto-renewal checkbox or not, during the purchase process. | ||||||||||||||||||||||||||||||||||||
PaymentDetailsCard | Optional (object) | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
CardType | String | |||||||||||||||||||||||||||||||||||
visa, visaelectron, mastercard, maestro, amex, discover, dankort, cartebleue, jcb, hipercard, elo | ||||||||||||||||||||||||||||||||||||
FirstDigits | String | |||||||||||||||||||||||||||||||||||
First four digits of the credit card. | ||||||||||||||||||||||||||||||||||||
LastDigits | String | |||||||||||||||||||||||||||||||||||
Last four digits of the credit card. | ||||||||||||||||||||||||||||||||||||
RecurringEnabled | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending whether the order has active recurring options | ||||||||||||||||||||||||||||||||||||
Vendor3DSReturnURL | String | |||||||||||||||||||||||||||||||||||
URL to which customers are redirected after a successful 3DS process. | ||||||||||||||||||||||||||||||||||||
Vendor3DSCancelURL | String | |||||||||||||||||||||||||||||||||||
URL to which customers are redirected after a failed 3DS process. | ||||||||||||||||||||||||||||||||||||
InstallmentsNumber | Integer | |||||||||||||||||||||||||||||||||||
Number of installments used for paying the order. | ||||||||||||||||||||||||||||||||||||
CheckPaymentDetails | Optional (Object) | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Beneficiary | String | |||||||||||||||||||||||||||||||||||
The beneficiary of the payment. Can be NULL. |
||||||||||||||||||||||||||||||||||||
CheckPostalAddress | String | |||||||||||||||||||||||||||||||||||
The address of the beneficiary. Can be NULL. |
||||||||||||||||||||||||||||||||||||
Amount | Float | |||||||||||||||||||||||||||||||||||
The total costs incurred by the customer for an order. Can be NULL. |
||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code of the order/payment - ISO 4217. Can be NULL. |
||||||||||||||||||||||||||||||||||||
PayPalExpress | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
String | ||||||||||||||||||||||||||||||||||||
Email address customers use for their PayPal account. | ||||||||||||||||||||||||||||||||||||
ReturnURL | String | |||||||||||||||||||||||||||||||||||
The PayPal Express Checkout redirect URL returned by calling the getPayPalExpressCheckoutRedirectURL method. The return URL is the page on your website to which PayPal redirects your buyer's browser after the buyer logs into PayPal and approves the payment. Typically, this is a secure page (https://...) on your site. | ||||||||||||||||||||||||||||||||||||
CancelURL | String | |||||||||||||||||||||||||||||||||||
The cancel URL is the page on your website to which PayPal redirects your buyer's browser if the buyer does not approve the payment. Typically, this is the secure page (https://...) on your site from which you redirected the buyer to PayPal. | ||||||||||||||||||||||||||||||||||||
WirePaymentDetails | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Amount | Float | |||||||||||||||||||||||||||||||||||
The total costs customers incur. Can be NULL. |
||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code of the order - ISO 4217. Can be NULL. |
||||||||||||||||||||||||||||||||||||
PaymentReference | String | |||||||||||||||||||||||||||||||||||
Transaction identifier. Can be NULL. |
||||||||||||||||||||||||||||||||||||
RoutingNumber | String | |||||||||||||||||||||||||||||||||||
Identification number assigned to financial institutions. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankAccounts | Optional (Array of objects) | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Beneficiary | String | |||||||||||||||||||||||||||||||||||
The beneficiary of the payment. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankName | String | |||||||||||||||||||||||||||||||||||
The name of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankCountry | String | |||||||||||||||||||||||||||||||||||
The country of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankCity | String | |||||||||||||||||||||||||||||||||||
The city of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankAddress | String | |||||||||||||||||||||||||||||||||||
The address of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankAccount | String | |||||||||||||||||||||||||||||||||||
The number for the account in which customers transfer the funds. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankAccountIban | String | |||||||||||||||||||||||||||||||||||
The IBAN of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
BankAccountSwiftCode | String | |||||||||||||||||||||||||||||||||||
The Swift Code of the beneficiary's bank. Can be NULL. |
||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code for the bank account - ISO 4217. Can be NULL. |
||||||||||||||||||||||||||||||||||||
DIRECT_DEBIT_ACH | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
AccountHolderName | String | |||||||||||||||||||||||||||||||||||
Full name of the account holder. | ||||||||||||||||||||||||||||||||||||
BankRoutingNumber | String | |||||||||||||||||||||||||||||||||||
Bank Routing number consisting of up to 17 digits. | ||||||||||||||||||||||||||||||||||||
AccountNumber | String | |||||||||||||||||||||||||||||||||||
Account number with fixed 9 digit length. | ||||||||||||||||||||||||||||||||||||
AccountType | String | |||||||||||||||||||||||||||||||||||
Possible values are "S" for SAVINGS accounts or "C" for CHECKING accounts. | ||||||||||||||||||||||||||||||||||||
CustomerIP | String | |||||||||||||||||||||||||||||||||||
Shopper IP. | ||||||||||||||||||||||||||||||||||||
CustomerDetails |
Object 2Checkout populates the parameters of the customer entity with information from the customer whose AvangateCustomerReference or ExternalCustomerReference you send during the purchase. |
|||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
AvangateCustomerReference | Integer | |||||||||||||||||||||||||||||||||||
System-generated 2Checkout customer reference. Aggregate subscriptions under the same Customer account if the products they're associated to are purchased by the same shopper by adding the AV_CUSTOMERID (case sensitive) parameter to buy links. The 2Checkout system generates default customer numerical (integer) IDs (AV_CUSTOMERID) automatically for all orders containing products that feature subscriptions. | ||||||||||||||||||||||||||||||||||||
ExternalCustomerReference | String | |||||||||||||||||||||||||||||||||||
The external customer reference you control. Aggregate subscriptions under the same Customer account if the products they're associated to are purchased by the same shopper by adding the CUSTOMERID (case sensitive) parameter to buy links. | ||||||||||||||||||||||||||||||||||||
FirstName | String | |||||||||||||||||||||||||||||||||||
Customer's first name. | ||||||||||||||||||||||||||||||||||||
LastName | String | |||||||||||||||||||||||||||||||||||
Customer's last name. | ||||||||||||||||||||||||||||||||||||
CountryCode | String | |||||||||||||||||||||||||||||||||||
Customer's country code (ISO 3166 two-letter code). | ||||||||||||||||||||||||||||||||||||
State | String | |||||||||||||||||||||||||||||||||||
Customer's state. For example, "Alabama","Alaska","Arizona". | ||||||||||||||||||||||||||||||||||||
City | String | |||||||||||||||||||||||||||||||||||
Customer's city. | ||||||||||||||||||||||||||||||||||||
Address1 | String | |||||||||||||||||||||||||||||||||||
Customer's address. | ||||||||||||||||||||||||||||||||||||
Address2 | String | |||||||||||||||||||||||||||||||||||
Customer's address. | ||||||||||||||||||||||||||||||||||||
Zip | String | |||||||||||||||||||||||||||||||||||
Zip code. | ||||||||||||||||||||||||||||||||||||
String | ||||||||||||||||||||||||||||||||||||
Customer's email. | ||||||||||||||||||||||||||||||||||||
Phone | String | |||||||||||||||||||||||||||||||||||
Customer's phone number. | ||||||||||||||||||||||||||||||||||||
Company | String | |||||||||||||||||||||||||||||||||||
Company name. | ||||||||||||||||||||||||||||||||||||
FiscalCode | String | |||||||||||||||||||||||||||||||||||
For companies, it needs to be the VAT ID. 2Checkout validates this values and throws an error if the VAT ID is invalid/incorrect. When present, you need to also provide Company name.
Can be null for end users. |
||||||||||||||||||||||||||||||||||||
Fax | String | |||||||||||||||||||||||||||||||||||
Customer's fax number. | ||||||||||||||||||||||||||||||||||||
Enabled | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on whether the customer account is active or inactive. An active customer account features at least one Active or Past due subscription. | ||||||||||||||||||||||||||||||||||||
Trial | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on whether the customer account features only trials or also paid subscriptions. | ||||||||||||||||||||||||||||||||||||
Language | String | |||||||||||||||||||||||||||||||||||
ISO 639-1 two-letter code. Example: “en.” | ||||||||||||||||||||||||||||||||||||
ExistingCards | Array of objects | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
TransientToken | Object | |||||||||||||||||||||||||||||||||||
Populated only when you retrieve customer information by SSOToken. | ||||||||||||||||||||||||||||||||||||
Token | String | |||||||||||||||||||||||||||||||||||
Token for the EXISTING_PAYMENT_DATA flow. Use it to charge customers using cards they used in the past for purchases from your 2Checkout account. | ||||||||||||||||||||||||||||||||||||
CardType | String | |||||||||||||||||||||||||||||||||||
visa, visaelectron, mastercard, maestro, amex, discover, dankort, cartebleue, jcb, hipercard, elo | ||||||||||||||||||||||||||||||||||||
LastDigits | String | |||||||||||||||||||||||||||||||||||
Last four digits of the credit card. | ||||||||||||||||||||||||||||||||||||
ExpirationMonth | String | |||||||||||||||||||||||||||||||||||
Card expiration month. | ||||||||||||||||||||||||||||||||||||
ExpirationYear | String | |||||||||||||||||||||||||||||||||||
Card expiration year. | ||||||||||||||||||||||||||||||||||||
NameOnCard | String | |||||||||||||||||||||||||||||||||||
Card holder name. | ||||||||||||||||||||||||||||||||||||
Origin | String | |||||||||||||||||||||||||||||||||||
2Checkout automatically tracks the source of purchases:
|
||||||||||||||||||||||||||||||||||||
AvangateCommission | Optional (Int) | |||||||||||||||||||||||||||||||||||
2Checkout's commission for the order. | ||||||||||||||||||||||||||||||||||||
OrderFlow | String | |||||||||||||||||||||||||||||||||||
PURCHASE_ORDER - Sent only when shoppers used Purchase Orders. REGULAR - Sent in all other cases. |
||||||||||||||||||||||||||||||||||||
GiftDetails | Optional (object) | |||||||||||||||||||||||||||||||||||
Contains contact details for the recipient of a gift purchase. | ||||||||||||||||||||||||||||||||||||
FirstName | String | |||||||||||||||||||||||||||||||||||
First name of gift recipient. | ||||||||||||||||||||||||||||||||||||
LastName | String | |||||||||||||||||||||||||||||||||||
Last name of gift recipient. | ||||||||||||||||||||||||||||||||||||
String | ||||||||||||||||||||||||||||||||||||
Email of gift recipient. 2Checkout uses this email for the delivery/fulfillment process. | ||||||||||||||||||||||||||||||||||||
GiftNote | String | |||||||||||||||||||||||||||||||||||
Custom text shoppers provide as a message to the gift recipient. | ||||||||||||||||||||||||||||||||||||
PODetails | Object (optional) | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Status | String | |||||||||||||||||||||||||||||||||||
PO status. Possible values:
|
||||||||||||||||||||||||||||||||||||
AutoApprove | Boolean | |||||||||||||||||||||||||||||||||||
TRUE or FALSE, depending on whether you set POs to auto-approve or not. | ||||||||||||||||||||||||||||||||||||
RequireDocumentUpload | Boolean | |||||||||||||||||||||||||||||||||||
TRUE or FALSE, depending on whether require document upload or not. | ||||||||||||||||||||||||||||||||||||
NetPaymentTerms | Integer | |||||||||||||||||||||||||||||||||||
The term of net payment in days. | ||||||||||||||||||||||||||||||||||||
CopyPreviousDocuments | Boolean | |||||||||||||||||||||||||||||||||||
TRUE or FALSE, depending on whether copy documents from previous order or not. | ||||||||||||||||||||||||||||||||||||
PdfFormUrl | String | |||||||||||||||||||||||||||||||||||
URL of Purchase Order form which needs to be printed, signed and uploaded. | ||||||||||||||||||||||||||||||||||||
InternalPONumber | String | |||||||||||||||||||||||||||||||||||
Identifier that business customers use internally in their organization to track and manage Purchase Orders (PO). Can be NULL. | ||||||||||||||||||||||||||||||||||||
ExtraInformation | Optional (Object) | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
PaymentLink | String | |||||||||||||||||||||||||||||||||||
Can be: 1. The PO doc upload link - If you set AutoApprove as FALSE on the original order and before shoppers upload the PO. 2. Payment link for orders with POs. Business customers can use the PaymentLink to finalize payment for orders with POs. If you set AutoApprove as TRUE on the original order and if 2Checkout and you approve the PO. |
||||||||||||||||||||||||||||||||||||
PaymentLink | String | |||||||||||||||||||||||||||||||||||
In scenarios in which an issue blocks the transaction from finalizing, 2Checkout provides a retry link where shopper can complete their purchase by providing new payment details. | ||||||||||||||||||||||||||||||||||||
PartnerCode | String | |||||||||||||||||||||||||||||||||||
Partner code you configured for your partner. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
PartnerMargin | Float | |||||||||||||||||||||||||||||||||||
Partner margin you set for the order. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
PartnerMarginPercent | Float | |||||||||||||||||||||||||||||||||||
The percentage of the partner margin from the net value of the products ordered, minus the value of any discounts. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
ExtraMargin | Float | |||||||||||||||||||||||||||||||||||
Extra margin you offer by editing partner orders. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
ExtraMarginPercent | Float | |||||||||||||||||||||||||||||||||||
The percentage of the extra partner margin from the net value of the products ordered, minus the partner margin and the value of any discounts. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
ExtraDiscount | Float | |||||||||||||||||||||||||||||||||||
Extra discount you offer by editing partner orders. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
ExtraDiscountPercent | Float | |||||||||||||||||||||||||||||||||||
The percentage of the partner margin from the net value of the products ordered, minus the value of any coupon discounts. NULL for eStore orders. | ||||||||||||||||||||||||||||||||||||
LocalTime | String | |||||||||||||||||||||||||||||||||||
Local shopper time in the following format: Y-m-d H:i:s. This parameter can impact the fraud score of an order when it's missing, NULL or incorrectly formatted. |
||||||||||||||||||||||||||||||||||||
TestOrder | Boolean | |||||||||||||||||||||||||||||||||||
True for test orders. False of regular orders. | ||||||||||||||||||||||||||||||||||||
Errors | Array of strings | |||||||||||||||||||||||||||||||||||
Payment gateway processing errors. | ||||||||||||||||||||||||||||||||||||
Items | Array of objects | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
ProductDetails | Object | |||||||||||||||||||||||||||||||||||
Name | String | |||||||||||||||||||||||||||||||||||
Product name. | ||||||||||||||||||||||||||||||||||||
ShortDescription | String | |||||||||||||||||||||||||||||||||||
Product short description. | ||||||||||||||||||||||||||||||||||||
Tangible | Boolean | |||||||||||||||||||||||||||||||||||
true or false, depending on product delivery type. | ||||||||||||||||||||||||||||||||||||
IsDynamic | Boolean | |||||||||||||||||||||||||||||||||||
Possible values:
|
||||||||||||||||||||||||||||||||||||
ExtraInfo | String | |||||||||||||||||||||||||||||||||||
The text entered in the Additional information field when generating Buy links, or via the INFO[PRODUCT_ID] parameter used in Buy links. | ||||||||||||||||||||||||||||||||||||
RenewalStatus | Boolean | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
DeliveryInformation |
Object Details below |
|||||||||||||||||||||||||||||||||||
Delivery | String | |||||||||||||||||||||||||||||||||||
Possible values:
|
||||||||||||||||||||||||||||||||||||
DownloadFile | Object | |||||||||||||||||||||||||||||||||||
Information related to the download file. | ||||||||||||||||||||||||||||||||||||
DeliveryDescription | String | |||||||||||||||||||||||||||||||||||
Delivery description. | ||||||||||||||||||||||||||||||||||||
CodesDescription | String | |||||||||||||||||||||||||||||||||||
Description of codes delivered. | ||||||||||||||||||||||||||||||||||||
Codes | Array of strings | |||||||||||||||||||||||||||||||||||
Array with the codes delivered | ||||||||||||||||||||||||||||||||||||
Subscriptions | Object | |||||||||||||||||||||||||||||||||||
SubscriptionReference | String | |||||||||||||||||||||||||||||||||||
Unique, system-generated subscription identifier. | ||||||||||||||||||||||||||||||||||||
PurchaseDate | String | |||||||||||||||||||||||||||||||||||
The date time stamp when shoppers acquired their subscriptions corresponding to the moment when the 2Checkout system marks the purchase as finished. Format (YYYY-MM-DD HH:mm:ss). Default GMT+02:00.
e.g. 2015-08-11 15:18:52 |
||||||||||||||||||||||||||||||||||||
SubscriptionStartDate | String | |||||||||||||||||||||||||||||||||||
Example: 2015-09-29 17:57:59 |
||||||||||||||||||||||||||||||||||||
ExpirationDate | String | |||||||||||||||||||||||||||||||||||
The date time stamp of upcoming renewal/expiration for subscriptions not taking into account grace period settings.
Format (YYYY-MM-DD HH:mm:ss). Default GMT+02:00.
e.g. 2015-09-11 15:18:52 |
||||||||||||||||||||||||||||||||||||
Lifetime | Boolean | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
Trial | Boolean | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
Enabled | Boolean | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
RecurringEnabled | Boolean | |||||||||||||||||||||||||||||||||||
PriceOptions | Array of strings | |||||||||||||||||||||||||||||||||||
Array of price option codes. | ||||||||||||||||||||||||||||||||||||
Code | Strings | |||||||||||||||||||||||||||||||||||
Unique code that the 2Checkout system generates or that you set for each pricing options group. | ||||||||||||||||||||||||||||||||||||
Required | Boolean | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
Options | Array of strings | |||||||||||||||||||||||||||||||||||
The code you set or that the 2Checkout system generates for each price option child inside a pricing options group parent. | ||||||||||||||||||||||||||||||||||||
Price | Object | |||||||||||||||||||||||||||||||||||
This object returns the price per unit at order line level.
In the case of trials, the object returns the costs for the trial to full subscription conversion. |
||||||||||||||||||||||||||||||||||||
UnitNetPrice | Float | |||||||||||||||||||||||||||||||||||
The value per product unit, excluding sales tax/VAT expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
UnitGrossPrice | Float | |||||||||||||||||||||||||||||||||||
Total value per product unit, including sales tax/VAT expressed in the payment currency. UnitGrossPrice does not reflect any discounts. | ||||||||||||||||||||||||||||||||||||
UnitVAT | Float | |||||||||||||||||||||||||||||||||||
Sales tax/VAT per product unit expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
UnitDiscount | Float | |||||||||||||||||||||||||||||||||||
Value of the discount per product unit expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
UnitNetDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
The value per product unit, expressed in the payment currency, excluding sales tax/VAT, from which 2Checkout deducts the unit discount. | ||||||||||||||||||||||||||||||||||||
UnitGrossDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
Total costs shoppers incur per product unit, expressed in the payment currency. This value includes sales tax/VAT, 2Checkout and affiliate commissions, but 2Checkout deducts the value of any discounts. | ||||||||||||||||||||||||||||||||||||
UnitAffiliateCommission | Float | |||||||||||||||||||||||||||||||||||
Value of the affiliate commission per product unit calculated expressed in the payment currency.
2Checkout deducts discounts from the costs incurred by shoppers before calculating affiliate commissions.
2Checkout does not take into account shipping costs when calculating affiliate commissions.
NULL when 2Checkout does not apply an affiliate commission. |
||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code for the payment - ISO 4217. Example: usd. | ||||||||||||||||||||||||||||||||||||
NetPrice | Float | |||||||||||||||||||||||||||||||||||
The value per order line, excluding sales tax/VAT expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
GrossPrice | Float | |||||||||||||||||||||||||||||||||||
Total value per order line, including sales tax/VAT expressed in the payment currency. UnitGrossPrice does not reflect any discounts. | ||||||||||||||||||||||||||||||||||||
NetDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
The NetPrice value per order line (in the payment currency), excluding sales tax/VAT, from which 2Checkout deducts discounts. | ||||||||||||||||||||||||||||||||||||
GrossDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
Total costs shoppers incur per order line, expressed in the payment currency. This value includes sales tax/VAT, 2Checkout and affiliate commissions, but 2Checkout deducts the value of any discounts.
Example:
|
||||||||||||||||||||||||||||||||||||
Discount | Float | |||||||||||||||||||||||||||||||||||
Value of the discounts per order line expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
VAT | Float | |||||||||||||||||||||||||||||||||||
Value of sales tax/VAT per order line expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
AffiliateCommission | Float | |||||||||||||||||||||||||||||||||||
Value of the affiliate commission per order line, calculated from the NetDiscountedPrice expressed in the payment currency. Or NULL. 2Checkout does not take into account shipping costs when calculating affiliate commissions. | ||||||||||||||||||||||||||||||||||||
VATPercent | Integer | |||||||||||||||||||||||||||||||||||
Percentage of the VAT/tax applied to the order. | ||||||||||||||||||||||||||||||||||||
HandlingFeeNetPrice | Integer | |||||||||||||||||||||||||||||||||||
Handling fee applied to the NET price configuration. | ||||||||||||||||||||||||||||||||||||
HandlingFeeGrossPrice | Integer | |||||||||||||||||||||||||||||||||||
Handling fee applied to the GROSS price configuration. | ||||||||||||||||||||||||||||||||||||
LineItemReference | String | |||||||||||||||||||||||||||||||||||
System-generated reference for the product item. | ||||||||||||||||||||||||||||||||||||
PurchaseType | String | |||||||||||||||||||||||||||||||||||
Possible values:
|
||||||||||||||||||||||||||||||||||||
Code | String | |||||||||||||||||||||||||||||||||||
Unique product identifier your control. Max length 256 characters. | ||||||||||||||||||||||||||||||||||||
Quantity | Integer | |||||||||||||||||||||||||||||||||||
Number of units | ||||||||||||||||||||||||||||||||||||
SKU | String | |||||||||||||||||||||||||||||||||||
SKU identifier. | ||||||||||||||||||||||||||||||||||||
CrossSell | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
ParentCode | String | |||||||||||||||||||||||||||||||||||
The product code of the master product you set to trigger the campaign. | ||||||||||||||||||||||||||||||||||||
CampaignCode | String | |||||||||||||||||||||||||||||||||||
Unique, system-generated identifier for cross-sell campaigns. | ||||||||||||||||||||||||||||||||||||
Trial | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Period | Integer | |||||||||||||||||||||||||||||||||||
The length of the trial subscription lifetime in days. | ||||||||||||||||||||||||||||||||||||
GrossPrice | Float | |||||||||||||||||||||||||||||||||||
Total trial price in the payment currency before 2Checkout deducts any taxes, discounts, etc. | ||||||||||||||||||||||||||||||||||||
VAT | Float | |||||||||||||||||||||||||||||||||||
The total value of taxes for the trial in the payment currency, before 2Checkout deducts any discounts. | ||||||||||||||||||||||||||||||||||||
NetPrice | Float | |||||||||||||||||||||||||||||||||||
Total trial price in the payment currency, not including taxes, before 2Checkout deducts any discounts. | ||||||||||||||||||||||||||||||||||||
AdditionalFields | Array of objects | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Code | String | |||||||||||||||||||||||||||||||||||
The alpha-numeric characters, underscores and dashes that are set as the field identifier. | ||||||||||||||||||||||||||||||||||||
Text | String | |||||||||||||||||||||||||||||||||||
Field text visible to shoppers in the cart. | ||||||||||||||||||||||||||||||||||||
Value | String | |||||||||||||||||||||||||||||||||||
Selected field value. | ||||||||||||||||||||||||||||||||||||
Promotion | Object | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Name | String | |||||||||||||||||||||||||||||||||||
Promotion name. | ||||||||||||||||||||||||||||||||||||
Description | String | |||||||||||||||||||||||||||||||||||
Promotion description. | ||||||||||||||||||||||||||||||||||||
StartDate | String | |||||||||||||||||||||||||||||||||||
The date when you set the promotion to start. NULL for promotions that start immediately after you create them. | ||||||||||||||||||||||||||||||||||||
EndDate | String | |||||||||||||||||||||||||||||||||||
The date when you set the promotion to end. NULL for promotions you want active indefinitely. | ||||||||||||||||||||||||||||||||||||
MaximumOrdersNumber | Integer | |||||||||||||||||||||||||||||||||||
2Checkout only applies the promotion to a maximum number of orders you define.
Can be NULL if you want the promotion to apply to an unlimited number of orders. |
||||||||||||||||||||||||||||||||||||
MaximumQuantity | Integer | |||||||||||||||||||||||||||||||||||
Discount only applies to a maximum number of units purchased through a single order, smaller than the quantity you defined. Shoppers purchase any extra units at full price. Can be NULL if you want the promotion to apply to an unlimited number units. | ||||||||||||||||||||||||||||||||||||
InstantDiscount | Boolean | |||||||||||||||||||||||||||||||||||
The instant discount option auto-applies the discount for ALL selected products, without the need for shoppers to enter a discount coupon. | ||||||||||||||||||||||||||||||||||||
Coupon | String | |||||||||||||||||||||||||||||||||||
Promotion coupon/voucher. | ||||||||||||||||||||||||||||||||||||
DiscountLabel | String | |||||||||||||||||||||||||||||||||||
Discounts can be set as a percentage from the product price or as a fixed amount in the chosen currency. | ||||||||||||||||||||||||||||||||||||
Enabled | String | |||||||||||||||||||||||||||||||||||
true or false, depending on whether a promotion is active or disabled. | ||||||||||||||||||||||||||||||||||||
Type | String | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
Promotions | Array of objects | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Name | String | |||||||||||||||||||||||||||||||||||
Promotion name. | ||||||||||||||||||||||||||||||||||||
Description | String | |||||||||||||||||||||||||||||||||||
Promotion description. | ||||||||||||||||||||||||||||||||||||
StartDate | String | |||||||||||||||||||||||||||||||||||
The date when you set the promotion to start. NULL for promotions that start immediately after you create them. | ||||||||||||||||||||||||||||||||||||
EndDate | String | |||||||||||||||||||||||||||||||||||
The date when you set the promotion to end. NULL for promotions you want active indefinitely. | ||||||||||||||||||||||||||||||||||||
MaximumOrdersNumber | Integer | |||||||||||||||||||||||||||||||||||
2Checkout only applies the promotion to a maximum number of orders you define.
Can be NULL if you want the promotion to apply to an unlimited number of orders. |
||||||||||||||||||||||||||||||||||||
MaximumQuantity | Integer | |||||||||||||||||||||||||||||||||||
Discount only applies to a specific number of units purchased at once, smaller than the maximum quantity you defined. Shoppers purchase any extra units at full price. Can be NULL if you want the promotion to apply to an unlimited number units. | ||||||||||||||||||||||||||||||||||||
InstantDiscount | Boolean | |||||||||||||||||||||||||||||||||||
The instant discount option auto-applies the discount for ALL selected products, without the need for shoppers to enter a discount coupon. | ||||||||||||||||||||||||||||||||||||
Coupon | String | |||||||||||||||||||||||||||||||||||
Promotion coupon/voucher. | ||||||||||||||||||||||||||||||||||||
DiscountLabel | String | |||||||||||||||||||||||||||||||||||
Discounts can be set as a percentage from the product price or as a fixed amount in the payment currency. | ||||||||||||||||||||||||||||||||||||
Enabled | String | |||||||||||||||||||||||||||||||||||
true or false, depending on whether a promotion is active or disabled. | ||||||||||||||||||||||||||||||||||||
Type | String | |||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
AdditionalFields | Array of objects | |||||||||||||||||||||||||||||||||||
Details below. | ||||||||||||||||||||||||||||||||||||
Code | String | |||||||||||||||||||||||||||||||||||
The alpha-numeric characters, underscores and dashes that are set as the field identifier. | ||||||||||||||||||||||||||||||||||||
Text | String | |||||||||||||||||||||||||||||||||||
Field text visible to shoppers in the cart. | ||||||||||||||||||||||||||||||||||||
Value | String | |||||||||||||||||||||||||||||||||||
Selected field value. | ||||||||||||||||||||||||||||||||||||
Currency | String | |||||||||||||||||||||||||||||||||||
The currency ISO code for the payment - ISO 4217. Example: usd. | ||||||||||||||||||||||||||||||||||||
NetPrice | Float | |||||||||||||||||||||||||||||||||||
Order value excluding sales tax/VAT expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
GrossPrice | Float | |||||||||||||||||||||||||||||||||||
Total order value, including sales tax/VAT expressed in the payment currency. GrossPrice does not reflect any discounts. | ||||||||||||||||||||||||||||||||||||
NetDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
The NetPrice order value excluding sales tax/VAT, from which 2Checkout deducts discounts. NetDiscountedPrice is expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
GrossDiscountedPrice | Float | |||||||||||||||||||||||||||||||||||
Total costs shoppers incur, expressed in the payment currency. This value includes sales tax/VAT, 2Checkout and affiliate commissions, but 2Checkout deducts the value of any discounts.
For example:
|
||||||||||||||||||||||||||||||||||||
Discount | Float | |||||||||||||||||||||||||||||||||||
Value of the discounts for an order expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
VAT | Float | |||||||||||||||||||||||||||||||||||
Value of sales tax/VAT expressed in the payment currency. | ||||||||||||||||||||||||||||||||||||
AffiliateCommission | Float | |||||||||||||||||||||||||||||||||||
Value of the affiliate commission for the order calculated from the NetDiscountedPrice expressed in the payment currency. Or NULL. 2Checkout does not take into account shipping costs when calculating affiliate commissions. | ||||||||||||||||||||||||||||||||||||
FxRate | Integer | |||||||||||||||||||||||||||||||||||
Exchange rate used by 2Checkout for converting the order to your payout currency. | ||||||||||||||||||||||||||||||||||||
FxMarkup | Integer | |||||||||||||||||||||||||||||||||||
Exchange rate markup for the order. | ||||||||||||||||||||||||||||||||||||
PayoutCurrency | String | |||||||||||||||||||||||||||||||||||
The ISO code of your account's payout currency - ISO 4217. |
Create price option groups
Overview
Use the addPriceOptionGroup method to create price options for your subscription plans/products.
- Send options for each pricing group or 2Checkout throws an exception.
- When adding an interval with no min/max values or overlapping values, 2Checkout throws an exception.
Parameters
Parameters | Type/Description |
---|---|
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. |
Required (object) |
|
|
Use this object to create a new price option group for your account. |
Response
bool(true)
Request
<?php
require ('PATH_TO_AUTH');
$PriceOptionGroup = new stdClass();
$PriceOptionGroup->Name = 'New Multi Users';
$PriceOptionGroup->Description = 'Quos aut ipsam ipsum omnis aut molestiae. Et quod molestias distinctio. Fugiat sit asperiores reprehenderit officia eaque quae quia. Aperiam quia quia illo eos nesciunt accusamus.';
$PriceOptionGroup->Translations = array();
$PriceOptionGroup->Translations[0] = new stdClass();
$PriceOptionGroup->Translations[0]->Name = 'xdrki7ljix';
$PriceOptionGroup->Translations[0]->Description = 'Beatae doloribus ipsam voluptatem et. Iure dignissimos non amet. Quibusdam fugiat dolor repudiandae temporibus harum.';
$PriceOptionGroup->Translations[0]->Language = 'en';
$PriceOptionGroup->Translations[1] = new stdClass();
$PriceOptionGroup->Translations[1]->Name = '37wr8ie2dj';
$PriceOptionGroup->Translations[1]->Description = 'Esse distinctio voluptatibus omnis et et quia dolor. Quibusdam dicta dolores odio consequatur velit voluptate. Laboriosam reiciendis libero vel quae molestiae ad.';
$PriceOptionGroup->Translations[1]->Language = 'ru';
$PriceOptionGroup->Type = 'RADIO';
$PriceOptionGroup->Options = array();
$PriceOptionGroup->Options[0] = new stdClass();
$PriceOptionGroup->Options[0]->Name = 'SingleUser';
$PriceOptionGroup->Options[0]->Description = 'Nisi ea autem a labore similique. Minus natus cumque nemo. Aut aliquam laboriosam dolorem ad.';
$PriceOptionGroup->Options[0]->Translations = array();
$PriceOptionGroup->Options[0]->Translations[0] = new stdClass();
$PriceOptionGroup->Options[0]->Translations[0]->Name = '0q2r3kcj0q';
$PriceOptionGroup->Options[0]->Translations[0]->Description = 'Voluptatem in vitae rerum ea tempore. Non cumque ullam optio quis. Laborum maxime sunt facere. Dolor fugit a fugiat quasi facere totam.';
$PriceOptionGroup->Options[0]->Translations[0]->Language = 'en';
$PriceOptionGroup->Options[0]->Translations[1] = new stdClass();
$PriceOptionGroup->Options[0]->Translations[1]->Name = 'dwfxuw4lrn';
$PriceOptionGroup->Options[0]->Translations[1]->Description = 'Debitis omnis maiores quia praesentium totam error corrupti. Consectetur eum magnam quam vero. Sit aperiam natus perspiciatis iusto sint ut fugit. Adipisci illum non voluptatem voluptas.';
$PriceOptionGroup->Options[0]->Translations[1]->Language = 'it';
$PriceOptionGroup->Options[0]->Code = 'singleuser1';
$PriceOptionGroup->Options[0]->SubscriptionImpact = new stdClass();
$PriceOptionGroup->Options[0]->SubscriptionImpact->Impact = 'Add';
$PriceOptionGroup->Options[0]->SubscriptionImpact->Months = 1;
$PriceOptionGroup->Options[0]->PriceImpact = new stdClass();
$PriceOptionGroup->Options[0]->PriceImpact->Method = 'FIXED';
$PriceOptionGroup->Options[0]->PriceImpact->Amounts = array();
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[0] = new stdClass();
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[0]->Currency = 'USD';
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[0]->Amount = 90.61;
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[1] = new stdClass();
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[1]->Currency = 'EUR';
$PriceOptionGroup->Options[0]->PriceImpact->Amounts[1]->Amount = 6.70;
$PriceOptionGroup->Options[0]->PriceImpact->ImpactOn = 'BASE';
$PriceOptionGroup->Options[0]->PriceImpact->Impact = 'ADD';
$PriceOptionGroup->Options[0]->PriceImpact->Percent = 39;
$PriceOptionGroup->Options[0]->Default = false;
$PriceOptionGroup->Options[1] = new stdClass();
$PriceOptionGroup->Options[1]->Name = 'MultiUser';
$PriceOptionGroup->Options[1]->Description = 'Vero voluptatum fuga et repellendus sed qui. Dolores molestiae error non ad aperiam. In error quos eum quas repudiandae pariatur et suscipit.';
$PriceOptionGroup->Options[1]->Translations = array();
$PriceOptionGroup->Options[1]->Translations[0] = new stdClass();
$PriceOptionGroup->Options[1]->Translations[0]->Name = 'MultiUser';
$PriceOptionGroup->Options[1]->Translations[0]->Description = 'Debitis et saepe facere blanditiis. Tempore et nemo aut ullam possimus ipsum nisi. Ad libero et consequuntur aliquam libero. Rerum aut illum eveniet earum.';
$PriceOptionGroup->Options[1]->Translations[0]->Language = 'en';
$PriceOptionGroup->Options[1]->Translations[1] = new stdClass();
$PriceOptionGroup->Options[1]->Translations[1]->Name = 'dw5zgkcki9';
$PriceOptionGroup->Options[1]->Translations[1]->Description = 'Vel et excepturi veniam. In iusto eveniet pariatur hic labore. Et qui dolorem accusantium molestias iusto.';
$PriceOptionGroup->Options[1]->Translations[1]->Language = 'pt';
$PriceOptionGroup->Options[1]->Code = 'multiuser999';
$PriceOptionGroup->Options[1]->SubscriptionImpact = new stdClass();
$PriceOptionGroup->Options[1]->SubscriptionImpact->Impact = 'ADD';
$PriceOptionGroup->Options[1]->SubscriptionImpact->Months = 2;
$PriceOptionGroup->Options[1]->PriceImpact = new stdClass();
$PriceOptionGroup->Options[1]->PriceImpact->Method = 'FIXED';
$PriceOptionGroup->Options[1]->PriceImpact->Amounts = array();
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[0] = new stdClass();
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[0]->Currency = 'USD';
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[0]->Amount = 65.03;
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[1] = new stdClass();
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[1]->Currency = 'EUR';
$PriceOptionGroup->Options[1]->PriceImpact->Amounts[1]->Amount = 64.58;
$PriceOptionGroup->Options[1]->PriceImpact->ImpactOn = 'BASE';
$PriceOptionGroup->Options[1]->PriceImpact->Impact = 'ADD';
$PriceOptionGroup->Options[1]->PriceImpact->Percent = 51;
$PriceOptionGroup->Options[1]->Default = true;
$PriceOptionGroup->Code = null;
$PriceOptionGroup->Required = false;
$jsonRpcRequest = array (
'jsonrpc' => '2.0',
'id' => $i++,
'method' => 'addPriceOptionGroup',
'params' => array($sessionID, $PriceOptionGroup)
);
var_dump (callRPC((Object)$jsonRpcRequest, $host, true));
?>
Pay-per-Usage
Use this option to create and assign PAYPERUSE price options to your portfolio.
For non PAYPERUSAGE cases, the Usage and UsagePricingModel fields are not required.
Request sample with PAYPERUSE
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
public const URL = 'http://api.2checkout.com/rpc/6.0';
public const ACTION = 'addPriceOptionGroup';
public const ADDITIONAL_OPTIONS = null;
//array or JSON
public const PAYLOAD = <<<JSON
{
"Type": "INTERVAL",
"Code": "PayPerUsage-CODE",
"Required": false,
"Name": "Pay per usage pricing option group",
"Description": "Test option description",
"Usage": "PAYPERUSAGE",
"UsagePricingModel": "STEPPED",
"Options": [
{
"Code": "9876545678",
"ScaleMin": "1",
"ScaleMax": "9",
"SubscriptionImpact": {
"Months": "0.00",
"Impact": null
},
"PriceImpact": {
"Amounts": {
"USD": {
"Currency": "USD",
"Amount": "1.00"
},
"EUR": {
"Currency": "EUR",
"Amount": "6.00"
}
},
"ImpactOn": null,
"Method": "FIXED",
"Percent": null,
"Impact": null
},
"Default": false,
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Translations": [
{
"Name": "translation_5f90150268bf7",
"Description": "Translation value",
"Language": "RO"
},
{
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Language": "EN"
},
{
"Name": "translation_5f90150268bf9",
"Description": "Translation value",
"Language": "FR"
},
{
"Name": "translation_5f90150268bf5",
"Description": "Translation value",
"Language": "RU"
}
]
},
{
"Code": "98765456789",
"ScaleMin": "10",
"ScaleMax": "19",
"SubscriptionImpact": {
"Months": "0.00",
"Impact": null
},
"PriceImpact": {
"Amounts": {
"USD": {
"Currency": "USD",
"Amount": "1.00"
},
"EUR": {
"Currency": "EUR",
"Amount": "6.00"
}
},
"ImpactOn": null,
"Method": "FIXED",
"Percent": null,
"Impact": null
},
"Default": false,
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Translations": [
{
"Name": "translation_5f90150268bf7",
"Description": "Translation value",
"Language": "RO"
},
{
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Language": "EN"
},
{
"Name": "translation_5f90150268bf9",
"Description": "Translation value",
"Language": "FR"
},
{
"Name": "translation_5f90150268bf5",
"Description": "Translation value",
"Language": "RU"
}
]
}
],
"Translations": [
{
"Name": "Pay per usage pricing option group",
"Description": "Test option description",
"Language": "EN"
}
]
}
JSON;
}
class Client
{
private const LOGIN_METHOD = 'login';
private $calls = 1;
private $sessionId;
private function generateAuth(): array
{
$merchantCode = Configuration::MERCHANT_CODE;
$key = Configuration::MERCHANT_KEY;
$date = gmdate('Y-m-d H:i:s');
$string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
$hash = hash_hmac('md5', $string, $key);
return compact('merchantCode', 'date', 'hash');
}
public function login(string $url)
{
$payload = $this->generateAuth();
$response = $this->call($url, array_values($payload), self::LOGIN_METHOD);
$this->sessionId = $response['result'];
}
public function call(
string $url = Configuration::URL,
$payload = Configuration::PAYLOAD,
string $action = Configuration::ACTION
): ?array {
if (empty($this->sessionId) && $action !== self::LOGIN_METHOD) {
$this->login($url);
}
if(is_string($payload)) {
$payload = json_decode($payload, true);
}
if (!empty($this->sessionId)) {
$payload = [$this->sessionId, $payload, Configuration::ADDITIONAL_OPTIONS];
}
$payload = array_filter($payload);
$request = json_encode([
'jsonrpc' => '2.0',
'method' => $action,
'params' => $payload,
'id' => $this->calls++,
]);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
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', 'Cookie: XDEBUG_SESSION=PHPSTORM'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($curl);
if(empty($response)) {
die('Server unavailable');
}
echo $response . '</br>';
return json_decode($response, true);;
}
}
$client = new Client();
$result = $client->call();
var_dump($result);
Request sample without PAYPERUSE
<?php
declare(strict_types=1);
class Configuration
{
public const MERCHANT_CODE = '';
public const MERCHANT_KEY = '';
public const URL = 'http://api.2checkout.com/rpc/6.0';
public const ACTION = 'addPriceOptionGroup';
public const ADDITIONAL_OPTIONS = null;
//array or JSON
public const PAYLOAD = <<<JSON
{
"Type": "RADIO",
"Code": "RADIO-CODE",
"Required": false,
"Name": "Radio pricing option group",
"Description": "Test option description",
"Options": [
{
"Code": "9876545678",
"ScaleMin": "1",
"ScaleMax": "9",
"SubscriptionImpact": {
"Months": "0.00",
"Impact": null
},
"PriceImpact": {
"Amounts": {
"USD": {
"Currency": "USD",
"Amount": "1.00"
},
"EUR": {
"Currency": "EUR",
"Amount": "6.00"
}
},
"ImpactOn": null,
"Method": "FIXED",
"Percent": null,
"Impact": null
},
"Default": false,
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Translations": [
{
"Name": "translation_5f90150268bf7",
"Description": "Translation value",
"Language": "RO"
},
{
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Language": "EN"
},
{
"Name": "translation_5f90150268bf9",
"Description": "Translation value",
"Language": "FR"
},
{
"Name": "translation_5f90150268bf5",
"Description": "Translation value",
"Language": "RU"
}
]
},
{
"Code": "98765456789",
"ScaleMin": "10",
"ScaleMax": "19",
"SubscriptionImpact": {
"Months": "0.00",
"Impact": null
},
"PriceImpact": {
"Amounts": {
"USD": {
"Currency": "USD",
"Amount": "1.00"
},
"EUR": {
"Currency": "EUR",
"Amount": "6.00"
}
},
"ImpactOn": null,
"Method": "FIXED",
"Percent": null,
"Impact": null
},
"Default": false,
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Translations": [
{
"Name": "translation_5f90150268bf7",
"Description": "Translation value",
"Language": "RO"
},
{
"Name": "translation_5f90150268bef",
"Description": "Translation value",
"Language": "EN"
},
{
"Name": "translation_5f90150268bf9",
"Description": "Translation value",
"Language": "FR"
},
{
"Name": "translation_5f90150268bf5",
"Description": "Translation value",
"Language": "RU"
}
]
}
],
"Translations": [
{
"Name": "Radio pricing option group",
"Description": "Test option description",
"Language": "EN"
}
]
}
JSON;
}
class Client
{
private const LOGIN_METHOD = 'login';
private $calls = 1;
private $sessionId;
private function generateAuth(): array
{
$merchantCode = Configuration::MERCHANT_CODE;
$key = Configuration::MERCHANT_KEY;
$date = gmdate('Y-m-d H:i:s');
$string = strlen($merchantCode) . $merchantCode . strlen($date) . $date;
$hash = hash_hmac('md5', $string, $key);
return compact('merchantCode', 'date', 'hash');
}
public function login(string $url)
{
$payload = $this->generateAuth();
$response = $this->call($url, array_values($payload), self::LOGIN_METHOD);
$this->sessionId = $response['result'];
}
public function call(
string $url = Configuration::URL,
$payload = Configuration::PAYLOAD,
string $action = Configuration::ACTION
): ?array {
if (empty($this->sessionId) && $action !== self::LOGIN_METHOD) {
$this->login($url);
}
if(is_string($payload)) {
$payload = json_decode($payload, true);
}
if (!empty($this->sessionId)) {
$payload = [$this->sessionId, $payload, Configuration::ADDITIONAL_OPTIONS];
}
$payload = array_filter($payload);
$request = json_encode([
'jsonrpc' => '2.0',
'method' => $action,
'params' => $payload,
'id' => $this->calls++,
]);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
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', 'Cookie: XDEBUG_SESSION=PHPSTORM'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($curl);
if(empty($response)) {
die('Server unavailable');
}
echo $response . '</br>';
return json_decode($response, true);;
}
}
$client = new Client();
$result = $client->call();
var_dump($result);
Cross-sell
Overview
Use this object to retrieve information about the cross-sell campaigns you configured for your account.
Parameters
Parameter | Type/Description | |
---|---|---|
CrossSellCampaign |
Object |
|
MasterProducts |
Array |
|
|
Array of product codes for the items you set to trigger the cross-sell campaign. |
|
DisplayType |
String |
|
|
|
|
DisplayInEmail |
Boolean |
|
|
True or false depending on whether you set the cross-sell campaign to display in payment receipt emails or not. |
|
Products |
Array of objects |
|
|
Details below |
|
|
ProductCode |
String |
|
|
Product code for the item you set as recommended for the cross-sell campaign. |
|
Discount |
String |
|
|
Value of the discount. This is a percentage. |
|
DiscountType |
String |
|
|
PERCENT – you can only set discounts as a percentage from the product price. |
CampaignCode |
String |
|
|
Unique, system-generated cross-sell campaign code. |
|
Name |
String |
|
|
Campaign name. |
|
StartDate |
String |
|
|
YYYY-MM-DD. The start date you set for the cross-sell campaign. |
|
EndDate |
String |
|
|
YYYY-MM-DD. The end date you set for the cross-sell campaign. |
Search subscriptions
Overview
Extract information on your account’s subscriptions. Use the searchSubscriptions method to retrieve details about your account’s subscriptions, based on a set of filters.
Subscriptions can be retrieved starting with 5 minutes after their orders are generated in the 2Checkout system.
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. |
searchBy |
Optional (Object) |
Contains any combination of the available additional search filters. |
Additional search filters
SubscriptionSearchOptions Parameters | Type/Description |
---|---|
CustomerEmail |
Optional (string) |
|
Customer email address. Can be NULL. Note: The CustomerEmail parameter must be paired always with another reference pointing to the correct customer, such as the 2CheckoutCustomerReference parameter or the ExternalCustomerReference parameter. Otherwise, the search call will return partial hits on the customer email address. |
ExactMatchEmail | Optional (Boolean) |
Force search by email to perform exact match; recommended to keep this option set to true in order to avoid matching similar email addresses from multiple customers. | |
DeliveredCode |
Optional (string) |
Activation key/code. Can be NULL. |
|
AvangateCustomerReference |
Optional (int) |
|
System-generated customer reference. Can be NULL. |
ExternalCustomerReference |
Optional (string) |
|
External customer reference that you control. Can be NULL. |
Aggregate |
Optional (boolean) |
|
true - search will work across all your aggregated 2Checkout accounts. false - default value. You limit the search to the account whose details you used for authentication. Can be NULL. |
SubscriptionEnabled |
Optional (boolean) |
|
true for enabled subscriptions. false for disabled subscriptions. Can be NULL. |
RecurringEnabled |
Optional (StringArray) |
|
true – 2Checkout charges customers using recurring billing for subscriptions. false – customers need to make manual payments to renew their subscriptions. Can be NULL. |
ProductCodes |
Optional (StringArray) |
|
Product identifier that you control. Can be NULL. |
CountryCodes |
Optional (string) |
|
Country code (ISO 3166 two-letter code). Can be NULL. |
PartnerCode | Optional (string) |
Can be NULL. | |
PurchasedAfter |
Optional (string) |
|
YYYY-MM-DD. Subscription search interval start. You can search for subscriptions purchased between the dates you set using PurchasedAfter and PurchasedBefore. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
PurchasedBefore |
Optional (string) |
|
YYYY-MM-DD. Subscription search interval end. You can search for subscriptions purchased between the dates you set using PurchasedAfter and PurchasedBefore. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
ExpireAfter |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions set to expire after a specific date. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
ExpireBefore |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions set to expire before a specific date. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
ModifiedAfter | Optional (string) |
YYYY-MM-DD. Search subscriptions modified after a specific date. | |
ModifiedBefore | Optional (string) |
YYYY-MM-DD. Search subscriptions modified before a specific date. | |
RenewedAfter |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions renewed after a specific date. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
RenewedBefore |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions renewed before a specific date. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
NotificationAfter |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions for which the 2Checkout system sent out notifications after a specific date. Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
NotificationBefore |
Optional (string) |
|
YYYY-MM-DD. Search subscriptions for which the 2Checkout system sent out notifications before a specific date Note: The default 2Checkout API time zone is GMT+02:00. Can be NULL. |
NextBillingDateAfter | Optional (string) |
YYYY-MM-DD. Search subscriptions with the next billing date after the specified date | |
NextBillingDateBefore | Optional (string) |
YYYY-MM-DD. Search subscriptions with the next billing date before the specified date | |
Type |
Optional (string) |
|
trial - trial subscriptions. regular - all generated subscriptions that are not trials. regularfromtrial - subscriptions generated from a trial conversion. Can be NULL. |
TestSubscription |
Optional (boolean) |
|
true false, depending on whether you want to include test subscriptions in the search or not. Can be NULL. |
LifetimeSubscription |
Optional (boolean) |
|
true – evergreen subscriptions. false - subscriptions with a limited recurring billing cycle, typically no larger than 36 months. Can be NULL. |
Page |
Optional (int) |
|
A specific page of search results. Default value is 1. Can be NULL. |
Limit |
Optional (int) |
|
Number of results (subscriptions) displayed per page. Default value is 10. Can be NULL. |
Response
Parameters | Type/Description |
---|---|
Array of objects |
Request
<?php
require ('PATH_TO_AUTH');
$SubscriptionSearch = new stdClass();
$SubscriptionSearch->CustomerEmail = 'example@email.com';
$SubscriptionSearch->DeliveredCode = null;
$SubscriptionSearch->AvangateCustomerReference = null;
$SubscriptionSearch->ExternalCustomerReference = null;
$SubscriptionSearch->Aggregate = false;
$SubscriptionSearch->SubscriptionEnabled = null; //true false null
$SubscriptionSearch->RecurringEnabled = null; // true - autorenewal, false - manual renewal, null = both(default)
$SubscriptionSearch->ProductCodes = null; //array('Product_Code1', 'Product_Code2');
$SubscriptionSearch->CountryCodes = null;//array ('au')
$SubscriptionSearch->PurchasedAfter = null;
$SubscriptionSearch->PurchasedBefore = null;
$SubscriptionSearch->ExpireAfter = null;
$SubscriptionSearch->ExpireBefore = null;
$SubscriptionSearch->LifetimeSubscription = null;
$SubscriptionSearch->Type = 'regular'; //'trial', 'regular', 'regularfromtrial'
$SubscriptionSearch->TestSubscription = null;
$SubscriptionSearch->Pagination = new stdClass();
$SubscriptionSearch->Pagination->Page = 1;
$SubscriptionSearch->Pagination->Limit = 10; //maximum value is 200;
try {
$accountSubscriptions = $client->searchSubscriptions($sessionID, $SubscriptionSearch);
}
catch (SoapFault $e) {
echo "accountSubscriptions: " . $e->getMessage();
exit;
}
var_dump("accountSubscriptions", $accountSubscriptions);;
?>
Perform action
Overview
Use the performAction method via SOAP APIv6 to execute an action on the proposal.
Request parameters
Action | Parameters | Type | Required/Optional | Description |
---|---|---|---|---|
sessionId | String | Required | Unique 2Checkout session ID code. | |
SEND |
proposalId | String | Required | The unique merchant proposal ID generated by the 2Checkout system. |
exirationDate | Date | Required | The date at which the proposal expires; date-time ISO 8601 format | |
userId | String | Optional | The unique user ID generated by the 2Checkout system. | |
action | String | Required | The action to be executed on the proposal. | |
statusComment | String | Optional | Free text comments that can accompany a status. | |
sentBy | String | Required | Represents the account manager of the merchant. | |
FirstName |
String | Required | The first name of the email sender. | |
LastName |
String | Required | The last name of the email sender. | |
|
String | Required | The email address of the email sender. | |
ACCEPT |
action | String | Required | The action to be executed on the proposal. |
statusComment | String | Optional | Free text comments that can accompany a status. | |
CLOSE |
action | String | Required | The action to be executed on the proposal. |
statusComment | String | Optional | Free text comments that can accompany a status. | |
userId | String | Optional | The unique user ID generated by the 2Checkout system. | |
DISCARD |
action | String | Required | The action to be executed on the proposal. |
statusComment | String | Optional | Free text comments that can accompany a status. | |
userId | String | Optional | The unique user ID generated by the 2Checkout system. | |
REOPEN |
action | String | Required | The action to be executed on the proposal. |
statusComment | String | Optional | Free text comments that can accompany a status. | |
userId | String | Optional | The unique user ID generated by the 2Checkout system. | |
DECLINE |
action | String | Required | The action to be executed on the proposal. |
statusComment | String | Optional | Free text comments that can accompany a status. |
Request sample
<?php
require ('PATH_TO_AUTH');
$proposalId = "0573e71d-38bb-4d61-88ca-b3c557517c68";
$actionPayload = new stdClass();
$actionPayload->ExpirationDate = "2021-01-05T17:21:42+00:00";
$actionPayload->UserId = "john.doe@email.com";
$actionPayload->action = "decline";
$actionPayload->StatusComment = "The price is too high for the first product";
$actionPayload->SentBy = new stdClass();
$actionPayload->SentBy->FirstName = "John";
$actionPayload->SentBy->LastName = "Doe";
$actionPayload->SentBy->Email = "john.doe@email.com";
try {
$results = $soapClient->performAction($sessionID, $proposalId , $actionPayload);
echo "Performing action: </br>",
var_dump($results);
}
catch (SoapFault $e) {
echo "Could not perform action: " . $e->getMessage();
exit;
}
Response
The performAction call via SOAP APIv6 returns the Proposal object.