Product

Version: 1.33

Parameters

Extends: TractObject

Elements
Element Required? Type Description

productPrices

Yes

productPrices

All one-time and recurring prices associated with this product.

productCategory

Yes

productCategory

The product's category, used for reporting and organization.

serviceResourceCategory

 

ServiceResourceCategory

The product's category as a service resource.

actions

 

actions

Actions associated with this product.

productUsageRules

 

productUsageRules

Usage rule or rules associated with this product.

productTags

 

productTags

Tags associated with this product. Tags help you organize your products for ease of access.

productRegisterType

 

productRegisterType

The prepaid balance register type this product contributes to or consumes from.

Attributes
Attribute Required? Datatype Description

name

Yes

string

The product name.

description

Yes

string

The product's description.

shortDescription

Yes

string

Displayed in reports and other fields with limited space.

productTypeCode

Yes

ProductTypeCode

TRACT_SUBSCRIPTION

SUBSCRIPTION

SERVICE_DEVICE

GENERAL_PRODUCT

ADDON

COUPON

ADDON_WITH_USAGE

SUBSCRIPTION_WITH_USAGE

productState

Yes

ProductState

PRODUCT_DRAFT

PRODUCT_AVAILABLE

PRODUCT_NOT_AVAILABLE

sku

 

string

Inventory or SKU number for this product.

requiresAgreement

boolean

Does this product require an agreement?

serialized

boolean

Is this product unique?

taxable

boolean

Is this product taxable?

trial

boolean

Is this a trial product?

trialDays

int

Number of days the trial lasts.

defaultQuantity

string

Default quantity for orders.

internalName

string

Optional. Internal name, not displayed to customers.

externalProductNumber

string

Optional. Additional product number.

minServiceResources

int

Optional. Minimum number of service resources for this product.

maxServiceResources

int

Optional. Maximum number of service resources for this product.

trialOverride

boolean

Override the number of trial days?

productLevel

int

The product's level (used for organization

introductionDate

Yes

dateTime

Product's creation date. Defaults to creation datetime.

ruleOverride

boolean

Allow the usage rule to be overridden at time of order.

ruleType

RuleType

TAPERED

TIERED

ruleMode

RuleMode

ROOT

APPEND

OVERWRITE

fundPrepaidBalance

boolean

A flag to determine if the product funds a prepaid balance.

consumePrepaidBalance

boolean

A flag to determine if the product consumes a prepaid balance.

Querying Product

For paged results, use the plural of the entity name (for example, billingAccounts, productCategories). For more information, refer to Understanding Queries.

Query Keys
Key Type

eid

Long

name

String

internalName

String

externalProductNumber

String

sku

String

productTypeCode

ProductTypeCode

productState

ProductState

serviceResourceCategoryEid

Long

serviceResourceCategoryName

String

productCategoryEid

Long

productCategoryName

String

priceListEid

Long

priceListIsMaster

Boolean

currencyType

Currency

productTagEid

Long

discountCodeEid

Long

discountIdentifier

String

agreementEid

Long

REST Endpoints

getProducts

GET

https://my.tractbilling.com/t/s/r/1.33/products

createProduct

POST

https://my.tractbilling.com/t/s/r/1.33/products

addPrice

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/addPrice

deleteProduct

DELETE

https://my.tractbilling.com/t/s/r/1.33/products/{eid}

getProduct

GET

https://my.tractbilling.com/t/s/r/1.33/products/{eid}

updateProduct

PUT

https://my.tractbilling.com/t/s/r/1.33/products/{eid}

activate

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/activate

addProductRelation

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/addRelation

removeProductRelation

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/removeRelation

addAgreementRelation

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/addAgreement

removeAgreement

POST

https://my.tractbilling.com/t/s/r/1.33/products/{eid}/removeAgreement

/productPrices

getProductPrices

GET

https://my.tractbilling.com/t/s/r/1.33/productPrices

getProductPrice

GET

https://my.tractbilling.com/t/s/r/1.33/productPrices/{eid}

/oneTimeProdutPrices

getOneTimeProductPrices

GET

https://my.tractbilling.com/t/s/r/1.33/oneTimeProductPrices

getOneTimeProduct

GET

 

https://my.tractbilling.com/t/s/r/1.33/oneTimeProductPrices/{eid}

updateOneTimeProductPrice

PUT

https://my.tractbilling.com/t/s/r/1.33/oneTimeProductPrices/{eid}

/recurringProductPrices

getRecurringProductPrices

GET

https://my.tractbilling.com/t/s/r/1.33/recurringProductPrices

getRecurringProduct

GET

https://my.tractbilling.com/t/s/r/1.33/recurringProductPrices/{eid}

