> For the complete documentation index, see [llms.txt](https://docs.2checkout.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.2checkout.com/product-catalog/product-catalog/import-export-product-and-pricing-data/import-product-data-using-xml-files.md).

# Import product data using XML files

## Overview

2Checkout recommends that you use XML when importing product and pricing data into the system.

## Availability

Importing XML files is available for all 2Checkout accounts.

## Requirements

It's recommended that at least one product be configured in the 2Checkout system. This way you'll be able to download the offerings as an XML and access a schema that best fits your specific account.

## Product

Use the **Product** object to create/add, update/edit, and retrieve subscription plans/products for your account. You can control:

* Product information
* Pricing
* Subscription plan settings and renewal configuration
* Subscription plan recurring billing
* Fulfillment
* Shipping classes
* Localization

## Import limitations

For optimal performance, we recommend importing batches of 20 to 30 products at once, and using XML files smaller than 750 MB.

At this point in time, the **Import from URL** functionality is not available for XML files.

Mandatory elements

Below is an example of the minimum required data for the importing process when using XML files:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<Import>
<Products>
<Product enabled="1">
<ProductName><![CDATA[Product for import]]></ProductName>
<ProductCode><![CDATA[productforimportCODE12345]]></ProductCode>
<PricingConfigurations>
<PricingConfiguration default="1"><DefaultCurrency>EUR</DefaultCurrency></PricingConfiguration>
</PricingConfigurations>
</Product>
</Products>
</Import>
```

## Product

\<Product id="1234567" enabled="1"> - product is enabled

\<Product id="1234567" > - product is disabled

\<Product id="1234567" enabled="0"> - product is disabled

| Product code (mandatory) | Product ID (optional) | Result               |
| ------------------------ | --------------------- | -------------------- |
| Existent                 | Missing               | Product is updated   |
| Existent                 | Existent              | Product is updated   |
| Existent                 | New (is ignored)      | Product is updated   |
| New                      | New (is ignored)      | New product is added |
| New                      | Missing               | New product is added |
| New                      | Existent              | New product is added |

## Product code

Make sure to set unique product codes to identify your products in the 2Checkout system. In scenarios involving product import and export, the product code takes precedence over the product ID, which can be excluded altogether. While the system-generated ID is unique across the platform, the product code that you control needs to be unique only for standalone accounts. This enables you to perform such tasks as product migration from one 2Checkout account to another.

## Pricing configuration

To import a product with the minimum required information, the **Pricing configuration** element must be included, along with the default currency. All other elements can be omitted.

## How do I import an XML file?

To import existing product data from the 2Checkout platform:

1. Make your way to [*Products*](https://secure.avangate.com/cpanel/products.php) under *Setup*.
2. Click on [**Import**](https://secure.avangate.com/cpanel/import.php).
3. Click **Choose file** and select the XML stored on your machine.
4. Hit **Next step**.
5. The 2Checkout system validates the XML file.
6. Click **Start upload**.

## Parameters

<details>

<summary><strong>Additional fields</strong></summary>

<table><thead><tr><th width="213">Parameter</th><th>Type / Description</th></tr></thead><tbody><tr><td><code>AdditionalField</code></td><td><strong>Object</strong></td></tr><tr><td><code>Label</code></td><td><p><strong>String</strong></p><p>Field text.</p></td></tr><tr><td><code>Code</code></td><td><p><strong>String</strong></p><p>Field identifier. Alpha-numeric chars, underscores and dashes.</p></td></tr><tr><td><code>Type</code></td><td><p><strong>String</strong></p><p>Field type: </p><ul><li>LISTBOX</li><li>CHECKBOX</li><li>TEXTBOX</li><li>HIDDEN</li></ul></td></tr><tr><td><code>ApplyTo</code></td><td><p><strong>String</strong></p><ul><li>ORDER</li><li>PRODUCT</li></ul></td></tr><tr><td><code>Values</code></td><td><p><strong>Array of values</strong></p><p>Custom values you control.</p></td></tr><tr><td><code>ValidationRule</code></td><td><p><strong>String</strong></p><p>The validation rule restricting the type of information shoppers can enter in the additional field during the purchase process.</p></td></tr><tr><td><code>Translations</code></td><td><p><strong>Array of objects</strong></p><p>Details below.</p></td></tr><tr><td><code>Translation.Label</code></td><td><p><strong>String</strong></p><p>Field text translated in the language of the Translations object.</p></td></tr><tr><td><code>Translation.Values</code></td><td><p><strong>Object</strong></p><p>Custom values you control translated in the language of the Translations object.</p></td></tr><tr><td><code>Translation.Language</code></td><td><p><strong>String</strong></p><p>ISO language code (ISO 639-1 two-letter code).</p></td></tr></tbody></table>

</details>

<details>

<summary><strong>Pricing</strong></summary>

<table><thead><tr><th width="334">Parameter</th><th>Type / Description</th></tr></thead><tbody><tr><td><code>PriceOptionsGroup</code></td><td><strong>Object</strong></td></tr><tr><td><code>Name</code></td><td><p><strong>String</strong></p><p>Price option group name. Use when adding a new group. To edit a group's name use the Name parameter under Translations.</p></td></tr><tr><td><code>Description</code></td><td><p><strong>String</strong></p><p>Pricing option group description.</p></td></tr><tr><td><code>Translations</code></td><td><p><strong>Array of objects</strong></p><p>Localized Name/Description and Language (ISO 639-1 code).</p></td></tr><tr><td><code>Translations.Name</code></td><td><strong>String</strong><br>Product pricing options group name, localized under Options.</td></tr><tr><td><code>Translations.Description</code></td><td><strong>String</strong><br>Product pricing options group description, localized under Options.</td></tr><tr><td><code>Translations.Language</code></td><td><strong>String</strong><br>ISO language code. (ISO 639-1 two-letter code).</td></tr><tr><td><code>Code</code></td><td><p><strong>String</strong></p><p>Unique code system generates or you set for each pricing options group.</p></td></tr><tr><td><code>Type</code></td><td><p><strong>String</strong></p><ul><li>RADIO</li><li>CHECKBOX</li><li>INTERVAL</li><li>COMBO</li></ul></td></tr><tr><td><code>Options</code></td><td><p><strong>Array of objects</strong></p><p>Pricing option children.</p></td></tr><tr><td><code>Options.Name</code></td><td><strong>String</strong><br>Pricing option child name.</td></tr><tr><td><code>Options.Description</code></td><td><strong>String</strong><br>Pricing option child description.</td></tr><tr><td><code>Options.Translations</code></td><td><strong>Array of objects</strong><br>Details above.</td></tr><tr><td><code>Options.Translations.Name</code></td><td><p><strong>String</strong><br>Localized product pricing options group name under PriceOptionGroup.</p><p>Localized pricing option child name under Options.</p></td></tr><tr><td><code>Options.Translations.Description</code></td><td><p><strong>String</strong><br>Localized product pricing options group description under PriceOptionGroup.</p><p>Localized pricing option child description under Options.</p></td></tr><tr><td><code>Options.Translations.Language</code></td><td><strong>String</strong><br>ISO language code. (ISO 639-1 two-letter code).</td></tr><tr><td><code>Options.Code</code></td><td><strong>String</strong><br>The code you set or that the Avangate system generated for each pricing option child inside a pricing options group parent.</td></tr><tr><td><code>Options.ScaleMin</code></td><td><strong>Int</strong><br>The minimum value of a scale interval set for each pricing option child inside a pricing options group parent of the type INTERVAL.</td></tr><tr><td><code>Options.ScaleMax</code></td><td><strong>Int</strong><br>The maximum value of a scale interval set for each pricing option child inside a pricing options group parent of the type INTERVAL.</td></tr><tr><td><code>Options.SubscriptionImpact</code></td><td><strong>Object</strong><br>Details below.</td></tr><tr><td><code>Options.Months</code></td><td><strong>String</strong><br>The value in months the Avangate system adds or subtracts from the initial billing cycle of a subscription.</td></tr><tr><td><code>Options.Impact</code></td><td><p><strong>String</strong><br>Possible values:</p><ul><li>ADD</li><li>SUBTRACT</li><li>LIFETIME</li></ul></td></tr><tr><td><code>Options.PriceImpact</code></td><td><strong>Object</strong><br>Details below.</td></tr><tr><td><code>Options.PriceImpact.ImpactOn</code></td><td><p><strong>String</strong></p><p>Possible values:</p><ul><li>BASE corresponding to impact on base price</li><li>GLOBAL for impact on calculated sum.</li></ul></td></tr><tr><td><code>Options.PriceImpact.Impact</code></td><td><p><strong>String</strong></p><p>Impact on price per unit:</p><ul><li>ADD</li><li>SUBTRACT</li></ul></td></tr><tr><td><code>Options.PriceImpact.Percent</code></td><td><strong>String</strong><br>The value of the percentage out of the price per product unit, when you use PERCENT for Method.</td></tr><tr><td><code>Options.PriceImpact.Method</code></td><td><p><strong>String</strong><br>Possible values:</p><ul><li>PERCENT</li><li>FIXED</li></ul></td></tr><tr><td><code>Options.PriceImpact.Amounts</code></td><td><strong>Array of objects</strong><br>Details below.</td></tr><tr><td><code>Options.PriceImpact.Amounts.Currency</code></td><td><strong>String</strong><br>Currency ISO code - ISO 4217.</td></tr><tr><td><code>Options.PriceImpact.Amounts.Amount</code></td><td><strong>String</strong><br>The amount defined for each specific currency active for your account, when you use FIXED for Method.</td></tr><tr><td><code>Options.Default</code></td><td><p><strong>Boolean</strong><br>TRUE for preselected options.</p><p>Missing for options that are not preselected.</p></td></tr><tr><td><code>Required</code></td><td><strong>Boolean (0/1)</strong><br>True if you made the pricing option group mandatory.</td></tr></tbody></table>

</details>

<details>

<summary><strong>Product</strong></summary>

This object contains many fields. Key parameters:

<table><thead><tr><th width="354">Parameter</th><th>Type / Description</th></tr></thead><tbody><tr><td><code>Product</code></td><td><strong>Object</strong></td></tr><tr><td><code>AvangateId</code></td><td><p><strong>Int</strong></p><p>Unique system-generated product ID (read-only).</p></td></tr><tr><td><code>ProductCode</code></td><td><p><strong>String</strong></p><p>Product code you define; must be unique.</p></td></tr><tr><td><code>ProductType</code></td><td><p><strong>String</strong></p><ul><li>REGULAR</li><li>BUNDLE</li></ul></td></tr><tr><td><code>ProductName</code></td><td><strong>String</strong></td></tr><tr><td><code>ProductVersion</code></td><td><strong>String</strong></td></tr><tr><td><code>GroupName</code></td><td><p><strong>String</strong></p><p>Product Group name (cannot be edited via addProduct).</p></td></tr><tr><td><code>ShippingClass</code></td><td><p><strong>Object</strong></p><p>Existing shipping class object with the structure detailed below.</p></td></tr><tr><td><code>ShippingClass.Name</code></td><td><strong>String</strong><br>The name of the shipping class</td></tr><tr><td><code>ShippingClass.Amount</code></td><td><strong>Decimal</strong><br>The shipping costs</td></tr><tr><td><code>ShippingClass.Currency</code></td><td><strong>String</strong><br>The currency ISO code used for shipping costs - ISO 4217.</td></tr><tr><td><code>ShippingClass.ApplyTo</code></td><td><p><strong>String</strong><br>Possible values:</p><ul><li>PRODUCT</li><li>ORDER</li></ul></td></tr><tr><td><code>ShippingClass.Type</code></td><td><p>Possible values:</p><ul><li>FIXED</li><li>PERCENT</li></ul></td></tr><tr><td><code>GiftOption</code></td><td><strong>Boolean</strong><br>True or false depending on whether the product can be gifted or not.</td></tr><tr><td><code>ShortDescription</code></td><td><strong>String</strong><br>The product's short description</td></tr><tr><td><code>LongDescription</code></td><td><strong>String</strong><br>The product's long description</td></tr><tr><td><code>SystemRequirements</code></td><td><strong>String</strong><br>System requirements</td></tr><tr><td><code>ProductCategory</code></td><td><strong>String</strong><br>Product category</td></tr><tr><td><code>Platforms</code></td><td><strong>Array of Platform objects</strong><br>Array of objects detailing the platforms supported by the application. Details below.</td></tr><tr><td><code>Platforms.PlatformName</code></td><td><strong>String</strong><br>The label of the platform per the product configuration.</td></tr><tr><td><code>Platforms.Category</code></td><td><strong>String</strong><br>Platform category per product configuration.</td></tr><tr><td><code>ProductImages</code></td><td><strong>Array of Image objects</strong><br>Image object. Details below. Read-only.</td></tr><tr><td><code>ProductImages.Default</code></td><td><strong>Boolean</strong><br>True or False depending on whether you set the image stored at the address in the URL parameter as default or not.</td></tr><tr><td><code>ProductImages.URL</code></td><td><strong>String</strong><br>The location of the image on the Avangate system.</td></tr><tr><td><code>TrialUrl</code></td><td><strong>String (anyURI)</strong><br>The URL from where shoppers can download trial software.</td></tr><tr><td><code>TrialDescription</code></td><td><strong>String</strong><br>Descriptive text entered for trials.</td></tr><tr><td><code>Enabled</code></td><td><strong>Boolean</strong><br>True/false depending on whether the products are active or disabled. When empty, Avangate marks the product as disabled.</td></tr><tr><td><code>AdditionalFields</code></td><td><strong>Array of AdditionalFieldAssigned objects</strong><br>Array of existing additional fields assigned to products. Details below.</td></tr><tr><td><code>AdditionalFields.Label</code></td><td><strong>String</strong><br>The name of the additional field assigned to a product.</td></tr><tr><td><code>AdditionalFields.Code</code></td><td><strong>String</strong><br>The code of the additional field assigned to a product.</td></tr><tr><td><code>AdditionalFields.Enabled</code></td><td><strong>Boolean</strong><br>True or false depending on whether the assigned product field is enabled or not.</td></tr><tr><td><code>AdditionalFields.Required</code></td><td><strong>Boolean</strong><br>True or false depending on whether the assigned product field is required or not.</td></tr><tr><td><code>AdditionalFields.URLParameter</code></td><td><strong>String</strong><br>The value of the system generated URL parameter for the product field that can be used in Buy Links.</td></tr><tr><td><code>Translations</code></td><td><strong>Array of ProductTranslation objects</strong><br>Details below.</td></tr><tr><td><code>Translations.LongDescription</code></td><td><strong>String</strong><br>The translated long description in the language corresponding to the <strong>Translation</strong> object.</td></tr><tr><td><code>Translations.TrialUrl</code></td><td><strong>String</strong><br>The trial URL for users speaking the language corresponding to the <strong>Translation</strong> object.</td></tr><tr><td><code>Translations.TrialDescription</code></td><td><strong>String</strong></td></tr><tr><td><code>Translations.SystemRequirements</code></td><td><strong>String</strong><br>Localized system requirements.</td></tr><tr><td><code>Translations.Name</code></td><td><strong>String</strong><br>Localized product name.</td></tr><tr><td><code>Translations.Description</code></td><td><strong>String</strong><br>Localized product short description.</td></tr><tr><td><code>Translations.Language</code></td><td><strong>String</strong><br>ISO 639-1 two-letter code.</td></tr><tr><td><code>PricingConfigurations</code></td><td><strong>Array of PricingConfiguration objects</strong><br>Details below. Avangate creates pricing configurations during the process when you add a product.</td></tr><tr><td><code>PricingConfigurations.Name</code></td><td><strong>String</strong><br>Pricing configuration name</td></tr><tr><td><code>PricingConfigurations.Code</code></td><td><strong>String</strong><br>System-generated identifier.</td></tr><tr><td><code>PricingConfigurations.Default</code></td><td><strong>Boolean (0/1)</strong><br>True for the default pricing configuration</td></tr><tr><td><code>PricingConfigurations.BillingCountries</code></td><td><p><strong>Array of strings</strong><br>ISO codes of the countries assigned to the pricing configuration.</p><p>Empty unless specific countries are assigned to a pricing configuration.</p></td></tr><tr><td><code>PricingConfigurations.PricingSchema</code></td><td><p><strong>String</strong></p><ul><li>DYNAMIC – With a base price</li><li>FLAT – Without a base price</li></ul></td></tr><tr><td><code>PricingConfigurations.PriceType</code></td><td><strong>String</strong><br>Possible values: NET / GROSS</td></tr><tr><td><code>PricingConfigurations.DefaultCurrency</code></td><td><strong>String</strong><br>The ISO code of the default currency for the pricing configuration</td></tr><tr><td><code>PricingConfigurations.Prices</code></td><td><strong>Object</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Regular</code></td><td><strong>Array of objects</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Amount</code></td><td><strong>Int</strong><br>The price of the product.</td></tr><tr><td><code>PricingConfigurations.Currency</code></td><td><strong>String</strong><br>ISO code of the currency for the product price.</td></tr><tr><td><code>PricingConfigurations.MinQuantity</code></td><td><strong>Int</strong><br>The minimum quantity of volume discounts. Default is 1.</td></tr><tr><td><code>PricingConfigurations.MaxQuantity</code></td><td><strong>Int</strong><br>The maximum quantity of volume discounts. Default is 99999.</td></tr><tr><td><code>PricingConfigurations.OptionCodes</code></td><td><strong>Array of objects</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Code</code></td><td><strong>String</strong><br>Price option identifier.</td></tr><tr><td><code>PricingConfigurations.Options</code></td><td><strong>Array of strings</strong><br>The pricing options group option code you configured that the Avangate system uses to calculate product prices for pricing configurations without a base price.</td></tr><tr><td><code>PricingConfigurations.Renewal</code></td><td><strong>Array of objects</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Amount</code></td><td><strong>Int</strong><br>The price of the product.</td></tr><tr><td><code>PricingConfigurations.Currency</code></td><td><strong>String</strong><br>ISO code of the currency for the product price.</td></tr><tr><td><code>PricingConfigurations.MinQuantity</code></td><td><strong>Int</strong><br>The minimum quantity of volume discounts. Default is 1.</td></tr><tr><td><code>PricingConfigurations.MaxQuantity</code></td><td><strong>Int</strong><br>The maximum quantity of volume discounts. Default is 99999.</td></tr><tr><td><code>PricingConfigurations.OptionCodes</code></td><td><strong>Array of PriceOptionCode objects</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Code</code></td><td><strong>String</strong><br>Price option identifier.</td></tr><tr><td><code>PricingConfigurations.Options</code></td><td><strong>Array of strings</strong><br>The pricing options group option code you configured that the Avangate system uses to calculate product prices for pricing configurations without a base price.</td></tr><tr><td><code>PricingConfigurations.PriceOptions</code></td><td><strong>Array of AssignedPriceOptionGroup objects</strong><br>Details below.</td></tr><tr><td><code>PricingConfigurations.Code</code></td><td><strong>String</strong><br>System generated pricing options group code (you can also configure it) that the Avangate system uses to calculate product prices for pricing configurations without a base price.</td></tr><tr><td><code>PricingConfigurations.Required</code></td><td><strong>Boolean</strong><br>True or False depending on whether you want to make it mandatory for shoppers to select the price option during the puyrchase process.</td></tr><tr><td><code>BundleProducts</code></td><td><strong>Array of BundleProductCode objects</strong><br>Details below.</td></tr><tr><td><code>BundleProducts.ProductId</code></td><td><strong>String</strong><br>Unique, system-generated product ID.</td></tr><tr><td><code>BundleProducts.ProductCode</code></td><td><strong>String</strong><br>Editable product code that you control.</td></tr><tr><td><code>Fulfillment</code></td><td><p><strong>String</strong><br>BY_AVANGATE</p><p>NO_DELIVERY – The Avangate system finalizes orders immediately after it receives payment confirmation.</p><p>BY_VENDOR – you are responsible for delivering/fulfilling orders</p></td></tr><tr><td><code>Prices</code></td><td><strong>Array of Price objects</strong><br>Use this object only when Pricing Configurations are not available for your account. Details below.</td></tr><tr><td><code>Prices.Amount</code></td><td><strong>Int</strong><br>The price of the product.</td></tr><tr><td><code>Prices.Currency</code></td><td><strong>String</strong><br>ISO code of the currency for the product price.</td></tr><tr><td><code>Prices.MinQuantity</code></td><td><strong>Int</strong><br>The minimum quantity of volume discounts. Default is 1.</td></tr><tr><td><code>Prices.MaxQuantity</code></td><td><strong>Int</strong><br>The maximum quantity of volume discounts. Default is 99999.</td></tr><tr><td><code>Prices.OptionCodes</code></td><td><strong>Array of objects</strong><br>Details below.</td></tr><tr><td><code>Prices.Code</code></td><td><strong>String</strong><br>Price option identifier.</td></tr><tr><td><code>Prices.Options</code></td><td><strong>Array of strings</strong><br>The pricing options group option code you configured that the Avangate system uses to calculate product prices for pricing configurations without a base price.</td></tr><tr><td><code>GeneratesSubscription</code></td><td><p><strong>Boolean</strong><br>TRUE or FALSE depending on whether you set the product to generate subscriptions or not.</p><p> </p><p>NULL for bundles for which you set the following subscription management option: “Use the subscription settings of each product in the bundle”</p></td></tr><tr><td><code>SubscriptionInformation</code></td><td><strong>ProductSubscriptionInformation Object</strong><br>Details below. NULL for bundles which you set to use the renewal settings of child products and not of the parent bundle.</td></tr><tr><td><code>SubscriptionInformation.DeprecatedProducts</code></td><td><strong>Array</strong><br>Deprecated products.</td></tr><tr><td><code>SubscriptionInformation.BundleRenewalManagement</code></td><td><p><strong>String</strong><br>Possible values:</p><ul><li>GLOBAL</li><li>INDIVIDUAL</li></ul><p>Can be NULL.</p></td></tr><tr><td><code>SubscriptionInformation.BillingCycle</code></td><td><p><strong>String</strong><br></p><p>The number of subscription billing cycle units (months or days).  Possible values:</p><ul><li>0 (zero represents a one-time fee)</li></ul><p>Days</p><ul><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul><p> </p><p>Months</p><ul><li>1</li><li>2</li><li>3</li><li>6</li><li>12</li><li>15</li><li>18</li><li>24</li><li>36 (max)</li></ul></td></tr><tr><td><code>SubscriptionInformation.BillingCycleUnit</code></td><td><p><strong>String</strong><br>The units of the billing cycle:</p><ul><li>M - months</li><li>D - days</li></ul></td></tr><tr><td><code>SubscriptionInformation.IsOneTimeFee</code></td><td><strong>Boolean</strong><br>True or False depending on whether the subscription is evergreen or not.</td></tr><tr><td><code>SubscriptionInformation.ContractPeriod</code></td><td><strong>Object</strong><br>Details below.</td></tr><tr><td><code>SubscriptionInformation.Period</code></td><td><strong>Int</strong><br>The contract period in months or days. -1 for unlimited contracts.</td></tr><tr><td><code>SubscriptionInformation.PeriodUnits</code></td><td><p><strong>String</strong><br>The contract period units</p><p>days | months</p></td></tr><tr><td><code>SubscriptionInformation.IsUnlimited</code></td><td><strong>Boolean</strong><br>This flag is true if the contract is for an unlimited period</td></tr><tr><td><code>SubscriptionInformation.Action</code></td><td><p><strong>String</strong><br>The action performed after the subscription expires.</p><p>Possible values CANCEL | RESTART</p></td></tr><tr><td><code>SubscriptionInformation.EmailsDuringContract</code></td><td><strong>Boolean</strong><br>True or False depending on whether you suppress renewal notification emails throughout the duration of the contract or not.</td></tr><tr><td><code>SubscriptionInformation.UsageBilling</code></td><td><p><strong>Int</strong><br>The usage billing interval must be smaller than or equal to the grace period.</p><p> </p><p>Interval of time within the grace period, when the Avangate system attempts to automatically charge customers for recurring costs and additional metered usage fees (in arrears). Avangate renews subscriptions only after subscribers make all outstanding payments per the renewal settings (from the expiration or the renewal date). If automatic renewal and usage charges fail, subscriptions can be manually renewed only by the end of the grace period, after which they expire.</p><p> </p><p>Can be NULL.</p></td></tr><tr><td><code>SubscriptionInformation.GracePeriod</code></td><td><strong>Object</strong></td></tr><tr><td><code>SubscriptionInformation.Type</code></td><td><p><strong>String</strong><br>CUSTOM – you configured grace period setting at product level.</p><p>GLOBAL – global grace period settings apply.</p></td></tr><tr><td><code>SubscriptionInformation.Period</code></td><td><strong>String</strong><br>Number of days set for the grace period.</td></tr><tr><td><code>SubscriptionInformation.PeriodUnits</code></td><td><strong>String</strong><br>D - Days.</td></tr><tr><td><code>SubscriptionInformation.IsUnlimited</code></td><td><strong>Boolean</strong><br>True or False depending on whether you set the grace peri2od to unlimited or not.</td></tr><tr><td><code>SubscriptionInformation.RenewalEmails</code></td><td><strong>Object</strong><br>Details below. Can be NULL. Available only in Product API 2.5 and later.</td></tr><tr><td><code>SubscriptionInformation.Type</code></td><td><p><strong>String</strong><br>GLOBAL - Send emails according to the <a href="https://secure.avangate.com/cpanel/renewal_settings.php">global renewal notification settings</a>.</p><p>CUSTOM – per product renewal notification settings</p></td></tr><tr><td><code>SubscriptionInformation.Settings</code></td><td><strong>Object (can be NULL)</strong><br>Details below.</td></tr><tr><td><code>SubscriptionInformation.ManualRenewal</code></td><td><strong>Object (can be NULL)</strong><br>Details below.</td></tr><tr><td><code>SubscriptionInformation.Before30Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before15Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before7Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before1Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.OnExpirationDate</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.After5Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.After15Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.AutomaticRenewal</code></td><td><strong>Object (can be NULL)</strong><br>Details below.</td></tr><tr><td><code>SubscriptionInformation.Before30Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before15Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before7Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.Before1Day</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.OnExpirationDate</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.After5Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>SubscriptionInformation.After15Days</code></td><td><strong>Boolean</strong><br>True or False.</td></tr><tr><td><code>FulfillmentInformation</code></td><td><strong>Object</strong><br>Details below. Can be NULL. Available only in Product API 2.5 and later.</td></tr><tr><td><code>FulfillmentInformation.IsStartAfterFulfillment</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you want the subscription lifetime to start after the completion of the fulfillment process or not.</td></tr><tr><td><code>FulfillmentInformation.IsElectronicCode</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you configure the delivery of keys/codes for the product or not.</td></tr><tr><td><code>FulfillmentInformation.IsDownloadLink</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you configure the delivery of a product file or not.</td></tr><tr><td><code>FulfillmentInformation.IsDownloadInsuranceService</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you enable the Download Insurance Service or not, for a product for which you configure a product file.</td></tr><tr><td><code>FulfillmentInformation.IsInstantDeliveryThankYouPage</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you enable instant delivery in the <strong>Thank You</strong> page or not.</td></tr><tr><td><code>FulfillmentInformation.IsDisplayInPartnersCPanel</code></td><td><strong>Boolean</strong><br>True or False. Depending on whether you share access to the product file with your channel partners or not.</td></tr><tr><td><code>FulfillmentInformation.CodeList</code></td><td><strong>Object (can be NULL)</strong><br>Details below.</td></tr><tr><td><code>FulfillmentInformation.Code</code></td><td><strong>String</strong><br>The unique code list identifier.</td></tr><tr><td><code>FulfillmentInformation.Name</code></td><td><strong>String</strong><br>Name of the code list.</td></tr><tr><td><code>FulfillmentInformation.Type</code></td><td><p><strong>String</strong></p><p>Code list type:</p><ul><li>STATIC</li><li>DYNAMIC</li></ul></td></tr><tr><td><code>FulfillmentInformation.ProductFile</code></td><td><strong>Object (can be NULL)</strong><br>Details below.</td></tr><tr><td><code>FulfillmentInformation.Code</code></td><td><strong>String</strong><br>Unique product file identifier.</td></tr><tr><td><code>FulfillmentInformation.Name</code></td><td><strong>String</strong><br>Display name.</td></tr><tr><td><code>FulfillmentInformation.File</code></td><td><strong>String</strong><br>Name of the product file.</td></tr><tr><td><code>FulfillmentInformation.Version</code></td><td><strong>String</strong><br>File version.</td></tr><tr><td><code>FulfillmentInformation.Size</code></td><td><strong>String</strong><br>File size.</td></tr><tr><td><code>FulfillmentInformation.Type</code></td><td><strong>String</strong><br>File type.</td></tr><tr><td><code>FulfillmentInformation.LastUpdate</code></td><td><strong>String</strong><br>YYYY-MM-DD HH-MM-SS. Date time stamp when you last updated the file.</td></tr><tr><td><code>FulfillmentInformation.AdditionalInformationByEmail</code></td><td><strong>String (can be NULL)</strong><br>The text you set up in the <strong>Additional fulfillment information - by email</strong> area.</td></tr><tr><td><code>FulfillmentInformation.AdditionalInformationEmailTranslations</code></td><td><strong>Object (can be NULL)</strong><br>Array of localized <strong>Additional fulfillment information - by email</strong> texts.</td></tr><tr><td><code>FulfillmentInformation.AdditionalThankYouPage</code></td><td><strong>String (can be NULL)</strong><br>The text you set up in the <strong>Additional fulfillment information - "Thank you" page</strong> area.</td></tr><tr><td><code>FulfillmentInformation.AdditionalThankYouPageTranslations</code></td><td><strong>Array (can be NULL)</strong><br>Array of localized <strong>Additional fulfillment information - "Thank you" page</strong> texts.</td></tr></tbody></table>

</details>

#### Related links

* [Products and subscriptions listing query parameters](https://verifone.cloud/docs/2checkout/Documentation/myAccount/Products-and-subscriptions-listing-query-parameters)
* [Subscriber management and self-service](https://verifone.cloud/docs/2checkout/Documentation/Subscription-Billing/03Subscriber-management-and-self-service)
* [Contracts](https://verifone.cloud/docs/2checkout/Documentation/Subscription-Billing/01Subscription-Billing-Set-up/03Contracts)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.2checkout.com/product-catalog/product-catalog/import-export-product-and-pricing-data/import-product-data-using-xml-files.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
