DirectScale Developers

DirectScale Developers

Get Started    API Reference

Template: Monthly Unilevel Compensation Plan XML

Download the full XML template

This resource breaks down some essential pieces of the preceding XML template. We hope to make it a little easier to create your own Monthly Unilevel Compensation Plan.

Important

This template is for reference only. It's a starting point to develop your compensation plan for your business rules.



Overview

Unilevel plans are simple, functioning with one business level. All enrollees are all placed on the same level below their sponsor. Each level assigns a commission percentage. Associates collect their percentage from different levels but only need to sponsor the first level.

Unilevel TreeUnilevel Tree

Unilevel plans are flexible. They allow you to create a unique compensation plan for your company.



Template Name

The template defines a name in the <ComPeriod> element via the Name attribute.

<?xml version="1.0" encoding="UTF-8"?> 
<Template>
  <ComPeriod TrackRealtimeRankAdvancements="False" EnrollTree="Enrollment" RoundPrecision="3" Usage="CommissionRun, StateStats, RealtimeStats" Name="MonthlyUI">

   ...
   ...
   ...

  </ComPeriod>
</Template>

Typically, the template name is the same as the period it represents (Weekly, Monthly, Bi-Monthly, etc.). This template is named "MonthlyUI".

Read more: Template Name.

You can read more about the XML Editor here: Using the XML Compensation Plan Editor.



Volume Range

Use <VolumeRanges> for setting the date ranges to count volume. The <VolumeRange> in <ComPeriod> is the master default used by everything. It's Monthly with no offsets; meaning, that it will only be looking at what has happened this month.

<ComPeriod TrackRealtimeRankAdvancements="False" EnrollTree="Enrollment" RoundPrecision="3" Usage="CommissionRun, StateStats" Name="XMLMonthly">
<VolumeRange>
      <VolumeRange Name="Monthly">
        <RangeType>
          <Monthly StartOffset="0" EndOffset="0"/>
        </RangeType>
      </VolumeRange>
    </VolumeRange>
  </ComPeriod>
  <VolumeRanges>
  </ComPeriod>

Use the <VolumeRanges> set within this section when you want a separate range to count volume.

Read more: Volume Ranges (Data Range).



Volumes

Define different kinds of volumes your plan needs to track and how to count the volume.

<Volumes>
    <VA_RetailRollup Name="RRQV">
      <VolumeType>
        <DefVolType VolumeGroup="QV" />
      </VolumeType>
    </VA_RetailRollup>

    <VA_Personal Name="CV" AssociateBaseTypes="">
      <VolumeType>
        <DefVolType VolumeGroup="CV" />
      </VolumeType>
    </VA_Personal>
  </Volumes>

Each volume assigns a name that the template references throughout.

Read more: Defining Volumes.



Tree Volumes

<TreeVolumes> is different from <Volumes> because they sum up each person's downline volume. The previous <Volumes> didn't reference a tree but assigned values to individuals.

All you need to do is:

  1. Name the new TreeVolume (e.g., <TreeVolume Name="">)

  2. Reference a Tree

    For example:

    • "Enrollment"
    • "Unilevel"
    • "Binary"
    • "Matrix"
  3. Reference a Volume defined in the previous section (Volume="RRQV").

In the template:

 <TreeVolumes>
    <TreeVolume Volume="RRQV" Tree="Enrollment" Name="GV" />
  </TreeVolumes>

The <TreeVolumes> reference the Volumes defined in the previous section. Each one assigns a name (for example, Name="GV"). The template references these names throughout, such as in the following example:

<Pools>
    <GVPaymentPool GVPercent="50" TreeVolume="GV" Name="MasterPool" />
</Pools>


Pools

Use <Pools> to make payments.

All you need to do is:

  1. Define the <Pool> (e.g., <GVPaymentPool />).
  2. Name the <Pool> (e.g., Name="MasterPool").
  3. Reference a <TreeVolume> defined above (e.g., TreeVolume="GV").
  4. Specify what percent of the volume the <Pool> will use (e.g., GVPercent="50").

In the template:

<Pools>
    <GVPaymentPool GVPercent="50" TreeVolume="GV" Name="MasterPool" />
</Pools>

More Payment Pools can be found here: Payment .



Rules

A Rule consists of conditions required to meet. Rules are used for qualifying and defining ranks and bonuses. The template references them in other Rules as requirements to meet.

Read more: Creating Rules.

This section breaks down some of the template's Rules:


Ranks

Rules have conditions and results, which set the Rank.

For example, in the template, you have the first Rank called "Qualified".

<Rule Description="Qualified" Name="R10">
      <And>
        <PVCondition Max="-1" Min="100" Volume="RRQV" />
      </And>
      <Result>
        <SetRank Rank="10" />
        <SetStat Name="Qual" Description="Qualified" />
      </Result>
</Rule>

When you see the value -1 used, it means infinity.

This template defines many Rank rules, each with its own requirements. For example:

<Rule Description="Rank 8" Name="R80">
    <And>
        <MeetsRule Rule="R10"/>
        <PVCondition Max="-1" Min="100" Volume="RRQV"/>
        <GVCondition PersonalVolume="RRQV" MaxPersonal="100000" IncludeCompressed="True" CompressRule="" Level="-1" MaxPerLeg="100000" Max="-1" Min="250000" TreeVolume="GV"/>
    </And>
    <Result>
        <SetRank Rank="80"/>
    </Result>
</Rule>