updateRecurringProductPrice

PUT

https://my.tractbilling.com/t/s/r/1.33/recurringProductPrices/{eid}

Sample Requests and Responses

SOAP

Example Query and Response

               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:query>
            <!-- Optional: -->
            <ser:queryRequest >
                <dom:simpleDataQuery >
                    <dom:type>Product</dom:type>
                    <parameter parameter="eid" parameterValue="992"/>
                </dom:simpleDataQuery>
            </ser:queryRequest>
        </ser:query>
    </soapenv:Body>
</soapenv:Envelope>

Response

              <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:queryResponse xmlns="http://www.tractbilling.com/billing/1_31/domain" xmlns:ns2="http://www.tractbilling.com/billing/1_31/service">
            <ns2:return successful="true">
                <products pageNumber="1" pageSize="50" totalElements="1" elementCount="1" totalPages="1">
                    <product name="Winter Special" description="Winter Sales" productTypeCode="SUBSCRIPTION" productState="PRODUCT_AVAILABLE" requiresAgreement="false" serialized="true" taxable="false" trial="false" defaultQuantity="1" minServiceResources="0" maxServiceResources="0" trialOverride="false" eid="992">
                        <productPrices pageNumber="1" pageSize="50" totalElements="1" elementCount="0" totalPages="1"/>
                        <serviceResourceCategory name="Winter Sales" type="GENERICSRVRESOURCE" status="ACTIVE" eid="206"/>
                        <actions pageNumber="1" pageSize="50" totalElements="0" elementCount="0" totalPages="0"/>
                    </product>
                </products>
            </ns2:return>
        </ns2:queryResponse>
    </soap:Body>
</soap:Envelope>
                

Create Product

               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:create>
            <!-- Optional: -->
            <ser:createRequest>
                <dom:product name="test-421" productTypeCode="SUBSCRIPTION" description="test1" introductionDate="2014-01-02T22:00:00" >
                    <dom:productCategory eid="5"/>
                </dom:product>
            </ser:createRequest>
        </ser:create>
    </soapenv:Body>
</soapenv:Envelope>
                

Update Product

               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:update>
            <!-- Optional: -->
            <ser:updateRequest>
                <dom:product eid="213" name="avc-21"></dom:product>
            </ser:updateRequest>
        </ser:update>
    </soapenv:Body>
</soapenv:Envelope>
                

Add Recurring Price to Product

              <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:command>
            <ser:commandRequest>
                <dom:addProductPriceToProduct>
                    <dom:product eid="215"/>
                    <dom:recurringProductPrice recurringPaymentRequired="false" recurrenceAmount="10" recurrencePeriod="BILLCYCLE" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-03-25T00:00:00.000-05:00" priceOverride="true" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD">
                        <dom:priceCategory eid="6"/>
                        <dom:priceRanges>
                            <dom:priceRange quantityBeginRange="0.00" price="10.00" level="1" currencyType="USD"/>
                        </dom:priceRanges>
                    </dom:recurringProductPrice>
                </dom:addProductPriceToProduct>
            </ser:commandRequest>
        </ser:command>
    </soapenv:Body>
</soapenv:Envelope>
                

Add One-Time Price to Product

              <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:command>
            <ser:commandRequest>
                <dom:addProductPriceToProduct>
                    <dom:product eid="215"/>
                    <dom:oneTimeProductPrice allowScheduledCharges="false" chargeDuringRenewal="false" currencyType="USD" fromDate="2013-10-20T00:00:00.000-05:00" paymentOnPurchaseRequired="false" priceOverride="true" type="OneTime">
                        <dom:priceCategory eid="6"/>
                        <dom:priceRanges>
                            <dom:priceRange quantityBeginRange="0.00" price="10.00" level="1" currencyType="USD"/>
                        </dom:priceRanges>
                    </dom:oneTimeProductPrice>
                </dom:addProductPriceToProduct>
            </ser:commandRequest>
        </ser:command>
    </soapenv:Body>
</soapenv:Envelope>
                

Update Recurring Price (Draft product only)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:update>
            <!-- Optional: -->
            <ser:updateRequest>
                <dom:recurringProductPrice recurringPaymentRequired="false" recurrencePeriod="BILLCYCLE" recurrenceAmount="10.00000" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-01-24T23:00:00.000-06:00" priceOverride="true" allowScheduledCharges="false" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD" eid="309" >
                    <dom:priceRanges>
                        <dom:priceRange quantityBeginRange="0.00" price="25.00" level="1" currencyType="USD" />
                    </dom:priceRanges>
                </dom:recurringProductPrice>
            </ser:updateRequest>
        </ser:update>
    </soapenv:Body>
