Both follow the same rules in the dashboard and the API. Paid commissions
never move. They stay with the affiliate who was paid. And no money moves
either way: payouts still pay only confirmed commissions, through your own
payout method.
Moving a referral
Use this when a customer belongs to someone else, for example an affiliate who referred them by phone, or a customer who should follow an affiliate to a new account. You choose one of two modes:- From now on only (
mode: "forward"). The customer’s future payments credit the new affiliate. Every existing commission stays where it is. It needs the customer’s email or Stripe customer id on record, so Affixo has something to match their future payments by. - Include history (
mode: "history"). Also moves the customer’s unpaid commissions (pending, confirmed or held) to the new affiliate, at the amounts they were earned at. It’s refused while any of those commissions is in a payout run that hasn’t been paid. Remove them from the run first.
Preview first
POST /v1/referrals/move/preview shows exactly what a move would do, the same
numbers the dashboard’s Move dialog shows: how many commissions would move and
their totals, how many are paid and stay put, whether any are in a payout run,
and whether “from now on” is possible. Nothing changes.
referral_id, or with conversion_id for any of their
sales. The preview needs the read scope.
Make the move
write scope and a REST API key. A token minted for an AI
assistant through the MCP server can preview a move but gets
403 if it tries to make one.
A refused move changes nothing and tells you why: 409 move_refused (a
commission in a payout run, no email or Stripe customer id for “from now on”,
or the customer already belongs to that affiliate) or 422 affiliate_not_eligible (the new affiliate can’t take them). See
Errors and limits.
Correcting one sale
Use this when a single sale was credited to the wrong affiliate, or to no one.- a commission on the sale is already paid, or is in a payout run,
- the sale is one payment of a subscription (move the referral instead, so the renewals follow),
- the customer belongs to another affiliate, or was moved to one,
- the new affiliate can’t take it.
status in the same call. The two are applied together: if
either can’t be applied, neither is. Setting status to refunded,
reversed or chargeback reverses the whole sale and claws back its
commission. There’s no partial refund through the API.
Like a move, a correction needs a REST API key. MCP connector tokens get
403.
What your webhooks see
Each commission that changes hands firescommission.reassigned, one event per
commission. Its amount and status are unchanged. source tells you which
tool did it:
from_affiliate_id is who held the commission before and affiliate_id is who
holds it now. If the affiliates have parents through
sub-affiliates, the parent’s share follows the new
affiliate; the webhooks guide covers each
case.
A move “from now on only” moves no existing commission, so it sends nothing
until the customer’s next payment arrives. That payment is then credited to
the new affiliate as a normal conversion.created.