Earnings and payouts

CLI previews and dashboard trace estimates are preliminary. A payout is only created after a buyer licenses or buys traces.

Seller share

SellTraces currently uses an 80/20 split for V1 marketplace sales:
seller share = attributed trace revenue * 0.80
The platform retains the remaining 20%.

Sale close

When a sale closes, the sale-close path:
  1. Verifies every selected trace exists and is not sell_excluded.
  2. Inserts a sales row.
  3. Inserts one sale_traces row per trace.
  4. Aggregates each user’s share across their traces.
  5. Inserts payouts rows with a 14-day hold.
  6. Sends sale-scheduled email notifications.

Payout release

For early customers, due unpaid payouts are handled through non-API Dots payout links. Sell Traces prepares the payout manually after the hold clears, using the confirmed payout contact details on the Earnings page. Payout state appears in:
/dashboard/earnings
/dashboard/payouts

Manual Dots payout profile

The dashboard collects only the information needed to prepare and send a manual Dots payout link:
  • legal first and last name
  • payout email
  • phone country code and phone number
Dots collects tax, identity, payout method, and bank or PayPal details after the user claims the payout link. Sell Traces does not collect bank details in the dashboard.

Status labels

StatusMeaning
On holdSale closed but the 14-day hold has not elapsed
Ready for manualHold has elapsed and the payout is ready for a manual Dots link
PaidManual payout has been completed and paid_at is set

Testing notes

To test payout readiness locally, verify:
  • sale records create held payout rows
  • the Earnings payout profile requires first name, last name, email, phone country code, and phone number
  • confirming payout details writes the users.payout_* fields and payout_details_confirmed_at
  • due unpaid payouts are separated into ready vs. missing-profile manual payout queues