Exporting royalty statements to CSV
Download your royalty statements as CSV files to analyze earnings in a spreadsheet, prepare for tax season, or keep detailed financial records.
Before you start
Section titled “Before you start”- You must have at least one paid royalty statement (statements appear after your first payout is processed)
- A spreadsheet application like Excel, Google Sheets, or Numbers to open the CSV file
Download a statement
Section titled “Download a statement”- Go to Royalties from the main menu
- Navigate to the Statements tab
- Find the statement period you want to download
- Click the download button (arrow icon) next to the statement
The system will generate your CSV file. For smaller statements, the download starts immediately. For larger statements, you will see a progress indicator while the file is being prepared.
What happens during export
Section titled “What happens during export”Instant downloads
Section titled “Instant downloads”For most statements, the CSV is ready instantly. A dialog appears with a Download button to save the file.
Large statement processing
Section titled “Large statement processing”For statements with many line items, the system processes the export in the background:
- A “Preparing Export” dialog appears
- The system generates the file (this may take a few moments)
- Once ready, a Download button appears
- Click Download to save the file
What you receive
Section titled “What you receive”The download is a ZIP archive containing:
- the CSV file (or several CSV files, if the export was large enough to be split)
COLUMNS.txt, a plain-text reference describing every column in the file
Each generated export is kept for 24 hours. Requesting the same account, date range and grouping again within that window returns the file that was already built rather than rebuilding it.
CSV column reference
Section titled “CSV column reference”Each row in the CSV represents a single line item from your royalty statement. Here is what each column means.
Basic columns
Section titled “Basic columns”| Column | Description | Example |
|---|---|---|
pay_period | Payment period in YYYYMM format | 202601 |
label | Your label name | Midnight Records |
retailer | Platform name | Spotify |
territory | Country or region code | US, GB, DE |
type | Transaction type | Stream, Download, UGC |
cat | Catalog number | MR-2026-001 |
upc | Release UPC barcode | 840123456789 |
release | Release title | Neon Skyline |
isrc | Track ISRC code (a unique identifier for each track) | USRC12400001 |
track_artist | Artist name | Luna Rivera |
track_title | Track title | Golden Hour |
track_version | Version or remix information (blank if none) | Acoustic Version |
track_count | Number of tracks | 1 |
purchase_qty | Number of streams or sales | 4523 |
dsp_transaction_date | Transaction date from the platform | 2026-01-15 |
dsp_statement_id | Statement reference ID | SP-2026-0001 |
Revenue columns
Section titled “Revenue columns”The examples below show a standard streaming line and a UGC line.
| Column | Description | Streaming line | UGC line |
|---|---|---|---|
gross_usd | Gross revenue in USD for that line, before LabelGrid’s fees | 18.09000000 | 4.63000000 |
LabelGrid fee columns
Section titled “LabelGrid fee columns”| Column | Description | Streaming line | UGC line |
|---|---|---|---|
platform_fee_rate | Your plan’s platform fee rate | 0.05000000 (5%) | 0.00000000 |
platform_fee_usd | Platform fee amount (shown as a negative value) | -0.90450000 | 0.00000000 |
ugc_fee_rate | Your plan’s UGC / Content ID fee rate | 0.00000000 | 0.20000000 (20%) |
ugc_fee_usd | UGC / Content ID fee amount (shown as a negative value) | 0.00000000 | -0.92600000 |
total_labelgrid_fee | The two fees added together (negative value) | -0.90450000 | -0.92600000 |
net_revenue_usd | Your final earnings after all LabelGrid fees | 17.18550000 | 3.70400000 |
Technical specification
Section titled “Technical specification”If you are integrating this CSV into accounting software or a finance backend, here are the exact format details.
| Property | Value |
|---|---|
| Encoding | UTF-8 |
| Delimiter | Comma (,) |
| Quote character | Double quote (") |
| Escape character | Backslash (\) |
| Line ending | LF (\n) |
| Header row | Always present as the first row |
| Total columns | 23 (fixed order, see column reference above) |
| Delivery | ZIP archive containing the CSV plus a COLUMNS.txt reference file |
Data types and precision
Section titled “Data types and precision”| Column group | Type | Precision |
|---|---|---|
pay_period | String | YYYYMM (6 characters) |
dsp_transaction_date | String | YYYY-MM-DD (10 characters) |
purchase_qty | Integer | Whole number |
gross_usd, *_fee_usd, net_revenue_usd | Decimal | Up to 8 decimal places |
platform_fee_rate, ugc_fee_rate | Decimal | Up to 8 decimal places (e.g., 0.05000000 = 5%) |
| All other columns | String | Variable length |
Revenue formulas
Section titled “Revenue formulas”total_labelgrid_fee = platform_fee_usd + ugc_fee_usdnet_revenue_usd = gross_usd + total_labelgrid_feeNotes for automated parsing
Section titled “Notes for automated parsing”- Empty fields:
track_versionandcatmay be empty (two consecutive commas) - Text quoting: Fields containing commas or quotes are enclosed in double quotes. Double quotes within field values are removed during export.
- Large exports: Exports over 150 MB are split into multiple CSV files (each with its own header row) and delivered as a ZIP archive
- Sorting: Rows are ordered by
pay_perioddescending, then bydsp_transaction_datedescending
Understanding fees in the CSV
Section titled “Understanding fees in the CSV”How net revenue is calculated
Section titled “How net revenue is calculated”net_revenue_usd = gross_usd + total_labelgrid_feeSince fees are negative values, they reduce your gross amount. Here is a full streaming line from the sample file, at a 5% platform fee rate:
| Amount | |
|---|---|
Gross revenue (gross_usd) | $18.09000000 |
| Platform fee (5%) | -$0.90450000 |
| UGC / Content ID fee | $0.00000000 |
| Net revenue | $17.18550000 |
Platform fee and UGC fee are separate categories that do not compound
Section titled “Platform fee and UGC fee are separate categories that do not compound”This is the part most worth getting right if you are building a ledger against this export.
- Both rates are charged on the same amount.
- Neither fee is charged on the result of the other. The UGC fee is not applied to what remains after the platform fee, and the platform fee is not applied to what remains after the UGC fee.
- The two amounts are added:
total_labelgrid_fee = platform_fee_usd + ugc_fee_usd.
A worked example for a line where a statement carries both fee types, at a 5% platform rate and a 20% UGC rate on the same $100.00000000:
| Calculation | Correct (additive) | Incorrect (compounded) |
|---|---|---|
| Platform fee | -$5.00000000 | -$5.00000000 |
| UGC / Content ID fee | -$20.00000000 (20% of $100.00) | -$19.00000000 (20% of $95.00) |
| Total LabelGrid fee | -$25.00000000 | -$24.00000000 |
The left column is the one that reconciles. A 5% platform rate and a 20% UGC rate come to a 25% deduction on that amount, not the 24% you get by applying one rate to the remainder of the other.
When each fee appears
Section titled “When each fee appears”The UGC / Content ID fee applies to User-Generated Content earnings from platforms such as YouTube, TikTok, and SoundCloud. On lines from standard streaming platforms such as Spotify or Apple Music, ugc_fee_rate and ugc_fee_usd show 0.00.
Because rates are resolved per statement, most lines show one rate populated and the other at zero — a statement usually carries one kind of earning. If a statement does carry both kinds, both rates appear on every line of that statement, and the additive rule above is what applies. Do not assume exactly one of the two rate columns is non-zero; read whichever ones are populated and add them.
Fee inclusion notice
Section titled “Fee inclusion notice”Fees are included in CSV exports starting from the October 2024 statement period. Earlier statements show revenue data without the fee breakdown columns.
Fees on the statements API
Section titled “Fees on the statements API”If you read statements through the public API rather than the CSV export, the statement endpoints return the same split as three additional fields:
| Field | Description |
|---|---|
platform_fee_usd | Standard distribution fee charged on the statement |
ugc_fee_usd | UGC / Content ID fee charged on the statement |
labelgrid_ugc_rate | UGC / Content ID fee rate in effect when the statement was generated |
Both amounts are negative and add up to labelgrid_fee. Fees are charged on the full amount settled on the statement, which includes any balance carried forward from earlier periods, so a rate multiplied by that period’s earnings alone will not always match the amount — read the amounts as authoritative.
All three fields are null on statements generated before the breakdown was recorded. Treat null as “not broken down” rather than as zero, and keep using labelgrid_fee as the fee total in every case.
Download a sample CSV
Section titled “Download a sample CSV”Want to see what the export looks like before downloading your own? Download our sample file:
The sample contains placeholder data showing typical line items across multiple platforms and territories, in the 23-column layout described above. Every row in it satisfies the formulas in this article, so you can use it as a fixture when you build a parser.
Tips for working with the data
Section titled “Tips for working with the data”Opening in Google Sheets
Section titled “Opening in Google Sheets”- Go to Google Sheets
- Click File → Import
- Upload your CSV file
- Select “Comma” as the separator
- Click Import data
Opening in Excel
Section titled “Opening in Excel”- Open Excel
- Click File → Open and select the CSV file
- Excel will automatically detect the comma-separated format
Common analysis ideas
Section titled “Common analysis ideas”- Filter by retailer to see earnings per platform
- Pivot table by territory to find your strongest markets
- Sum net_revenue_usd to verify your total statement amount
- Sort by purchase_qty to find your most-streamed tracks
- Group by release to compare album performance
Troubleshooting
Section titled “Troubleshooting”Export is taking too long
Section titled “Export is taking too long”Large statements with many line items may take longer to generate. The system polls for up to 5 minutes. If the export times out:
- Close the dialog
- Wait a few minutes
- Try downloading again
”Export in Progress” error
Section titled “”Export in Progress” error”Only one export can process at a time. Wait for any current export to finish, then try again.
CSV shows unexpected characters
Section titled “CSV shows unexpected characters”Make sure your spreadsheet application is set to UTF-8 encoding when importing. This ensures artist names and track titles with special characters display correctly.
Missing fee columns
Section titled “Missing fee columns”Fee columns (platform_fee_rate, platform_fee_usd, etc.) are only available for statement periods from October 2024 onward. Earlier periods show revenue data without the fee breakdown.
Related guides
Section titled “Related guides”- Understanding Royalty Reports - How to read your royalty data
- Payment Schedule - When royalties are paid
- Tax Information - Using export data for tax preparation
Need help with your export? Contact our support team.
Not using LabelGrid yet?
Everything you just read about is available on our platform.
See what LabelGrid can do →