Royalties & commercial terms
Every Contract carries a commercial side: whether money changes hands for the content it governs, and if so, on what basis and at what rate. This page explains how those terms are modelled — the shapes the platform records so that a royalty rate is a precise, machine-actionable rule rather than a sentence buried in a PDF. It is a data-model page: it tells you what a commercial term is, not how a payment is eventually made.
The commercial terms sit on the same contract as the rights terms, but they answer a different question. The rights terms say what may be done with a Work — which territories, which formats, whether an AI may retrieve it. The commercial terms say what is owed when those permitted things are sold. Keeping the two apart matters, because most people who need to read rights have no business seeing money: the commercial block is private, returned only to callers whose token is explicitly allowed to see it.
A commercial term is deliberately structured. "10% of net receipts on the ebook, rising to 15% after the first £50,000, but only 12% through third-party stores" is not free text on this platform — it is a small set of typed rules, each naming the dimensions it applies to and the rate it charges. That structure is what lets the platform price a sale without a human reading the contract, and lets a rights manager see at a glance how two contracts on the same Work differ.
Throughout, two conventions hold, matching the rest of the platform: money is integer micros (1,000,000 micros = £1.00 in the contract's currency) and rates are basis points (100 bps = 1%, so 2,500 bps = 25%). Neither ever appears as a floating-point number.
flowchart TD
C["Contract<br/>(governs a Work)"] --> R["Royalty block<br/>type · currency · basis"]
R --> T["FREE<br/>no money"]
R --> F["FIXED_FEE<br/>one flat amount"]
R --> RY["ROYALTY<br/>rate rules"]
RY --> RR["Rate rules<br/>dimensioned, most-specific-wins"]
RY --> A["Advance<br/>recouped first"]
R --> S["Splits<br/>divide the payout"]
Three kinds of commercial term
The royalty block always states a type, and the type decides which
other fields are meaningful. There are exactly four:
| Type | Meaning | Carries |
|---|---|---|
FREE |
No commercial terms. The content is used without money changing hands — an open licence, an internal Work, a promotional grant. | Nothing further. |
FIXED_FEE |
A single flat fee for the grant, independent of how much sells — a one-off buyout, a fixed permissions fee. | fixed_amount_micros, optional splits. |
ROYALTY |
A rate-based term: the payout is a percentage of sales, computed per sale. | rates[], optional advance, optional splits. |
IN_KIND |
Compensation entirely in kind — copies, subscription access, discount codes — with no money at all. The everyday technical-reviewer engagement. | in_kind[]. |
Most default open-licence contracts (MIT, the Creative Commons family)
are FREE. A typical author agreement is ROYALTY. A permissions deal
that pays a lump sum regardless of volume is FIXED_FEE. A reviewer
paid twelve ebook credits and a year's subscription is IN_KIND —
deliberately not FREE, which means no consideration at all. In-kind
elements can also ride alongside cash (FIXED_FEE or ROYALTY) for
the cash-plus-copies hybrids real letters use, and a FIXED_FEE may be
a unit fee instead of a lump sum — a price per page reviewed or per
training session delivered, multiplied by the delivered quantity.
Every monetary amount on the contract is denominated in a single
currency (an ISO 4217 code such as GBP), and — for a ROYALTY —
priced on a single basis, which is the subject of the next section.
Basis: what the rate is applied to
A royalty rate is a percentage, so the platform has to know a
percentage of what. That is the basis, and for retail sales it
takes one of two values:
NET_RECEIPTS(the default) — what Packt actually receives after the channel has taken its discount and after tax. This is the usual basis for modern digital contracts.LIST_PRICE— the headline price the customer sees, before any channel discount. Rarer, but common in older print agreements.
The difference is not academic. The same headline rate produces very different payouts depending on the basis, because a channel discount sits between the list price and what Packt banks.
A worked £ example — 25% on an ebook
A contract pays the author 25% (rate_bps: 2500) on an ebook
with a £20.00 list price, sold through a store that takes a
30% channel discount — so Packt's net receipt on the sale is
£14.00.
| Basis | Calculation | Author's royalty |
|---|---|---|
LIST_PRICE |
25% × £20.00 | £5.00 |
NET_RECEIPTS |
25% × £14.00 | £3.50 |
In micros, the NET_RECEIPTS payout is 2500 bps applied to
14000000 micros = 3500000 micros. The choice of basis moves
the author's cheque by £1.50 on a single £20 sale — which is why
the basis is an explicit, first-class field, not an assumption.
Subscription and other pooled revenue is always priced on the revenue attributed to the Work, never on a list price — a consumption event has no headline price to take a percentage of. How that attributed share is computed belongs to a future service, not to the contract model (see the status note below).
AI use is priced here too
An AI use that earns money is not a special case — it produces the
same royalty events as any other use. A served AI surface (an
assistant citing the Work under AI_RETRIEVAL) settles as a
subscription-style attribution from a consumption pool; an AI
licensing or training deal (AI_DISTRIBUTION, AI_TRAINING) settles
as a FIXED_FEE or a revenue-share ROYALTY, like a sale. There is
no separate AI-metering primitive. See
AI & your content for the
plain-English version.
Rate dimensioning: most-specific-wins
A single flat rate is rare. Real contracts pay different rates for different formats, channels, and markets: hardback and paperback carry different percentages; a direct sale pays more than one through a third-party store; a translated edition pays a reduced rate. The model captures this as a list of rate rules, each of which may narrow itself along up to six optional dimensions:
| Dimension | Example values | What it scopes |
|---|---|---|
| Manifestation class | PRINT, EBOOK, AUDIOBOOK |
The format sold. |
| Form | HARDBACK, PAPERBACK |
A narrowing within a print class. |
| Channel | DIRECT / THIRD_PARTY, or a named channel |
Where it sold. |
| Territory | US, CA, or a territory set |
The market it sold in. |
| Language | fr, de |
The content's language. |
| Works | wk_master_title |
Specific titles within a multi-title contract. |
When a sale happens, it carries a value on every one of these dimensions — an ebook, sold direct, in the US, in French. The platform matches that sale against the rate rules and picks the most specific rule that applies. The Works dimension carries per-title commercial variance inside one deal — a catalogue at 50% with one title at 25% is a work-scoped rule beside the default; if rights (not money) differ per title, the deal splits into linked contracts instead. Specificity is simply the number of dimensions a rule pins: a rule that names the format and the channel beats one that names only the format.
Consider a contract with four rate rules:
| Rule | Dimensions set | Rate |
|---|---|---|
| A (default) | (none) | 10% |
| B | EBOOK |
25% |
| C | EBOOK + THIRD_PARTY |
15% |
| D | PRINT + HARDBACK |
12% |
Now price three sales:
| Sale | Rules that match | Winner (most specific) | Rate |
|---|---|---|---|
| Ebook, sold direct | A, B | B (1 dimension) | 25% |
| Ebook, third-party store | A, B, C | C (2 dimensions) | 15% |
| Hardback, sold direct | A, D | D (2 dimensions) | 12% |
A paperback sale, or an audiobook, matches nothing more specific than
rule A and so is priced at the 10% default. That default is
mandatory: a ROYALTY must include exactly one dimensionless rule, so
every possible sale prices against at least one rule and nothing
silently earns zero. Two rules may never match the same sale at equal
specificity — an ambiguous rule set is rejected when the contract is
written, rather than tie-broken at pricing time.
Rates can also escalate
A rate rule may carry an escalator instead of a flat rate — a higher percentage once cumulative revenue passes a threshold (10% up to £50,000, then 15% above it). The escalator is still a single rule winning by most-specific-match; the tier only changes what percentage that winning rule charges. The threshold shape and how it accumulates are part of the model but sit beyond this overview; see The contract model for the full field set.
Advances, installments, and splits
A handful of further fields shape who is paid, and when.
An advance (advance_amount_micros) is money paid up front against
future royalties. It is cross-collateralised across the whole
contract: royalties from every format, channel, and territory accrue
against the single advance pot, and the payees only begin receiving
money once the advance has been fully recouped. There are no
per-format advance pots — one advance, one contract-wide balance to
earn out.
An installment plan (installments[]) records how the pot is
actually paid — real advances arrive as 3–5 tranches, not one cheque.
Each installment is a share or amount of the pot with a trigger:
signing, a named milestone, acceptance, publication, a date. Shares
must reconcile to the whole pot, with one deliberate exception: an
EARLY_DELIVERY installment is a bonus on top — a reward for
delivering early — and sits outside the sum. The contract records the
plan only; deciding when a milestone is met and tracking what has been
paid belongs to the Royalty service, fed by production facts.
Two boilerplate clauses also get structured homes because the Royalty service must enforce them: a minimum payment threshold (a period's payment below it carries forward rather than paying out) and a cross-contract netting flag (overpayments may be recovered from sums due under the party's other agreements).
Splits (splits[]) divide the computed royalty between the
contract's parties — the everyday case being co-authors. Each split
names an agent_id that must be a party on the contract, and a
share_bps. The shares must sum to exactly 10,000 basis points
(100%): a 60/40 co-author split is 6000 and 4000. Splits apply
after the rate is computed and after the advance is recouped. With
no splits declared, the whole royalty accrues to the contract's
granting party.
Paying someone who is not a party is never a split. When an author signs a deed directing their royalties to a company, that is a payee redirect — a standalone instrument that re-routes where a party's money is sent without touching who earns it or any contract term (overview; the licensing example shows a full redirect record).
A ROYALTY block (JSON)
A GBP author agreement paying 10% by default, 25% on ebooks (but 15% through third-party stores), against a £5,000 advance, split 60/40 between two co-authors. Money is micros; rates are basis points; IDs are prefixed.
{
"type": "ROYALTY",
"currency": "GBP",
"basis": "NET_RECEIPTS",
"payment_frequency": "QUARTERLY",
"advance_amount_micros": 5000000000,
"rates": [
{ "rate_bps": 1000 },
{ "manifestation_type": "EBOOK", "rate_bps": 2500 },
{
"manifestation_type": "EBOOK",
"channel_class": "THIRD_PARTY",
"rate_bps": 1500
}
],
"splits": [
{ "agent_id": "agt_chandra", "share_bps": 6000 },
{ "agent_id": "agt_okafor", "share_bps": 4000 }
]
}
This block sits on a contract such as ctr_chandra_2026, which
governs the Work wk_ml_go. The agent_ids are parties named in
the contract's agent list.
Commercial terms are private
The commercial block is the most sensitive part of a contract, and the
platform treats it that way. Commercial terms never appear unless
your token carries the contracts.commercial.read
scope. Without it, a read
of a contract — or of the rights projected onto a Resource — returns
the usage and territorial terms only, with the royalty block simply
absent.
The behaviour is consistent across every service:
- A caller without the scope who does not ask for commercial terms gets the resource with the royalty block omitted — exactly as if it were never there.
- A caller without the scope who explicitly names a commercial
field (in a field mask, say) gets a
403, never a silent empty value. This fails loud: finance readingroyaltycan never mistake "you are not allowed to see this" for "there is nothing here".
Holding the scope lets an application ask to see commercial terms; it does not, on its own, grant sight of any particular contract — that is a separate access check — nor does it change what the content may be used for. It is one of the three independent layers of authorisation the platform applies. See the OAuth scope registry for how the scope is defined.
In design — accrual, settlement and payment
This page models the commercial terms of a contract and nothing more. How a royalty is actually accrued as sales arrive, how balances are settled each period, how advances are recouped in practice, and how payments are made to payees all belong to a future Royalty service that is not yet specified. The rate rules, basis, advance and split fields described here are the stored inputs to that service; the mechanics that consume them — attribution of pooled subscription revenue, period settlement, payment runs — are deliberately out of scope for the model. Treat everything on this page as the shape of the data, not as a description of a running payments pipeline. Where you see a reference to pricing a "sale", read it as how a rule would be selected, not as a claim that settlement exists today.
Related pages
- The contract model — the full contract record, of which the royalty block is one section (§7 has the complete field set).
- AI & your content — how AI use is priced as royalty events, and the default posture on AI.
- Standard licences — the default contracts, most of
which carry a
FREEroyalty. - Contracts & Rights — the overview: how contracts govern Works and how rights resolve.
- Worked examples — end-to-end contracts, including commercial shapes.
- Glossary — one-line definitions for royalty, basis, and the other commercial terms.
- Explorer — Chapter III — contracts and rights, visualised.