Skip to content
Developer docs
⌘ K
Dashboard ↗

Webhook events

reward.debt_settled

Sent once for each settlement of a delivery debt. reward is the reward the debt belongs to. debt shows its outstandingCents and settlements right after this settlement.

Example payload

This illustrative payload follows the current event validator. Amounts use minor units.

json
{
  "id": "00000000-0000-4000-8000-000000000001",
  "companyId": "company-example",
  "type": "reward.debt_settled",
  "data": {
    "partnerId": "partner-example",
    "partnerExternalId": "merchant-partner-001",
    "rewardId": "reward-example",
    "programId": "program-example",
    "customerId": "customer-example",
    "currency": "CAD",
    "rewardType": "cash",
    "deliveryMode": "merchant",
    "amountCents": 0,
    "originalCents": 500,
    "reversedCents": 500,
    "status": "reversed",
    "reward": {
      "id": "reward-example",
      "companyId": "company-example",
      "orderId": "order-example",
      "programId": "program-example",
      "partnerId": "partner-example",
      "customerId": "customer-example",
      "currency": "CAD",
      "rewardType": "cash",
      "originalCents": 500,
      "reversedCents": 500,
      "status": "reversed",
      "createdAt": "2026-10-11T12:00:00.000Z",
      "availableAt": "2026-10-11T12:00:00.000Z",
      "programSnapshot": {
        "name": "Example referral program",
        "kind": "referral",
        "currency": "CAD",
        "trigger": {
          "type": "order"
        },
        "rewardType": "cash",
        "attributionWindowDays": 1,
        "active": true
      },
      "explanation": "5% of CAD $100.00"
    },
    "debt": {
      "id": "debt-example",
      "companyId": "company-example",
      "partnerId": "partner-example",
      "rewardId": "reward-example",
      "deliveryId": "delivery-example",
      "eventId": "payment-example",
      "currency": "CAD",
      "rewardType": "cash",
      "amountCents": 500,
      "outstandingCents": 0,
      "settlements": [
        {
          "id": "settlement-example",
          "companyId": "company-example",
          "debtId": "debt-example",
          "partnerId": "partner-example",
          "kind": "recovered",
          "amountCents": 500,
          "createdAt": "2026-10-11T12:00:00.000Z"
        }
      ],
      "createdAt": "2026-10-11T12:00:00.000Z"
    },
    "settlement": {
      "id": "settlement-example",
      "companyId": "company-example",
      "debtId": "debt-example",
      "partnerId": "partner-example",
      "kind": "recovered",
      "amountCents": 500,
      "createdAt": "2026-10-11T12:00:00.000Z"
    },
    "settledCents": 500,
    "trigger": "order",
    "orderId": "order-example"
  },
  "createdAt": "2026-10-11T12:00:00.000Z"
}

Payload fields

FieldTypeRequiredDetails
partnerIdstringYes
partnerExternalIdstringYes
rewardIdstringYes
programIdstringYes
programVersionintegerNominimum 1
customerIdstringYes
currency"CAD", "USD", "EUR", "GBP"Yes
rewardType"cash", "credit", "offer"Yes
deliveryMode"merchant", "grizzlee_wallet"Yes
amountCentsintegerYesminimum 0. maximum 1000000000000
originalCentsintegerYesminimum 0. maximum 1000000000000
adjustedCentsintegerNominimum -1000000000000. maximum 1000000000000
reversedCentsintegerYesminimum 0. maximum 1000000000000
status"pending", "approved", "reversed"Yes
rewardobjectYes
incentiveAppliedCentsintegerNominimum 0. maximum 1000000000000
incentiveFlagobjectNo
debtobjectYes
settlementobjectYes
settledCentsintegerYesminimum 0. maximum 1000000000000

reward

FieldTypeRequiredDetails
reward.idstringYes
reward.companyIdstringYes
reward.orderIdstringNo
reward.milestonestringNo
reward.milestoneReportReversedbooleanNo
reward.reportEventIdstringNo
reward.valueCentsintegerNominimum 0. maximum 1000000000000
reward.milestoneCountintegerNominimum 0
reward.milestoneRevokedbooleanNo
reward.programIdstringYes
reward.partnerIdstringYes
reward.customerIdstringYes
reward.currency"CAD", "USD", "EUR", "GBP"Yes
reward.rewardType"cash", "credit", "offer"Yes
reward.offerobjectNo
reward.originalCentsintegerYesminimum 0. maximum 1000000000000
reward.adjustedCentsintegerNominimum -1000000000000. maximum 1000000000000
reward.reversedCentsintegerYesminimum 0. maximum 1000000000000
reward.status"pending", "approved", "reversed"Yes
reward.selfReferralobjectNo
reward.fraudobjectNo
reward.rejectedAtstringNodate-time
reward.rejectionReasonstringNo
reward.statusBeforeReversal"pending", "approved"No
reward.deliveryMode"merchant", "grizzlee_wallet"No
reward.createdAtstringYesdate-time
reward.availableAtstringYesdate-time
reward.programSnapshotobjectYes
reward.programVersionintegerNominimum 1
reward.historicalBasis"total"No
reward.basisCentsintegerNominimum 0. maximum 1000000000000
reward.explanationstringYes
reward.explanationPartsarrayNo
reward.calculationobjectNo

reward.offer

FieldTypeRequiredDetails
reward.offer.termsobjectYes
reward.offer.expiresAtstring,nullYes

reward.offer.terms

FieldTypeRequiredDetails
reward.offer.terms.typestringYes

reward.selfReferral

FieldTypeRequiredDetails
reward.selfReferral.action"blocked", "review", "flagged"Yes
reward.selfReferral.signalsarrayYes

reward.fraud

FieldTypeRequiredDetails
reward.fraud.action"blocked", "review", "flagged"Yes
reward.fraud.rulesarrayYes

reward.fraud.rules[]

FieldTypeRequiredDetails
reward.fraud.rules.rule"duplicate_accounts", "rapid_repeats", "repeat_customer", "disposable_email"Yes
reward.fraud.rules.action"blocked", "review", "flagged"Yes
reward.fraud.rules.signalsarrayYes
reward.fraud.rules.countintegerNo

reward.programSnapshot

