Prompt
How do I set up a publishing administration system to process monthly royalty statements and recoupments?
Latest observation
A good publishing administration system for monthly royalty statements and recoupments needs to do four things reliably:
- ingest usage and earnings data
- calculate splits and recoupments correctly
- issue statements and payments
- keep an audit trail you can trust
Here’s a practical way to set one up.
1) Define the business rules first
Before choosing software or building a workflow, document:
-
Revenue sources
- streaming
- downloads
- sync
- mechanicals
- performance
- direct licensing
- advances / cross-collateralized income
-
Statement cadence
- monthly close date
- cutoff date for incoming reports
- payment date
- correction policy for late or adjusted income
-
Royalty logic
- publisher share vs writer share
- controlled compositions
- admin commission
- territory-specific splits
- co-publishing splits
- affiliate / sub-publisher commissions
-
Recoupment logic
- what is recoupable
- what can cross-collateralize
- whether advances recoup from all income or only specific streams
- waterfall order
- whether recoupment applies before or after admin fee
Write these rules down in a standard operating document. This becomes the source of truth.
2) Set up a master data structure
You need a clean catalog of entities and agreements.
Core tables / records
-
Works
- title
- work ID
- ISWC
- writers
- publishers
- percentages
- territories
- collection society registrations
-
Parties
- writers
- publishers
- sub-publishers
- clients
- affiliates
-
Agreements
- admin deals
- publishing agreements
- writer agreements
- advances
- recoupment terms
- commission rates
-
Accounts
- payables
- receivables
- suspense
- unallocated income
- recoupment ledger
- reserve/holdback accounts
Important fields for each agreement
- effective dates
- royalty rate
- commission rate
- recoupable balance
- collection territories
- statement frequency
- payment threshold
- tax withholding rules
3) Build the royalty calculation pipeline
Your monthly process should usually look like this:
A. Import source data
Typical inputs:
- DSP reports
- PRO statements
- mechanical statements
- sync/license invoices
- manual adjustments
- exchange rates if multi-currency
Normalize everything into one standard format:
- source
- usage period
- statement period
- territory
- currency
- work ID / matching key
- amount
- units
- transaction type
B. Match income to works
Use a matching hierarchy:
- exact ID match
- alternate identifiers
- title + writer match
- manual review for unmatched items
Anything unmatched should go into:
- suspense
- unmatched income queue
- exception report
C. Apply ownership splits
Calculate each party’s share based on:
- work ownership percentages
- agreement terms
- commission
- sub-publisher deductions
- taxes/withholding
D. Apply recoupment
This is usually a waterfall:
- gross income
- less third-party deductions if applicable
- less admin commission
- apply recoupment against outstanding balance
- pay remainder according to split
But your contract may specify a different order. The system should support configurable waterfalls.
E. Create ledger entries
Every calculation should produce:
- source transaction
- allocated amount
- payee
- recoupment applied
- balance forward
- payment eligibility
- statement period
4) Design the recoupment engine carefully
Recoupment is where most systems break if they are too rigid.
You want to track:
- original advance amount
- recouped-to-date amount
- remaining balance
- recoupment source pool
- whether balance is shared across multiple works
- whether the balance is tied to a writer, a catalog, or a contract
Common recoupment types
-
simple recoupment
- advance repaid from that writer’s income only
-
cross-collateralized recoupment
- multiple income streams and/or works share one balance
-
tiered recoupment
- different percentages recoup at different stages
-
non-recoupable amounts
- bonuses, guarantees, or certain sync fees excluded from recoupment
Best practice
Maintain a recoupment ledger separate from the royalty ledger:
- royalty ledger = what was earned
- recoupment ledger = how much of that earning was applied to recover balances
This separation helps with audits and statement clarity.
5) Generate monthly statements
A monthly statement should show:
- opening balance
- current-period earnings
- deductions
- recoupment applied
- adjustments
- amount payable
- closing balance
For transparency, include:
- source period vs statement period
- transaction-level detail
- work-level detail
- currency and FX rates
- unapplied or suspense items
- prior-period corrections
Statement formats
- PDF for clients
- CSV/Excel for internal review
- portal view for payees
- API export for accounting systems
6) Handle suspense and adjustments
You will always have:
- unmatched income
- late statements
- corrections
- reversals
- dispute items
Set up these accounts:
- Suspense account for unmatched income
- Reserve account for holdbacks
- Adjustment ledger for corrections to past periods
Rules should define:
- how long money can stay in suspense
- when to reclassify it
- who can approve manual allocations
- how negative balances are handled
7) Integrate payments and accounting
Your system should sync to:
- general ledger / ERP
- accounts payable
- banking or payment processor
- tax reporting tools
Payment workflow
- statement finalized
- approval workflow
- threshold check
- tax/withholding applied
- payment batch created
- remittance advice sent
- payment status reconciled
Include controls for:
- minimum payout thresholds
- bank validation
- international payment fees
- withholding tax
- failed payment retries
8) Build controls and auditability
This is essential.
Controls to include
- role-based access
- approval workflow for edits
- audit log for every change
- versioning of contracts and splits
- locked statement periods after approval
- exception reports for unusual changes
Audit questions your system should answer
- Who changed the split and when?
- Which contract governed this payment?
- How was this recoupment calculated?
- Why was this income held in suspense?
- What statement produced this balance?
9) Choose software: buy, configure, or build
Option A: Off-the-shelf royalty admin software
Best if you want speed and standard workflows.
Look for features like:
- work registration
- statement processing
- split management
- recoupment tracking
- payment runs
- portal for payees
- integrations and audit trail
Option B: Configure ERP + royalty module
Best for larger operations with strong finance teams.
Use:
- ERP for accounting
- royalty module or custom app for calculations
- BI/reporting layer for analysis
Option C: Build custom
Best if you have highly unusual deal structures or scale needs.
Core components:
- ingestion service
- rules engine
- royalty calculation service
- recoupment service
- statement generator
- payment interface
- reporting database
10) Suggested operating workflow each month
A practical monthly cycle:
-
Close period
- lock incoming usage period
- set statement cutoff
-
Import reports
- ingest all source data
- normalize and validate
-
Match and allocate
- match to works
- resolve exceptions
-
Run calculations
- apply splits
- compute recoupment
- create preliminary statements
-
Review
- exception review
- finance approval
- legal/ops approval if needed
-
Finalize
- lock statements
- post ledger entries
-
Pay
- generate payment batches
- send remittances
-
Reconcile
- compare against bank payments
- resolve failures
- carry adjustments forward
11) Minimum data model you should have
At minimum:
WorkWorkOwnershipPartyAgreementRoyaltySourceTransactionAllocationRecoupmentBalanceStatementStatementLinePaymentAdjustmentSuspenseItemAuditLog
12) Common pitfalls to avoid
- mixing royalty earnings and recoupment in one table
- not versioning agreements
- allowing manual overrides without audit logs
- failing to define whether recoupment is gross or net of commission
- not handling FX rates consistently
- paying from incomplete or unmatched data
- ignoring negative balances and reversals
- not locking finalized statements
13) A simple implementation blueprint
If you want a lean setup:
- Database: PostgreSQL
- ETL/import: Python scripts or integration tooling
- Rules engine: configurable logic layer in app code
- Statements: PDF generator + CSV exports
- Accounting sync: API or scheduled journal exports
- Dashboard: internal web app for exceptions and approvals
- Storage: versioned document repository for contracts and statements
If you want, I can also give you:
- a sample chart of accounts and ledger structure,
- a monthly royalty statement template, or
- a database schema for publishing admin and recoupment tracking.
Observation history
See 1 earlier observation
Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.
How did Obsurfable measure this prompt?
Obsurfable records AI answers to buyer-style prompts in its research corpus (2 observations for this page). Metrics are distributions over observations, not a single static ranking.
Which AI systems does Obsurfable collect answers from?
OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.