Affiliate software for Paddle

Affiliate software for Paddle: which tools connect, and how the click id rides every renewal

By Jimi Barkway · Published 6 September 2026 · Part of the comparison pages

In brief

Five tools document a Paddle Billing setup: AffiliateRail, Tolt, FirstPromoter, Refgrow and refVenue. Endorsely and Affonso list Paddle. Rewardful connects to Paddle Classic only. Reditus asks your developer to forward payments to its API. PromoteKit and Komissio are Stripe-only. On the four guides that show it, the mechanism is the same. A script saves a click id in a cookie, the checkout puts it into Paddle's custom data, and Paddle copies it to the subscription and every renewal. AffiliateRail's connection takes a read-only API key and a notification destination, about five minutes by its own guide.

Which affiliate software works with Paddle?

In shortFive tools document a Paddle Billing setup: AffiliateRail, Tolt, FirstPromoter, Refgrow and refVenue. Two more list Paddle: Endorsely and Affonso. Rewardful connects to Paddle Classic only. Reditus has no Paddle connection and asks you to forward payments through its API. PromoteKit and Komissio run on Stripe alone.

The research method was simple. I read every vendor's own Paddle page on 6 September 2026. I found four guides that put the click in the same Paddle field, under different names. The links are in the sources. Where a page did not exist, or would not load as text, the table says so. Nothing here comes from a vendor's claim about another vendor.

Four words first. Paddle Billing is the current version of Paddle, launched as a separate product. Paddle Classic is the old one, still running for older accounts. A webhook is a message Paddle sends to another service when something happens, such as a sale. And custom data is a field on a Paddle transaction where you can store your own values. Affiliate tracking on Paddle is built on the last two.

Paddle automatically creates a subscription for transactions with recurring prices on them. Where a transaction has custom data against it, that data is copied to the created subscription for your reference.

Paddle's developer docs, Custom data, checked 6 September 2026
Affiliate software and Paddle, from each vendor's own documentation, read on 6 September 2026
ToolPaddle BillingPaddle ClassicHow the click reaches PaddleEvents it reads
AffiliateRailYesNot statedThe script fills custom_data.rail_referral through Paddle.js. Server-side, you set the same key.transaction.completed, subscription.created, and six subscription status events
ToltYesYes, separate guideYou pass window.tolt_referral in customDatasubscription.created, subscription.canceled, transaction.completed, adjustment.updated
FirstPromoterYesYesNot stated on the Paddle pagetransaction.completed, adjustment.created, adjustment.updated, subscription.canceled
RefgrowYesNot statedIts cookie, then custom data on the Paddle linktransaction.completed, subscription.created, subscription.updated
refVenueYes"Contact support"refvenue_referral_id in customData at checkout, with email and coupon as fallbackstransaction.completed, adjustment.created, adjustment.updated
EndorselyListedNot statedNot stated on the intro pageNot stated
AffonsoListedNot statedNot stated on the integrations pageNot stated
RewardfulNoYesThe referral UUID in Classic's passthrough parameterReads Paddle webhooks only
ReditusNo native connectionNoYour backend forwards each payment to its Payments APINone. You send them.
TapfiliateLists a Paddle pageNot statedNot readable as textNot readable as text
PromoteKitNoNoStripe only, by its own docsStripe
KomissioNoNoStripe only, by its own homepageStripe
DubNot shownNot shownIts sales docs cover Stripe and ShopifyStripe

How does affiliate tracking work on Paddle?

In shortA script on your site reads the affiliate's link and saves a click id in a cookie. When the checkout opens, that id goes into custom data on the transaction. Paddle sends the transaction to the affiliate tool by webhook. The tool matches the id to the affiliate and writes the commission.

A click id is the short code that names one visit from one affiliate link. It is the whole handshake. Let's say a partner called Sam shares your link. A visitor clicks it. The script stores Sam's click id in a cookie on your domain. Weeks later that visitor buys. The checkout carries the click id into Paddle. Paddle carries it to the tool. The tool sees Sam.

