Open sourceRead the code and star it on GitHub

Open-source affiliate software for SaaS

Connect Stripe and OpenPromoter designs your program, recruits partners and stops fraud. Every feature is on every plan and we take 0% of your payouts.

The Free plan needs no card. You own the code and your data.

  • Fraud checks on every plan
  • 0% of your payouts
  • Self-host in one command
Dashboard Ask

Welcome back

Acme Analytics overview

Invite partners
  • Referred revenue18.2%

    $84,210

    $51,930 MRR from partner customers

  • Partners earned16.9%

    $16,842

    38 active partners

  • New customers22.4%

    412

    from 6,058 human clicks

  • Conversion1.2%

    6.8%

    EPC $13.90 per click

Performance

Daily totals against the 30 days before

$84,21018.2%vs previous 30 days

Partner balanceNov 2026

$12,480.40

owed across every partner right now

Ready to pay
$7,920.00
In refund window
$4,180.40
Held for review
$380.00

Review 6 payouts · $7,920.00

Needs you

  • Approve 6 payouts$7,920
  • Review 3 applicationsPartners
  • Held commissions$380
  • Pause Ethan Park (risk 82)Autopilot

For SaaS founders who bill with Stripe, Paddle, Lemon Squeezy, Polar or Chargebee.

Why switch

Most partner programs still run on a spreadsheet

Founders track partners by hand and pay late. Fraud shows up after the money is gone.

Without OpenPromoter

Hours in a spreadsheet each month

You copy clicks and invoices by hand. Refunds and self-referrals show up after you paid.

  • Export clicks and invoices to a spreadsheet
  • Work out refunds and clawbacks by hand
  • Find self-referrals after you paid them
  • Pay the platform a cut of every payout

With OpenPromoterRecommended

Every commission comes from Stripe

Each invoice creates its commission. Refunds reverse it and risky ones wait for your review.

  • Commissions created from every Stripe invoice
  • Refunds reverse or reduce the commission
  • Risky commissions held before any payout
  • 0% of payouts on every plan

What it does

The busywork of a partner program handled

Most affiliate tools track clicks and leave the rest to you. OpenPromoter also designs the program, finds partners, writes their copy, catches fraud and prepares the payouts.

Tracking that survives checkout

One script tag and a first-party cookie or none at all. Coupon codes, short links on your domain, an ad-blocker-proof proxy path and an EU consent mode.

Payouts a person approves

Stripe Connect Express, PayPal Payouts, Wise or manual. Every payout is prepared on your schedule and waits for a signed-in person. Large batches need a fresh 2FA code.

Fraud checks on every plan

Self-referrals, duplicate accounts, shared payout accounts, coupon leaking, paid ads on your brand, click spam and bots. Risky commissions are held for review.

Weekly Autopilot with an undo button

Re-engages idle partners, promotes top performers a tier, pauses risky accounts, approves applications, proposes campaigns and prepares payouts. Every action is logged with its reason.

Campaigns from one sentence

“Double commissions on annual plans” becomes a boost with start and end dates. Bounties and contests work the same way.

A program designed from your prices

Commission, duration, cookie window, double-sided reward and tiers. Each comes with a short reason. Accept in one click.

A recruiter that drafts the invites

Ranks your longest-paying and highest-value customers and drafts a personal invite for each. It sends only what you approve and follows up once.

A partner portal partners can trust

Branded from your website on your own domain or embedded inside your app with one tag. Partners get their links, QR codes and a content kit. They see every commission with its status.

One inbox for every partner

Talk to one partner or announce to every active partner by email and in their portal at once.

Ask your program anything

“How much do we owe partners?” gets the number and a link to the report. Without an AI key it answers from the closest built-in report.

Five-minute setup

From Stripe key to first partner in three steps

  1. 1Connect Stripe

    Paste a restricted key when you self-host or connect with OAuth on Cloud. OpenPromoter registers its webhook and imports your products, customers and subscriptions.

  2. 2Accept the AI-designed program

    It reads your prices and proposes the commission, duration, cookie window, double-sided reward and tiers. Each choice comes with its reasoning, and you can change anything.

  3. 3Install and invite partners

    Paste one script tag or one prompt into Claude Code or Cursor. Setup confirms op.js is live and the recruiter drafts invites to your happiest customers. Nothing sends until you approve.

Stripe Payment Links and Pricing Tables need nothing beyond the script tag.

Integrations

Works with the billing you already use

Stripe, Paddle, Lemon Squeezy, Polar and Chargebee connect through their webhooks. Set it up from Claude Code or Cursor with one prompt or let an agent run it over MCP.

AI that does the work

Every AI action is logged. Every one can be undone.

The AI is a colleague with a paper trail. It drafts, suggests and applies safe changes, and it writes down why. It never moves money.

  • Logged with undo

    Autopilot stores what it changed and how to put it back. One click restores the previous state.

  • AI never moves money

    Payouts are prepared and wait for a signed-in person to approve them. AI, API keys and MCP cannot approve.

  • Works without an AI key

    Rules and templates stand in for the model. The designer, campaigns, content kit and assistant still work.

  • Your choice of model

    Anthropic by default. OpenAI and any OpenAI-compatible endpoint such as Ollama or LM Studio also work.

Money done right

A ledger you can audit and payouts a person approves

