Skip to content
← Back to blog
May 18, 2026 · cod · affiliate-marketing · shopify

Why standard affiliate apps break with Cash on Delivery

Refersion, GoAffPro, UpPromote, Social Snowball — none of them handle COD payment confirmation. Here's exactly what breaks, and what to do instead.

TL;DR — Standard Shopify affiliate apps (Refersion, GoAffPro, UpPromote, Social Snowball, LeadDyno, ReferralCandy) mark commissions as earned the moment an order is created. For Cash on Delivery merchants, where 30–50% of orders cancel before delivery, this means paying commission on revenue you never collected. The fix is a commission state machine that treats commissions as Pending until the order is marked Paid in Shopify — which is what COD Affiliates does.

Standard affiliate apps vs Cash on Delivery: where each one fits

AppCommission earned when…Handles COD cancellationsQuality scoring per affiliateMarkets optimized for
RefersionOrder is createdNo — manual reconciliationNoUS / UK / Western Europe (card-first)
GoAffProOrder is createdNo — has refund deduction, not COD-awareNoGeneric / global
UpPromoteOrder is created (Pending until refund)Partial — only on full refund eventNoGeneric / global
Social SnowballOrder is createdNoNoDTC / influencer-first
LeadDynoOrder is createdNoNoSaaS + ecommerce mix
ReferralCandyOrder is createdNoNoGeneric / referral marketing
COD AffiliatesOrder is marked Paid in ShopifyYes — native state machineYes — per-affiliate quality scoreCOD-heavy: LATAM, MENA, India, SEA

If you take 95% card payments, any of the top row will work fine. If COD is more than a footnote — Argentina, Mexico, Colombia, Spain, India, UAE, Egypt, Philippines, Indonesia — keep reading.


If you sell on Shopify with Cash on Delivery, you’ve probably already noticed something off about every affiliate marketing app on the App Store.

They count revenue you never collected.

This post explains exactly why that happens, why every mainstream affiliate app on Shopify has the same blind spot, and what the alternative looks like.

The model every affiliate app assumes

Refersion, GoAffPro, UpPromote, Social Snowball, LeadDyno, Goaffpro — and most others — were built for a payment model that goes like this:

  1. Buyer clicks affiliate link
  2. Buyer adds product to cart
  3. Buyer enters credit card at checkout
  4. Card is charged immediately
  5. Order is created in Shopify with status paid
  6. Affiliate app catches the order, attaches the affiliate ID, and marks the commission as earned

The model is clean because step 4 is deterministic. If the card charges, the merchant has the money. If the buyer cancels later, that’s a refund — a separate, exceptional event.

This works perfectly for stores in the US, the UK, most of Western Europe. Card payment is the default. Cancellation is the edge case.

What actually happens on a COD store

Now run the same sequence on a Shopify store that primarily takes Cash on Delivery:

  1. Buyer clicks affiliate link
  2. Buyer adds product to cart
  3. Buyer fills a COD form (often via an app like Releasit, EasySell, or Advanced COD)
  4. No payment happens. The order is created in Shopify with status pending.
  5. Affiliate app catches the order, attaches the affiliate ID, and marks the commission as earned
  6. The carrier attempts delivery 1, 2, 3 times
  7. 30 to 50 percent of the time, the buyer cancels at the door, fails to answer, or rejects the package
  8. The order returns to origin. The merchant pays the shipping both ways. No revenue collected.
  9. But the affiliate commission was already marked as earned in step 5

You see the problem. The affiliate app is correct by its own logic — an order was created, attribution worked, commission was attached. But the merchant’s actual financial reality is that 30 to 50 percent of those “earned” commissions are claims against revenue that never existed.

The downstream effects nobody talks about

The math problem is the obvious part. The less obvious problems compound it.

You can’t tell good affiliates from bad ones. Suppose María sends you 100 orders this month, of which 90 deliver. Pepito sends you 100 orders, of which 22 deliver. From Refersion’s perspective, María and Pepito are equivalent — they each “earned” 100 commissions. From your bank account’s perspective, they’re radically different humans.

A standard affiliate app gives you no native way to score affiliates on collection rate. You’d have to manually cross-reference Shopify’s fulfillment data with the affiliate app’s commission report, on a per-order basis, on a recurring cadence. Most merchants don’t bother. So Pepito keeps sending junk traffic, you keep paying shipping on his cancellations, and you can’t see why your margins are bleeding.

You’re funding cancellations. Even if you withhold payouts until delivery confirms, you still pay outbound shipping on every order that won’t collect. In markets where shipping is $4 to $8 per order and you’re running 200 orders/month at 35 percent cancellation, that’s $280 to $560/month in shipping you’re absorbing — much of it generated by low-quality affiliate traffic.

You’re flying blind on real margin. “Top affiliates this month” reports become meaningless when the unit they measure (the order created) is decoupled from the unit you care about (the order paid). Standard reports show you ghost revenue.

”Just delay the payout” doesn’t fix it

A common workaround merchants try is to manually delay affiliate payouts by 30 days, then deduct cancellations at payout time.

This is better than paying instantly, but it doesn’t fix the underlying problem:

  • You still don’t have quality scoring at the affiliate level. You’re scrubbing cancellations in bulk, not learning which affiliates are sending the bad orders.
  • Your reports still lie. Inside the app, commissions show as “earned” the moment the order is placed. You can’t trust your own dashboard.
  • Disputes are messy. When an affiliate sees their dashboard say they “earned” $400 and then they only get paid $180 with no per-order breakdown of which cancelled, they get justifiably upset. Often, they leave for a competing program.
  • There’s no automation. The whole thing depends on you remembering to scrub before each pay cycle. It works until it doesn’t.

What COD-aware affiliate tracking looks like

The clean fix is to bake the COD payment confirmation into the commission state machine itself. Three states, not one:

  • Pending — order created with the affiliate attribution attached. The clock is ticking on delivery.
  • In transit — order is out for delivery. Still pending. No payment expected to affiliate yet.
  • Confirmed — order has been marked as paid in Shopify. Now and only now does the commission become payable.

This is the model COD Affiliates is built on. The state of the commission is a function of the state of the order in Shopify. There’s no manual scrubbing, no separate reconciliation step. The affiliate sees their own dashboard showing exactly which orders are pending vs confirmed vs cancelled, in real time. The merchant pays only out of money they actually collected.

The underlying tracking can still be a referral link, a discount code, or a duplicate-product method (the last one survives in-app browsers and ad-blockers, which matters for TikTok and Instagram traffic). What matters is that the commission state machine respects the order state machine.

If you sell mostly with card, you don’t need this

To be fair: if your store takes 95 percent card payments, the difference between “earned on creation” and “earned on payment” is academic. Card charges resolve instantly. Refersion or GoAffPro will be fine for you.

But the moment Cash on Delivery becomes more than a footnote — and in Argentina, Mexico, Colombia, parts of Spain, India, UAE, Egypt, the Philippines, Indonesia, that threshold is crossed pretty fast — the standard affiliate model becomes the source of a quiet, ongoing leak in your P&L.

The good news is the leak is fixable. The bad news is that none of the big affiliate apps fix it, because they were built for a different payment world.

If you’re running into this, COD Affiliates is free for the first 100 merchants. The Free plan caps at 25 orders/month but unlocks every feature.

Stop paying commission on orders that cancel at the door.

Install COD Affiliates from the Shopify App Store. Free for the first 100 merchants — forever.