Four of the guides put the click in custom data. The names differ. Tolt reads window.tolt_referral and asks you to put it in customData. refVenue asks for refvenue_referral_id in the same place. Refgrow appends its code to the Paddle link through custom data when its cookie exists. AffiliateRail's script fills custom_data.rail_referral itself when your checkout opens through Paddle.js. If you create transactions on your server, you set the same key from the cookie.

Then Paddle does something useful. Its docs say custom data on a transaction "is copied to the created subscription for your reference". And the subscription's custom data is copied to all future transactions, including renewals and upgrades. So the click id rides every renewal on its own. AffiliateRail's Paddle guide calls this "something Stripe cannot" do. On Stripe, the tool has to remember the customer. On Paddle, Paddle remembers.

What does connecting Paddle take?

In shortTwo things from Paddle: an API key and a notification destination with its signing secret. A notification destination is the address in Paddle where you tell it to send webhooks. Most tools give you that address, you paste it into Paddle, and you tick the events. Then you paste the key and secret back into the tool.

AffiliateRail's guide says the form "takes about five minutes". Paddle has no one-click connect like Stripe's, so there is no button to press. The key needs read access only, to notification settings, transactions, subscriptions, customers and adjustments. "We never write to your Paddle account, the same way we never write to your Stripe." Paddle shows the key once, so paste it straight in.

Tolt's list is close to the same. Its key wants Adjustments, Customers, Products, Subscriptions, Transactions and Notifications on read, and Discounts on read and write. FirstPromoter's page is shorter. It says the tool "automatically tracks sales, refunds, and cancellations" from your Paddle account, and it lists no key permissions. Refgrow names the permission people miss. "Paddle does not put the buyer's email in the webhook it sends us, only a customer id, so we ask Paddle who that is." Without it, Refgrow says, the key still saves and events still arrive, but that lookup is refused.

One more choice before you start. Paddle keeps sandbox and live "completely separate". AffiliateRail's guide says rehearsing in sandbox "is worth the extra ten minutes". Run one whole transaction through it. Then connect live.

Is commission paid on the gross or the net?

In shortIt depends on the tool, and it matters more on Paddle than on Stripe. A merchant of record is a company that sells to your customer in its own name and takes its fee out of the price. Paddle is one. So every Paddle sale has two sizes. One is what the customer paid. The other is what reached you.

FirstPromoter has a toggle for this. It is called "Exclude Paddle's fees". Off, commission is worked out on "your earnings plus Paddle's fee". On, it is worked out on "your net earnings, after Paddle's fee is deducted". The docs add one warning. "Commissions already recorded are not recalculated." So pick before the first sale.

For example, imagine a $100 sale where Paddle keeps its fee and passes you the rest. At 20% commission on the gross, the affiliate gets $20. On the net, they get 20% of what reached you, which is less. Neither is wrong. The affiliate needs to know which one is in the deal. Check your tool's rule, then write it into your terms. AffiliateRail's guide to setting a rate covers the same question.

Refunds work the same way on every tool that reads adjustments. An adjustment is Paddle's record of a refund, credit or chargeback against a transaction. FirstPromoter reads adjustment.created for chargebacks and adjustment.updated for refunds, and ignores VAT-only refunds. Tolt reads adjustment.updated. refVenue reads both. AffiliateRail's key asks for adjustments on read as well.

Why does a sale not show up?

In shortAlmost always one of four things. The webhook never arrived. The signature did not verify. The checkout carried no click id. Or the sale landed and no commission rule matched it. Work down that list in order.

AffiliateRail's guide walks the list. First, look at the Paddle card in the app. It shows the last event received and when. If that is blank or days old, the problem is between Paddle and the tool. Second, open Notifications in Paddle. It shows what it sent and what came back. "A 400 means the signature did not verify, which almost always means the signing secret here is not the one on that destination." Paste it again.

Third, check the customer. If they are there with no partner against them, "the checkout was not stamped". The click id never reached custom data. That is a checkout problem, not a Paddle problem. The attribution report lists every sale in that state so you can attribute it by hand. Fourth, check your commission rules. A customer against the right partner with no commission means no rule matched.

