> ## Documentation Index
> Fetch the complete documentation index at: https://dub.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Sale-based rewards

> Learn how to reward partners with a revenue share or flat fee for every sale they drive

<Tip>
  Sale rewards are available on [Business plans and
  above](https://dub.co/pricing).
</Tip>

A **sale-based reward** (pay-per-sale) pays partners when a customer they referred makes a purchase. It's the most common reward type on Dub, and the one most partners expect: they earn either a percentage of the sale (revenue share) or a fixed fee per sale.

Unlike [click](/help/article/click-rewards) and [lead](/help/article/lead-rewards) rewards, sale rewards can be **recurring**, so a partner keeps earning on every renewal for as long as you choose.

## How sale rewards work

Sale rewards are triggered by **sale events** on Dub. A sale event is created whenever:

* You track a sale via the [`/track/sale`](/docs/api-reference/track/sale) endpoint or one of our [SDKs](/docs/sdks/overview)
* A payment or invoice is paid via your [Stripe integration](/docs/integrations/stripe)

Each sale event creates a [commission](/help/article/partner-commissions) for the partner whose link the customer came from. Dub applies the sale reward in this order:

1. a [link-level](/help/article/partner-rewards#link-level-rewards) reward if one is set,
2. otherwise a [partner-level](/help/article/partner-rewards#partner-level-rewards) reward,
3. otherwise the partner's [group](/help/article/partner-groups) reward.

The commission amount is determined by that reward, plus any [conditions](#sale-reward-conditions) that match the sale.

If a sale is later refunded or disputed, Dub automatically creates a [clawback](/help/article/partner-commissions#creating-a-clawback) for the associated commission. See [handling refunds](/docs/conversions/sales/refunds).

## Creating a sale reward

In your [group rewards](https://app.dub.co/program/groups/default/rewards) tab, click **Create** next to the **Sale reward** type.

<Frame>
  <img src="https://mintcdn.com/dub/X4WOJ2-QM5IGKP1O/images/dub-partners/create-reward-sale.png?fit=max&auto=format&n=X4WOJ2-QM5IGKP1O&q=85&s=52cfdedd1e86af6dd2ec0ea235e43bcd" alt="Group rewards" width="2014" height="1268" data-path="images/dub-partners/create-reward-sale.png" />
</Frame>

When the reward builder is open, set your amount per sale, and optionally set your [sale reward conditions](#sale-reward-conditions).

<Frame>
  <img src="https://mintcdn.com/dub/X4WOJ2-QM5IGKP1O/images/dub-partners/create-reward-sale-default.png?fit=max&auto=format&n=X4WOJ2-QM5IGKP1O&q=85&s=5dc5bdab256954e12bd9761b0cb55815" alt="Sale reward" width="2014" height="1316" data-path="images/dub-partners/create-reward-sale-default.png" />
</Frame>

Once you've configured the reward, you'll see a [reward preview](/help/article/partner-rewards#reward-preview) and [quality score](/help/article/partner-rewards#reward-quality), and be asked to [confirm](/help/article/partner-rewards#confirm-reward-creation) before it goes live.

Dub generates the reward description partners see automatically, but you can customize how it's shown to partners by using the [customize the reward description](/help/article/partner-rewards#custom-reward-descriptions) by clicking the pencil button next to the reward.

You can also describe the reward in plain English using the [AI reward builder](/help/article/partner-rewards#using-the-ai-reward-builder), for example:

* "30% recurring for 12 months"
* "50% lifetime for customers who joined before Jan 2026, else \$100 one time"
* "\$500 if productId = 'prod\_xxx' (Pro Plan), else \$100 one time"

### Amount

Sale rewards support two payout models:

| Model          | Description                                                        | Example           |
| -------------- | ------------------------------------------------------------------ | ----------------- |
| **Percentage** | Partners receive a share of each sale's value (revenue share)      | 30% of sale value |
| **Flat**       | Partners receive a fixed fee for each sale, regardless of its size | \$50 per sale     |

Percentage rewards are calculated on the sale amount Dub receives. For Stripe, that's the invoice or checkout total after any discounts, and for `/track/sale` it's the `amount` you pass.

### Duration

The duration controls how long a partner keeps earning on a given customer after the first sale:

| Duration           | Description                                                                                                                          |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| **One time**       | The partner earns on the customer's first sale only.                                                                                 |
| **1 to 24 months** | The partner earns on every sale from that customer within the window (presets: 1, 3, 6, 12, 24 months, or a custom amount of months. |
| **Lifetime**       | The partner earns on every sale from that customer, forever.                                                                         |

## Sale reward conditions

<Tip>
  Customizing reward conditions is only available on the [Advanced plan and
  above](https://dub.co/pricing).
</Tip>

Conditions let you pay a different amount when a sale meets certain criteria. Click **Add condition** in the reward builder, and set the reward amount and duration for each condition block.

<Frame>
  <img src="https://mintcdn.com/dub/X4WOJ2-QM5IGKP1O/images/dub-partners/create-reward-sale-condition.png?fit=max&auto=format&n=X4WOJ2-QM5IGKP1O&q=85&s=8a8148d63007b92fcc79eac65b17b2be" alt="Sale reward with conditions" width="2014" height="1456" data-path="images/dub-partners/create-reward-sale-condition.png" />
</Frame>

### Customer attributes

| Attribute                   | Description                                                                        |
| --------------------------- | ---------------------------------------------------------------------------------- |
| **Country**                 | The customer's country, based on the location of the click that led to the signup. |
| **Subscription duration**   | How many months the customer has been subscribed, counted from their first sale.   |
| **Subscription start date** | The date of the customer's first sale.                                             |
| **Signup date**             | The date the customer was created on Dub (usually their lead event).               |

### Partner attributes

| Attribute             | Description                                                        |
| --------------------- | ------------------------------------------------------------------ |
| **Country**           | The country on the partner's profile.                              |
| **Total clicks**      | Total clicks the partner has driven.                               |
| **Total leads**       | Total leads the partner has generated.                             |
| **Total conversions** | Total sale conversions the partner has generated.                  |
| **Total revenue**     | Total sale amount the partner has driven (in USD).                 |
| **Total commissions** | Total commissions the partner has earned in your program (in USD). |

### Sale attributes

| Attribute      | Description                                                                                                           |
| -------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Product ID** | The product ID the sale is for. Use `Shown as` to modify how the reward shows to your partners.                       |
| **Amount**     | The sale amount in USD.                                                                                               |
| **Type**       | `new` for the customer's first sale, `recurring` for every sale after that.                                           |
| **Metadata**   | Any custom field attached to the sale via the `metadata`, or pulled from Stripe checkout session or invoice metadata. |

Learn more about [metadata conditions](/help/article/partner-rewards#metadata-conditions).

## Sale reward examples

### First-sale bonus

Pay a big rate on the first sale to reward customer acquisition, then a standard rate on renewals:

| Condition                         | Reward                                    | Description                         |
| --------------------------------- | ----------------------------------------- | ----------------------------------- |
| If `Sale` `Type` `is` `new`       | Then pay a `Percentage` of `80%` per sale | First-sale bonus for new customers  |
| If `Sale` `Type` `is` `recurring` | Then pay a `Percentage` of `30%` per sale | Standard reward for recurring sales |

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/reward-example-firstsale-selected.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=bd1d69d582c7e38973acb5a8cdb6585b" alt="First-sale bonus condition example" width="2014" height="1654" data-path="images/dub-partners/reward-example-firstsale-selected.png" />
</Frame>

### Staggered reward durations

Tailor your reward amount by the customer's subscription duration, subscription start date, or signup date.

In this example, we're offering a 25% reward for the first 12 months and a 10% reward for all other sales:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/staggered-rewards-03.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=bf0943e6c450d15e42d979a257e38bdf" alt="Staggered rewards example" width="2014" height="1650" data-path="images/dub-partners/staggered-rewards-03.png" />
</Frame>

There are 3 different conditions for staggered reward durations:

| Condition type                         | Description                                      | Example                                                                  |
| -------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------ |
| **Customer's subscription duration**   | How long the customer has been subscribed for    | 25% for the first 12 months, 10% for the rest of the customer's lifetime |
| **Customer's subscription start date** | The date the customer started their subscription | 25% if subscribed before Jan 1, 2026, else 10%                           |
| **Customer's signup date**             | The date the customer signed up for your product | 25% if signed up before Jan 1, 2026, else 10%                            |

### Geo-specific

Tailor your reward amount by customer country. In this example, we're rewarding partners with a higher percentage for conversions from Canada and the United States:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/create-reward-geo-condition.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=13a1e3e4dd37b5d7c5abedb50f9674b7" alt="Global Boost condition example" width="2014" height="1586" data-path="images/dub-partners/create-reward-geo-condition.png" />
</Frame>

| Condition                                                       | Reward                                    | Description                                          |
| --------------------------------------------------------------- | ----------------------------------------- | ---------------------------------------------------- |
| If `Customer` `Country` `is one of` `Canada, United States`     | Then pay a `Percentage` of `40%` per sale | Higher reward for US and Canadian customers          |
| If `Customer` `Country` `is not one of` `Canada, United States` | Then pay a `Percentage` of `30%` per sale | Lower reward for customers outside the US and Canada |

### Product spotlight

Tailor your reward amount by product. In this example, we're rewarding more when the sale is for the Gold Plan:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/condition-example-02.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=338abe9110707e82a59adb239189be72" alt="Product Spotlight condition example" width="2014" height="1754" data-path="images/dub-partners/condition-example-02.png" />
</Frame>

| Condition                                  | Reward                                    | Description                           |
| ------------------------------------------ | ----------------------------------------- | ------------------------------------- |
| If `Sale` `Product ID` `is` `prod_xxx`     | Then pay a `Percentage` of `40%` per sale | Higher reward for `prod_xxx` sales    |
| If `Sale` `Product ID` `is not` `prod_xxx` | Then pay a `Percentage` of `10%` per sale | Lower reward for non-`prod_xxx` sales |

<Tip>
  You can also set what the partner sees as the product name by adding a `Shown
      as` field to the reward.

  For example, if you want to show the product as "Gold Plan" instead of the
  actual product ID, you can set the `Shown as` to `Gold Plan`.
</Tip>

<Info>
  Where `Your product ID` is listed, you'll enter your product ID (the
  screenshot uses an example product ID)

  If you're manually tracking a sale event via our `/track/sale` endpoint, you
  can pass along the product ID via the [metadata
  prop](/docs/api-reference/track/sale#body-metadata-one-of-0)
  (e.g. `metadata.productId = "prod_xxx"`).

  If you're using our [Stripe
  integration](/docs/integrations/stripe), the product ID will be the Stripe
  product ID that the subscription is for (starts with `prod_xxx`). If a Stripe invoice contains multiple line
  items (e.g. a base subscription plus an add-on), Dub
  calculate the commission for each line item using the matching reward
  rate. [See full example here](/docs/integrations/stripe#multiple-line-items-per-invoice).
</Info>

### Sale amount modifiers

For creating tiered rewards based on the sale amount. In this example, we're giving our partners a higher reward if the sale amount is over a specific dollar amount:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/condition-example-04.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=29f7a6649e90e554114272870190e6b4" alt="The Climb condition example" width="2014" height="1598" data-path="images/dub-partners/condition-example-04.png" />
</Frame>

| Condition                                               | Reward                                    | Description                        |
| ------------------------------------------------------- | ----------------------------------------- | ---------------------------------- |
| If `Sale` `Amount` `is greater than or equal to` `$100` | Then pay a `Percentage` of `60%` per sale | Higher reward for sales over \$100 |
| If `Sale` `Amount` `is less than or equal to` `$100`    | Then pay a `Percentage` of `25%` per sale | Lower reward for sales under \$100 |

### Partner performance tiers

Tailor your reward amount by partner performance. In this example, we offer a 50% base reward and increase it to 60% based on how many conversions the partner has:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/condition-example-03.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=c7b3b46281b7b7d8ef763debcc13a169" alt="The Climb condition example" width="2014" height="1650" data-path="images/dub-partners/condition-example-03.png" />
</Frame>

| Condition                                                               | Reward                                    | Description                                                              |
| ----------------------------------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------ |
| If `Partner` `Total conversions` `is greater than or equal to` `200`    | Then pay a `Percentage` of `60%` per sale | Higher reward for partners with more than 200 conversions                |
| If `Partner` `Total revenue` `is greater than or equal to` `$10,000`    | Then pay a `Percentage` of `60%` per sale | Higher reward for partners with more than \$10K in referral revenue      |
| If `Partner` `Total commissions` `is greater than or equal to` `$1,000` | Then pay a `Percentage` of `60%` per sale | Higher reward for partners who have earned more than \$1K in commissions |

<Tip>
  Want to move partners to a different partner group based on their performance
  instead? [Learn more about group move
  rules](/help/article/partner-groups#group-move-rules).
</Tip>

### Annual vs. monthly billing

Tailor your reward amount based on a [metadata condition](/help/article/partner-rewards#metadata-conditions). In this example, we're passing a `billingCycle` field on each sale (via the `metadata` prop on [`/track/sale`](/docs/api-reference/track/sale)) and rewarding partners more for driving annual plans over monthly plans:

| Condition                               | Reward                                    | Description                       |
| --------------------------------------- | ----------------------------------------- | --------------------------------- |
| If `Sale` `billingCycle` `is` `annual`  | Then pay a `Percentage` of `40%` per sale | Higher reward for annual plans    |
| If `Sale` `billingCycle` `is` `monthly` | Then pay a `Percentage` of `20%` per sale | Standard reward for monthly plans |

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/reward-builder-metadata-sale.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=8b28ae12caad434ece729642f9ea71ca" alt="Reward builder metadata sale example" width="2014" height="1628" data-path="images/dub-partners/reward-builder-metadata-sale.png" />
</Frame>

### New vs. recurring sales

Tailor your reward amount based on whether the sale is the customer's first sale or a recurring sale. During reward creation, select `Sale` as the condition type and then choose `Type` as the condition field. This will allow you to differentiate between new and recurring sales.

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/reward-example-firstsale.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=1415ac57d900637a8a1e3401ba81030b" alt="First-sale bonus condition example" width="2014" height="1478" data-path="images/dub-partners/reward-example-firstsale.png" />
</Frame>

In this example, we're rewarding partners with a 80% reward for the first sale while keeping the standard recurring commission for all other sales:

<Frame>
  <img src="https://mintcdn.com/dub/qQjdPT1OUxFBHJlR/images/dub-partners/reward-example-firstsale-selected.png?fit=max&auto=format&n=qQjdPT1OUxFBHJlR&q=85&s=bd1d69d582c7e38973acb5a8cdb6585b" alt="First-sale bonus selected condition example" width="2014" height="1654" data-path="images/dub-partners/reward-example-firstsale-selected.png" />
</Frame>

This is especially useful for subscription-based products, where you may want to offer a higher reward for the first sale to incentivize partners to acquire new customers, while offering a lower reward for recurring sales, while combining with other conditions.

| Condition                         | Reward                                    | Description                         |
| --------------------------------- | ----------------------------------------- | ----------------------------------- |
| If `Sale` `Type` `is` `new`       | Then pay a `Percentage` of `80%` per sale | First-sale bonus for new customers  |
| If `Sale` `Type` `is` `recurring` | Then pay a `Percentage` of `30%` per sale | Standard reward for recurring sales |

## Updating a sale reward

When you change a group's sale reward, historical commissions aren't changed. The new configuration applies to future sales – including renewals from customers the partner referred before the change – only when no [link-level](/help/article/partner-rewards#link-level-rewards) or [partner-level](/help/article/partner-rewards#partner-level-rewards) override is configured. If you switch a group from one-time to recurring, previously referred customers' renewals become eligible for commission again.