FieldTypeRequiredDetails
reward.programSnapshot.namestringYes
reward.programSnapshot.kind"referral", "affiliate", "both"Yes
reward.programSnapshot.trackingobjectNodefault {}
reward.programSnapshot.currency"CAD", "USD", "EUR", "GBP"Yes
reward.programSnapshot.destinationUrlstringNouri
reward.programSnapshot.displayobjectNo
reward.programSnapshot.triggerunionNo
reward.programSnapshot.compensationunionNo
reward.programSnapshot.milestoneRewardsobjectNo
reward.programSnapshot.fixedRefundMode"prorate", "full_refund_only"Nodefault "prorate"
reward.programSnapshot.durationunionNo
reward.programSnapshot.rewardType"cash", "credit", "offer"Yes
reward.programSnapshot.deliveryobjectNodefault {}
reward.programSnapshot.attributionWindowDaysunionYes
reward.programSnapshot.reviewRewardsbooleanNo
reward.programSnapshot.fraudChecksobjectNo
reward.programSnapshot.activebooleanYes
reward.programSnapshot.performanceobjectNo
reward.programSnapshot.limitsobjectNo
reward.programSnapshot.customTermsarrayNo
reward.programSnapshot.friendIncentiveobjectNo
reward.programSnapshot.partnerOfferobjectNo
reward.programSnapshot.orderCategoriesobjectNo

reward.programSnapshot.tracking

FieldTypeRequiredDetails
reward.programSnapshot.tracking.linksbooleanNodefault true
reward.programSnapshot.tracking.qrCodesbooleanNodefault true
reward.programSnapshot.tracking.attributionCodesbooleanNodefault true
reward.programSnapshot.tracking.providerPromoCodesbooleanNodefault false

reward.programSnapshot.display

FieldTypeRequiredDetails
reward.programSnapshot.display.enobjectNo
reward.programSnapshot.display.fr-CAobjectNo
reward.programSnapshot.display.hyobjectNo
reward.programSnapshot.display.ruobjectNo

reward.programSnapshot.display.en

FieldTypeRequiredDetails
reward.programSnapshot.display.en.publicNamestringNo
reward.programSnapshot.display.en.headlinestringNo
reward.programSnapshot.display.en.milestoneLabelobjectNo

reward.programSnapshot.display.en.milestoneLabel

FieldTypeRequiredDetails
reward.programSnapshot.display.en.milestoneLabel.onestringYes
reward.programSnapshot.display.en.milestoneLabel.otherstringYes

reward.programSnapshot.display.fr-CA

FieldTypeRequiredDetails
reward.programSnapshot.display.fr-CA.publicNamestringNo
reward.programSnapshot.display.fr-CA.headlinestringNo
reward.programSnapshot.display.fr-CA.milestoneLabelobjectNo

reward.programSnapshot.display.fr-CA.milestoneLabel

FieldTypeRequiredDetails
reward.programSnapshot.display.fr-CA.milestoneLabel.onestringYes
reward.programSnapshot.display.fr-CA.milestoneLabel.otherstringYes

reward.programSnapshot.display.hy

FieldTypeRequiredDetails
reward.programSnapshot.display.hy.publicNamestringNo
reward.programSnapshot.display.hy.headlinestringNo
reward.programSnapshot.display.hy.milestoneLabelobjectNo

reward.programSnapshot.display.hy.milestoneLabel

FieldTypeRequiredDetails
reward.programSnapshot.display.hy.milestoneLabel.onestringYes
reward.programSnapshot.display.hy.milestoneLabel.otherstringYes

reward.programSnapshot.display.ru

FieldTypeRequiredDetails
reward.programSnapshot.display.ru.publicNamestringNo
reward.programSnapshot.display.ru.headlinestringNo
reward.programSnapshot.display.ru.milestoneLabelobjectNo

reward.programSnapshot.display.ru.milestoneLabel

FieldTypeRequiredDetails
reward.programSnapshot.display.ru.milestoneLabel.onestringYes
reward.programSnapshot.display.ru.milestoneLabel.otherstringYes

reward.programSnapshot.trigger

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.trigger.type"order"Yes

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.trigger.type"milestone"Yes
reward.programSnapshot.trigger.milestonestringYes

reward.programSnapshot.compensation

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.compensation.type"percentage"Yes
reward.programSnapshot.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.programSnapshot.compensation.phasesarrayNo

reward.programSnapshot.compensation.phases[]

FieldTypeRequiredDetails
reward.programSnapshot.compensation.phases.afterMonthsintegerYesminimum 1. maximum 1200
reward.programSnapshot.compensation.phases.rateBpsintegerYesminimum 0. maximum 10000

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.compensation.type"fixed"Yes
reward.programSnapshot.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.milestoneRewards

FieldTypeRequiredDetails
reward.programSnapshot.milestoneRewards.eachReportobjectNo
reward.programSnapshot.milestoneRewards.atCountobjectNo

reward.programSnapshot.milestoneRewards.eachReport

FieldTypeRequiredDetails
reward.programSnapshot.milestoneRewards.eachReport.compensationunionYes
reward.programSnapshot.milestoneRewards.eachReport.limitintegerNominimum 1. maximum 10000

reward.programSnapshot.milestoneRewards.eachReport.compensation

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.milestoneRewards.eachReport.compensation.type"percentage"Yes
reward.programSnapshot.milestoneRewards.eachReport.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.programSnapshot.milestoneRewards.eachReport.compensation.phasesarrayNo

reward.programSnapshot.milestoneRewards.eachReport.compensation.phases[]

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.milestoneRewards.eachReport.compensation.type"fixed"Yes
reward.programSnapshot.milestoneRewards.eachReport.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.milestoneRewards.atCount

FieldTypeRequiredDetails
reward.programSnapshot.milestoneRewards.atCount.countintegerYesminimum 1. maximum 10000
reward.programSnapshot.milestoneRewards.atCount.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.duration

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"only_order"Yes

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"first_order"Yes

Variant 3

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"first_n_orders"Yes
reward.programSnapshot.duration.countintegerYesminimum 1. maximum 10000

Variant 4

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"days"Yes
reward.programSnapshot.duration.daysintegerYesminimum 1. maximum 36500

Variant 5

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"months"Yes
reward.programSnapshot.duration.monthsintegerYesminimum 1. maximum 1200

Variant 6

FieldTypeRequiredDetails
reward.programSnapshot.duration.type"lifetime"Yes

reward.programSnapshot.delivery

FieldTypeRequiredDetails
reward.programSnapshot.delivery.cash"grizzlee_wallet", "merchant"Nodefault "grizzlee_wallet"
reward.programSnapshot.delivery.credit"grizzlee_wallet", "merchant"Nodefault "grizzlee_wallet"

