Income sources

ASCAP Domestic

ASCAP_DOMComposition

PRO · CSV · USD

Configuration

Edit configuration
Display name
ASCAP Domestic
Key
ASCAP_DOM
Rights layer
Composition
File format
CSV
Default currency
USD
Source kind
PRO
Notes
US performance royalties. ASCAP added a Program Code column in Q3 2025.

Extraction query

Edit query
Reads CSVUpdated 07/12/2026
-- ASCAP Domestic distribution export -> normalized schema
SELECT
  row_number() OVER ()                                          AS line_number,
  trim("Work Title")                                            AS song_title,
  upper(trim("Work Title"))                                     AS song_title_key,
  upper(trim("Music User"))                                     AS source_name_key,
  upper(trim("Performance Source/Broadcast Medium"))            AS income_class_key,
  upper(trim("Type Of Right"))                                  AS right_type_key,
  upper(trim("Role Type"))                                      AS role_type_key,
  upper(trim("Territory"))                                      AS territory_raw,
  trim("Composer Name")                                         AS writer_name,
  TRY_CAST("Number of Plays" AS DECIMAL(14,2))                  AS units,
  TRY_CAST("Dollars" AS DECIMAL(18,4))
    + COALESCE(TRY_CAST("Premium Dollars" AS DECIMAL(18,4)), 0) AS amount_raw,
  COALESCE(upper(trim("Adjustment Indicator")), '') IN ('Y', 'YES') AS adjustment,
  COALESCE(TRY_CAST(trim("Performance Start Date") AS DATE),
           CAST(try_strptime(trim("Performance Start Date"), '%m/%d/%Y') AS DATE)) AS earning_date,
  'USD'                                                         AS currency,
  to_json(row)                                                  AS source_row
FROM read_csv('{{file}}', header = true, sample_size = -1, all_varchar = true) AS row;

Territory resolution

Edit overrides

territory_raw is resolved to an ISO 3166-1 alpha-2 code in code via a country lookup — not with rules. Values the lookup can't resolve (historical territories, regional groupings) fall back to this override table.

GREAT BRITAINGB
THE NETHERLANDSNL
UNITED STATES OF AMERICAUS

Normalization rules

Edit rules

This source's own rules, grouped by the attribute each writes. First match wins, top to bottom; conditions within a rule are ANDed. Each group ends in a pinned catch-all.

Stage 1 — Raw match keys to standard enums

income_channel_std

6 rules
1STREAMING_VIDEOincome_class_key ~ GN-AV*
2BACKGROUND_MUSICincome_class_key ~ GN-BA*
3INTERNET_RADIOincome_class_key ~ GN-IN*
4STREAMING_AUDIOincome_class_key ~ GN-*
5TVincome_class_key ~ TV-*
6RADIOincome_class_key ~ RD-*
Catch-allUNCLASSIFIEDMatches every line not caught above.

right_type_std

1 rule
1PERFORMANCEright_type_key ~ PR*
Catch-allUNCLASSIFIEDMatches every line not caught above.

Stage 2 — Standard enums to derived values

is_digital

2 rules
1truenormalized_income_channel ~ STREAMING_*
2truenormalized_income_channel ~ INTERNET_RADIO
Catch-allfalseMatches every line not caught above.

is_performance

0 rules

No rules yet — only the catch-all applies.

Catch-alltrueMatches every line not caught above.