</soapenv:Envelope>

Update One-Time Price (Draft product only)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:update>
            <!-- Optional: -->
            <ser:updateRequest>
                <dom:oneTimeProductPrice chargeDuringRenewal="false" fromDate="2015-10-19T23:00:00.000-06:00" priceOverride="true" allowScheduledCharges="false" type="OneTime" paymentOnPurchaseRequired="false" currencyType="USD" eid="318">
                    <dom:priceRanges>
                        <dom:priceRange quantityBeginRange="0.00" price="20.00" level="1" currencyType="USD" />
                    </dom:priceRanges>
                </dom:oneTimeProductPrice>
            </ser:updateRequest>
        </ser:update>
    </soapenv:Body>
</soapenv:Envelope>

Activate Product

                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:command>
            <ser:commandRequest>
                <dom:activateProduct>
                    <dom:product eid="242"/>
                </dom:activateProduct>
            </ser:commandRequest>
        </ser:command>
    </soapenv:Body>
</soapenv:Envelope>

Modify One-time Price

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:command>
            <ser:commandRequest>
                <dom:addProductPriceToProduct>
                    <dom:product eid="242"/>
                    <dom:oneTimeProductPrice allowScheduledCharges="false" chargeDuringRenewal="false" currencyType="USD" fromDate="2015-12-20T00:00:00.000-05:00" paymentOnPurchaseRequired="false" priceOverride="true" type="OneTime">
                        <dom:priceRanges>
                            <dom:priceRange quantityBeginRange="0.00" price="7.00" level="1" currencyType="USD" />
                        </dom:priceRanges>
                    </dom:oneTimeProductPrice>
                </dom:addProductPriceToProduct>
            </ser:commandRequest>
        </ser:command>
    </soapenv:Body>
</soapenv:Envelope>

Modify Recurring Price

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.tractbilling.com/billing/1_31/service" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <soapenv:Header/>
    <soapenv:Body>
        <ser:command>
            <ser:commandRequest>
                <dom:addProductPriceToProduct>
                    <dom:product eid="242"/>
                    <dom:recurringProductPrice recurringPaymentRequired="false" recurrenceAmount="10" recurrencePeriod="BILLCYCLE" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-01-25T00:00:00.000-05:00" priceOverride="true" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD">
                        <dom:priceCategory eid="6"/>
                        <dom:priceRanges>
                            <dom:priceRange quantityBeginRange="0.00" price="25.00" level="1" currencyType="USD" />
                        </dom:priceRanges>
                    </dom:recurringProductPrice>
                </dom:addProductPriceToProduct>
            </ser:commandRequest>
        </ser:command>
    </soapenv:Body>
</soapenv:Envelope>

REST

Example Query and Response

  • GET https://my.tractbilling.com/t/s/r/1.33/products?eid=6790

<?xml version="1.0" encoding="UTF-8"?>
<products xmlns="http://www.tractbilling.com/billing/1_31/domain/rest" elementCount="1" pageNumber="1" pageSize="50" totalElements="1" totalPages="1">
    <ns2:product xmlns:ns2="http://www.tractbilling.com/billing/1_31/domain" defaultQuantity="1.00000" description="Pure Vinyl Music Magazine 1 Year Subscription" eid="6790" introductionDate="2016-01-10T20:25:00.000-06:00" maxServiceResources="0" minServiceResources="0" name="PVM Magazine Subscription" productState="PRODUCT_AVAILABLE" productTypeCode="SUBSCRIPTION" queryScope="SHALLOW" requiresAgreement="false" ruleOverride="false" ruleType="TAPERED" serialized="true" shortDescription="PVM Magazine Subscription" taxable="false" trial="false" trialOverride="false">
        <ns2:productPrices elementCount="0" pageNumber="1" pageSize="50" totalElements="1" totalPages="1"/>
        <ns2:productCategory eid="544" queryScope="EID"/>
        <ns2:serviceResourceCategory eid="732" queryScope="EID"/>
        <ns2:actions elementCount="0" pageNumber="1" pageSize="50" totalElements="0" totalPages="0"/>
        <ns2:productTags elementCount="0" pageNumber="1" pageSize="50" totalElements="0" totalPages="0"/>
    </ns2:product>
</products>

Create Product

  • POST https://my.tractbilling.com/t/s/r/1.33/products

<dom:product name="test-621" productTypeCode="SUBSCRIPTION" description="test1" introductionDate="2014-01-02T22:00:00" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:productCategory eid="5"/>
</dom:product>

Update Product

  • PUT https://my.tractbilling.com/t/s/r/1.33/products/213