reward.programSnapshot.attributionWindowDays

Variant 1

Type: integer.

Variant 2

Type: null.

reward.programSnapshot.fraudChecks

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.selfReferralobjectNodefault {}
reward.programSnapshot.fraudChecks.duplicateAccountsobjectNodefault {}
reward.programSnapshot.fraudChecks.rapidRepeatsobjectNodefault {}
reward.programSnapshot.fraudChecks.repeatCustomerobjectNodefault {}
reward.programSnapshot.fraudChecks.disposableEmailobjectNodefault {}

reward.programSnapshot.fraudChecks.selfReferral

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.selfReferral.action"block", "review", "flag", "off"Nodefault "block"

reward.programSnapshot.fraudChecks.duplicateAccounts

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.duplicateAccounts.action"block", "review", "flag", "off"Nodefault "flag"
reward.programSnapshot.fraudChecks.duplicateAccounts.accountsintegerNominimum 2. maximum 200. default 3
reward.programSnapshot.fraudChecks.duplicateAccounts.windowDaysintegerNominimum 1. maximum 365. default 30
reward.programSnapshot.fraudChecks.duplicateAccounts.ipAccountsunionNodefault null

reward.programSnapshot.fraudChecks.duplicateAccounts.ipAccounts

Variant 1

Type: integer.

Variant 2

Type: null.

reward.programSnapshot.fraudChecks.rapidRepeats

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.rapidRepeats.action"block", "review", "flag", "off"Nodefault "flag"
reward.programSnapshot.fraudChecks.rapidRepeats.referralsintegerNominimum 2. maximum 200. default 3
reward.programSnapshot.fraudChecks.rapidRepeats.windowMinutesintegerNominimum 1. maximum 10080. default 60
reward.programSnapshot.fraudChecks.rapidRepeats.ipReferralsunionNodefault null

reward.programSnapshot.fraudChecks.rapidRepeats.ipReferrals

Variant 1

Type: integer.

Variant 2

Type: null.

reward.programSnapshot.fraudChecks.repeatCustomer

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.repeatCustomer.action"block", "review", "flag", "off"Nodefault "flag"

reward.programSnapshot.fraudChecks.disposableEmail

FieldTypeRequiredDetails
reward.programSnapshot.fraudChecks.disposableEmail.action"review", "flag", "off"Nodefault "flag"

reward.programSnapshot.performance

FieldTypeRequiredDetails
reward.programSnapshot.performance.metric"new_customers", "orders"Yes
reward.programSnapshot.performance.windowDaysintegerNominimum 1. maximum 3650
reward.programSnapshot.performance.tiersarrayYes

reward.programSnapshot.performance.tiers[]

FieldTypeRequiredDetails
reward.programSnapshot.performance.tiers.namestringYes
reward.programSnapshot.performance.tiers.minValueintegerYesminimum 1. maximum 1000000
reward.programSnapshot.performance.tiers.bonusBpsintegerYesminimum 0. maximum 10000

reward.programSnapshot.limits

FieldTypeRequiredDetails
reward.programSnapshot.limits.customerCapCentsintegerNominimum 0. maximum 1000000000000
reward.programSnapshot.limits.partnerCapCentsintegerNominimum 0. maximum 1000000000000

reward.programSnapshot.customTerms[]

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.target"partner"Yes
reward.programSnapshot.customTerms.targetIdstringYes
reward.programSnapshot.customTerms.compensationunionNo
reward.programSnapshot.customTerms.milestoneRewardsobjectNo
reward.programSnapshot.customTerms.customerCapCentsunionNo
reward.programSnapshot.customTerms.partnerCapCentsunionNo

reward.programSnapshot.customTerms.compensation

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.type"percentage"Yes
reward.programSnapshot.customTerms.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.programSnapshot.customTerms.compensation.phasesarrayNo

reward.programSnapshot.customTerms.compensation.phases[]

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.phases.afterMonthsintegerYesminimum 1. maximum 1200
reward.programSnapshot.customTerms.compensation.phases.rateBpsintegerYesminimum 0. maximum 10000

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.type"fixed"Yes
reward.programSnapshot.customTerms.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.customTerms.milestoneRewards

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.eachReportobjectNo
reward.programSnapshot.customTerms.milestoneRewards.atCountobjectNo

reward.programSnapshot.customTerms.milestoneRewards.eachReport

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.eachReport.compensationunionYes
reward.programSnapshot.customTerms.milestoneRewards.eachReport.limitintegerNominimum 1. maximum 10000

reward.programSnapshot.customTerms.milestoneRewards.eachReport.compensation

reward.programSnapshot.customTerms.milestoneRewards.atCount

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.atCount.countintegerYesminimum 1. maximum 10000
reward.programSnapshot.customTerms.milestoneRewards.atCount.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.customTerms.customerCapCents

Variant 1

Type: integer.

Variant 2

Type: null.

reward.programSnapshot.customTerms.partnerCapCents

Variant 1

Type: integer.

Variant 2

Type: null.

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.target"customer"Yes
reward.programSnapshot.customTerms.targetIdstringYes
reward.programSnapshot.customTerms.compensationunionNo
reward.programSnapshot.customTerms.milestoneRewardsobjectNo
reward.programSnapshot.customTerms.customerCapCentsunionNo

reward.programSnapshot.customTerms.compensation

Variant 1

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.type"percentage"Yes
reward.programSnapshot.customTerms.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.programSnapshot.customTerms.compensation.phasesarrayNo

reward.programSnapshot.customTerms.compensation.phases[]

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.phases.afterMonthsintegerYesminimum 1. maximum 1200
reward.programSnapshot.customTerms.compensation.phases.rateBpsintegerYesminimum 0. maximum 10000

Variant 2

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.compensation.type"fixed"Yes
reward.programSnapshot.customTerms.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.customTerms.milestoneRewards

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.eachReportobjectNo
reward.programSnapshot.customTerms.milestoneRewards.atCountobjectNo

reward.programSnapshot.customTerms.milestoneRewards.eachReport

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.eachReport.compensationunionYes
reward.programSnapshot.customTerms.milestoneRewards.eachReport.limitintegerNominimum 1. maximum 10000

reward.programSnapshot.customTerms.milestoneRewards.eachReport.compensation

reward.programSnapshot.customTerms.milestoneRewards.atCount

