Perpendis Royalty tools
Array tools Sign in

Normalize Publisher & Admin Royalty Statement CSVs into One Excel Earnings Tape

Distributor statements are at least predictable — each vendor has one layout. Publishing income is the opposite: every publisher, admin and sub-publisher exports its own shape, at work level rather than recording level, split by right type and routed through collecting societies. This tool normalizes those CSVs into the same earnings tape as everything else you drop in.

Free, in your browser, no account needed

Drop your publisher or admin CSV alongside your ASCAP, MLC and distributor files — one run, one normalized dataset, one workbook.

Convert your statement now — free

Why publisher statements are the hard case

A publishing statement's natural row is a musical work earning under a right type — PR (performing), MR (mechanical), SR (synchronisation) — from a source society or licensee, often in the society's own currency. The same song can appear a dozen times per statement: PRS performing income, MLC mechanicals passed through, a sync fee, each with its own period lag. Header vocabularies differ per company; there is no common spec the way ASCAP publishes one.

Two parsers, honestly labelled

First, a dedicated publisher-format parser recognises the recurring shape of admin and publisher exports — columns carrying a work title, a right type, an amount and a currency, plus the usual companions (source society, territory, period, your share). Statements matching that shape are parsed with full confidence and normalized field by field.

Second, for layouts nobody has catalogued, a generic header-vocabulary mapper reads the header row and maps columns by meaning — title-ish, amount-ish, date-ish, currency-ish. Its output is explicitly labelled generic, and the mapping note shows exactly which header it took for which meaning, so you check its guesswork before trusting the numbers. Unreadable amounts are skipped and counted as warnings, never silently written as zero.

Normalized fieldTypical source headers
Work titleWork Title, Song Title, Composition, Title
Right typeRight Type, Income Type, Royalty Type — values like PR / MR / SR, Performance, Mechanical, Sync
AmountAmount, Royalty, Net Amount, Payable, Your Share Amount
CurrencyCurrency, CCY, Curr — ISO codes kept as reported, never silently converted
SourceSociety, Source, Licensee, Territory Society (PRS, GEMA, SACEM…)

What about BMI statements?

BMI is the notable gap in the CSV world: the statement of record is a PDF, and BMI publishes no file-format spec for the CSV export hiding behind the portal's "View CSV" button. The real PDF has a consistent anatomy: a header block on every page (affiliate name, account number, IP number, distribution date, US performance period, international accounting number); page-one summaries of current and year-to-date earnings; then detail sections per source — commercial radio, cable and local television, internet audio grouped by service and tier (SPOTIFY PREM, PANDORA PLUS…), other sources, and international performances grouped by country and society — each with per-source subtotals, bonus columns (hit song, standards, super usage) and section grand totals. A dedicated PDF parser for that layout is on the roadmap. Meanwhile, the portal's CSV export is close enough to the common publisher shape that the generic mapper often handles it.

And SoundExchange?

SoundExchange pays the statutory digital-performance royalty for sound recordings (a neighbouring right — SR-side money, not publishing), delivered as a monthly "Detail CSV" from SoundExchange Direct with the period coded in the filename (AUG2022 style). It publishes no public spec of the detail-CSV columns, so a dedicated parser is on the roadmap pending verified real-world exports. Today, the generic mapper frequently maps its CSV cleanly — and shows you exactly how it mapped it.

Private by construction, honest about proof

Your statements never leave your browser. Parsing, normalization and workbook generation run in WebAssembly inside the tab. Nothing is uploaded; you can disconnect from the internet after the page loads and everything still works.

The tie-out proves the extraction, not the source. Publisher statements that print totals are reconciled: extracted rows must sum to the statement's own printed totals to the cent, or the discrepancy is shown. Machine exports with no printed totals report as SELF-CONSISTENT — internal checks passed, nothing stated to reconcile against. That is normal for raw exports, not a defect.

Frequently asked questions

My admin's export isn't on your supported list — will it work?

Usually. If it matches the common publisher shape (work title, right type, amount, currency) the dedicated parser takes it; otherwise the generic mapper has a go and labels the result so you can verify the column mapping before trusting the totals.

What do PR, MR and SR mean on my statement?

Performing, mechanical and synchronisation rights — the three ways a musical work earns. The earnings tape keeps the right type on every row so you can pivot income by type, source and period.

Can it read my BMI statement?

The PDF, not yet — a parser for BMI's PDF layout is on the roadmap. The CSV export from the BMI portal is worth trying now: the generic mapper often handles it, and it will tell you honestly if it could not.

Does it convert currencies?

No — deliberately. Amounts are kept in the currency the statement reported, with the currency on every row. Silent FX conversion is how earnings tapes stop tying out to their source statements.

Related formats and reading

New to statement anatomy? Start with how to read a royalty statement.

Ready when your CSVs are

Drop every publisher and period in one run: one normalized dataset, one six-sheet Excel earnings tape, every mapping decision written down. Free, in your browser.

Convert your statement now — free