Set commission rules

Publish a versioned commission rule that decides what partners earn on each payment.

Embed
Preview of the card
<a href="https://referalli.com/guides/commission-rules"><img src="https://referalli.com/guides/_api/public/orgs/07f432f4-34b9-46a7-aaad-c0e395d2e4f9/spaces/2d18b3a7-6f85-4e83-b889-e1a361196ad4/pages/3142f7f3-144f-42a6-b9e3-9cf4a80ccc54/social-card.svg?v=3e7ae33eec8b" alt="Set commission rules" width="600" height="315"></a>

A commission rule tells Referalli how much a partner earns when a referred customer pays. You write the rule in the Commission rules card of the program designer. Each time you publish, Referalli saves a new version. Commissions already earned keep the version they were calculated with, so changing a rule never rewrites history.

Publish a rule

  1. Open the program designer

    Go to Programs and select designer next to the program.

  2. Edit the rule

    In Commission rules, edit the text in the rule box. If the program already has a rule, the box opens with the current version and its label says Rule config (JSON) — editing from current v…. If not, it opens with a starter example (labelled starter example, nothing published yet): 20% of every payment, for the customer's lifetime, with a 30-day hold.

  3. Publish

    Select Publish new version. A message confirms the version number, and the new version appears at the top of the history under the button.

Version history

Under the button, every version is listed newest first, with its version number and when it was published. The newest is marked (current). Select a version to see its full rule. To go back to an older rule, open it and select Load into editor, then Publish new version. That publishes a copy as a new version; it doesn't change the commissions already earned under other versions.

The starter rule

{
  "base": { "kind": "percent", "bps": 2000 },
  "appliesTo": "gross",
  "recurring": { "type": "lifetime" },
  "holdDays": 30
}

Rates are written in basis points (bps): 100 bps is 1%, so 2000 bps is 20%. Money amounts are written in the smallest currency unit, so 2500 in USD is $25.00.

The main settings

Setting

What it does

Values

base

The commission.

A percentage: { "kind": "percent", "bps": 2000 }. Or a fixed amount per payment: { "kind": "fixed", "amountMinor": 2500, "currency": "usd" }.

appliesTo

Which amount the percentage is taken from.

gross (default), net_of_tax, or net_of_fees (net of tax and fees).

recurring

Which payments earn.

{ "type": "one_time" } for the first payment only, { "type": "lifetime" } for every payment (default), or { "type": "months", "months": 12 } for the first 1 to 120 months.

holdDays

How long a commission waits before you can approve it, so refunds can reverse it first.

0 to 365. Default 30.

Optional settings

Add any of these alongside the main settings.

Tiers raise the percentage when a partner has more paying customers in the same calendar month. The highest tier the partner reaches applies. Tiers only change percentage commissions.

"tiers": [
  { "minCustomers": 10, "bps": 2500 },
  { "minCustomers": 50, "bps": 3000 }
]

Bounties pay a fixed amount for an event. The event can be signup (paid once when a referred customer signs up and the referral counts straight away) or trial (paid once, the first time a referred customer starts a trial in your billing provider). Bounties wait out the same hold as other commissions.

"bounties": [
  { "event": "signup", "amountMinor": 500, "currency": "usd" },
  { "event": "trial", "amountMinor": 1000, "currency": "usd" }
]

Any other event, such as activation, is refused when you publish, because nothing would ever pay it.

Overrides give a different commission to one partner or one product. The most specific match wins. You can find a partner's ID at the end of the address of their page in Partners.

"overrides": [
  { "match": { "partnerId": "ptr_..." }, "base": { "kind": "percent", "bps": 3000 } }
]

Sub-affiliates pay partners a share when partners they recruited make sales. Set 1 to 5 levels and give a rate for each level.

"subAffiliate": { "levels": 2, "ratesBps": [500, 200] }

New vs. expansion pays one rate on new business and another on expansion revenue. When this is set, it replaces tiers.

"newVsExpansion": { "newBps": 2000, "expansionBps": 1000 }

If the JSON isn't valid, or a value is out of range, nothing is published and a message explains the problem.

Updated