FieldTypeRequiredDetails
reward.programSnapshot.customTerms.milestoneRewards.atCount.countintegerYesminimum 1. maximum 10000
reward.programSnapshot.customTerms.milestoneRewards.atCount.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.programSnapshot.customTerms.customerCapCents

Variant 1

Type: integer.

Variant 2

Type: null.

reward.programSnapshot.friendIncentive

FieldTypeRequiredDetails
reward.programSnapshot.friendIncentive.typestringYes

reward.programSnapshot.partnerOffer

FieldTypeRequiredDetails
reward.programSnapshot.partnerOffer.typestringYes

reward.programSnapshot.orderCategories

FieldTypeRequiredDetails
reward.programSnapshot.orderCategories.includearrayNo
reward.programSnapshot.orderCategories.excludearrayNo

reward.explanationParts[]

FieldTypeRequiredDetails
reward.explanationParts.codestringYes
reward.explanationParts.paramsobjectNo

reward.calculation

FieldTypeRequiredDetails
reward.calculation.compensationunionYes
reward.calculation.milestoneRewardsobjectNo
reward.calculation.fixedRefundMode"prorate", "full_refund_only"No
reward.calculation.phaseAfterMonthsintegerNominimum 0
reward.calculation.tierobjectNo
reward.calculation.customTermsobjectNo
reward.calculation.uncappedCentsintegerYesminimum 0. maximum 1000000000000
reward.calculation.customerCapCentsintegerNominimum 0. maximum 1000000000000
reward.calculation.partnerCapCentsintegerNominimum 0. maximum 1000000000000

reward.calculation.compensation

Variant 1

FieldTypeRequiredDetails
reward.calculation.compensation.type"percentage"Yes
reward.calculation.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.calculation.compensation.phasesarrayNo

reward.calculation.compensation.phases[]

FieldTypeRequiredDetails
reward.calculation.compensation.phases.afterMonthsintegerYesminimum 1. maximum 1200
reward.calculation.compensation.phases.rateBpsintegerYesminimum 0. maximum 10000

Variant 2

FieldTypeRequiredDetails
reward.calculation.compensation.type"fixed"Yes
reward.calculation.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.calculation.milestoneRewards

FieldTypeRequiredDetails
reward.calculation.milestoneRewards.eachReportobjectNo
reward.calculation.milestoneRewards.atCountobjectNo

reward.calculation.milestoneRewards.eachReport

FieldTypeRequiredDetails
reward.calculation.milestoneRewards.eachReport.compensationunionYes
reward.calculation.milestoneRewards.eachReport.limitintegerNominimum 1. maximum 10000

reward.calculation.milestoneRewards.eachReport.compensation

Variant 1

FieldTypeRequiredDetails
reward.calculation.milestoneRewards.eachReport.compensation.type"percentage"Yes
reward.calculation.milestoneRewards.eachReport.compensation.rateBpsintegerYesminimum 1. maximum 10000
reward.calculation.milestoneRewards.eachReport.compensation.phasesarrayNo

reward.calculation.milestoneRewards.eachReport.compensation.phases[]

Variant 2

FieldTypeRequiredDetails
reward.calculation.milestoneRewards.eachReport.compensation.type"fixed"Yes
reward.calculation.milestoneRewards.eachReport.compensation.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.calculation.milestoneRewards.atCount

FieldTypeRequiredDetails
reward.calculation.milestoneRewards.atCount.countintegerYesminimum 1. maximum 10000
reward.calculation.milestoneRewards.atCount.amountCentsintegerYesminimum 0. maximum 1000000000000

reward.calculation.tier

FieldTypeRequiredDetails
reward.calculation.tier.namestringYes
reward.calculation.tier.minValuenumberYes
reward.calculation.tier.bonusBpsnumberYes
reward.calculation.tier.valuenumberYes

reward.calculation.customTerms

FieldTypeRequiredDetails
reward.calculation.customTerms.target"partner", "customer"Yes
reward.calculation.customTerms.targetIdstringYes

incentiveFlag

FieldTypeRequiredDetails
incentiveFlag.reasonstringYes
incentiveFlag.programIdstringNo
incentiveFlag.reservationIdstringNo
incentiveFlag.maxCentsunionYes
incentiveFlag.reportedCentsintegerYesminimum 0. maximum 1000000000000

incentiveFlag.maxCents

Variant 1

Type: integer.

Variant 2

Type: null.

debt

FieldTypeRequiredDetails
debt.idstringYes
debt.companyIdstringYes
debt.partnerIdstringYes
debt.rewardIdstringYes
debt.deliveryIdstringYes
debt.eventIdstringYes
debt.currency"CAD", "USD", "EUR", "GBP"Yes
debt.rewardType"cash", "credit"Yes
debt.amountCentsintegerYesminimum 0. maximum 1000000000000
debt.outstandingCentsintegerYesminimum 0. maximum 1000000000000
debt.settlementsarrayYes
debt.createdAtstringYesdate-time

debt.settlements[]

FieldTypeRequiredDetails
debt.settlements.idstringYes
debt.settlements.companyIdstringYes
debt.settlements.debtIdstringYes
debt.settlements.partnerIdstringYes
debt.settlements.kind"restored", "netted", "recovered"Yes
debt.settlements.amountCentsintegerYesminimum 0. maximum 1000000000000
debt.settlements.externalReferencestringNo
debt.settlements.deliveryIdstringNo
debt.settlements.eventIdstringNo
debt.settlements.createdAtstringYesdate-time

settlement

FieldTypeRequiredDetails
settlement.idstringYes
settlement.companyIdstringYes
settlement.debtIdstringYes
settlement.partnerIdstringYes
settlement.kind"restored", "netted", "recovered"Yes
settlement.amountCentsintegerYesminimum 0. maximum 1000000000000
settlement.externalReferencestringNo
settlement.deliveryIdstringNo
settlement.eventIdstringNo
settlement.createdAtstringYesdate-time

Variant 1

FieldTypeRequiredDetails
trigger"order"No
orderIdstringYes
milestoneunionNo

Variant 2

FieldTypeRequiredDetails
trigger"milestone"Yes
milestonestringYes
orderIdunionNo

Payload schema

