Skip to content

Strategies

Every offer returned by GET /programs includes a strategy_key that describes how incentives are structured and calculated. Understanding the strategy is essential for correctly interpreting program data and calculation results.

There are currently three strategies: standard, stepped, and stacked.


At a Glance

Strategy Incentive Shape Rate Determined By Calculators
Standard incentives: [...] (array) Fixed per-SKU rate percent_of_amount, dollars_per_unit, fixed_amount
Stepped incentive: {} (object) Threshold-based tier percent_of_amount, dollars_per_unit, fixed_amount
Stacked incentive: {} (object) Coverage-unit overlap across SKU sets dollars_per_coverage_unit

Calculators

Before diving into strategies, it helps to understand the calculator_key on each offer. This determines the formula used to compute the incentive amount:

calculator_key What It Means
percent_of_amount Incentive is a percentage of the transaction's dollar amount. A rate of 5.0 means 5%.
dollars_per_unit Incentive is a flat dollar amount per unit of quantity purchased.
fixed_amount Incentive is a fixed dollar total for the offer, distributed proportionally across qualifying transactions.
dollars_per_coverage_unit Incentive is a flat dollar amount per coverage unit (e.g., per acre). Used exclusively with the stacked strategy.

Standard

The standard strategy is the simplest and most common. Each SKU in the offer has a fixed rate, and every qualifying transaction earns at that rate.

Key Characteristics

  • The incentive structure is an array: "incentives": [...]
  • Each incentive block defines a period_key, transaction_type, and per-SKU rates
  • The rate for a given SKU does not change based on volume or any other factor

When Are There Multiple Incentives?

An offer will have multiple entries in incentives when the same set of SKUs earns across different time periods or different transaction types. This is not a usual case, most Standard offers would have one incentive entry.

Programs Response

{
  "strategy_key": "standard",
  "calculator_key": "percent_of_amount",
  "incentives": [
    {
      "key": "incentive_period_retailer_purchases_from_distribution",
      "label": "Full Season Incentive",
      "period_key": "incentive_period",
      "transaction_type": "retailer_purchases_from_distribution",
      "rates": [
        {
          "sku_key": "agri_shield_insecticide_2.5_gal_53551",
          "rate": 3.0,
          "measure": "percent"
        },
        {
          "sku_key": "crop_guard_30_l_herbicide_2.5_gal_22654",
          "rate": 3.0,
          "measure": "percent"
        }
      ]
    }
  ]
}

Reading this: Every qualifying transaction for agri_shield_insecticide_2.5_gal_53551 during the incentive_period earns a 3% incentive on the transaction dollar amount.

Calculations Response

{
  "offer_key": "corteva.2026.retailer.local.crop_protection.base",
  "offer_calculator": "percent_of_amount",
  "sku_key": "agri_shield_insecticide_2.5_gal_53551",
  "incentive_rate_key": "incentive_period_retailer_purchases_from_distribution",
  "incentive_rate_measure": "percent",
  "incentive_rate_value": 3.0,
  "offer_sku_pay_rate": 0.03,
  "transaction_id": "01JAD80XDZGZNTYDRV4H56221W",
  "provided_quantity": 100.0,
  "provided_uom_key": "gal",
  "provided_amount": 50000.0,
  "incentivized_quantity": 100.0,
  "incentivized_amount": 50000.0,
  "incentive_amount": 1500.0,
  "incentive_effective_rate": 0.03
}

Reading this:

  • incentive_rate_key → the key from the matching incentives[] entry (generated as {period_key}_{transaction_type})
  • incentive_rate_value: 3.0 with measure: percent → 3% rate
  • offer_sku_pay_rate: 0.03 → the rate expressed as a decimal multiplier
  • incentive_amount: 1500.0 → $50,000 × 0.03 = $1,500

Stepped

The stepped strategy introduces tiered rates where the incentive rate is determined by a threshold value. The highest qualifying tier is applied to all transactions, it is not marginal.

Key Characteristics

  • The incentive structure is a single object: "incentive": {}
  • Contains three parts: filters, threshold_definition, and rates
  • The threshold determines which rate tier applies; the highest tier where the threshold is met wins
  • All qualifying transactions earn at the same selected rate

How the Threshold Works

The threshold_definition tells the engine how to compute the value that is compared against the rate tiers:

type How the Threshold Value Is Computed
aggregated_amount Sums the dollar amount of transactions matching its filters
aggregated_quantity Sums the quantity of transactions matching its filters
property Uses an externally provided value from the request (e.g., a business plan achievement percentage that the requestor passes in)

Note

The filters on threshold_definition can reference different SKUs than the earning filters. This means the products that determine your tier can be different from the products that earn the incentive.

Programs Response — Amount-Based Threshold

