# Royalties & Performance Bonuses (/docs/ugc/royalties)



Compensation for SideShift-managed UGC is configured on the UGC
campaign. Two components are tracked per creator contract.

## Base pay [#base-pay]

Flat per-creator payout for delivering the required post count. Two
payout models:

* **`prorata`** — creator earns proportional to posts delivered
  (e.g., if 30 of 60 required posts delivered → 50% of base).
* **`all_or_nothing`** — creator earns the full base only if they
  deliver all required posts.

Model and amount are set per campaign in the program configuration.

## CPM bonus [#cpm-bonus]

On top of base pay, creators earn a bonus per 1,000 views on each
delivered post, subject to a per-post cap:

```
post_bonus = min(bonus_max_per_post_cents, (post_views / 1000) * bonus_per_cpm_cents)
```

Bonuses are calculated from `platform_post_metrics_latest.views_count`
for each `published` post. Views are refreshed via platform sync.

## Accrued liability [#accrued-liability]

The `sideshift-sync-program` workflow runs every 10 minutes and
re-calculates total liability = base pay earned + capped CPM bonuses,
minus any already-settled payments. When liability reaches **75% of
the reserved amount** in the organization's cash wallet, Layers
auto-charges the saved payment method for another tranche.

## Where to see it [#where-to-see-it]

* **UGC dashboard** (`/project/{projectId}/ugc`) — per-creator
  performance and post totals.
* **Creator detail** — posts synced, engagement, ad spend if their
  content is running as ads.

## Settlement [#settlement]

Payments to creators are handled off-platform through the SideShift
program. Layers tracks the liability and funds the wallet; disbursement
to creators runs through SideShift's own payout pipeline.

## Disputes [#disputes]

Raise disputes with Layers ops directly — there is no in-product
dispute flow. Attribution edge cases (the same post running on multiple
ad sets) are resolved case-by-case.
