Your webhook URLThe commission.restored event is triggered when a won Stripe dispute or a provider chargeback reversal restores a previously clawed-back commission. The commission returns to its previous amount and status, preserving any separate customer refunds. Each affected commission, including a Tier-2 commission, receives its own event after the restoration commits.
Payload
{
"id": "evt_cm1xyz9876",
"event": "commission.restored",
"created_at": "2026-04-15T10:00:00.000Z",
"data": {
"commission_id": "comm_abc123",
"commission_level": 1,
"parent_commission_id": null,
"customer_email": "[email protected]",
"affiliate": {
"email": "[email protected]",
"name": "Jane Smith",
"referral_code": "jane-smith"
},
"product": {
"id": "cuid_abc123",
"name": "My SaaS"
},
"payment_amount_cents": 4900,
"restored_commission_cents": 980,
"refunded_amount_cents": 0,
"previous_status": "refunded",
"new_status": "paid",
"dispute_id": "dp_abc123",
"reason": "dispute_won"
}
}
Payload fields
| Parameter | Type | Description |
|---|---|---|
idrequired | string | Unique event ID (prefixed with evt_). |
eventrequired | string | Always commission.restored for this event. |
created_atrequired | string | ISO 8601 timestamp of the restoration notification. |
data.commission_idrequired | string | Anderro commission ID that was restored. |
data.commission_levelrequired | integer | 1 = direct affiliate, 2 = sponsor override. |
data.parent_commission_id | string | For level 2, the Tier-1 commission ID; otherwise null. |
data.customer_email | string | Email of the customer whose payment was disputed (may be null). |
data.affiliate.emailrequired | string | Email of the affiliate whose commission was restored. |
data.affiliate.name | string | Name of the affiliate (may be null). |
data.affiliate.referral_coderequired | string | The referral code used for the original conversion. |
data.product.idrequired | string | Your Anderro product ID. |
data.product.namerequired | string | Your product name in Anderro. |
data.payment_amount_centsrequired | integer | Original payment amount in cents. |
data.restored_commission_centsrequired | integer | Commission amount in cents after restoration, preserving separate refunds. |
data.refunded_amount_centsrequired | integer | Cumulative payment refunds remaining after the dispute clawback is reversed. |
data.previous_statusrequired | string | Always refunded. |
data.new_statusrequired | string | The commission status restored from before the dispute clawback. |
data.dispute_idrequired | string | null | Stripe ID of the won dispute; may be null for a provider chargeback reversal. |
data.reasonrequired | string | dispute_won for a won Stripe dispute, or <provider>:chargeback_reverse for a provider reversal. |
Example handler
app.post("/webhooks/anderro", (req, res) => {
const { event, data } = req.body;
if (event === "commission.restored") {
console.log(
`Restored $${(data.restored_commission_cents / 100).toFixed(2)} ` +
`for ${data.affiliate.email} on commission ${data.commission_id}`
);
// Update the commission amount and status in your accounting system.
// Reverse the deduction associated with data.dispute_id.
}
res.status(200).send("OK");
});
When does this fire?
This event fires when a won dispute successfully restores a refunded commission. A different dispute cannot reverse a clawback belonging to an earlier dispute. Older clawbacks recorded without a dispute ID remain eligible for restoration.
Idempotent
Repeated won-dispute deliveries do not restore the commission or fire this event again.
Paid commissions
This reverses the earlier commission.refunded dispute clawback. The affiliate receives a restoration email explaining that the deduction announced earlier no longer applies. Separate customer refunds remain in effect; this event does not transfer funds or reopen a completed payout.