{
  "strategy_key": "stepped",
  "calculator_key": "percent_of_amount",
  "incentive": {
    "filters": [
      {
        "period_key": "incentive_period",
        "sku_keys": ["agri_shield_insecticide_2.5_gal_53551", "agri_shield_insecticide_bulk_63374"],
        "transaction_type": "retailer_purchases_from_distribution"
      }
    ],
    "threshold_definition": {
      "type": "aggregated_amount",
      "filters": [
        {
          "period_key": "incentive_period",
          "sku_keys": ["crop_guard_30_l_herbicide_2.5_gal_22654", "field_hammer_fungicide_1_gal_61492"],
          "transaction_type": "retailer_purchases_from_distribution"
        }
      ]
    },
    "rates": [
      {
        "key": "15_percent_greater_than_or_equal_to_2000",
        "threshold": 2000.0,
        "value": 15.0,
        "measure": "percent"
      },
      {
        "key": "10_percent_greater_than_or_equal_to_1000",
        "threshold": 1000.0,
        "value": 10.0,
        "measure": "percent"
      }
    ]
  }
}

Reading this:

  • Earning products: agri_shield_insecticide_2.5_gal_53551 and agri_shield_insecticide_bulk_63374 — these are the SKUs whose transactions will earn the incentive
  • Threshold products: crop_guard_30_l_herbicide_2.5_gal_22654 and field_hammer_fungicide_1_gal_61492 — the total dollar amount purchased of these SKUs determines which rate tier applies
  • Rate tiers: If $2,000+ of crop_guard_30_l_herbicide_2.5_gal_22654/field_hammer_fungicide_1_gal_61492 is purchased → 15% rate; if $1,000+ → 10% rate; below $1,000 → no incentive
  • The engine picks the highest qualifying tier and applies it to all agri_shield_insecticide_2.5_gal_53551/agri_shield_insecticide_bulk_63374 transactions

Programs Response — Property-Based Threshold

{
  "strategy_key": "stepped",
  "calculator_key": "percent_of_amount",
  "incentive": {
    "filters": [
      {
        "period_key": "incentive_period",
        "sku_keys": ["crop_guard_30_l_herbicide_2.5_gal_22654", "field_hammer_fungicide_1_gal_61492"],
        "transaction_type": "retailer_purchases_from_distribution"
      }
    ],
    "threshold_definition": {
      "type": "property",
      "property": {
        "key": "business_plan_achieved",
        "type": "number",
        "level": "request"
      }
    },
    "rates": [
      {
        "key": "2_percent_greater_than_or_equal_to_100",
        "threshold": 100.0,
        "value": 2.0,
        "measure": "percent"
      },
      {
        "key": "1.9_percent_greater_than_or_equal_to_85",
        "threshold": 85.0,
        "value": 1.9,
        "measure": "percent"
      },
      {
        "key": "1.88_percent_greater_than_or_equal_to_75",
        "threshold": 75.0,
        "value": 1.88,
        "measure": "percent"
      }
    ]
  }
}

Reading this:

  • The rate tier is determined by business_plan_achieved — a value the requestor provides in the calculation request as a request-level property
  • If the participant has achieved 90% of their business plan, they qualify for the 1.9% tier (highest threshold met is 85)
  • This property is maintained externally; the engine uses whatever is passed in

Calculations Response

{
  "offer_key": "offer_a",
  "offer_calculator": "percent_of_amount",
  "sku_key": "agri_shield_insecticide_2.5_gal_53551",
  "incentive_rate_key": "15_percent_greater_than_or_equal_to_2000",
  "incentive_rate_measure": "percent",
  "incentive_rate_value": 15.0,
  "offer_sku_pay_rate": 0.15,
  "transaction_id": "01JAD80XDZGZNTYDRV4H56221W",
  "provided_quantity": 1570.0,
  "provided_uom_key": "gal",
  "provided_amount": 86350.0,
  "incentivized_quantity": 1570.0,
  "incentivized_amount": 78500.0,
  "incentive_amount": 11775.0,
  "incentive_effective_rate": 0.15
}

Reading this:

  • incentive_rate_key: "15_percent_greater_than_or_equal_to_2000" → the 15% tier was selected (threshold of $2,000 was met)
  • incentive_amount: 11775.0 → $78,500 × 0.15 = $11,775

Stacked

The stacked strategy is designed for programs where the incentive is earned only when multiple product groups are purchased together to cover the same unit of coverage (typically acres). The classic example: a grower must buy both seed and seed treatment for the same acreage to earn the incentive.

Key Characteristics

  • The incentive structure is a single object: "incentive": {}
  • Contains two parts: sku_sets and stacks
  • Always uses calculator_key: "dollars_per_coverage_unit"
  • Earning is based on overlapping coverage across SKU sets, not on individual transactions alone
  • A single transaction can produce earnings in multiple stacks within the same offer

Core Concepts

SKU Set — A group of SKUs that contribute to a coverage category (e.g., "seed" or "seed treatment"). Each SKU set defines:

  • Which SKUs belong to it and their per-SKU rates (the dollar payout per coverage unit)
  • A conversion that normalizes transaction quantities into a shared coverage unit (e.g., gallons → acres)

Stack — A combination of SKU sets that must overlap for the incentive to be earned. A stack with sku_set_keys: ["seed", "seed_treatment"] means: "earn the incentive on acres where both seed and seed treatment are applied."