<dom:product  eid="213" name="aec-21" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
					</dom:product>
				

Add Recurring Price to Product

  • POST https://my.tractbilling.com/t/s/r/1.33/products/216/addPrice

<dom:addProductPriceToProduct xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:product eid="216"/>
    <dom:recurringProductPrice recurringPaymentRequired="false" recurrenceAmount="10" recurrencePeriod="BILLCYCLE" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-03-25T00:00:00.000-05:00" priceOverride="true" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD">
        <dom:priceCategory eid="6"/>
        <dom:priceRanges>
            <dom:priceRange quantityBeginRange="0.00" price="10.00" level="1" currencyType="USD"/>
        </dom:priceRanges>
    </dom:recurringProductPrice>
</dom:addProductPriceToProduct>

Add One-Time Price to Product

  • POST https://my.tractbilling.com/t/s/r/1.33/products/216/addPrice

<dom:addProductPriceToProduct xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:product eid="216"/>
    <dom:oneTimeProductPrice allowScheduledCharges="false" chargeDuringRenewal="false" currencyType="USD" fromDate="2013-10-20T00:00:00.000-05:00" paymentOnPurchaseRequired="false" priceOverride="true" type="OneTime">
        <dom:priceCategory eid="6"/>
        <dom:priceRanges>
            <dom:priceRange quantityBeginRange="0.00" price="10.00" level="1" currencyType="USD" />
        </dom:priceRanges>
    </dom:oneTimeProductPrice>
</dom:addProductPriceToProduct>

Update Recurring Price (Draft product only)

  • PUT https://my.tractbilling.com/t/s/r/1.33/recurringProductPrices/314

<dom:recurringProductPrice recurringPaymentRequired="false" recurrencePeriod="BILLCYCLE" recurrenceAmount="10.00000" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-01-24T23:00:00.000-06:00" priceOverride="true" allowScheduledCharges="false" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD" eid="314" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:priceRanges>
        <dom:priceRange quantityBeginRange="0.00" price="25.00" level="1" currencyType="USD" />
    </dom:priceRanges>
</dom:recurringProductPrice>

Update One-Time Price (Draft product only)

  • PUT https://my.tractbilling.com/t/s/r/1.33/oneTimeProductPrices/318

<dom:oneTimeProductPrice chargeDuringRenewal="false" fromDate="2015-10-19T23:00:00.000-06:00" priceOverride="true" allowScheduledCharges="false" type="OneTime" paymentOnPurchaseRequired="false" currencyType="USD" eid="318" xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:priceRanges>
        <dom:priceRange quantityBeginRange="0.00" price="22.00" level="1" currencyType="USD" />
    </dom:priceRanges>
</dom:oneTimeProductPrice>
                

Activate Product

Product must be in Draft status and have a price or prices associated with it.

  • POST https://my.tractbilling.com/t/s/r/1.33/products/243/activate

<dom:activateProduct xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
					<dom:product eid="243"/>
				</dom:activateProduct>

Modify One-time Price

  • POST https://my.tractbilling.com/t/s/r/1.33/products/243/addPrice

<dom:addProductPriceToProduct xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:product eid="243"/>
    <dom:oneTimeProductPrice allowScheduledCharges="false" chargeDuringRenewal="false" currencyType="USD" fromDate="2015-12-16T00:00:00.000-05:00" paymentOnPurchaseRequired="false" priceOverride="true" type="OneTime">
        <dom:priceCategory eid="6"/>
        <dom:priceRanges>
            <dom:priceRange quantityBeginRange="0.00" price="5.00" level="1" currencyType="USD" />
        </dom:priceRanges>
    </dom:oneTimeProductPrice>
</dom:addProductPriceToProduct>

Modify Recurring Price

  • POST https://my.tractbilling.com/t/s/r/1.33/products/243/addPrice

<dom:addProductPriceToProduct xmlns:dom="http://www.tractbilling.com/billing/1_31/domain">
    <dom:product eid="243"/>
    <dom:recurringProductPrice recurringPaymentRequired="false" recurrenceAmount="10" recurrencePeriod="BILLCYCLE" proratedOnOrder="false" proratedOnCancel="false" proratedOnOrderNoCharge="false" billInAdvance="true" fromDate="2015-03-25T00:00:00.000-05:00" priceOverride="true" type="Recurring" paymentOnPurchaseRequired="false" currencyType="USD">
        <dom:priceCategory eid="6"/>
        <dom:priceRanges>
            <dom:priceRange quantityBeginRange="0.00" price="10.00" level="1" currencyType="USD"/>
        </dom:priceRanges>
    </dom:recurringProductPrice>
</dom:addProductPriceToProduct>