To qualify for this Rank (Rank 8):

  • You have qualify (<MeetsRule Rule="R10"/>)
  • Have a Personal Volume between 100 and infinity (<PVCondition Max="-1" Min="100" Volume="RRQV"/>
  • Have a max volume per Leg or 100,000 (MaxPerLeg="100000")

Important

You have to enter Rank values in the Database manually. Learn how in Adding Rank Values to the Database.


Associate Types

In this section, you'll see how to define your Associate Types. There are three default Base Associate Types:

  1. Distributor
  2. Retail Customer
  3. Preferred Customer

For this template, the Distributor is the only type that will be paid.

You can add more Associate Types if necessary.

You can read more about Base Associate Types in the following Help Center article: Base Associate Types, Associate Types, and Price Groups Explained.

The following example demonstrates setting up each Associate Types Rule definition.

<Rule Description="Distributor" Name="Dist">
      <And>
        <AssociateTypeCondition AssociateBaseType="1" />
      </And>
    </Rule>

As you can see, the Rule assigns the name "Dist".

💡

Further along in the template, you'll see <MeetsRule Rule="Dist" /. The element checks to see if the Associate Type is 1.

In the template, there's one other Associate Type Rule:

<Rule Description="Not a Distributor" Name="NotDist">
    <And>
        <NotHitOption Rule="Dist"/>
    </And>
</Rule>

The preceding example declares that any Associate Type that isn't 1 (<NotHitOption Rule="Dist"/>) does not get paid.


Generation Pay Bonus

This Rule looks at the Enrollment Tree. It awards an Associate a percentage bonus of a Generation's volume.

From the template:

<Rule Description="Enrollment 1" Name="UNL1">
    <And>
        <MeetsRule Rule="R10"/>
        <NotHitOption Rule="R20"/>
    </And>
    <Result>
        <Payments>
            <Payment Pool="MasterPool" Bonus="Generation Pay" Tag="" MetaData="">
                <Group>
                    <GenerationGroup Tree="Enrollment" Generation="1" CompressOption="R10" BeginLevel="1"/>
                </Group>
                <Source>
                    <PVPay Volume="CV" Percent="8" Comment="[backofficeId] ([percent]% of [acrVolume])"/>
                </Source>
            </Payment>
        </Payments>
    </Result>
</Rule>

This example shows that if you are Rank 1 (R10) but not Rank 2 (R20), you get 8% of your Generation 1.

The Comment attribute in uses three variables:

  • [backofficeId]
  • [percent]
  • [acrVolume]

You can only use these variables in the <PVPay> Comment. They display in a Commission Run Profile like this:

Level 1 PayLevel 1 Pay


Check Match Bonus

The following is a Check Match Bonus for Rank 7:

<Rule Description="Check Match 70" Name="CM70">
      <And>
        <MeetsRule Rule="R70" />
        <NotHitOption Rule="R80" />
      </And>
      <Result>
        <Payments>
          <Payment Pool="MasterPool" Bonus="Check Match Gen 1" Tag="" MetaData="">
            <Group>
              <GenerationGroup Tree="Enrollment" Generation="1" CompressOption="R50" BeginLevel="1" />
            </Group>
            <Source>
              <BonusMatchPay MatchBonus="Generation Pay" Percent="25" Comment="Check Match Gen 1 of Generation Pay"/>
            </Source>
          </Payment>
          <Payment Pool="MasterPool" Bonus="Check Match Gen 2" Tag="" MetaData="">
            <Group>
              <GenerationGroup Tree="Enrollment" Generation="2" CompressOption="R50" BeginLevel="1" />
            </Group>
            <Source>
              <BonusMatchPay MatchBonus="Generation Pay" Percent="10" Comment="Check Match Gen 2 of Generation Pay"/>
            </Source>
          </Payment>
        </Payments>
      </Result>
    </Rule>

The Rule checks if the Associate is Rank 7 but not Rank 8 with these lines:

 <And>
        <MeetsRule Rule="R70" />
        <NotHitOption Rule="R80" />
</And>

Then the Check Match looks at the Associate's Generations and Compresses on Rank 5:

<Group>
              <GenerationGroup Tree="Enrollment" Generation="1" CompressOption="R50" BeginLevel="1" />
</Group>

And awards them 10 percent of their Generation 1's volume:

<Source>
              <BonusMatchPay MatchBonus="Generation Pay" Percent="10" Comment="Check Match Gen 2 of Generation Pay"/>
</Source>

The template defines many Check Matches, one for each Rank. Each Generation has its percentage given to the Associate.



KPIs

KPIs (Key Performance Indicators) are another name for stats. They keep track of your Associate's performance and volume.

Read more: Defining KPIs

From the template:

<KPIs>
    <TemplateKPI Description="Group Volume" Key="GVKPI">
        <Accumulator>
            <VolumeSumAccumulator TreeVolume="GV" PersonalVolume="RRQV" Volume="RRQV"/>
        </Accumulator>
    </TemplateKPI>
    <TemplateKPI Description="Personal Sales Volume" Key="RRQVKPI">
        <Accumulator>
            <VolumeSumAccumulator PersonalVolume="RRQV"/>
        </Accumulator>
    </TemplateKPI>
    <TemplateKPI Description="Personal Pay Volume" Key="CVKPI">
        <Accumulator>
            <VolumeSumAccumulator PersonalVolume="CV"/>
        </Accumulator>
    </TemplateKPI>
    <TemplateKPI Description="Customer Count" Key="NonDistC">
        <Accumulator>
            <NodeCountAccumulator Tree="Enrollment" TreeIndex="0" OptionID="NotDist" BegGen="1" EndGen="1" CompressOptionID="" IncludeCompressed="False"/>
        </Accumulator>
    </TemplateKPI>
</KPIs>

Important

You must set the template that will track stats. Learn how in Stats and Projected Commissions Template Names.

Updated about a month ago



Template: Monthly Unilevel Compensation Plan XML


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.