Every commission traces back to the invoice or refund that created it, and partners see the same ledger you do.

  1. Pending

    Inside the hold period

  2. Approved

    Ready for the next payout

  3. Held

    Fraud check or open chargeback

  4. Paid

    Sent with the payout reference

  5. Reversed

    Refunded or chargeback lost

Pending214$4,180.40

  • SalePending

    Maya Chen

    $39.60

    Nov 5Payable Dec 5

  • SalePending

    Leo Martins

    $98.00

    Nov 4Payable Dec 4

  • RenewalPending

    Nora Lindqvist

    $19.60

    Nov 3Payable Dec 3

  • SalePending

    Omar Haddad

    $59.60

    Nov 2Payable Dec 2

  • RenewalPending

    Ella Brooks

    $17.15

    Nov 1Payable Dec 1

Refunds and chargebacks handled automatically

Partial refunds reduce the commission and full refunds reverse it. Open chargebacks hold it until they are settled.

Your payout rails at their own cost

Hold periods, minimums and weekly or monthly schedules per program. We add nothing on top.

Tax paperwork included

A 1099-NEC export that uses the $2,000 threshold for 2026 payments, plus EU reverse-charge invoices.

Open source for developers and agents

Run it on your own server with one command

Signed webhooks, an OpenAPI spec, a TypeScript SDK and a CLI. Agents can read everything and prepare payouts, and a person still approves them.

~/openpromoter
$ git clone https://github.com/openpromoter/openpromoter
$ cd openpromoter
$ docker compose up

  app       http://localhost:3000
  postgres  localhost:5432
  mailpit   http://localhost:8025

✓ Demo workspace seeded

Self-hosted edition

FeaturesEvery one
Revenue limitsNone
Partner limitsNone
NeedsPostgreSQL 16
EmailSMTP or Resend
LicenseAGPL-3.0
index.html
<script async src="https://app.openpromoter.com/op.js"
  data-program="acme"></script>

<script>
  // after signup, record the referral as a lead
  openpromoter.signup({ email: user.email });
</script>
MCP config for Claude Desktop or Cursor
{
  "mcpServers": {
    "openpromoter": {
      "command": "npx",
      "args": ["-y", "openpromoter-mcp"],
      "env": {
        "OPENPROMOTER_API_KEY": "op_live_…",
        "OPENPROMOTER_URL": "https://app.openpromoter.com"
      }
    }
  }
}
Terminal
# list the program's payouts
curl https://app.openpromoter.com/api/v1/programs/prg_123/payouts \
  -H "Authorization: Bearer $OPENPROMOTER_API_KEY"

How it compares

Flat pricing, no cut of payouts and the source code

The facts below come from each vendor's own pages as of November 2026. Check their sites for current pricing.

Sources for this table (8), checked November 2026
  1. [1] https://www.rewardful.com/pricing
  2. [2] https://help.rewardful.com/en/articles/11930744-merchants-faq-managed-payouts
  3. [3] https://tolt.com/pricing
  4. [4] https://firstpromoter.com/pricing
  5. [5] https://help.firstpromoter.com/en/articles/9998853-how-managed-auto-payouts-work
  6. [6] https://dub.co/pricing
  7. [7] https://dub.co/help/article/partner-payouts
  8. [8] https://github.com/dubinc/dub/pull/4783

Pricing

Self-host free forever or let us run it

Flat monthly plans by partner-attributed revenue. No cut of your payouts on any plan.

Cloud

$0to start

Freeup to $1k/mo partner revenue
Starter · Growth · Scale$29 · $79 · $199/mo
Fee on payouts0%
BillingFlat monthly

FAQ

Questions founders ask

Something else? Read the docs or open an issue on GitHub.

Is self-hosting really free?
Yes. The whole repository is AGPL-3.0 with every feature and no revenue or partner limits, and you pay only for your own server and Postgres. Cloud exists for teams who would rather not run it.
Do you take a cut of payouts?
Not on any plan. Cloud is a flat monthly price set by how much partner-attributed revenue you track. The only payout cost is the rail's own fee to Stripe, PayPal or Wise.
Can the AI send money?
No. AI, Autopilot, API keys and the MCP server can prepare a payout batch. Only a signed-in owner, admin or finance team member can approve it.
Do I need an AI key?
No. Without a key you get a heuristic program design, a template content kit, a rule-based campaign parser and a keyword assistant. Add an Anthropic key, an OpenAI key or any OpenAI-compatible endpoint such as Ollama to get the full versions.
Which billing systems work?
Stripe, Paddle, Lemon Squeezy, Polar and Chargebee have built-in webhooks and attribution, and they can be connected side by side. Anything else can report payments and refunds through the REST API.
How does it handle cookie consent?
Add data-consent="required" to the script tag and op.js writes no cookie until your consent banner calls openpromoter("consent", true). Click ids still pass through Checkout. Sales are attributed either way.
Can I move over from Rewardful, FirstPromoter, Tolt or PartnerStack?
Yes. Export your affiliates as CSV and drop the file into Settings > Import. Partners keep their referral codes, and links already shared keep working because op.js still reads ?via=, ?fpr=, ?ref= and ?gspk=.
What happens when a customer refunds?
A partial refund reduces the commission in proportion and a full refund reverses it. If the commission was already paid, a negative line is deducted from the partner's next payout. An open chargeback holds the commission until it is won or lost.

[ openpromoter ]

Your partner program can be live this afternoon

Connect Stripe and accept the proposed program. Partners can join before the day ends.