Program

Commissions and payouts

How the commission ledger works in OpenPromoter: hold periods, refunds and clawbacks, chargebacks, payout approval, payout rails and tax forms.

Every commission is a row in an append-mostly ledger and is tied to the invoice, refund or bonus that created it. Partners see the same ledger in their portal.

Commission states

State Meaning
pending Booked and inside the hold period (the refund window)
approved Past the hold period and waiting for the next payout
held Paused by a fraud check, an open chargeback or by you
paid Included in a payout that was sent
reversed Canceled by a full refund or a lost chargeback

Each line also has a kind: sale, lead, bounty, bonus, adjustment (refunds and clawbacks) or override (two-tier, below).

Every change of state is written to the audit log.

How a commission is calculated

  • Amount: a percentage or fixed amount per sale. It is set per program with its own rate for each partner tier (group). A custom rate on a partner's page overrides both for that partner.
  • Base: what the customer actually paid after discounts and excluding tax.
  • Duration: once, for a number of months or for the lifetime of the subscription.
  • Campaign boosts: if several boosts are live, the strongest one applies. Boosts never stack.

Each commission has a unique source key (for example the Stripe invoice id). A webhook delivered twice never books twice.

Two-tier commissions

Partners can recruit other partners. Turn it on in Settings > Program > Recruiter override with a percentage above 0. It is off by default.

  • Each partner gets a recruit link on the Recruits page of their portal. Anyone who applies through it becomes their sub-partner.
  • When a sub-partner earns a sale commission, the recruiter earns an override of that percentage. A 10% override on a $30 commission is $3.
  • The sub-partner's own commission does not change. You pay the override on top.
  • It goes one level deep. A sub-partner's recruits earn an override for the sub-partner only, never for the partner above.
  • Only an approved partner of the same program can recruit. A partner cannot recruit themselves.

The override is a separate override line in the ledger, linked to the sub-partner's commission. It follows that commission:

When the sub-partner's commission is The override is
Held (fraud check, chargeback, paused partner or by you) Held
Released Released
Partly refunded Reduced by the same share
Fully refunded or reversed before payout Reversed
Refunded after the override was paid Clawed back from the recruiter's next payout

Overrides have the same hold period as the commission they come from. Fraud checks cover them too. When a recruit looks like the recruiter's own second account, the override is held and the recruiter is flagged. The check compares email, login, signup network and payout account.

Hold period

Commissions stay pending for the program's hold period (30 days by default). After that they become approved automatically. Set the hold to at least your refund window so refunds are settled before money moves.

Refunds and clawbacks

  • Partial refund before payout: the commission is reduced in proportion.
  • Full refund before payout: the commission is reversed.
  • Refund after payout: a negative approved line (a clawback) is added and deducted from the partner's next payout.

Chargebacks

When a dispute opens, the commission moves to held. If you win, it returns to pending. If you lose, it is reversed and clawed back if it was already paid.

Payouts

  1. Prepare. OpenPromoter creates payouts on the program's schedule (weekly, monthly or manual). Every partner whose approved balance is at or above the minimum ($50 by default) gets one. You can also prepare payouts by hand, through the API or through the MCP server.
  2. Approve. Prepared payouts wait in awaiting_approval. Only a signed-in owner, admin or finance team member can approve them, and API keys, the MCP server and Autopilot cannot. Approving a batch above the program's two-factor threshold ($1,000 by default) needs two-factor authentication turned on and a fresh code.
  3. Send. On approval, the commissions are locked to the payout in one transaction. The payout is then sent with an idempotency key so a retry never pays twice. If the provider fails, the payout is marked failed and the commissions are released for the next run.

Partners are notified by email when a payout is sent.

Test commissions

Commissions from Stripe test-mode events carry a Test badge. Delete them all in Settings > Integrations > Delete test data before going live. Test commissions never count toward a payout.

Payout methods

Each partner picks a method in their portal from the ones your program allows.

Method How it works
Stripe Connect Partner completes Stripe's hosted Express onboarding; you pay with a Transfer from your Stripe balance. See Stripe
PayPal PayPal Payouts from your business account (needs Payouts enabled by PayPal). Sandbox supported
Wise Transfer from your Wise balance to the partner's Wise email. Sandbox supported
Manual Pay any way you like and mark the payout paid with a reference

PayPal and Wise send money in the background. Their payouts stay Processing until the provider confirms the money arrived, and OpenPromoter checks every 10 minutes. A payout PayPal returns or Wise cancels moves to Failed and its commissions are owed again. UK and EEA Wise profiles must fund each transfer in the Wise app; the payout shows that note until Wise sends it.

A send that times out stays Processing too. OpenPromoter asks the provider what happened before it sends anything again. A retry never pays twice. Amounts go out in the currency's own units: ¥10,000 is sent as 10000 JPY. A payout in a currency PayPal does not pay out in fails before anything is sent.

PayPal doesn't let accounts registered in some countries send Payouts, India among them. The payout fails with PayPal's message, and its commissions are owed again. Pay those partners with Wise or Stripe instead.

You pay each rail's own fees. OpenPromoter takes 0% of payouts on every plan.

Export payouts to CSV for accounting or for paying in bulk elsewhere.

Tax forms

Partners submit tax details in the portal:

  • W-9 for US partners
  • W-8BEN for individuals and W-8BEN-E for entities outside the US

Tax ids are encrypted at rest. EU VAT ids are checked against the European Commission's VIES service, and the result and time of each check are stored. A "service unavailable" reply is treated as "try again later" and never marks an id invalid.

US partners paid by PayPal, Wise or manually must submit a W-9 with an SSN or EIN. They need it before a payout takes their total for the year past the 1099-NEC threshold. Until then the payout fails with a clear message.

Stripe Connect collects tax details during its own onboarding.

1099-NEC export

Payouts > 1099 report produces a CSV of US partners for each calendar year. It lists each partner's legal name, address, masked TIN, total paid and whether a 1099-NEC is required. The threshold follows the IRS rule for the payment year:

Payments made in Threshold
2025 and earlier $600
2026 $2,000

The IRS adjusts the threshold for inflation from 2027; check it before you file. Exporting full unmasked TINs is recorded in the audit log. 1099s are due January 31.

Self-billed invoices and EU reverse charge

Every payout gets a sequential invoice number and a printable self-billed invoice issued on the partner's behalf. When the partner has an EU VAT id, the invoice carries the reverse-charge note (Article 196, Council Directive 2006/112/EC).

This is general information. Check your own situation with a tax advisor.

Edit this page on GitHub