A customer buys. You pay the partner. A month later, the customer refunds. Without clawback, you're out the revenue and the commission. Here's how Traaaction handles it — automatically.
The three scenarios
Every refund triggers charge.refunded from Stripe. What happens next depends on the commission state.
| State at refund | What Traaaction does |
|---|---|
PENDING | Deletes the commission. Partner balance recalculates. No money moved yet — clean. |
PROCEED | Deletes the commission. Partner balance recalculates. Still unpaid — clean. |
COMPLETE | Deletes the commission and applies a negative balance equal to what you paid. |
COMPLETE is where it gets real. You already paid the partner. Traaaction can't un-pay them, so it marks the partner with a negative balance. The next time you run a payout batch, that amount is deducted from their new earnings before anything is sent.
Multi-tier programs: cascading clawbacks
If the refund affects a commission that funded other commissions (referrals, organization leader cuts), every linked commission is clawed back too.
Example: Partner A refers Partner B. Partner B makes a sale. Both earn a commission. If the sale gets refunded:
- Partner B's commission → clawed back.
- Partner A's referral commission (linked via
referral_source_commission_id) → also clawed back.
No orphan credits, ever.
Subscription cancellations
Subscription cancellation is different from refund. When a customer cancels (customer.subscription.deleted):
- Pending future commissions for that subscription → deleted.
- Matured (
PROCEED) or paid (COMPLETE) commissions → kept. The partner earned them fair and square.
What if the partner already left?
A negative balance stays on the partner's record. You have two options:
- Wait. If the partner comes back, their next commission will absorb the negative first.
- Write it off. In Dashboard → Sellers → [seller], set the negative balance to zero. It's a clean accounting entry.
Most negative balances end up being absorbed — partners with ongoing sales rarely notice the hit.
Preventing surprise clawbacks
- Use sensible hold periods: 30 days on SALE and RECURRING covers most refund windows.
- Set a longer hold (60 days) on mission categories with higher refund rates.
- Review commissions in
PROCEED + UNPAIDbefore paying — high-value commissions deserve a quick sanity check.
Related
- Commission lifecycle — why PENDING exists in the first place
- Hold periods — configure the buffer that prevents this
- Payout methods — how clawback interacts with each rail