Skip to content
CursareDocs
Sign in

Start here

  • Overview
  • Getting started
  • Platform concepts

Create

  • Content
  • Editor and blocks
  • Block reference

Publish & access

  • Publishing and access
  • Custom domain & white-label

Learners

  • Learner experience
  • Learners and enrollments
  • Progress and certificates

Teams & cohort

  • Teams
  • Cohorts

Sales

  • Offers & checkout
  • Payments & payouts
  • Affiliates
  • Insights and reports

Admin

  • Organization & security
  • Plans, trial & billing
  • Appearance
  • Members & roles
  • Audit log

Developer

  • Integrations
  • API keys & webhooks
  • MCP server
  • API reference
Explore the API
Sales

Affiliates

Cursare models three relationships a person can have with your organization: a member (staff — someone who works in the dashboard), a learner (someone who studies), and now an affiliate — someone who promotes your courses and earns a commission on the sales they bring. An affiliate is not staff: they never see your dashboard, hold no organization role, and touch nothing beyond their own links and earnings. The same person can be all three at once — your best affiliate may well be a learner of the very course they promote.

One honest line before anything else: in this phase Cursare tracks commissions — who drove which sale and what is owed — but does not move affiliate money. You pay your affiliates directly (Pix, bank transfer, however you settle) and then mark it paid in the dashboard.

Turning the program on

The program lives at Settings → Affiliates (/dashboard/settings/affiliates), open to organization owners and admins. Two controls:

SettingWhat it does
JoiningOff — no one can join (the default). Open — anyone joins instantly and starts active. By approval — joins land pending until staff approves them.
Default commissionThe org-wide percent of each attributed sale. An offer's own rate or a negotiated per-affiliate rate overrides it — see The commission.

While the mode is off, nothing shows publicly and no code attributes. Once the program is open or by approval, your organization's public page grows a "Become an affiliate" strip advertising the default rate and pointing at the join page.

How people join

The join page lives on the apex — cursare.com/affiliates/join/{your-slug} — and requires nothing but a Cursare account. Any user can join: a stranger, a learner of the very course, even one of your own members (their affiliation is separate from their role — but note self-referrals below).

  • In an open program, joining activates instantly — the affiliate gets their code and can start sharing links.
  • In a by approval program, the join lands pending: the code exists but attributes nothing until you approve it on the affiliate roster.
  • Joining again is harmless — asking twice just returns the existing affiliation. A blocked affiliate cannot rejoin.

Each affiliate gets a short, unique code — 8 lowercase characters, URL-safe, with no ambiguous characters. That code is the affiliate's public identity: it is what travels in their links.

Links and attribution

An affiliate link is nothing exotic: the course's public sales page with ?ref=CODE appended. The affiliate portal generates these links ready to copy, but any hand-built URL works the same.

Visiting any page with a valid ?ref= sets a 30-day cookie, last click wins — a newer code overwrites an older one. At checkout, the code is resolved server-side against the organization being bought from. The sale is attributed only when everything lines up; in every other case it simply completes unattributed:

  • Wrong organization — a code from another organization doesn't match here.
  • Affiliate not active — pending or blocked affiliates don't attribute.
  • Program off — turning the program off silences every code at once.
  • Self-referral — buying through your own link doesn't attribute: no one earns commission on themselves.

Attribution never blocks a sale

An invalid, foreign, or blocked code raises no error for the buyer — checkout proceeds normally and the purchase is recorded without an affiliate. Attribution is a silent extra on top of the sale, never a condition of it.

The commission

The rate for a sale is picked by strict precedence:

  1. The affiliate's negotiated rate, when one is set on the affiliate roster;
  2. else the offer's own rate, when the sold offer sets one (in its Pricing section);
  3. else the program's default commission.

The commission is computed on the sale price — what the buyer actually paid, after any campaign discount — and comes out of your producer share, not on top of the price. A rate of zero still attributes: you see who drove the sale even when nothing is owed.

Frozen at the sale

The resolved rate and the computed amount are written onto the purchase itself at sale time. Changing the program default, an offer's rate, or a negotiated rate later never rewrites past sales; it only applies to sales from then on.

Settling up

The roster at Settings → Affiliates shows every affiliate with their earnings, per currency: pending (owed and not yet paid) and paid. From each row's menu you can:

  • Approve a pending affiliate (or unblock a blocked one) — their links start attributing.
  • Block — their links stop attributing; commissions already earned stay on the books.
  • Set commission… — a negotiated rate for this affiliate only. Leave it empty to fall back to the program default.
  • Mark commissions paid — after you have actually paid them (Pix, transfer — outside Cursare), one click marks everything pending as paid, per currency.

Refunds keep the numbers honest: a refunded sale drops out of pending automatically. If a sale is refunded after its commission was already marked paid, it shows as reversed — Cursare won't pretend the money came back; it tells you that you overpaid so you can settle it on the next round.

Cursare does not move affiliate money

"Mark commissions paid" is a record, not a transfer. In this phase no affiliate payout flows through Cursare: settling happens between you and the affiliate, however you both agree, and the dashboard keeps the score.

The affiliate portal

Affiliates get their own user-level page at cursare.com/affiliates — like the learner home, outside any dashboard. Per organization it shows the affiliation's status, the code, ready-to-copy links for every published course (already carrying the code), and earnings — pending and paid, per currency. A pending affiliation says so and starts counting once approved.

Webhooks and audit

The purchase.created webhook now carries the attribution snapshot — all three fields are null on an unattributed sale:

FieldMeaning
affiliateIdThe attributed affiliate
affiliateBpsThe frozen commission rate, in basis points (1% = 100 bps)
affiliateAmountThe frozen commission amount, in the currency's smallest unit

Attribution belongs only to Cursare's native affiliate program. There is no external affiliate-tracker integration or parallel referral field.

Every administrative action on the program is recorded in the audit log with organization visibility: affiliate.program.updated, affiliate.joined, affiliate.approved, affiliate.blocked, affiliate.commission.updated, and affiliate.settled.

Related

Offers & checkoutThe offer model — where the per-offer affiliate rate lives — and the buyer flow.Payments & payoutsThe money path the commission comes out of — payouts, fees, and refunds.Audit logThe affiliate.* events in the organization's administrative trail.
PreviousPayments & payoutsNextInsights and reports

Your privacy choices

Necessary cookies keep Cursare working. Analytics and marketing technologies are optional and stay off until you choose them. Privacy Policy.

Sign-in, security and core platform functions.

Audience measurement such as Google Analytics.

Tag Manager and campaign attribution.