Coverage Unit — A normalized unit of measure (typically acre) that allows different products with different units (gallons, units, bags) to be compared on common ground.

How It Works

  1. Transactions are grouped by SKU set and converted to coverage units using the conversion.rates
  2. The engine finds the overlapping coverage between SKU sets in each stack — i.e., acres where both seed and treatment were purchased
  3. The incentive is paid per overlapping coverage unit at the SKU's rate
  4. If a SKU has rate: 0.0, it is required for the stack to match but does not generate a payout itself (e.g., the seed is needed to create the acreage overlap, but only the treatment pays out)

Programs Response

{
  "strategy_key": "stacked",
  "calculator_key": "dollars_per_coverage_unit",
  "incentive": {
    "sku_sets": [
      {
        "key": "seed",
        "period_key": "incentive_period",
        "transaction_type": "retailer_sales_to_growers",
        "conversion": {
          "coverage_unit": "acre",
          "rates": [
            {
              "sku_key": "agri_shield_insecticide_bulk_63374",
              "rate": 1.0,
              "from": "unit"
            }
          ]
        },
        "rates": [
          {
            "sku_key": "agri_shield_insecticide_bulk_63374",
            "rate": 0.0,
            "measure": "dollars"
          }
        ]
      },
      {
        "key": "seed_treatment",
        "period_key": "incentive_period",
        "transaction_type": "retailer_sales_to_growers",
        "conversion": {
          "coverage_unit": "acre",
          "rates": [
            {
              "sku_key": "field_hammer_fungicide_bulk_52112",
              "rate": 0.00921875,
              "from": "gal"
            }
          ]
        },
        "rates": [
          {
            "sku_key": "field_hammer_fungicide_bulk_52112",
            "rate": 0.75,
            "measure": "dollars"
          }
        ]
      }
    ],
    "stacks": [
      {
        "key": "seed_and_seed_treatment",
        "sku_set_keys": ["seed", "seed_treatment"]
      }
    ]
  }
}

Reading this:

  • seed SKU set: Xitavo soybean seed converts at 1 unit = 1 acre. Its pay rate is $0.00/acre — it anchors the acreage but doesn't pay out directly
  • seed_treatment SKU set: ILEVO's conversion rate is 0.00921875 gal per acre. This comes from the product's application rate of 1.18 oz per acre, converted to gallons: 1.18 ÷ 128 = 0.00921875 (since there are 128 oz in a gallon). The conversion is expressed in gallons to match the SKU's uom_key. Its pay rate is $0.75/acre
  • stacks: The seed_and_seed_treatment stack requires both SKU sets to overlap. Only acres where both seed and treatment were purchased earn the $0.75/acre incentive
  • If a retailer sells 1,000 acres of seed but only 800 acres worth of treatment, only 800 acres qualify for the incentive

Calculations Response

{
  "offer_key": "basf.2026.retailer.local.seed_treatment_soybean_pair_up.ilevo",
  "offer_calculator": "dollars_per_coverage_unit",
  "sku_key": "field_hammer_fungicide_bulk_52112",
  "incentive_rate_key": "seed_and_seed_treatment",
  "incentive_rate_measure": "dollars",
  "incentive_rate_value": 0.75,
  "offer_sku_pay_rate": 0.75,
  "transaction_id": "01F8ZMVJKB5XNPQ6TRDYW4EH9G",
  "provided_quantity": 10.0,
  "provided_uom_key": "gal",
  "provided_amount": 4700.0,
  "incentivized_quantity": 10.0,
  "incentivized_amount": 4700.0,
  "incentive_amount": 813.56,
  "incentive_contribution_percent": 1.0,
  "incentive_effective_rate": 0.173
}

Reading this:

  • incentive_rate_key: "seed_and_seed_treatment" → the key from the matching stack
  • incentive_rate_value: 0.75 → $0.75 per acre
  • incentive_amount: 813.56 → the earned incentive based on overlapping coverage acres
  • incentive_effective_rate: 0.173 → the incentive as a proportion of the transaction dollar amount ($813.56 / $4,700)

Note

Because stacked offers can have multiple stacks, a single transaction may appear in potential_earnings more than once — once per stack it participates in. The combination of transaction_id, offer_key, and incentive_rate_key uniquely identifies each earning row.


Identifying the Applied Rate

Across all strategies, the incentive_rate_key field in the calculations response tells you which rate or tier was used:

Strategy incentive_rate_key maps to
Standard incentives[].key — format: {period_key}_{transaction_type}
Stepped rates[].key — format: {value}_{measure}_greater_than_or_equal_to_{threshold}
Stacked stacks[].key — format: SKU set keys joined with _and_ (e.g., seed_and_ilevo_seed_treatment)

Summary

  • Standard — straightforward flat rates per SKU. Most common. Rate is known upfront from the program data.
  • Stepped — tiered rates driven by a threshold (purchase volume or an external metric). The tier is resolved at calculation time.
  • Stacked — coverage-based incentives requiring multiple product categories to overlap.