The same order works on any tool with a Paddle connection. Each one reads webhooks, matches an id and applies a rule. When a sale is missing, one of those steps failed.

Which one should you pick?

In shortIf you are still on Paddle Classic, Rewardful and FirstPromoter both connect to it. Tolt has a Classic guide too. If you are on Paddle Billing, FirstPromoter's page is the shortest, and it covers both versions. If you want the click id handled without writing checkout code, AffiliateRail's script fills the field itself.

The honest differences are elsewhere. FirstPromoter's fee toggle is the clearest answer to the gross-or-net question. Reditus asks for a developer and "about four hours", and in return you get "a network of 26,000+ B2B SaaS affiliates". Refgrow's Paddle guide is the most candid about permissions. Rewardful is the only Paddle-connected tool on the table still on Classic alone.

AffiliateRail's case is the money after the sale. Payouts run through your own PayPal or Wise account at 0% of the payout. And its script reads nineteen link parameters, including the ones Tolt, FirstPromoter, Tapfiliate and Affonso use. So links your affiliates already published keep converting after a switch. The switch guides cover each tool's export.

The side-by-side pages go deeper on each tool: Tolt, FirstPromoter, Rewardful and Refgrow. The Paddle integration page has the setup in full. If you are on Stripe instead, the Stripe article is the same walk on Stripe.

Connect Paddle in about five minutes, with a read-only key

The script fills the field. Paddle carries it to every renewal. Payouts run through your own account at 0%. Fourteen days, no card.

Start free trial

Every fact on this page was read off the vendor's own documentation on the date beside it in the sources. Integrations change. Read the vendor's page before you connect anything.

Common questions

Does Rewardful work with Paddle Billing?

Not by its own help centre, read on 6 September 2026: "At present, Rewardful supports integration only with Paddle Classic, not Paddle Billing." Its Classic setup pastes your Paddle public key, adds a webhook URL, and passes the referral id in Classic's passthrough parameter.

How does the affiliate's click reach Paddle?

Through custom data on the transaction. The affiliate tool's script stores a click id in a cookie when the visitor arrives. When the checkout opens, that id goes into custom data. Tolt asks you to pass window.tolt_referral in customData. AffiliateRail's script fills custom_data.rail_referral itself through Paddle.js, or you set the same key server-side. Paddle then copies the field to the subscription and to every renewal.

Is affiliate commission on Paddle paid on the gross or the net?

It depends on the tool's setting. Paddle is a merchant of record, so a sale has two sizes: what the customer paid and what reached you. FirstPromoter has an "Exclude Paddle's fees" toggle. Off, commission is on your earnings plus Paddle's fee. On, it is on your net earnings after the fee. Commissions already recorded are not recalculated when you change it, so decide before the first sale.

Which affiliate tools are Stripe-only?

PromoteKit says it is "a platform for running affiliate programs on top of Stripe" and its docs cover nothing else. Komissio connects to Stripe by OAuth and pays through Stripe Connect. Dub's sales tracking docs cover Stripe and Shopify, and its integrations page shows no Paddle.

What permissions does the Paddle API key need?

Mostly read access. AffiliateRail asks for notification settings, transactions, subscriptions, customers and adjustments on read, and never writes to your Paddle account. Tolt's list adds Products on read and Discounts on read and write. Refgrow needs Notifications on read and write so it can create the destination, and points out that Customers on read is the one people miss, because Paddle's webhook carries a customer id and not an email.

Where these facts come from

Fact-checked and reviewed by Jimi Barkway on 6 September 2026. Every figure above was read off the document named here on the date beside it. To contact AffiliateRail about one, email support@affiliaterail.com and the figure is corrected and the date moved.

Compare

Connect Paddle in about five minutes, with a read-only key

The script fills the field. Paddle carries it to every renewal. Payouts run through your own PayPal or Wise at 0% of the payout. No card for fourteen days. Full refund within 30 days of your first payment.