Stripe refunds are where affiliate accounting becomes concrete. A tool can track clicks and signups well, but the real test is what happens when the money changes after the first invoice.
This comparison looks at five Stripe scenarios: Full refund, Partial refund, Upgrade mid-cycle, Downgrade, and Churn with refund.
Verified on July 6, 2026 from public documentation and current RefCampaign code. Competitor products change, so treat this as a dated buying note rather than a permanent verdict.
Sources used:
- Stripe documents that successful payments can receive a full or partial refund through the Dashboard or Refunds API: Stripe refunds documentation.
- FirstPromoter documents Stripe sales, refunds and cancellations, plus a refund Tracking API that generates negative commissions: FirstPromoter Stripe integration and FirstPromoter refund API.
- Rewardful documents automated refund handling for refunds, upgrades and downgrades, with manual handling if the commission has already been paid: Rewardful automated refund handling.
- Tolt documents Stripe and Paddle support and says issued refunds deduct commission from the affiliate: Tolt pricing FAQ.
- RefCampaign behavior was checked against
refund-handling.ts,stripe-connect-events.ts, andapi/v1/conversions/refund/route.ts.
Disputes are out of scope here. RefCampaign has dispute handling code, and FirstPromoter documents charge.dispute.created, but issue #584 keeps failed payments and disputes outside this article.
Summary table
| Scenario | FirstPromoter | Rewardful | Tolt | RefCampaign |
|---|---|---|---|---|
| Full refund | Documented via Stripe refund events and refund API | Documented while commission is pending or due | Documented at high level as commission deduction | Documented in code: rejects unpaid commissions or creates clawback for paid ones |
| Partial refund | Refund API can generate negative commissions, but public Stripe edge-case detail is limited | Documented as automatic commission recalculation while pending or due | Not detailed publicly | Documented in code: prorated clawback ratio |
| Upgrade mid-cycle | API docs say upgrades can be tracked; Stripe page is not edge-case specific | Documented as automatic adjustment while pending or due | Not detailed publicly | Recurring conversion logic is separate from refund handling; avoid treating upgrade invoices as new acquisition commissions unless policy allows it |
| Downgrade | API docs support lifecycle tracking, but public Stripe downgrade behavior is not detailed | Documented as automatic adjustment while pending or due | Cancellation behavior documented, downgrade edge case not detailed publicly | Same as upgrade: policy-driven recurring logic, not a refund clawback |
| Churn with refund | Cancellation and refund are documented as separate tracking events | Cancellation and refund changes are documented; paid commissions after refund require manual overpayment handling | Cancellation stops commissions; refund deducts commission | Refund is applied through Stripe webhook or postback; churn itself is not a refund event |
The practical difference is not whether a platform has the word "refund" on a feature page. The difference is whether the buyer can predict the ledger entry in each edge case.
Scenario 1: Full refund
Full refunds are the minimum bar. If the customer receives the whole Stripe payment back, the affiliate commission should not remain payable.
FirstPromoter publicly documents charge.refunded for Stripe and a refund Tracking API that generates negative commissions. That is enough to say refunds are a documented capability, but the public page does not show every commission-state branch.
Rewardful documents the branch more explicitly: if the refund happens before the affiliate commission is paid, the commission is automatically adjusted. If the commission was already paid, the merchant handles the overpayment manually.
Tolt says refunds deduct the commission from the affiliate. Its public pricing FAQ does not show whether that means rejection before payout, negative balance after payout, or another ledger model.
RefCampaign applies the refund to the conversion, rejects unpaid commissions, and creates a negative clawback line for paid commissions. That behavior lives in refund-handling.ts through reverseCommissionsForMoneyEvent.
Scenario 2: Partial refund
Partial refunds are harder because the answer should be proportional.
Example:
| Item | Amount |
|---|---|
| Original Stripe payment | 200 EUR |
| Commission at 20 percent | 40 EUR |
| Partial refund | 50 EUR |
| Correct commission reduction | 10 EUR |
FirstPromoter documents a refund API that generates negative commissions. That is useful for a manual or API-driven correction, but its public Stripe docs do not describe the partial-refund calculation path in detail.
Rewardful publicly describes automatic recalculation when a refunded sale changes the transaction amount, as long as the commission is still pending or due.
Tolt does not publish partial-refund mechanics in the source checked for this article.
RefCampaign calculates a refund ratio from the refunded amount divided by the original conversion amount, clamps it, and applies that ratio to commission clawbacks. Successive partial refunds are idempotent when a refund ID is present.
Scenario 3: Upgrade mid-cycle
An upgrade is not a refund, but it can create a Stripe proration invoice. That invoice can accidentally look like a second sale if the affiliate platform is too gross-payment driven.
FirstPromoter says its API can track upgrades, but the public Stripe integration page checked here lists sales, refunds and cancellations rather than a detailed upgrade proration matrix.
Rewardful explicitly includes upgrades in its automated adjustment messaging, again tied to pending or due commissions.
Tolt does not document upgrade-specific refund-accounting behavior in the public source checked here.
RefCampaign keeps this separate from refund handling. The important operating rule is to decide whether expansion revenue is commissionable. If not, upgrade invoices should not create a second acquisition commission. For deeper accounting context, read how to handle affiliate commissions on Stripe refunds and upgrades.
Scenario 4: Downgrade
Downgrades have the same shape as upgrades: not a refund by themselves, but a subscription lifecycle event that can alter the revenue basis.
Rewardful is the most explicit public source among the three competitors for downgrade adjustments.
FirstPromoter documents API support for lifecycle changes, but the public Stripe page is not granular about downgrade proration.
Tolt documents cancellation and refund handling, not downgrade-specific behavior in the source checked.
For RefCampaign, downgrades should be handled through recurring-commission policy rather than the refund clawback code. A downgrade without a refund should not be forced through refund-handling.ts.
Scenario 5: Churn with refund
Churn with refund is two events: the customer stops the subscription and receives money back.
That distinction matters. Cancellation should stop future commission calculation. Refund should correct the commission already tied to returned revenue.
FirstPromoter documents cancellation tracking and refund tracking.
Rewardful documents refunds and lifecycle adjustments, but says post-payment overpayments are manual.
Tolt says cancellation stops calculating commissions and issued refunds deduct commission.
RefCampaign handles the refund event through three paths:
- Stripe Connect webhooks normalize
charge.refundedandrefund.*events. - The public refund postback API lets merchants report a refund by external conversion ID.
- Pending refunds are stored and retried if the Stripe refund arrives before the conversion exists.
That third path matters in real Stripe systems because webhook ordering can differ from the order finance expects.
How to read the comparison
If you only need a straightforward Stripe affiliate program with a pending period that matches your refund policy, Rewardful and FirstPromoter both have documented refund workflows.
If you need to know exactly what happens after a paid commission receives a partial refund, ask each vendor for a ledger-level example before migrating. The public documentation is uneven on that case.
If you are evaluating Tolt, treat its public refund language as high-level. It says refunds deduct commission, but the source checked here does not explain partial refunds, paid-commission clawbacks, or proration.
If you are evaluating RefCampaign, the strength is the explicit money-event model: Stripe webhooks, postback refunds, pending refund retry, refund ID idempotency, and prorated clawback lines. The gap to keep honest is that disputes and failed payments are not part of this comparison.
Buyer checklist
Before choosing a Stripe affiliate platform, ask for these five answers in writing:
- What happens to an unpaid commission after a full refund.
- What happens to a paid commission after a full refund.
- How a partial refund changes the commission amount.
- Whether upgrade and downgrade invoices can create duplicate acquisition commissions.
- Whether the affiliate sees the reason for a rejected commission or clawback.
The platform with the clearest ledger usually creates fewer support tickets than the platform with the longest feature list.
RefCampaign is built for SaaS teams that want Stripe revenue, refund state and affiliate commission status to stay aligned. Start with pricing if you want to map these rules to your program stage.
Table of contents
Table of contents coming soon
Keep reading
- Explore the featureAttribute affiliate revenue directly from Stripe
- CompareRefCampaign vs Rewardful — Comparison 2026
- Read moreHow to handle affiliate commissions on Stripe refunds and upgrades
- Read moreHow to Set Up an Affiliate Program With Stripe for SaaS
- Read moreStripe Affiliate Software: Native vs Integration
- Next stepStripe Affiliate Software for SaaS Subscriptions | RefCampaign
- Next stepPricing