json
{
  "allOf": [
    {
      "type": "object",
      "properties": {
        "partnerId": {
          "type": "string",
          "minLength": 1
        },
        "partnerExternalId": {
          "type": "string",
          "minLength": 1
        },
        "rewardId": {
          "type": "string",
          "minLength": 1
        },
        "programId": {
          "type": "string",
          "minLength": 1
        },
        "programVersion": {
          "type": "integer",
          "minimum": 1
        },
        "customerId": {
          "type": "string",
          "minLength": 1
        },
        "currency": {
          "type": "string",
          "enum": [
            "CAD",
            "USD",
            "EUR",
            "GBP"
          ]
        },
        "rewardType": {
          "type": "string",
          "enum": [
            "cash",
            "credit",
            "offer"
          ]
        },
        "deliveryMode": {
          "type": "string",
          "enum": [
            "merchant",
            "grizzlee_wallet"
          ]
        },
        "amountCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000000000
        },
        "originalCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000000000
        },
        "adjustedCents": {
          "type": "integer",
          "minimum": -1000000000000,
          "maximum": 1000000000000
        },
        "reversedCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000000000
        },
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "approved",
            "reversed"
          ]
        },
        "reward": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1
            },
            "companyId": {
              "type": "string",
              "minLength": 1
            },
            "orderId": {
              "type": "string",
              "minLength": 1
            },
            "milestone": {
              "type": "string",
              "minLength": 1
            },
            "milestoneReportReversed": {
              "type": "boolean"
            },
            "reportEventId": {
              "type": "string",
              "minLength": 1
            },
            "valueCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "milestoneCount": {
              "type": "integer",
              "minimum": 0
            },
            "milestoneRevoked": {
              "type": "boolean"
            },
            "programId": {
              "type": "string",
              "minLength": 1
            },
            "partnerId": {
              "type": "string",
              "minLength": 1
            },
            "customerId": {
              "type": "string",
              "minLength": 1
            },
            "currency": {
              "type": "string",
              "enum": [
                "CAD",
                "USD",
                "EUR",
                "GBP"
              ]
            },
            "rewardType": {
              "type": "string",
              "enum": [
                "cash",
                "credit",
                "offer"
              ]
            },
            "offer": {
              "type": "object",
              "properties": {
                "terms": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true
                },
                "expiresAt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "terms",
                "expiresAt"
              ],
              "additionalProperties": true
            },
            "originalCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "adjustedCents": {
              "type": "integer",
              "minimum": -1000000000000,
              "maximum": 1000000000000
            },
            "reversedCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "status": {
              "type": "string",
              "enum": [
                "pending",
                "approved",
                "reversed"
              ]
            },
            "selfReferral": {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "enum": [
                    "blocked",
                    "review",
                    "flagged"
                  ]
                },
                "signals": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "customer_id",
                      "email",
                      "phone",
                      "card",
                      "device",
                      "ip"
                    ]
                  }
                }
              },
              "required": [
                "action",
                "signals"
              ],
              "additionalProperties": true
            },
            "fraud": {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string",
                  "enum": [
                    "blocked",
                    "review",
                    "flagged"
                  ]
                },
                "rules": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "rule": {
                        "type": "string",
                        "enum": [
                          "duplicate_accounts",
                          "rapid_repeats",
                          "repeat_customer",
                          "disposable_email"
                        ]
                      },
                      "action": {
                        "type": "string",
                        "enum": [
                          "blocked",
                          "review",
                          "flagged"
                        ]
                      },
                      "signals": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "enum": [
                            "email",
                            "phone",
                            "card",
                            "device",
                            "ip"
                          ]
                        }
                      },
                      "count": {
                        "type": "integer",
                        "exclusiveMinimum": 0
                      }
                    },
                    "required": [
                      "rule",
                      "action",
                      "signals"
                    ],
                    "additionalProperties": true
                  }
                }
              },
              "required": [
                "action",
                "rules"
              ],
              "additionalProperties": true
            },
            "rejectedAt": {
              "type": "string",
              "format": "date-time"
            },
            "rejectionReason": {
              "type": "string"
            },
            "statusBeforeReversal": {
              "type": "string",
              "enum": [
                "pending",
                "approved"
              ]
            },
            "deliveryMode": {
              "type": "string",
              "enum": [
                "merchant",
                "grizzlee_wallet"
              ]
            },
            "createdAt": {
              "type": "string",
              "format": "date-time"
            },
            "availableAt": {
              "type": "string",
              "format": "date-time"
            },
            "programSnapshot": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 100
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "referral",
                    "affiliate",
                    "both"
                  ]
                },
                "tracking": {
                  "type": "object",
                  "properties": {
                    "links": {
                      "type": "boolean",
                      "default": true
                    },
                    "qrCodes": {
                      "type": "boolean",
                      "default": true
                    },
                    "attributionCodes": {
                      "type": "boolean",
                      "default": true
                    },
                    "providerPromoCodes": {
                      "type": "boolean",
                      "default": false
                    }
                  },
                  "additionalProperties": false,
                  "default": {}
                },
                "currency": {
                  "type": "string",
                  "enum": [
                    "CAD",
                    "USD",
                    "EUR",
                    "GBP"
                  ]
                },
                "destinationUrl": {
                  "type": "string",
                  "maxLength": 2000,
                  "format": "uri"
                },
                "display": {
                  "type": "object",
                  "properties": {
                    "en": {
                      "type": "object",
                      "properties": {
                        "publicName": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100
                        },
                        "headline": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        },
                        "milestoneLabel": {
                          "type": "object",
                          "properties": {
                            "one": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            },
                            "other": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            }
                          },
                          "required": [
                            "one",
                            "other"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "fr-CA": {
                      "type": "object",
                      "properties": {
                        "publicName": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100
                        },
                        "headline": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        },
                        "milestoneLabel": {
                          "type": "object",
                          "properties": {
                            "one": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            },
                            "other": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            }
                          },
                          "required": [
                            "one",
                            "other"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "hy": {
                      "type": "object",
                      "properties": {
                        "publicName": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100
                        },
                        "headline": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        },
                        "milestoneLabel": {
                          "type": "object",
                          "properties": {
                            "one": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            },
                            "other": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            }
                          },
                          "required": [
                            "one",
                            "other"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    },
                    "ru": {
                      "type": "object",
                      "properties": {
                        "publicName": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 100
                        },
                        "headline": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 120
                        },
                        "milestoneLabel": {
                          "type": "object",
                          "properties": {
                            "one": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            },
                            "other": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 40
                            }
                          },
                          "required": [
                            "one",
                            "other"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "trigger": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "order"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "milestone"
                        },
                        "milestone": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9_]{0,79}$"
                        }
                      },
                      "required": [
                        "type",
                        "milestone"
                      ],
                      "additionalProperties": true
                    }
                  ]
                },
                "compensation": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "rateBps": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        },
                        "phases": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "afterMonths": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1200
                              },
                              "rateBps": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 10000
                              }
                            },
                            "required": [
                              "afterMonths",
                              "rateBps"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "maxItems": 12
                        }
                      },
                      "required": [
                        "type",
                        "rateBps"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "fixed"
                        },
                        "amountCents": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000000
                        }
                      },
                      "required": [
                        "type",
                        "amountCents"
                      ],
                      "additionalProperties": true
                    }
                  ]
                },
                "milestoneRewards": {
                  "type": "object",
                  "properties": {
                    "eachReport": {
                      "type": "object",
                      "properties": {
                        "compensation": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "const": "percentage"
                                },
                                "rateBps": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 10000
                                },
                                "phases": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "afterMonths": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1200
                                      },
                                      "rateBps": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 10000
                                      }
                                    },
                                    "required": [
                                      "afterMonths",
                                      "rateBps"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "minItems": 1,
                                  "maxItems": 12
                                }
                              },
                              "required": [
                                "type",
                                "rateBps"
                              ],
                              "additionalProperties": true
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "const": "fixed"
                                },
                                "amountCents": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 1000000000000
                                }
                              },
                              "required": [
                                "type",
                                "amountCents"
                              ],
                              "additionalProperties": true
                            }
                          ]
                        },
                        "limit": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        }
                      },
                      "required": [
                        "compensation"
                      ],
                      "additionalProperties": true
                    },
                    "atCount": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        },
                        "amountCents": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000000
                        }
                      },
                      "required": [
                        "count",
                        "amountCents"
                      ],
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true
                },
                "fixedRefundMode": {
                  "type": "string",
                  "enum": [
                    "prorate",
                    "full_refund_only"
                  ],
                  "default": "prorate"
                },
                "duration": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "only_order"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "first_order"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "first_n_orders"
                        },
                        "count": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        }
                      },
                      "required": [
                        "type",
                        "count"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "days"
                        },
                        "days": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 36500
                        }
                      },
                      "required": [
                        "type",
                        "days"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "months"
                        },
                        "months": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 1200
                        }
                      },
                      "required": [
                        "type",
                        "months"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "lifetime"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "rewardType": {
                  "type": "string",
                  "enum": [
                    "cash",
                    "credit",
                    "offer"
                  ]
                },
                "delivery": {
                  "type": "object",
                  "properties": {
                    "cash": {
                      "type": "string",
                      "enum": [
                        "grizzlee_wallet",
                        "merchant"
                      ],
                      "default": "grizzlee_wallet"
                    },
                    "credit": {
                      "type": "string",
                      "enum": [
                        "grizzlee_wallet",
                        "merchant"
                      ],
                      "default": "grizzlee_wallet"
                    }
                  },
                  "additionalProperties": false,
                  "default": {}
                },
                "attributionWindowDays": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 365
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "reviewRewards": {
                  "type": "boolean"
                },
                "fraudChecks": {
                  "type": "object",
                  "properties": {
                    "selfReferral": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "block",
                            "review",
                            "flag",
                            "off"
                          ],
                          "default": "block"
                        }
                      },
                      "additionalProperties": false,
                      "default": {}
                    },
                    "duplicateAccounts": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "block",
                            "review",
                            "flag",
                            "off"
                          ],
                          "default": "flag"
                        },
                        "accounts": {
                          "type": "integer",
                          "minimum": 2,
                          "maximum": 200,
                          "default": 3
                        },
                        "windowDays": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 365,
                          "default": 30
                        },
                        "ipAccounts": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 2,
                              "maximum": 200
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null
                        }
                      },
                      "additionalProperties": false,
                      "default": {}
                    },
                    "rapidRepeats": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "block",
                            "review",
                            "flag",
                            "off"
                          ],
                          "default": "flag"
                        },
                        "referrals": {
                          "type": "integer",
                          "minimum": 2,
                          "maximum": 200,
                          "default": 3
                        },
                        "windowMinutes": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10080,
                          "default": 60
                        },
                        "ipReferrals": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": 2,
                              "maximum": 200
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "default": null
                        }
                      },
                      "additionalProperties": false,
                      "default": {}
                    },
                    "repeatCustomer": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "block",
                            "review",
                            "flag",
                            "off"
                          ],
                          "default": "flag"
                        }
                      },
                      "additionalProperties": false,
                      "default": {}
                    },
                    "disposableEmail": {
                      "type": "object",
                      "properties": {
                        "action": {
                          "type": "string",
                          "enum": [
                            "review",
                            "flag",
                            "off"
                          ],
                          "default": "flag"
                        }
                      },
                      "additionalProperties": false,
                      "default": {}
                    }
                  },
                  "additionalProperties": false
                },
                "active": {
                  "type": "boolean"
                },
                "performance": {
                  "type": "object",
                  "properties": {
                    "metric": {
                      "type": "string",
                      "enum": [
                        "new_customers",
                        "orders"
                      ]
                    },
                    "windowDays": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 3650
                    },
                    "tiers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 40
                          },
                          "minValue": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000000
                          },
                          "bonusBps": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 10000
                          }
                        },
                        "required": [
                          "name",
                          "minValue",
                          "bonusBps"
                        ],
                        "additionalProperties": false
                      },
                      "minItems": 1,
                      "maxItems": 10
                    }
                  },
                  "required": [
                    "metric",
                    "tiers"
                  ],
                  "additionalProperties": false
                },
                "limits": {
                  "type": "object",
                  "properties": {
                    "customerCapCents": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1000000000000
                    },
                    "partnerCapCents": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1000000000000
                    }
                  },
                  "additionalProperties": false
                },
                "customTerms": {
                  "type": "array",
                  "items": {
                    "anyOf": [
                      {
                        "type": "object",
                        "properties": {
                          "target": {
                            "type": "string",
                            "const": "partner"
                          },
                          "targetId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 120
                          },
                          "compensation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "percentage"
                                  },
                                  "rateBps": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  },
                                  "phases": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "afterMonths": {
                                          "type": "integer",
                                          "minimum": 1,
                                          "maximum": 1200
                                        },
                                        "rateBps": {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 10000
                                        }
                                      },
                                      "required": [
                                        "afterMonths",
                                        "rateBps"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1,
                                    "maxItems": 12
                                  }
                                },
                                "required": [
                                  "type",
                                  "rateBps"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "fixed"
                                  },
                                  "amountCents": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1000000000000
                                  }
                                },
                                "required": [
                                  "type",
                                  "amountCents"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          "milestoneRewards": {
                            "type": "object",
                            "properties": {
                              "eachReport": {
                                "type": "object",
                                "properties": {
                                  "compensation": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "fixed"
                                          },
                                          "amountCents": {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 1000000000000
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "amountCents"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "percentage"
                                          },
                                          "rateBps": {
                                            "type": "integer",
                                            "minimum": 1,
                                            "maximum": 10000
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "rateBps"
                                        ],
                                        "additionalProperties": false
                                      }
                                    ]
                                  },
                                  "limit": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  }
                                },
                                "required": [
                                  "compensation"
                                ],
                                "additionalProperties": false
                              },
                              "atCount": {
                                "type": "object",
                                "properties": {
                                  "count": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  },
                                  "amountCents": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1000000000000
                                  }
                                },
                                "required": [
                                  "count",
                                  "amountCents"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "customerCapCents": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000000
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "partnerCapCents": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000000
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "target",
                          "targetId"
                        ],
                        "additionalProperties": false
                      },
                      {
                        "type": "object",
                        "properties": {
                          "target": {
                            "type": "string",
                            "const": "customer"
                          },
                          "targetId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 120
                          },
                          "compensation": {
                            "anyOf": [
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "percentage"
                                  },
                                  "rateBps": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  },
                                  "phases": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "afterMonths": {
                                          "type": "integer",
                                          "minimum": 1,
                                          "maximum": 1200
                                        },
                                        "rateBps": {
                                          "type": "integer",
                                          "minimum": 0,
                                          "maximum": 10000
                                        }
                                      },
                                      "required": [
                                        "afterMonths",
                                        "rateBps"
                                      ],
                                      "additionalProperties": false
                                    },
                                    "minItems": 1,
                                    "maxItems": 12
                                  }
                                },
                                "required": [
                                  "type",
                                  "rateBps"
                                ],
                                "additionalProperties": false
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "const": "fixed"
                                  },
                                  "amountCents": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1000000000000
                                  }
                                },
                                "required": [
                                  "type",
                                  "amountCents"
                                ],
                                "additionalProperties": false
                              }
                            ]
                          },
                          "milestoneRewards": {
                            "type": "object",
                            "properties": {
                              "eachReport": {
                                "type": "object",
                                "properties": {
                                  "compensation": {
                                    "anyOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "fixed"
                                          },
                                          "amountCents": {
                                            "type": "integer",
                                            "minimum": 0,
                                            "maximum": 1000000000000
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "amountCents"
                                        ],
                                        "additionalProperties": false
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "const": "percentage"
                                          },
                                          "rateBps": {
                                            "type": "integer",
                                            "minimum": 1,
                                            "maximum": 10000
                                          }
                                        },
                                        "required": [
                                          "type",
                                          "rateBps"
                                        ],
                                        "additionalProperties": false
                                      }
                                    ]
                                  },
                                  "limit": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  }
                                },
                                "required": [
                                  "compensation"
                                ],
                                "additionalProperties": false
                              },
                              "atCount": {
                                "type": "object",
                                "properties": {
                                  "count": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 10000
                                  },
                                  "amountCents": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 1000000000000
                                  }
                                },
                                "required": [
                                  "count",
                                  "amountCents"
                                ],
                                "additionalProperties": false
                              }
                            },
                            "additionalProperties": false
                          },
                          "customerCapCents": {
                            "anyOf": [
                              {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 1000000000000
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": [
                          "target",
                          "targetId"
                        ],
                        "additionalProperties": false
                      }
                    ]
                  },
                  "minItems": 1,
                  "maxItems": 100
                },
                "friendIncentive": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true
                },
                "partnerOffer": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "type"
                  ],
                  "additionalProperties": true
                },
                "orderCategories": {
                  "type": "object",
                  "properties": {
                    "include": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "exclude": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": true
                }
              },
              "required": [
                "name",
                "kind",
                "currency",
                "rewardType",
                "attributionWindowDays",
                "active"
              ],
              "additionalProperties": true
            },
            "programVersion": {
              "type": "integer",
              "minimum": 1
            },
            "historicalBasis": {
              "type": "string",
              "const": "total"
            },
            "basisCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "explanation": {
              "type": "string"
            },
            "explanationParts": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "code": {
                    "type": "string",
                    "minLength": 1
                  },
                  "params": {
                    "type": "object",
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "code"
                ],
                "additionalProperties": true
              }
            },
            "calculation": {
              "type": "object",
              "properties": {
                "compensation": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "percentage"
                        },
                        "rateBps": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        },
                        "phases": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "afterMonths": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 1200
                              },
                              "rateBps": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 10000
                              }
                            },
                            "required": [
                              "afterMonths",
                              "rateBps"
                            ],
                            "additionalProperties": false
                          },
                          "minItems": 1,
                          "maxItems": 12
                        }
                      },
                      "required": [
                        "type",
                        "rateBps"
                      ],
                      "additionalProperties": true
                    },
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "const": "fixed"
                        },
                        "amountCents": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000000
                        }
                      },
                      "required": [
                        "type",
                        "amountCents"
                      ],
                      "additionalProperties": true
                    }
                  ]
                },
                "milestoneRewards": {
                  "type": "object",
                  "properties": {
                    "eachReport": {
                      "type": "object",
                      "properties": {
                        "compensation": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "const": "percentage"
                                },
                                "rateBps": {
                                  "type": "integer",
                                  "minimum": 1,
                                  "maximum": 10000
                                },
                                "phases": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "afterMonths": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 1200
                                      },
                                      "rateBps": {
                                        "type": "integer",
                                        "minimum": 0,
                                        "maximum": 10000
                                      }
                                    },
                                    "required": [
                                      "afterMonths",
                                      "rateBps"
                                    ],
                                    "additionalProperties": false
                                  },
                                  "minItems": 1,
                                  "maxItems": 12
                                }
                              },
                              "required": [
                                "type",
                                "rateBps"
                              ],
                              "additionalProperties": true
                            },
                            {
                              "type": "object",
                              "properties": {
                                "type": {
                                  "type": "string",
                                  "const": "fixed"
                                },
                                "amountCents": {
                                  "type": "integer",
                                  "minimum": 0,
                                  "maximum": 1000000000000
                                }
                              },
                              "required": [
                                "type",
                                "amountCents"
                              ],
                              "additionalProperties": true
                            }
                          ]
                        },
                        "limit": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        }
                      },
                      "required": [
                        "compensation"
                      ],
                      "additionalProperties": true
                    },
                    "atCount": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 10000
                        },
                        "amountCents": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 1000000000000
                        }
                      },
                      "required": [
                        "count",
                        "amountCents"
                      ],
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true
                },
                "fixedRefundMode": {
                  "type": "string",
                  "enum": [
                    "prorate",
                    "full_refund_only"
                  ]
                },
                "phaseAfterMonths": {
                  "type": "integer",
                  "minimum": 0
                },
                "tier": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "minValue": {
                      "type": "number"
                    },
                    "bonusBps": {
                      "type": "number"
                    },
                    "value": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "name",
                    "minValue",
                    "bonusBps",
                    "value"
                  ],
                  "additionalProperties": true
                },
                "customTerms": {
                  "type": "object",
                  "properties": {
                    "target": {
                      "type": "string",
                      "enum": [
                        "partner",
                        "customer"
                      ]
                    },
                    "targetId": {
                      "type": "string",
                      "minLength": 1
                    }
                  },
                  "required": [
                    "target",
                    "targetId"
                  ],
                  "additionalProperties": true
                },
                "uncappedCents": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000000000
                },
                "customerCapCents": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000000000
                },
                "partnerCapCents": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000000000
                }
              },
              "required": [
                "compensation",
                "uncappedCents"
              ],
              "additionalProperties": true
            }
          },
          "required": [
            "id",
            "companyId",
            "programId",
            "partnerId",
            "customerId",
            "currency",
            "rewardType",
            "originalCents",
            "reversedCents",
            "status",
            "createdAt",
            "availableAt",
            "programSnapshot",
            "explanation"
          ],
          "additionalProperties": true
        },
        "incentiveAppliedCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000000000
        },
        "incentiveFlag": {
          "type": "object",
          "properties": {
            "reason": {
              "type": "string",
              "minLength": 1
            },
            "programId": {
              "type": "string",
              "minLength": 1
            },
            "reservationId": {
              "type": "string",
              "minLength": 1
            },
            "maxCents": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1000000000000
                },
                {
                  "type": "null"
                }
              ]
            },
            "reportedCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            }
          },
          "required": [
            "reason",
            "maxCents",
            "reportedCents"
          ],
          "additionalProperties": true
        },
        "debt": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1
            },
            "companyId": {
              "type": "string",
              "minLength": 1
            },
            "partnerId": {
              "type": "string",
              "minLength": 1
            },
            "rewardId": {
              "type": "string",
              "minLength": 1
            },
            "deliveryId": {
              "type": "string",
              "minLength": 1
            },
            "eventId": {
              "type": "string",
              "minLength": 1
            },
            "currency": {
              "type": "string",
              "enum": [
                "CAD",
                "USD",
                "EUR",
                "GBP"
              ]
            },
            "rewardType": {
              "type": "string",
              "enum": [
                "cash",
                "credit"
              ]
            },
            "amountCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "outstandingCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "settlements": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1
                  },
                  "companyId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "debtId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "partnerId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "restored",
                      "netted",
                      "recovered"
                    ]
                  },
                  "amountCents": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000000000000
                  },
                  "externalReference": {
                    "type": "string",
                    "minLength": 1
                  },
                  "deliveryId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "eventId": {
                    "type": "string",
                    "minLength": 1
                  },
                  "createdAt": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "id",
                  "companyId",
                  "debtId",
                  "partnerId",
                  "kind",
                  "amountCents",
                  "createdAt"
                ],
                "additionalProperties": true
              }
            },
            "createdAt": {
              "type": "string",
              "format": "date-time"
            }
          },
          "required": [
            "id",
            "companyId",
            "partnerId",
            "rewardId",
            "deliveryId",
            "eventId",
            "currency",
            "rewardType",
            "amountCents",
            "outstandingCents",
            "settlements",
            "createdAt"
          ],
          "additionalProperties": true
        },
        "settlement": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1
            },
            "companyId": {
              "type": "string",
              "minLength": 1
            },
            "debtId": {
              "type": "string",
              "minLength": 1
            },
            "partnerId": {
              "type": "string",
              "minLength": 1
            },
            "kind": {
              "type": "string",
              "enum": [
                "restored",
                "netted",
                "recovered"
              ]
            },
            "amountCents": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000000000
            },
            "externalReference": {
              "type": "string",
              "minLength": 1
            },
            "deliveryId": {
              "type": "string",
              "minLength": 1
            },
            "eventId": {
              "type": "string",
              "minLength": 1
            },
            "createdAt": {
              "type": "string",
              "format": "date-time"
            }
          },
          "required": [
            "id",
            "companyId",
            "debtId",
            "partnerId",
            "kind",
            "amountCents",
            "createdAt"
          ],
          "additionalProperties": true
        },
        "settledCents": {
          "type": "integer",
          "minimum": 0,
          "maximum": 1000000000000
        }
      },
      "required": [
        "partnerId",
        "partnerExternalId",
        "rewardId",
        "programId",
        "customerId",
        "currency",
        "rewardType",
        "deliveryMode",
        "amountCents",
        "originalCents",
        "reversedCents",
        "status",
        "reward",
        "debt",
        "settlement",
        "settledCents"
      ],
      "additionalProperties": true
    },
    {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "trigger": {
              "type": "string",
              "const": "order"
            },
            "orderId": {
              "type": "string",
              "minLength": 1
            },
            "milestone": {
              "not": {}
            }
          },
          "required": [
            "orderId"
          ],
          "additionalProperties": true
        },
        {
          "type": "object",
          "properties": {
            "trigger": {
              "type": "string",
              "const": "milestone"
            },
            "milestone": {
              "type": "string",
              "minLength": 1
            },
            "orderId": {
              "not": {}
            }
          },
          "required": [
            "trigger",
            "milestone"
          ],
          "additionalProperties": true
        }
      ]
    }
  ]
}

Handle delivery

Verify the signature over the raw body before parsing JSON. Check that the body ID matches Grizzlee-Event-Id. Process each ID once, since delivery can repeat.