Browse Product guides

Commissions and payouts

Every paid sale that reaches Affiliates creates one source event and, when there is partner evidence, one commission decision.

Attribution order

Plandalf can credit by referral token, partner code, active customer binding, Stripe promotion-code mapping or source-specific evidence normalized by Stripe/source handlers. Signup matching through plandalf.lead() is planned.

Direct sales can be visible with attribution traces so merchants can see why no partner was credited.

Amount and currency

The basis is what the buyer paid excluding tax. For API sales that is amount_cents - tax_cents. For Plandalf invoices and Stripe-source events, normalized sale inputs carry paid totals, tax, discounts and source currency.

Commissions are decided in the program payout currency. Multi-currency sales store source amounts, currency exponents and FX snapshots.

If the sale currency differs from the payout currency and no exchange rate is available, the commission is held with no accrual entry. It cannot be approved or paid while the FX rate is missing. The scheduled due-release path retries the exchange rate, writes the accrual once, and then lets the normal hold and approval flow continue.

Money formatting uses the currency’s minor units. JPY has no decimal places; KWD has three.

Subscription durations

Duration policies are live:

  • First payment only
  • Every payment for a set period
  • Every payment, ongoing

Renewals and repeat purchases use the referred customer binding while it is active. Recurring decisions use the locked binding rate when the binding is the evidence source.

Trials, trial conversions, renewals, upgrades, downgrades and prorations are normalized through billing reasons. Zero-dollar starts can be tracked but earn no commission until money is paid.

Follow the subscription setup guide to connect the first payment and verify a renewal.

Holds and review

Commissions start pending, wait through the approval hold, and then become payable. Money-changing actions such as approving, holding, rejecting, creating payout batches, exporting, sending and marking paid are owner/admin-only through the manage-affiliate-money gate.

Commission status labels include pending, held, approved, in payout, paid, rejected, skipped and reversed.

Refunds, credit notes and disputes

Refunds reverse their share once and are keyed by the refund or adjustment ID. Multiple partial refunds on one sale are supported.

Credit notes and disputes are handled as money events through the source-event pipeline. Credit notes reverse on their commission basis, usually ex-tax. Voided credit notes restore the prior credit-note reversal.

Open disputes hold unpaid commission. If funds are withdrawn, Plandalf records the reversal even when the commission was already approved. Won disputes and reinstated funds restore the withdrawn amount. Lost disputes reverse, and warning_closed releases the hold without creating a loss.

After payout, reversals carry forward against the partner’s later balance instead of editing paid payouts.

Before payout export, API send, retry or mark-paid, Plandalf re-checks reserved items. Draft batches release stale or no-longer-payable rows and recompute totals. Exported or submitted batches stop with a reconciliation-required message so the merchant can reconcile the provider result before moving more money.

Exports and notifications

CSV exports are live for partners, sales, commissions, payouts and activity. Payout batch exports are separate and rail-specific.

Partner and merchant notifications are live for affiliate activity including applications, credited sales, commission review outcomes and payout events, with merchant notification preferences.

Feature detail