Affiliate tracking software you actually own.
Every partner, click and payout lives in one file on your server. You pay $99 once and get zero monthly invoices, which our accountant finds upsetting.
Self-host: one-time payment, 1 year of updates, 14-day refund. Cloud: from $49 a month, cancel any time.
Real screens from the product, running on demo data.
Plugs into the billing you already run
Point its webhooks at your install. AffiliateTracking checks every event's signature or password before it credits a cent. See every integration
Where your data lives
You hold the keys.
Same affiliate program, two addresses. One of them sends you a bill every month.
Rented
The usual SaaS way- Partners: their databaseEvery affiliate you recruited sits on someone else's server.
- Sales history: their databaseYou see it through their dashboard, on their terms.
- Price: climbs as you growPlan tiers step up with your affiliate revenue.
- If they shut down: good luckYour program moves on their timeline, not yours.
You pay rent on your own data
Owned
AffiliateTracking- Partners: your serverOne SQLite file. Copy it, back it up, open it in any SQLite tool.
- Sales history: the same fileIt never calls us. No license check, no usage tracking.
- Price: $99 onceNo revenue caps, no per-click fees, no cut.
- If we shut down: still runningYour version keeps working. Nothing switches off.
Your program lives at your address
And nothing bad gets paid
Most tools flag fraud.
Then they pay it.
A flag is a note. A hold is a stop. Here's the same coupon hijack, handled both ways.
Flag, then pay
The usual way- A sale comes in on coupon
SPRING40The code leaked to a coupon site. It's taking credit from other affiliates. - A fraud flag shows up on a dashboardSomebody has to open that page and read it.
- The payout run pays it anywayThe flag was a note. Nothing stopped the money.
- You ask for the money backBy email, after it's already been paid out.
Commission paid on fraud
Hold, then decide
AffiliateTracking- A sale comes in on coupon
SPRING40It's stored by its event ID, so a retry can't count it twice. - 13 rules run before any creditAttribution picks the affiliate first. Then every rule checks the sale.
coupon_hijackfires. $198.00 is held.The evidence sits on the hold. It can't be paid out.- You release it, or reverse itEither way, the ledger writes it down with your note.
Nothing paid until you decide
What happens to the money
Held first. Written down twice. Paid last.
Fraud gets held. Not paid.
13 rules run the moment a sale comes in. If one fires, the commission is held with the evidence attached. It can't be paid out until you release it. We don't think you should pay for a sale that never happened.
See all 13 rules
- Coupon hijack
- Self-referral
- Duplicate accounts
- Shared buyers
- Click velocity
- Datacenter traffic
- Bot traffic
- IP overlap
- Conversion velocity
- Odd conversion hours
- Geo mismatch
- IP fallback anomalies
Affiliates can check the math
Every cent is a double-entry journal. Entries are never edited, only reversed with a note. Each affiliate sees their own ledger, and proof that it adds up.
See every payout before money moves
Set a minimum and preview the batch first to see who gets paid and how much. A missing W-9 or W-8BEN blocks that affiliate's payout.
Every sale takes the same path.
A billing event comes in. Attribution picks the affiliate. All 13 rules run. Then the money either lands or waits for you. Same order, every time.
Take the product tourAll of this comes with the $99.
No add-ons. No higher tier. No "contact sales".
Credit that survives ad blockers
When the cookie is gone, the server still knows who earned the sale. Podcast and TikTok codes count too.
Replays count once
It stores each billing event by its ID. When Stripe retries, nothing counts twice.
Bring your program with you
CSV import from Rewardful, FirstPromoter, Tapfiliate and Tolt. It brings affiliates, links and coupons. Dry run first, and money never moves over.
Ask your data
A read-only MCP server. Connect a client like Cursor with an admin key and ask how your program is doing. It can't change a thing.
Recurring and lifetimeRenewals keep paying the affiliate who brought the customer. Refunds take their share back.
Volume tiersRates step up as an affiliate sells more. Set the thresholds yourself.
Usage-basedCredits, tokens and metered billing. Affiliates earn on real spend.
Your brandYour program name and accent color on the affiliate portal.
GDPR toolsTrim IPs before they're stored. Export or erase an affiliate.
Audit logEvery change, who made it and when. Append-only.
Where are you starting from?
Three common starting points, and what to do first in each.
Your first affiliate program
Install it, connect your billing and set one commission rule. Your first affiliate link can go out the same day.
- Run the binary on a small server
- Paste your billing webhook secret
- Set a rule and invite affiliates
Moving from another tool
CSV import from Rewardful, FirstPromoter, Tapfiliate and Tolt. It writes nothing until you've read the report.
- Export a CSV from your old tool
- Run the import as a dry run
- Import for real. Settle old balances in your old tool first.
Fraud already cost you a payout
Turn the rules on in dry-run mode first. You'll see what they would have held, without holding anything.
- Start the rules in dry-run mode
- Read what each one would have held
- Switch to enforce when you trust them
Our data
One binary on one small server. Measured, not guessed.
Measured on an Apple M2 with file-backed SQLite. Run make bench in the repo to check.
Running in five minutes.
No Docker Compose. No Redis. No queue to babysit. SQLite is built in. Move to Postgres when you outgrow it.
Read the self-host guide# 1. Run it $ ./affiliate-engine -listen :8080 -db sqlite:affiliate.db # 2. Make an admin key $ ./affiliate-engine -db sqlite:affiliate.db keygen --scope admin --name ops # 3. Check the books $ ./affiliate-engine -db sqlite:affiliate.db doctor (one line per check) doctor: ALL CHECKS PASSED
Buy the house.
Or rent the flat.
No revenue caps. No per-click fees. No cut of what your affiliates bring in.
Self-host
$99once
- Every feature, on your own server
- 1 year of updates. After that, your version keeps working.
- One binary with SQLite built in. Postgres when you outgrow it.
- Runs on Linux, macOS and Windows
- You pay for your own server
Full refund within 14 days.
Cloud
$49a month and up
Pay yearly and get 2 months free. Hosting, backups and upgrades included.
Start your 14-day free trialCard needed to start. Nothing charged until the trial ends, and you can cancel before then.
How $99 breaks down
- ๐พ Self-host license$99 once
- ๐ Monthly fee$0
- ๐ Cut of affiliate revenue0%
- ๐ฑ๏ธ Per-click fees$0
- ๐ป Hidden feesNone
- ๐ช Moving out of a rented dashboardPriceless
Includes 1 year of updates. After that your version keeps working. More updates are $99 a year, and you never have to buy them. Full refund within 14 days.
Prices in USD. Self-host is a one-time payment. You pay for cloud monthly or yearly.
Side by side with the usual tools
From each tool's public homepage and pricing page, checked . Spotted something out of date? Email support@affiliatetracking.co.
| Feature | AffiliateTracking | Rewardful | FirstPromoter | Tolt |
|---|---|---|---|---|
| Self-host on your own server | โ Yes | โ No | โ No | โ No |
| Starting price | $99 once | $49/mo | $49/mo | Not on homepage |
| Caps on affiliate revenue | None | Not checked | $5k to $15k/mo by plan | Not checked |
| Fraud checks | 13 rules, money held | Self-referral | Self-referral, suspicious leads | Not listed |
| Ledger affiliates can check | โ Yes | Not listed | Not listed | Not listed |
FAQ
What is affiliate tracking software?
It records which affiliate sent each sale and works out what they're owed. AffiliateTracking also checks every sale against 13 fraud rules before the commission is credited.
Where does my data live?
On your server, in one SQLite file (or your own Postgres). We don't have a key, and we like it that way. The app only talks to the services you connect: your billing tool, your mail provider and your affiliates' postback URLs. On cloud, it lives in your own workspace on our server in Germany.
What if you go out of business?
Your copy keeps running. There's no license check and nothing that switches off. You'd miss our update emails. We'd miss you more.
What do I get for $99?
The self-host binary, a license key and 1 year of updates. You pay once and run it on your own server. After a year it keeps working. Another year of updates is $99 if you want it. Not happy? Full refund within 14 days.
What happens when a commission is flagged?
It's held, with the evidence attached. It can't be paid out until you release it.
How do I keep track of affiliate sales?
Connect your billing provider. Checkouts, renewals and refunds arrive as events, and each affiliate's balance updates in the ledger.
Can I move from Rewardful or FirstPromoter?
Yes. Export a CSV, run the import as a dry run, read the report, then import for real. Affiliates, their links and coupons come over. Balances don't, so pay those out in your old tool first.
Can I ask an AI about my affiliate program?
Yes, read-only, on self-host and the Business plan and up. It ships an MCP server. Connect a client like Cursor with an admin key and ask things like "how many commissions are on hold?" It can't change anything.
Do you take a cut of affiliate sales?
No. Self-host is $99 once. Cloud is a flat monthly price with no percentage on top.
Does it work for ecommerce, or only SaaS?
Both, as long as you sell through Stripe, Paddle, Chargebee, Recurly, Lemon Squeezy or Polar. Other checkouts, like Shopify, can't report sales to it yet.
Is it GDPR friendly?
You can trim IPs before they're stored. You can export or erase an affiliate's data on request, and the books still balance.
Tired of support bots? Email a human. Usually it's Asif, who built it.
Stop renting your
affiliate program.
Buy self-host for $99 and move in today. Or rent ours, free for 14 days.